aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2021-02-11 21:03:03 +0100
committerTom de Vries <tdevries@suse.de>2021-02-11 21:03:03 +0100
commit05f68f52ef0dc3cc52ee5886509a83f159224eb8 (patch)
tree5f72c7c63860320c9324de5d931b02a7a3d31b49 /gdb/dwarf2
parentb260f8d60c24fb541b9b4635ed31e30e6acd6b7a (diff)
downloadgdb-05f68f52ef0dc3cc52ee5886509a83f159224eb8.zip
gdb-05f68f52ef0dc3cc52ee5886509a83f159224eb8.tar.gz
gdb-05f68f52ef0dc3cc52ee5886509a83f159224eb8.tar.bz2
[gdb/symtab] Handle DW_FORM_strx in form_requires_reprocessing
When running test-case gdb.dwarf2/fission-mix.exp using gcc-11, I run into: ... (gdb) file fission-mix^M Reading symbols from fission-mix...^M src/gdb/dwarf2/attribute.h:258: internal-error: \ void attribute::set_unsigned_reprocess(ULONGEST): \ Assertion `form_requires_reprocessing ()' failed.^M ... This happens when calling set_unsigned_reprocess on an attribute with form DW_FORM_strx. The assert triggers because DW_FORM_strx is not listed in form_requires_reprocessing. Fix this by adding DW_FORM_strx in form_requires_reprocessing. Tested on x86_64-linux. gdb/ChangeLog: 2021-02-11 Tom de Vries <tdevries@suse.de> PR symtab/27353 * dwarf2/attribute.c (attribute::form_requires_reprocessing): Return true for DW_FORM_strx.
Diffstat (limited to 'gdb/dwarf2')
-rw-r--r--gdb/dwarf2/attribute.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gdb/dwarf2/attribute.c b/gdb/dwarf2/attribute.c
index b4f188a..3205b0f 100644
--- a/gdb/dwarf2/attribute.c
+++ b/gdb/dwarf2/attribute.c
@@ -192,7 +192,8 @@ attribute::form_is_unsigned () const
bool
attribute::form_requires_reprocessing () const
{
- return (form == DW_FORM_strx1
+ return (form == DW_FORM_strx
+ || form == DW_FORM_strx1
|| form == DW_FORM_strx2
|| form == DW_FORM_strx3
|| form == DW_FORM_strx4