diff options
author | Ali Tamur <tamur@google.com> | 2019-08-26 18:40:18 -0700 |
---|---|---|
committer | Ali Tamur <tamur@google.com> | 2019-09-30 18:00:41 -0700 |
commit | 8fe0f950f4c0438e684a532add46dc99ee32165c (patch) | |
tree | 4f1847a8eb7903015aec81e9626b915243417c50 /gdb | |
parent | af79fcc547dde358d66666c348e324e50bc2b125 (diff) | |
download | gdb-8fe0f950f4c0438e684a532add46dc99ee32165c.zip gdb-8fe0f950f4c0438e684a532add46dc99ee32165c.tar.gz gdb-8fe0f950f4c0438e684a532add46dc99ee32165c.tar.bz2 |
[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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 10 |
2 files changed, 15 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a096cae..1be7f4b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 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. (process_full_type_unit): Likewise. (dump_die_shallow): Likewise. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 0f4f366..53e7393 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -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); |