Warn for missing separate debug files only if needed
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 1 Mar 2021 13:34:34 +0000 (05:34 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 1 Mar 2021 13:34:47 +0000 (05:34 -0800)
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
binutils/dwarf.c
binutils/testsuite/binutils-all/compress.exp

index 419be6410347af1a44ae75aff5c314a3c946eb36..3aec667d16af27f848421c377b78c438bb07e12b 100644 (file)
@@ -1,3 +1,11 @@
+2021-03-01  H.J. Lu  <hongjiu.lu@intel.com>
+
+       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  <amodra@gmail.com>
 
        PR 27128
index 555e5e04b94b60824078c9eccdecb331631b843c..f50b7eeaeb18f15cd32bd00b3b05646ffd8fa2f8 100644 (file)
@@ -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);
index 98daf67155222500b7358793a6b4aee2fcf02277..88fef269905e812d2918575b623cb77ff9039601 100644 (file)
@@ -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 {