[PATCH][gdb/symtab] Handle DW_FORM_strx in form_requires_reprocessing
Tom de Vries
tdevries@suse.de
Thu Feb 11 10:59:11 GMT 2021
Hi,
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.
Any comments?
Thanks,
- Tom
[gdb/symtab] Handle DW_FORM_strx in form_requires_reprocessing
gdb/ChangeLog:
2021-02-09 Tom de Vries <tdevries@suse.de>
PR symtab/27353
* dwarf2/attribute.c (attribute::form_requires_reprocessing):
Return true for DW_FORM_strx.
---
gdb/dwarf2/attribute.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gdb/dwarf2/attribute.c b/gdb/dwarf2/attribute.c
index b4f188a096e..3205b0f7d29 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
More information about the Gdb-patches
mailing list