mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
Improve "set debug separate-debug-file"
"set debug separate-debug-file" shows which candidates are considered,
when trying to find separate debug info. But it's not clear if GDB used
a certain candidate, and if not, why not. This patch adds some
precision:
Before:
Looking for separate debug info (debug link) for /lib/x86_64-linux-gnu/libc.so.6
Trying /lib/x86_64-linux-gnu/libc-2.23.so
Trying /lib/x86_64-linux-gnu/.debug/libc-2.23.so
Trying /usr/lib/debug//lib/x86_64-linux-gnu/libc-2.23.so
After:
Looking for separate debug info (debug link) for /lib/x86_64-linux-gnu/libc.so.6
Trying /lib/x86_64-linux-gnu/libc-2.23.so... no, same file as the objfile.
Trying /lib/x86_64-linux-gnu/.debug/libc-2.23.so... no, unable to open.
Trying /usr/lib/debug//lib/x86_64-linux-gnu/libc-2.23.so... yes!
gdb/ChangeLog:
* build-id.c (build_id_to_debug_bfd): Enhance debug output.
* symfile.c (separate_debug_file_exists): Likewise.
This commit is contained in:
committed by
Simon Marchi
parent
5172760036
commit
50794b45a2
@@ -98,7 +98,10 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
|
||||
link += ".debug";
|
||||
|
||||
if (separate_debug_file_debug)
|
||||
printf_unfiltered (_(" Trying %s\n"), link.c_str ());
|
||||
{
|
||||
printf_unfiltered (_(" Trying %s..."), link.c_str ());
|
||||
gdb_flush (gdb_stdout);
|
||||
}
|
||||
|
||||
/* lrealpath() is expensive even for the usually non-existent files. */
|
||||
gdb::unique_xmalloc_ptr<char> filename;
|
||||
@@ -106,16 +109,36 @@ build_id_to_debug_bfd (size_t build_id_len, const bfd_byte *build_id)
|
||||
filename.reset (lrealpath (link.c_str ()));
|
||||
|
||||
if (filename == NULL)
|
||||
continue;
|
||||
{
|
||||
if (separate_debug_file_debug)
|
||||
printf_unfiltered (_(" no, unable to compute real path\n"));
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/* We expect to be silent on the non-existing files. */
|
||||
abfd = gdb_bfd_open (filename.get (), gnutarget, -1);
|
||||
|
||||
if (abfd == NULL)
|
||||
continue;
|
||||
{
|
||||
if (separate_debug_file_debug)
|
||||
printf_unfiltered (_(" no, unable to open.\n"));
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (build_id_verify (abfd.get(), build_id_len, build_id))
|
||||
break;
|
||||
{
|
||||
if (separate_debug_file_debug)
|
||||
printf_unfiltered (_(" yes!\n"));
|
||||
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (separate_debug_file_debug)
|
||||
printf_unfiltered (_(" no, build-id does not match.\n"));
|
||||
}
|
||||
|
||||
abfd.release ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user