From ecd65684f542be614adc56321c118d8985d35409 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Mon, 1 Mar 2021 05:34:34 -0800 Subject: [PATCH] Warn for missing separate debug files only if needed We shouldn't warn missing separate debug files when debug info isn't needed. PR binutils/27486 * dwarf.c (load_separate_debug_info): Issue warning only if do_debug_links is set. * testsuite/binutils-all/compress.exp: Run objdump and readelf with missing debug file. --- binutils/ChangeLog | 8 +++ binutils/dwarf.c | 54 +++++++++++--------- binutils/testsuite/binutils-all/compress.exp | 15 ++++++ 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 419be64103..3aec667d16 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,11 @@ +2021-03-01 H.J. Lu + + PR binutils/27486 + * dwarf.c (load_separate_debug_info): Issue warning only if + do_debug_links is set. + * testsuite/binutils-all/compress.exp: Run objdump and readelf + with missing debug file. + 2021-03-01 Alan Modra PR 27128 diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 555e5e04b9..f50b7eeaeb 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -11210,44 +11210,52 @@ load_separate_debug_info (const char * main_filename, } #endif - /* Failed to find the file. */ - warn (_("could not find separate debug file '%s'\n"), separate_filename); - warn (_("tried: %s\n"), debug_filename); + if (do_debug_links) + { + /* Failed to find the file. */ + warn (_("could not find separate debug file '%s'\n"), + separate_filename); + warn (_("tried: %s\n"), debug_filename); #ifdef EXTRA_DEBUG_ROOT2 - sprintf (debug_filename, "%s/%s", EXTRA_DEBUG_ROOT2, separate_filename); - warn (_("tried: %s\n"), debug_filename); + sprintf (debug_filename, "%s/%s", EXTRA_DEBUG_ROOT2, + separate_filename); + warn (_("tried: %s\n"), debug_filename); #endif #ifdef EXTRA_DEBUG_ROOT1 - sprintf (debug_filename, "%s/%s/%s", EXTRA_DEBUG_ROOT1, canon_dir, separate_filename); - warn (_("tried: %s\n"), debug_filename); + sprintf (debug_filename, "%s/%s/%s", EXTRA_DEBUG_ROOT1, + canon_dir, separate_filename); + warn (_("tried: %s\n"), debug_filename); - sprintf (debug_filename, "%s/%s", EXTRA_DEBUG_ROOT1, separate_filename); - warn (_("tried: %s\n"), debug_filename); + sprintf (debug_filename, "%s/%s", EXTRA_DEBUG_ROOT1, + separate_filename); + warn (_("tried: %s\n"), debug_filename); #endif - sprintf (debug_filename, "%s.debug/%s", canon_dir, separate_filename); - warn (_("tried: %s\n"), debug_filename); + sprintf (debug_filename, "%s.debug/%s", canon_dir, + separate_filename); + warn (_("tried: %s\n"), debug_filename); - sprintf (debug_filename, "%s%s", canon_dir, separate_filename); - warn (_("tried: %s\n"), debug_filename); + sprintf (debug_filename, "%s%s", canon_dir, separate_filename); + warn (_("tried: %s\n"), debug_filename); - sprintf (debug_filename, ".debug/%s", separate_filename); - warn (_("tried: %s\n"), debug_filename); + sprintf (debug_filename, ".debug/%s", separate_filename); + warn (_("tried: %s\n"), debug_filename); - sprintf (debug_filename, "%s", separate_filename); - warn (_("tried: %s\n"), debug_filename); + sprintf (debug_filename, "%s", separate_filename); + warn (_("tried: %s\n"), debug_filename); #if HAVE_LIBDEBUGINFOD - { - char *urls = getenv (DEBUGINFOD_URLS_ENV_VAR); - if (urls == NULL) - urls = ""; + { + char *urls = getenv (DEBUGINFOD_URLS_ENV_VAR); + if (urls == NULL) + urls = ""; - warn (_("tried: DEBUGINFOD_URLS=%s\n"), urls); - } + warn (_("tried: DEBUGINFOD_URLS=%s\n"), urls); + } #endif + } free (canon_dir); free (debug_filename); diff --git a/binutils/testsuite/binutils-all/compress.exp b/binutils/testsuite/binutils-all/compress.exp index 98daf67155..88fef26990 100644 --- a/binutils/testsuite/binutils-all/compress.exp +++ b/binutils/testsuite/binutils-all/compress.exp @@ -676,6 +676,7 @@ proc test_gnu_debuglink {} { global STRIP global OBJCOPY global OBJDUMP + global READELF global gcc_gas_flag set test "gnu-debuglink" @@ -757,6 +758,20 @@ proc test_gnu_debuglink {} { } else { pass "$test (objdump 2)" } + + remote_file host delete tmpdir/testprog.compress + set got [remote_exec host [concat sh -c [list "$OBJDUMP --syms tmpdir/testprog > /dev/null"]]] + if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then { + fail "$test (objdump with missing link)" + } else { + pass "$test (objdump with missing link)" + } + set got [remote_exec host [concat sh -c [list "$READELF -S tmpdir/testprog > /dev/null"]]] + if { [lindex $got 0] != 0 || ![string match "" [lindex $got 1]] } then { + fail "$test (readelf with missing link)" + } else { + pass "$test (readelf with missing link)" + } } if {[is_elf_format]} then { -- 2.34.1