diff options
author | Tom de Vries <tdevries@suse.de> | 2020-08-04 11:16:37 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2020-08-04 11:16:37 +0200 |
commit | 521894aa4bf50ca6569844af0c604ee8d5ea4b44 (patch) | |
tree | b55c59efc9acccf2cd9ac468d3cdc92775852cb6 | |
parent | 31be51609cb7cb999aca291eb62a646dcb84fbe3 (diff) | |
download | gdb-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/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/dwarf2/read.c | 4 |
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 }; } |