Get rid of AIX specific PC_LOAD_SEGMENT, replace with PC_SOLIB.

* xcoffsolib.c (xcoff_solib_address):  Renamed from
	pc_load_segment_name.  Return NULL if address is not in a shared
	library.  Cleanup shared library name construction, using xasprintf.
	Format shared library member names consistent with format in exec.c.
	(solib_info):  Format shared library member names consistent with
	format in exec.c.
	* config/rs6000/nm-rs6000.h:  Replace PC_LOAD_SEGMENT with PC_SOLIB,
	using xcoff_solib_address for PC_SOLIB definition.
	* stack.c (print_frame):  Remove PC_LOAD_SEGMENT code, no longer
	needed.
This commit is contained in:
Peter Schauer 2001-02-10 12:01:11 +00:00
parent 4b2e486790
commit a8079a9b4c
4 changed files with 39 additions and 39 deletions

View file

@ -1,3 +1,17 @@
2000-02-10 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
Get rid of AIX specific PC_LOAD_SEGMENT, replace with PC_SOLIB.
* xcoffsolib.c (xcoff_solib_address): Renamed from
pc_load_segment_name. Return NULL if address is not in a shared
library. Cleanup shared library name construction, using xasprintf.
Format shared library member names consistent with format in exec.c.
(solib_info): Format shared library member names consistent with
format in exec.c.
* config/rs6000/nm-rs6000.h: Replace PC_LOAD_SEGMENT with PC_SOLIB,
using xcoff_solib_address for PC_SOLIB definition.
* stack.c (print_frame): Remove PC_LOAD_SEGMENT code, no longer
needed.
2000-02-10 Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
* mipsread.c (read_alphacoff_dynamic_symtab): Replace alloca calls

View file

@ -1,5 +1,6 @@
/* IBM RS/6000 native-dependent macros for GDB, the GNU debugger.
Copyright 1986, 1987, 1989, 1991, 1992, 1994 Free Software Foundation, Inc.
Copyright 1986, 1987, 1989, 1991, 1992, 1994, 2001
Free Software Foundation, Inc.
This file is part of GDB.
@ -57,10 +58,10 @@ extern void xcoff_relocate_symtab (unsigned int);
struct target_ops;
extern void xcoff_relocate_core (struct target_ops *);
/* Load segment of a given pc value. */
/* If ADDR lies in a shared library, return its name. */
#define PC_LOAD_SEGMENT(PC) pc_load_segment_name(PC)
extern char *pc_load_segment_name (CORE_ADDR);
#define PC_SOLIB(PC) xcoff_solib_address(PC)
extern char *xcoff_solib_address (CORE_ADDR);
/* Return sizeof user struct to callers in less machine dependent routines */

View file

@ -626,24 +626,6 @@ print_frame (struct frame_info *fi,
annotate_frame_source_end ();
}
#ifdef PC_LOAD_SEGMENT
/* If we couldn't print out function name but if can figure out what
load segment this pc value is from, at least print out some info
about its load segment. */
if (!funname)
{
annotate_frame_where ();
#ifdef UI_OUT
ui_out_wrap_hint (uiout, " ");
ui_out_text (uiout, " from ");
ui_out_field_string (uiout, "from", PC_LOAD_SEGMENT (fi->pc));
#else
wrap_here (" ");
printf_filtered (" from %s", PC_LOAD_SEGMENT (fi->pc));
#endif
}
#endif /* PC_LOAD_SEGMENT */
#ifdef PC_SOLIB
if (!funname || (!sal.symtab || !sal.symtab->filename))
{

View file

@ -1,5 +1,5 @@
/* Shared library support for RS/6000 (xcoff) object files, for GDB.
Copyright 1991, 1992 Free Software Foundation.
Copyright 1991, 1992, 2001 Free Software Foundation.
Contributed by IBM Corporation.
This file is part of GDB.
@ -29,29 +29,32 @@
#include "gdb_regex.h"
/* Return the module name of a given text address. Note that returned buffer
is not persistent. */
/* If ADDR lies in a shared library, return its name.
Note that returned name points to static data whose content is overwritten
by each call. */
char *
pc_load_segment_name (CORE_ADDR addr)
xcoff_solib_address (CORE_ADDR addr)
{
static char buffer[BUFSIZ];
static char *buffer = NULL;
struct vmap *vp = vmap;
buffer[0] = buffer[1] = '\0';
for (; vp; vp = vp->nxt)
/* The first vmap entry is for the exec file. */
if (vp == NULL)
return NULL;
for (vp = vp->nxt; vp; vp = vp->nxt)
if (vp->tstart <= addr && addr < vp->tend)
{
if (*vp->member)
{
buffer[0] = '(';
strcat (&buffer[1], vp->member);
strcat (buffer, ")");
}
strcat (buffer, vp->name);
xfree (buffer);
xasprintf (&buffer, "%s%s%s%s",
vp->name,
*vp->member ? "(" : "",
vp->member,
*vp->member ? ")" : "");
return buffer;
}
return "(unknown load module)";
return NULL;
}
static void solib_info (char *, int);
@ -84,10 +87,10 @@ Text Range Data Range Syms Shared Object Library\n");
paddr (vp->tstart),paddr (vp->tend),
paddr (vp->dstart), paddr (vp->dend),
vp->loaded ? "Yes" : "No ",
vp->name,
*vp->member ? "(" : "",
vp->member,
*vp->member ? ") " : "",
vp->name);
*vp->member ? ")" : "");
}
}