aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog14
-rw-r--r--gdb/config/rs6000/nm-rs6000.h9
-rw-r--r--gdb/stack.c18
-rw-r--r--gdb/xcoffsolib.c37
4 files changed, 39 insertions, 39 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d9ddef1..ae38ff0 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,19 @@
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
with xmalloc calls and cleanups.
diff --git a/gdb/config/rs6000/nm-rs6000.h b/gdb/config/rs6000/nm-rs6000.h
index d405aec..573723a 100644
--- a/gdb/config/rs6000/nm-rs6000.h
+++ b/gdb/config/rs6000/nm-rs6000.h
@@ -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 */
diff --git a/gdb/stack.c b/gdb/stack.c
index 5bc044f..af415e2 100644
--- a/gdb/stack.c
+++ b/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))
{
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 ? ")" : "");
}
}