elf.c (elf_open_debugfile_by_debuglink): Don't check CRC if the desired CRC is zero.
authorIan Lance Taylor <iant@golang.org>
Thu, 25 Jan 2018 18:14:04 +0000 (18:14 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 25 Jan 2018 18:14:04 +0000 (18:14 +0000)
* elf.c (elf_open_debugfile_by_debuglink): Don't check CRC if the
desired CRC is zero.
(elf_add): Don't clear *found_sym and *found_dwarf if debuginfo.

From-SVN: r257062

libbacktrace/ChangeLog
libbacktrace/elf.c

index ef9fa2eb54edbafe97cb3dd904823af752798ab3..bb449e4d8ac4eb5a8a87256eff567967f2e96803 100644 (file)
@@ -1,3 +1,9 @@
+2018-01-25  Ian Lance Taylor  <iant@golang.org>
+
+       * elf.c (elf_open_debugfile_by_debuglink): Don't check CRC if the
+       desired CRC is zero.
+       (elf_add): Don't clear *found_sym and *found_dwarf if debuginfo.
+
 2018-01-25  Ian Lance Taylor  <iant@golang.org>
 
        * pecoff.c (coff_add): Only release syms_view if it is valid.
index 4be100ec3daf0f412ee34d77519291f082b681f6..6403c08fa893d94ad7042e70a832d7a9143f87ab 100644 (file)
@@ -997,7 +997,6 @@ elf_open_debugfile_by_debuglink (struct backtrace_state *state,
                                 void *data)
 {
   int ddescriptor;
-  uint32_t got_crc;
 
   ddescriptor = elf_find_debugfile_by_debuglink (state, filename,
                                                 debuglink_name,
@@ -1005,11 +1004,16 @@ elf_open_debugfile_by_debuglink (struct backtrace_state *state,
   if (ddescriptor < 0)
     return -1;
 
-  got_crc = elf_crc32_file (state, ddescriptor, error_callback, data);
-  if (got_crc != debuglink_crc)
+  if (debuglink_crc != 0)
     {
-      backtrace_close (ddescriptor, error_callback, data);
-      return -1;
+      uint32_t got_crc;
+
+      got_crc = elf_crc32_file (state, ddescriptor, error_callback, data);
+      if (got_crc != debuglink_crc)
+       {
+         backtrace_close (ddescriptor, error_callback, data);
+         return -1;
+       }
     }
 
   return ddescriptor;
@@ -2634,8 +2638,11 @@ elf_add (struct backtrace_state *state, const char *filename, int descriptor,
   unsigned int using_debug_view;
   uint16_t *zdebug_table;
 
-  *found_sym = 0;
-  *found_dwarf = 0;
+  if (!debuginfo)
+    {
+      *found_sym = 0;
+      *found_dwarf = 0;
+    }
 
   shdrs_view_valid = 0;
   names_view_valid = 0;