From 96f7c2a94afaa4b09091b96c1bc869db18d2c3ed Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 25 Jan 2018 18:14:04 +0000 Subject: [PATCH] elf.c (elf_open_debugfile_by_debuglink): Don't check CRC if the desired CRC is zero. * 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 | 6 ++++++ libbacktrace/elf.c | 21 ++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog index ef9fa2eb54e..bb449e4d8ac 100644 --- a/libbacktrace/ChangeLog +++ b/libbacktrace/ChangeLog @@ -1,3 +1,9 @@ +2018-01-25 Ian Lance Taylor + + * 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 * pecoff.c (coff_add): Only release syms_view if it is valid. diff --git a/libbacktrace/elf.c b/libbacktrace/elf.c index 4be100ec3da..6403c08fa89 100644 --- a/libbacktrace/elf.c +++ b/libbacktrace/elf.c @@ -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; -- 2.30.2