diff options
author | Nick Clifton <nickc@redhat.com> | 2017-10-10 13:37:58 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2017-10-10 13:37:58 +0100 |
commit | ae7e78255666733d238e676a0bab14986a1483dd (patch) | |
tree | 489c740480a9b99d23059ecafc66d18103af0ccd | |
parent | fc3c534364ca6d6de4f0dbcaf347ec85f5e2f8ff (diff) | |
download | binutils-gdb-ae7e78255666733d238e676a0bab14986a1483dd.tar.gz |
Improve the speed of the --dwarf-start option by skipping processing of any comp unit that ends before the specified start address.
PR 22249
* dwarf.c (process_debug_info): Skip any comp unit that ends
before dwarf_start_die.
-rw-r--r-- | binutils/ChangeLog | 6 | ||||
-rw-r--r-- | binutils/dwarf.c | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index ca4990ea077..9f2e5f0a61c 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2017-10-10 Tom Tromey <tromey@sourceware.org> + + PR 22249 + * dwarf.c (process_debug_info): Skip any comp unit that ends + before dwarf_start_die. + 2017-10-06 Alan Modra <amodra@gmail.com> * dwarf.c (process_debug_info): Consolidate header length checks. diff --git a/binutils/dwarf.c b/binutils/dwarf.c index 91f95ff0682..2506d533b69 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -2667,6 +2667,14 @@ process_debug_info (struct dwarf_section *section, SAFE_BYTE_GET_AND_INC (type_offset, hdrptr, offset_size, end); } + if (dwarf_start_die > (cu_offset + compunit.cu_length + + initial_length_size)) + { + start = section_begin + cu_offset + compunit.cu_length + + initial_length_size; + continue; + } + if ((do_loc || do_debug_loc || do_debug_ranges) && num_debug_info_entries == 0 && ! do_types) |