diff options
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/dwarf.c | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 048a972..64fdaea 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2020-04-29 Andrew Burgess <andrew.burgess@embecosm.com> + + * dwarf.c (display_debug_ranges): Ignore duplicate entries in + range_entries for the same offset. + 2020-04-29 Nick Clifton <nickc@redhat.com> * readelf.c (warn): New function - like elfcomm.c version but only diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 675b4d0..eb053ce 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) |