aboutsummaryrefslogtreecommitdiff
path: root/gdb/xcoffsolib.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>2001-02-10 12:01:11 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>2001-02-10 12:01:11 +0000
commita8079a9b4cb31cbff90e4c6aba803dc7e9a1c2d0 (patch)
treee316a773ab921de4faafcb5596c58c189171c826 /gdb/xcoffsolib.c
parent4b2e486790b383f1c11a60c97deb2c23456d083a (diff)
downloadgdb-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.c37
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 ? ")" : "");
}
}