diff options
author | Tom de Vries <tdevries@suse.de> | 2021-02-11 21:03:03 +0100 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2021-02-11 21:03:03 +0100 |
commit | 05f68f52ef0dc3cc52ee5886509a83f159224eb8 (patch) | |
tree | 5f72c7c63860320c9324de5d931b02a7a3d31b49 /gdb/dwarf2 | |
parent | b260f8d60c24fb541b9b4635ed31e30e6acd6b7a (diff) | |
download | gdb-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.c | 3 |
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 |