aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@adacore.com>2019-08-14 14:01:57 -0600
committerTom Tromey <tromey@adacore.com>2019-08-15 07:37:31 -0600
commit05192282ca19f8f5c201f630caed68b1632e2619 (patch)
tree94c70d92e366e3d1aed20206a153d8be1e77d1f7
parent6485977b899b2780c575ff1d34ccfa7fa950e492 (diff)
downloadgdb-05192282ca19f8f5c201f630caed68b1632e2619.zip
gdb-05192282ca19f8f5c201f630caed68b1632e2619.tar.gz
gdb-05192282ca19f8f5c201f630caed68b1632e2619.tar.bz2
Fix CU overrun in scan_unit_for_symbols
A customer program had a DWARF CU that consisted of just a CU DIE, without any children. In this situation, scan_unit_for_symbols will try to read past the end of the current CU, and will take use the first bytes of the next CU as an abbrev, printing an error message. This patch fixes the bug by changing scan_unit_for_symbols to stop at the end of the CU rather than the end of the .debug_info section. bfd/ChangeLog 2019-08-15 Tom Tromey <tromey@adacore.com> * dwarf2.c (scan_unit_for_symbols): Check for end of CU, not end of section.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/dwarf2.c2
2 files changed, 6 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8a028cf..ad750bc 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2019-08-15 Tom Tromey <tromey@adacore.com>
+
+ * dwarf2.c (scan_unit_for_symbols): Check for end of CU, not end
+ of section.
+
2019-08-14 Alan Modra <amodra@gmail.com>
PR 24623
diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c
index 057fd91..d56244b 100644
--- a/bfd/dwarf2.c
+++ b/bfd/dwarf2.c
@@ -3072,7 +3072,7 @@ scan_unit_for_symbols (struct comp_unit *unit)
{
bfd *abfd = unit->abfd;
bfd_byte *info_ptr = unit->first_child_die_ptr;
- bfd_byte *info_ptr_end = unit->stash->info_ptr_end;
+ bfd_byte *info_ptr_end = unit->end_ptr;
int nesting_level = 0;
struct nest_funcinfo {
struct funcinfo *func;