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:
parent
4b2e486790
commit
a8079a9b4c
4 changed files with 39 additions and 39 deletions
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
18
gdb/stack.c
18
gdb/stack.c
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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 ? ")" : "");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue