binutils-gdb/gdb/dwarf2
Tom Tromey 6ad036d703 Fix handling of DW_AT_data_bit_offset
A newer version of GCC will now emit member locations using just
DW_AT_data_bit_offset, like:

 <3><14fe>: Abbrev Number: 1 (DW_TAG_member)
    <14ff>   DW_AT_name        : (indirect string, offset: 0x215e): nb_bytes
    <1503>   DW_AT_decl_file   : 1
    <1503>   DW_AT_decl_line   : 10
    <1504>   DW_AT_decl_column : 7
    <1505>   DW_AT_type        : <0x150b>
    <1509>   DW_AT_bit_size    : 31
    <150a>   DW_AT_data_bit_offset: 64

whereas earlier versions would emit something like:

 <3><164f>: Abbrev Number: 7 (DW_TAG_member)
    <1650>   DW_AT_name        : (indirect string, offset: 0x218d): nb_bytes
    <1654>   DW_AT_decl_file   : 1
    <1655>   DW_AT_decl_line   : 10
    <1656>   DW_AT_decl_column : 7
    <1657>   DW_AT_type        : <0x165f>
    <165b>   DW_AT_byte_size   : 4
    <165c>   DW_AT_bit_size    : 31
    <165d>   DW_AT_bit_offset  : 1
    <165e>   DW_AT_data_member_location: 8

That is, DW_AT_data_member_location is not emitted any more.  This is
a change due to the switch to DWARF 5 by default.

This change pointed out an existing bug in gdb, namely that the
attr_to_dynamic_prop depends on the presence of
DW_AT_data_member_location.  This patch moves the handling of
DW_AT_data_bit_offset into handle_data_member_location, and updates
attr_to_dynamic_prop to handle this new case.

A new test case is included.  This test fails with GCC 11, but passes
with an earlier version of GCC.
2021-09-24 09:29:09 -06:00
..
abbrev.c Remove Irix 6 workaround from DWARF abbrev reader 2021-03-13 09:41:05 -07:00
abbrev.h Constify abbrev_table::lookup_abbrev 2021-03-13 09:41:05 -07:00
attribute.c [gdb/symtab] Handle DW_AT_decl_file with form DW_FORM_implicit_const 2021-02-24 23:58:42 +01:00
attribute.h [gdb/symtab] Handle DW_AT_decl_file with form DW_FORM_implicit_const 2021-02-24 23:58:42 +01:00
comp-unit-head.c Rename dwarf2/comp-unit.h 2021-05-17 14:16:07 -06:00
comp-unit-head.h Rename dwarf2/comp-unit.h 2021-05-17 14:16:07 -06:00
cu.c Remove dwarf2_cu::language 2021-06-25 12:23:05 -06:00
cu.h Remove dwarf2_cu::language 2021-06-25 12:23:05 -06:00
die.h gdb/dwarf: split dwarf2_cu::ranges_base in two 2021-02-02 10:42:11 -05:00
dwz.c Move dwarf2_get_dwz_file to dwarf2/dwz.h 2021-03-06 09:26:40 -07:00
dwz.h Move dwarf2_get_dwz_file to dwarf2/dwz.h 2021-03-06 09:26:40 -07:00
expr.c Fix register regression in DWARF evaluator 2021-08-16 09:38:15 -06:00
expr.h Add as_lval argument to expression evaluator 2021-08-05 16:41:05 +01:00
frame-tailcall.c gdb: add names to unwinders, add debug messages when looking for unwinder 2021-06-29 12:05:03 -04:00
frame-tailcall.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
frame.c Add as_lval argument to expression evaluator 2021-08-05 16:41:05 +01:00
frame.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
index-cache.c gdb: generate the prefix name for prefix commands on demand 2021-05-12 11:19:22 +01:00
index-cache.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
index-common.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
index-common.h Handle unaligned mapping of .gdb_index 2021-04-17 13:56:36 -06:00
index-write.c [gdb/symtab] Fix CU list in .debug_names for dummy CUs 2021-09-14 12:57:58 +02:00
index-write.h Introduce dwarf2/public.h 2021-03-20 17:23:40 -06:00
leb.c Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
leb.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
line-header.c Fix file-name handling regression with DWARF index 2021-07-17 11:08:18 -06:00
line-header.h Fix file-name handling regression with DWARF index 2021-07-17 11:08:18 -06:00
loc.c Add as_lval argument to expression evaluator 2021-08-05 16:41:05 +01:00
loc.h Add as_lval argument to expression evaluator 2021-08-05 16:41:05 +01:00
macro.c Include objfiles.h in a few .c files 2021-08-08 08:53:17 -06:00
macro.h gdb: avoid dereferencing empty str_offsets_base optional in dwarf_decode_macros 2021-08-04 15:26:22 -04:00
public.h Simplify DWARF reader initialization 2021-03-28 10:43:15 -06:00
read.c Fix handling of DW_AT_data_bit_offset 2021-09-24 09:29:09 -06:00
read.h Fix two regressions caused by CU / TU merging 2021-08-24 07:51:46 -06:00
sect-names.h Move dwarf2_get_dwz_file to dwarf2/dwz.h 2021-03-06 09:26:40 -07:00
section.c gdb: Handle missing .debug_str section 2021-04-07 11:31:30 +01:00
section.h Update copyright year range in all GDB files 2021-01-01 12:12:21 +04:00
stringify.c Reimplement dwarf_unit_type_name 2021-03-18 12:08:41 -06:00
stringify.h Fix typo in dwarf2/stringify.h 2021-03-31 09:48:56 -06:00