From ae7e78255666733d238e676a0bab14986a1483dd Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 10 Oct 2017 13:37:58 +0100 Subject: [PATCH] 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. --- binutils/ChangeLog | 6 ++++++ binutils/dwarf.c | 8 ++++++++ 2 files changed, 14 insertions(+) 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) -- 2.30.2