From: Nick Clifton Date: Tue, 10 Oct 2017 12:37:58 +0000 (+0100) Subject: Improve the speed of the --dwarf-start option by skipping processing of any comp... X-Git-Tag: users/ARM/embedded-binutils-master-2017q4~685 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ae7e78255666733d238e676a0bab14986a1483dd;p=thirdparty%2Fbinutils-gdb.git 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. --- 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 + + PR 22249 + * dwarf.c (process_debug_info): Skip any comp unit that ends + before dwarf_start_die. + 2017-10-06 Alan Modra * 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)