diff options
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/nonvar-access.exp | 33 |
2 files changed, 37 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index e9dc36f..8147091 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2016-11-24 Andreas Arnez <arnez@linux.vnet.ibm.com> + * gdb.dwarf2/nonvar-access.exp: Add a test for accessing + non-byte-aligned bit fields. + +2016-11-24 Andreas Arnez <arnez@linux.vnet.ibm.com> + PR gdb/12616 * gdb.dwarf2/nonvar-access.exp: New testcase. Check that GDB respects the DW_AT_data_bit_offset attribute. diff --git a/gdb/testsuite/gdb.dwarf2/nonvar-access.exp b/gdb/testsuite/gdb.dwarf2/nonvar-access.exp index 21532a6..8910f6d 100644 --- a/gdb/testsuite/gdb.dwarf2/nonvar-access.exp +++ b/gdb/testsuite/gdb.dwarf2/nonvar-access.exp @@ -32,7 +32,7 @@ Dwarf::assemble $asm_file { {DW_AT_name main.c} } { declare_labels int_type_label short_type_label - declare_labels struct_s_label + declare_labels struct_s_label struct_t_label int_type_label: base_type { {name "int"} @@ -58,6 +58,24 @@ Dwarf::assemble $asm_file { } } + struct_t_label: structure_type { + {name t} + {byte_size 4 DW_FORM_sdata} + } { + member { + {name a} + {type :$int_type_label} + {data_member_location 0 DW_FORM_udata} + {bit_size 9 DW_FORM_udata} + } + member { + {name b} + {type :$int_type_label} + {data_bit_offset 9 DW_FORM_udata} + {bit_size 23 DW_FORM_udata} + } + } + DW_TAG_subprogram { {name main} {DW_AT_external 1 flag} @@ -84,6 +102,18 @@ Dwarf::assemble $asm_file { bit_piece 24 0 } SPECIAL_expr} } + DW_TAG_variable { + {name def_t} + {type :$struct_t_label} + {location { + const1u 0 + stack_value + bit_piece 9 0 + const1s -1 + stack_value + bit_piece 23 0 + } SPECIAL_expr} + } } } } @@ -99,5 +129,6 @@ if ![runto_main] { } gdb_test "print def_s" " = \\{a = 0, b = -1\\}" +gdb_test "print def_t" " = \\{a = 0, b = -1\\}" gdb_test "print undef_int" " = <optimized out>" gdb_test "print undef_s.a" " = <optimized out>" |