aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-08-04 11:16:37 +0200
committerTom de Vries <tdevries@suse.de>2020-08-04 11:16:37 +0200
commit521894aa4bf50ca6569844af0c604ee8d5ea4b44 (patch)
treeb55c59efc9acccf2cd9ac468d3cdc92775852cb6
parent31be51609cb7cb999aca291eb62a646dcb84fbe3 (diff)
downloadgdb-521894aa4bf50ca6569844af0c604ee8d5ea4b44.zip
gdb-521894aa4bf50ca6569844af0c604ee8d5ea4b44.tar.gz
gdb-521894aa4bf50ca6569844af0c604ee8d5ea4b44.tar.bz2
[gdb/symtab] Handle invalid partial DIE reference
When reverting commit 9cfd2b89bd "[gdb/testsuite] Fix gdb.arch/amd64-entry-value-paramref.S", we run into an internal-error: ... (gdb) file amd64-entry-value-paramref^M Reading symbols from amd64-entry-value-paramref...^M src/gdb/dwarf2/read.c:18903: internal-error: could not find partial DIE 0x1b7 in cache [from module amd64-entry-value-paramref]^M A problem internal to GDB has been detected,^M further debugging may prove unreliable.^M ... because of invalid dwarf. In contrast, when using -readnow, we have: ... (gdb) file -readnow amd64-entry-value-paramref Reading symbols from amd64-entry-value-paramref... Expanding full symbols from amd64-entry-value-paramref... Dwarf Error: Cannot find DIE at 0x1b7 referenced from DIE at 0x11a \ [in module amd64-entry-value-paramref] (gdb) ... Change the internal error into a Dwarf Error, such that we have: ... (gdb) file amd64-entry-value-paramref^M Reading symbols from amd64-entry-value-paramref...^M Dwarf Error: Cannot not find DIE at 0x1b7 \ [from module amd64-entry-value-paramref]^M ^M (No debugging symbols found in amd64-entry-value-paramref)^M (gdb) ... Build and tested on x86_64-linux. gdb/ChangeLog: 2020-08-04 Tom de Vries <tdevries@suse.de> PR symtab/23270 * dwarf2/read.c (find_partial_die): Change internal error into Dwarf Error.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/dwarf2/read.c4
2 files changed, 7 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index bcd9eda..70268e2 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-04 Tom de Vries <tdevries@suse.de>
+
+ PR symtab/23270
+ * dwarf2/read.c (find_partial_die): Change internal error into Dwarf
+ Error.
+
2020-08-03 John Baldwin <jhb@FreeBSD.org>
* syscalls/freebsd.xml: Regenerate.
diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c
index bcbffbf..f591ef6 100644
--- a/gdb/dwarf2/read.c
+++ b/gdb/dwarf2/read.c
@@ -18900,9 +18900,7 @@ find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
}
if (pd == NULL)
- internal_error (__FILE__, __LINE__,
- _("could not find partial DIE %s "
- "in cache [from module %s]\n"),
+ error (_("Dwarf Error: Cannot not find DIE at %s [from module %s]\n"),
sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
return { cu, pd };
}