[patch] Fix a crash when displaying variables from shared library.

Paul Pluzhnikov ppluzhnikov@google.com
Fri Mar 6 18:31:00 GMT 2009


On Fri, Mar 6, 2009 at 9:48 AM, Joel Brobecker <brobecker@adacore.com> wrote:

> (On a side note - I think that "solib_address" is a bad name.
> Independently of this change, we should think about changing it
> to "solib_name_from_address" one of these days).

Attached patch does that.

I didn't touch similarly mis-named xcoff_solib_address, because I can't
see any use of that symbol. Perhaps it should be deleted?

If it's a debug-only helper, I can rename it and add a comment to that
effect.

Thanks,
-- 
Paul Pluzhnikov

2009-03-06  Paul Pluzhnikov  <ppluzhnikov@google.com>

	    Rename solib_address to solib_name_from_address.
	    * breakpoint.c (insert_bp_location, disable_breakpoints_in_shlibs)
	    (disable_breakpoints_in_unloaded_shlib): Update.
	    * printcmd.c (display_uses_solib_p): Likewise.
	    * stack.c (print_frame): Likewise.
	    * solib.c: Rename.
	    * solib.h: Rename.
-------------- next part --------------
Index: breakpoint.c
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.381
diff -u -p -u -r1.381 breakpoint.c
--- breakpoint.c	5 Mar 2009 22:37:10 -0000	1.381
+++ breakpoint.c	6 Mar 2009 18:23:46 -0000
@@ -1160,7 +1160,7 @@ Note: automatically using hardware break
       if (val)
 	{
 	  /* Can't set the breakpoint.  */
-	  if (solib_address (bpt->address))
+	  if (solib_name_from_address (bpt->address))
 	    {
 	      /* See also: disable_breakpoints_in_shlibs. */
 	      val = 0;
@@ -1629,7 +1629,7 @@ remove_breakpoint (struct bp_location *b
       /* In some cases, we might not be able to remove a breakpoint
 	 in a shared library that has already been removed, but we
 	 have not yet processed the shlib unload event.  */
-      if (val && solib_address (b->address))
+      if (val && solib_name_from_address (b->address))
 	val = 0;
 
       if (val)
@@ -4439,7 +4439,7 @@ disable_breakpoints_in_shlibs (void)
 #ifdef PC_SOLIB
 	&& PC_SOLIB (loc->address)
 #else
-	&& solib_address (loc->address)
+	&& solib_name_from_address (loc->address)
 #endif
 	)
       {
@@ -4475,7 +4475,7 @@ disable_breakpoints_in_unloaded_shlib (s
 #ifdef PC_SOLIB
 	char *so_name = PC_SOLIB (loc->address);
 #else
-	char *so_name = solib_address (loc->address);
+	char *so_name = solib_name_from_address (loc->address);
 #endif
 	if (so_name && !strcmp (so_name, solib->so_name))
           {
Index: printcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/printcmd.c,v
retrieving revision 1.145
diff -u -p -u -r1.145 printcmd.c
--- printcmd.c	5 Mar 2009 23:45:14 -0000	1.145
+++ printcmd.c	6 Mar 2009 18:23:46 -0000
@@ -1767,7 +1767,7 @@ display_uses_solib_p (const struct displ
   struct expression *const exp = d->exp;
 
   if (d->block != NULL
-      && solib_address (d->block->startaddr) == solib->so_name)
+      && solib_name_from_address (d->block->startaddr) == solib->so_name)
     return 1;
 
   for (i = 0; i < exp->nelts; )
@@ -1783,7 +1783,7 @@ display_uses_solib_p (const struct displ
 	    SYMBOL_OBJ_SECTION (symbol);
 
 	  if (block != NULL
-	      && solib_address (block->startaddr) == solib->so_name)
+	      && solib_name_from_address (block->startaddr) == solib->so_name)
 	    return 1;
 
 	  if (section && section->objfile == solib->objfile)
Index: solib.c
===================================================================
RCS file: /cvs/src/src/gdb/solib.c,v
retrieving revision 1.112
diff -u -p -u -r1.112 solib.c
--- solib.c	5 Mar 2009 23:45:14 -0000	1.112
+++ solib.c	6 Mar 2009 18:23:46 -0000
@@ -838,11 +838,12 @@ info_sharedlibrary_command (char *ignore
 
    GLOBAL FUNCTION
 
-   solib_address -- check to see if an address is in a shared lib
+   solib_name_from_address -- if an address is in a shared lib, return
+   its name.
 
    SYNOPSIS
 
-   char * solib_address (CORE_ADDR address)
+   char * solib_name_from_address (CORE_ADDR address)
 
    DESCRIPTION
 
@@ -856,7 +857,7 @@ info_sharedlibrary_command (char *ignore
  */
 
 char *
-solib_address (CORE_ADDR address)
+solib_name_from_address (CORE_ADDR address)
 {
   struct so_list *so = 0;	/* link map state variable */
 
Index: solib.h
===================================================================
RCS file: /cvs/src/src/gdb/solib.h,v
retrieving revision 1.21
diff -u -p -u -r1.21 solib.h
--- solib.h	3 Jan 2009 05:57:53 -0000	1.21
+++ solib.h	6 Mar 2009 18:23:46 -0000
@@ -45,7 +45,7 @@ extern void solib_create_inferior_hook (
 
 /* If ADDR lies in a shared library, return its name.  */
 
-extern char *solib_address (CORE_ADDR);
+extern char *solib_name_from_address (CORE_ADDR);
 
 /* Return 1 if PC lies in the dynamic symbol resolution code of the
    run time loader.  */
Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.185
diff -u -p -u -r1.185 stack.c
--- stack.c	11 Feb 2009 16:07:28 -0000	1.185
+++ stack.c	6 Mar 2009 18:23:46 -0000
@@ -730,7 +730,7 @@ print_frame (struct frame_info *frame, i
 #ifdef PC_SOLIB
       char *lib = PC_SOLIB (get_frame_pc (frame));
 #else
-      char *lib = solib_address (get_frame_pc (frame));
+      char *lib = solib_name_from_address (get_frame_pc (frame));
 #endif
       if (lib)
 	{


More information about the Gdb-patches mailing list