This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch] Fix false warning: Shared library is missing debugging information.


Hi,

since
	http://sourceware.org/ml/gdb-cvs/2009-08/msg00134.html
	commit 28bc5797a9be8409c7f78881f93fff58c4e9d6ed
	Author: Doug Evans <dje@google.com>
GDB prints:
	(gdb) info sharedlibrary 
	From                To                  Syms Read   Shared Object Library
	0x000000362de00af0  0x000000362de18344  Yes (*)     /lib64/ld-linux-x86-64.so.2
	0x000000362ea05390  0x000000362ea107c8  Yes (*)     /lib64/libpthread.so.0
	0x000000362e21e860  0x000000362e32597c  Yes (*)     /lib64/libc.so.6
	(*): Shared library is missing debugging information.
	(gdb) _

despite the system has full separate debug info files installed.

This "Shared library is missing debugging information." message was a response
on a wish by Pedro Alves:
	http://sourceware.org/ml/gdb-patches/2009-07/msg00086.html
	We do have a "Syms Read" column in info shared's output, maybe we
	should extend that from "Yes, No" -> "Yes,
	Sorry-I've-tried-but-didn't-find-any, No".

So the case when debug info has been found - although in a separate debug info
file - should be IMO the case "Yes" and not the case
"Sorry-I've-tried-but-didn't-find-any".

With the patch GDB now prints in the same case:
	(gdb) info sharedlibrary 
	From                To                  Syms Read   Shared Object Library
	0x000000362de00af0  0x000000362de18344  Yes         /lib64/ld-linux-x86-64.so.2
	0x000000362ea05390  0x000000362ea107c8  Yes         /lib64/libpthread.so.0
	0x000000362e21e860  0x000000362e32597c  Yes         /lib64/libc.so.6
	(gdb) _


No regressions on {x86_64,x86_64-m32,i686}-fedora12-linux-gnu.


Thanks,
Jan


2010-01-11  Jan Kratochvil  <jan.kratochvil@redhat.com>

	* solib.c (info_sharedlibrary_command): New variable objfile,
	initialize it.  Prefer checking symbols for separate debug info file.

--- a/gdb/solib.c
+++ b/gdb/solib.c
@@ -842,6 +842,7 @@ info_sharedlibrary_command (char *pattern, int from_tty)
   for (so = so_list_head; so; so = so->next)
     {
       struct cleanup *lib_cleanup;
+      struct objfile *objfile;
 
       if (! so->so_name[0])
 	continue;
@@ -861,10 +862,16 @@ info_sharedlibrary_command (char *pattern, int from_tty)
 	  ui_out_field_skip (uiout, "to");
 	}
 
+      /* We just check the state of any single separate debug info file, if
+	 such one exists.  */
+      objfile = so->objfile;
+      if (objfile->separate_debug_objfile)
+	objfile = objfile->separate_debug_objfile;
+
       if (! ui_out_is_mi_like_p (interp_ui_out (top_level_interpreter ()))
 	  && so->symbols_loaded
-	  && !objfile_has_partial_symbols (so->objfile)
-	  && !objfile_has_full_symbols (so->objfile))
+	  && !objfile_has_partial_symbols (objfile)
+	  && !objfile_has_full_symbols (objfile))
 	{
 	  so_missing_debug_info = 1;
 	  ui_out_field_string (uiout, "syms-read", "Yes (*)");


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]