This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Improve the speed of the --dwarf-start option by skipping processing of any comp unit that ends befo
- From: Nick Clifton <nickc at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 10 Oct 2017 12:38:45 -0000
- Subject: [binutils-gdb] Improve the speed of the --dwarf-start option by skipping processing of any comp unit that ends befo
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ae7e78255666733d238e676a0bab14986a1483dd
commit ae7e78255666733d238e676a0bab14986a1483dd
Author: Nick Clifton <nickc@redhat.com>
Date: Tue Oct 10 13:37:58 2017 +0100
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:
---
binutils/ChangeLog | 6 ++++++
binutils/dwarf.c | 8 ++++++++
2 files changed, 14 insertions(+)
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index ca4990e..9f2e5f0 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 91f95ff..2506d53 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)