Get rid of AIX specific PC_LOAD_SEGMENT, replace with PC_SOLIB.
authorPeter Schauer <Peter.Schauer@mytum.de>
Sat, 10 Feb 2001 12:01:11 +0000 (12:01 +0000)
committerPeter Schauer <Peter.Schauer@mytum.de>
Sat, 10 Feb 2001 12:01:11 +0000 (12:01 +0000)
* 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.

gdb/ChangeLog
gdb/config/rs6000/nm-rs6000.h
gdb/stack.c
gdb/xcoffsolib.c

index d9ddef1a8fcf4245855155f73cabee5be99cdae1..ae38ff09ae7adb7526e1675432b1f97ec4cb6ee1 100644 (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
index d405aecbffb11dcd532d061e96d7889da03b2882..573723a8d57d9783dacf5b1c0bc06abbb4e68fb9 100644 (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 */
 
index 5bc044f26250c2736038ff70fcfba4d0a45d38a6..af415e2c2f7446f9b795630b9f917213dbea2af3 100644 (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))
     {
index 3876a426239e5fb787842779fe2940340fa0e3a1..f2bc60e576d2644d39edfe1a80e69ae20fe5400f 100644 (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.
 #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 ? ")" : "");
     }
 }