From cb4c35cfbe460c51fa13df42a56a4f811082f7eb Mon Sep 17 00:00:00 2001 From: Andrew Burgess Date: Wed, 29 Apr 2020 17:21:10 +0100 Subject: [PATCH] When displaying ranges, ignore duplicate offsets. * dwarf.c (display_debug_ranges): Ignore duplicate entries in range_entries for the same offset. --- binutils/ChangeLog | 5 +++++ binutils/dwarf.c | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 048a9721a25..64fdaea6492 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2020-04-29 Andrew Burgess + + * dwarf.c (display_debug_ranges): Ignore duplicate entries in + range_entries for the same offset. + 2020-04-29 Nick Clifton * readelf.c (warn): New function - like elfcomm.c version but only diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 675b4d016fd..eb053ce1f15 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -6923,6 +6923,7 @@ display_debug_ranges (struct dwarf_section *section, int is_rnglists = strstr (section->name, "debug_rnglists") != NULL; /* Initialize it due to a false compiler warning. */ unsigned char address_size = 0; + dwarf_vma last_offset = 0; if (bytes == 0) { @@ -7078,6 +7079,15 @@ display_debug_ranges (struct dwarf_section *section, continue; } + /* If multiple DWARF entities reference the same range then we will + have multiple entries in the `range_entries' list for the same + offset. Thanks to the sort above these will all be consecutive in + the `range_entries' list, so we can easily ignore duplicates + here. */ + if (i > 0 && last_offset == offset) + continue; + last_offset = offset; + if (dwarf_check != 0 && i > 0) { if (start < next) -- 2.30.2