diff options
author | Peter Schauer <Peter.Schauer@mytum.de> | 2001-02-10 12:01:11 +0000 |
---|---|---|
committer | Peter Schauer <Peter.Schauer@mytum.de> | 2001-02-10 12:01:11 +0000 |
commit | a8079a9b4cb31cbff90e4c6aba803dc7e9a1c2d0 (patch) | |
tree | e316a773ab921de4faafcb5596c58c189171c826 /gdb/xcoffsolib.c | |
parent | 4b2e486790b383f1c11a60c97deb2c23456d083a (diff) | |
download | gdb-a8079a9b4cb31cbff90e4c6aba803dc7e9a1c2d0.zip gdb-a8079a9b4cb31cbff90e4c6aba803dc7e9a1c2d0.tar.gz gdb-a8079a9b4cb31cbff90e4c6aba803dc7e9a1c2d0.tar.bz2 |
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.
Diffstat (limited to 'gdb/xcoffsolib.c')
-rw-r--r-- | gdb/xcoffsolib.c | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/gdb/xcoffsolib.c b/gdb/xcoffsolib.c index 3876a42..f2bc60e 100644 --- a/gdb/xcoffsolib.c +++ b/gdb/xcoffsolib.c @@ -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 ? ")" : ""); } } |