[PATCH v2 2/4] DWARF 5 support: Handle DW_FORM_strx

* Handle DW_FORM_strx forms everywhere.

Tested with CC=/usr/bin/gcc (version 8.3.0) against master branch (also with
-gsplit-dwarf and -gdwarf-4 flags) and there was no increase in the set of
tests that fails.

This is part of an effort to support DWARF 5 in gdb.

gdb/ChangeLog:

        * dwarf2read.c (skip_one_die): Handle DW_FORM_strx forms.
        (dwarf2_string_attr): Likewise.
This commit is contained in:
Ali Tamur 2019-08-26 18:40:18 -07:00
parent af79fcc547
commit 8fe0f950f4
2 changed files with 15 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2019-09-30 Ali Tamur <tamur@google.com>
* dwarf2read.c (skip_one_die): Handle DW_FORM_strx forms.
(dwarf2_string_attr): Likewise.
2019-09-30 Ali Tamur <tamur@google.com>
* dwarf2read.c (process_full_comp_unit): Remove whitespace at the EOL.

View File

@ -9336,6 +9336,7 @@ skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
case DW_FORM_data1:
case DW_FORM_ref1:
case DW_FORM_flag:
case DW_FORM_strx1:
info_ptr += 1;
break;
case DW_FORM_flag_present:
@ -9343,10 +9344,15 @@ skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
break;
case DW_FORM_data2:
case DW_FORM_ref2:
case DW_FORM_strx2:
info_ptr += 2;
break;
case DW_FORM_strx3:
info_ptr += 3;
break;
case DW_FORM_data4:
case DW_FORM_ref4:
case DW_FORM_strx4:
info_ptr += 4;
break;
case DW_FORM_data8:
@ -20168,6 +20174,10 @@ dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *c
if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
|| attr->form == DW_FORM_string
|| attr->form == DW_FORM_strx
|| attr->form == DW_FORM_strx1
|| attr->form == DW_FORM_strx2
|| attr->form == DW_FORM_strx3
|| attr->form == DW_FORM_strx4
|| attr->form == DW_FORM_GNU_str_index
|| attr->form == DW_FORM_GNU_strp_alt)
str = DW_STRING (attr);