This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch] Fix false warning: Shared library is missing debugging information.
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 11 Jan 2010 16:12:58 +0100
- Subject: [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 (*)");