diff options
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/build-id.c | 31 | ||||
-rw-r--r-- | gdb/symfile.c | 39 |
3 files changed, 66 insertions, 9 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c37e281..425429e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2018-12-26 Simon Marchi <simon.marchi@ericsson.com> + + * build-id.c (build_id_to_debug_bfd): Enhance debug output. + * symfile.c (separate_debug_file_exists): Likewise. + 2018-12-24 Andrew Burgess <andrew.burgess@embecosm.com> * c-exp.y (field_name): Allow DOUBLE_KEYWORD, INT_KEYWORD, LONG, diff --git a/gdb/build-id.c b/gdb/build-id.c index c8eacbd..ea6b61d 100644 --- a/gdb/build-id.c +++ b/gdb/build-id.c @@ -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 (); } diff --git a/gdb/symfile.c b/gdb/symfile.c index 8ab6a25..991b71f 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -1285,12 +1285,20 @@ separate_debug_file_exists (const std::string &name, unsigned long crc, return 0; if (separate_debug_file_debug) - printf_filtered (_(" Trying %s\n"), name.c_str ()); + { + printf_filtered (_(" Trying %s..."), name.c_str ()); + gdb_flush (gdb_stdout); + } gdb_bfd_ref_ptr abfd (gdb_bfd_open (name.c_str (), gnutarget, -1)); if (abfd == NULL) - return 0; + { + if (separate_debug_file_debug) + printf_filtered (_(" no, unable to open.\n")); + + return 0; + } /* Verify symlinks were not the cause of filename_cmp name difference above. @@ -1309,7 +1317,12 @@ separate_debug_file_exists (const std::string &name, unsigned long crc, { if (abfd_stat.st_dev == parent_stat.st_dev && abfd_stat.st_ino == parent_stat.st_ino) - return 0; + { + if (separate_debug_file_debug) + printf_filtered (_(" no, same file as the objfile.\n")); + + return 0; + } verified_as_different = 1; } else @@ -1318,7 +1331,12 @@ separate_debug_file_exists (const std::string &name, unsigned long crc, file_crc_p = gdb_bfd_crc (abfd.get (), &file_crc); if (!file_crc_p) - return 0; + { + if (separate_debug_file_debug) + printf_filtered (_(" no, error computing CRC.\n")); + + return 0; + } if (crc != file_crc) { @@ -1331,7 +1349,12 @@ separate_debug_file_exists (const std::string &name, unsigned long crc, if (!verified_as_different) { if (!gdb_bfd_crc (parent_objfile->obfd, &parent_crc)) - return 0; + { + if (separate_debug_file_debug) + printf_filtered (_(" no, error computing CRC.\n")); + + return 0; + } } if (verified_as_different || parent_crc != file_crc) @@ -1339,9 +1362,15 @@ separate_debug_file_exists (const std::string &name, unsigned long crc, " does not match \"%s\" (CRC mismatch).\n"), name.c_str (), objfile_name (parent_objfile)); + if (separate_debug_file_debug) + printf_filtered (_(" no, CRC doesn't match.\n")); + return 0; } + if (separate_debug_file_debug) + printf_filtered (_(" yes!\n")); + return 1; } |