diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-11-07 21:27:54 +0100 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2013-11-07 21:27:54 +0100 |
commit | b947ee100ac604a2f6877a790b57bdf80e4123d5 (patch) | |
tree | e8f6c62d5367c4c36880ac2f24459c521900257e | |
parent | 35d95f378d2f2732055523abcbbfd58f7a404dcd (diff) | |
download | elfutils-b947ee100ac604a2f6877a790b57bdf80e4123d5.tar.gz |
dwfl_core_file_report: Fix a regression of dwfl_core_file_report retval
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
-rw-r--r-- | libdwfl/ChangeLog | 5 | ||||
-rw-r--r-- | libdwfl/core-file.c | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 7f36bdf8..2355cc5b 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,5 +1,10 @@ 2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com> + * core-file.c (dwfl_core_file_report): Replaced variable sniffed by + retval. Fix one forgotten LISTED increase. + +2013-11-07 Jan Kratochvil <jan.kratochvil@redhat.com> + Fix core files for re-prelink-ed files. * core-file.c (dynamic_vaddr_get): New function. (dwfl_core_file_report): New variable file_dynamic_vaddr. Call diff --git a/libdwfl/core-file.c b/libdwfl/core-file.c index 665fcf7a..72a44f86 100644 --- a/libdwfl/core-file.c +++ b/libdwfl/core-file.c @@ -483,14 +483,14 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable) struct r_debug_info r_debug_info; memset (&r_debug_info, 0, sizeof r_debug_info); - int listed = dwfl_link_map_report (dwfl, auxv, auxv_size, + int retval = dwfl_link_map_report (dwfl, auxv, auxv_size, dwfl_elf_phdr_memory_callback, elf, &r_debug_info); + int listed = MAX (0, retval); /* Now sniff segment contents for modules hinted by information gathered from DT_DEBUG. */ - int sniffed = 0; ndx = 0; do { @@ -506,7 +506,7 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable) if (seg > ndx) { ndx = seg; - ++sniffed; + ++listed; } else ++ndx; @@ -534,6 +534,7 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable) true, true); if (mod == NULL) continue; + ++listed; module->elf = NULL; module->fd = -1; /* Move this module to the end of the list, so that we end @@ -560,7 +561,7 @@ dwfl_core_file_report (Dwfl *dwfl, Elf *elf, const char *executable) /* We return the number of modules we found if we found any. If we found none, we return -1 instead of 0 if there was an error rather than just nothing found. */ - return sniffed || listed >= 0 ? listed + sniffed : listed; + return listed > 0 ? listed : retval; } INTDEF (dwfl_core_file_report) NEW_VERSION (dwfl_core_file_report, ELFUTILS_0.158) |