Only print "no debugging symbols" message once

The "no debugging symbols" message can be confusing in some cases, for
example when gdb finds separate debug info for an objfile, but the
separate debug info does not contain symbols.

For example:

    (gdb) file /bin/ls
    Reading symbols from /bin/ls...
    Reading symbols from .gnu_debugdata for /usr/bin/ls...
    (No debugging symbols found in .gnu_debugdata for /usr/bin/ls)
    (No debugging symbols found in /bin/ls)

Here, I think the second "no debugging symbols" message is redundant
and confusing.

This patch changes gdb to only emit this message when the objfile in
question does not have a separate debug file.  So, in the example
above, the output would now read:

    (gdb) file /bin/ls
    Reading symbols from /bin/ls...
    Reading symbols from .gnu_debugdata for /usr/bin/ls...
    (No debugging symbols found in .gnu_debugdata for /usr/bin/ls)

2018-10-04  Tom Tromey  <tom@tromey.com>

	* symfile.c (symbol_file_add_with_addrs): Do not print "no
	debugging symbols" message if there is a separate debug objfile.
This commit is contained in:
Tom Tromey 2018-05-27 21:12:58 -06:00
parent 3453e7e409
commit e79497a160
2 changed files with 11 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2018-10-04 Tom Tromey <tom@tromey.com>
* symfile.c (symbol_file_add_with_addrs): Do not print "no
debugging symbols" message if there is a separate debug objfile.
2018-10-04 Tom Tromey <tom@tromey.com>
PR cli/19551:

View File

@ -1128,7 +1128,12 @@ symbol_file_add_with_addrs (bfd *abfd, const char *name,
objfile->sf->qf->expand_all_symtabs (objfile);
}
if (should_print && !objfile_has_symbols (objfile))
/* Note that we only print a message if we have no symbols and have
no separate debug file. If there is a separate debug file which
does not have symbols, we'll have emitted this message for that
file, and so printing it twice is just redundant. */
if (should_print && !objfile_has_symbols (objfile)
&& objfile->separate_debug_objfile == nullptr)
printf_filtered (_("(No debugging symbols found in %s)\n"), name);
if (should_print)