The "struct S" type in bitfield-parent-optimized-out.exp is declared to
have a size of 4 bytes but to hold two 4-byte members: an int-based
bitfield and a 4-byte int. Also, both members have the same
data_member_location 2, causing them to overlap and to reach 2 bytes
beyond the structure's boundary.
This is fixed by increasing the structure size to 8 and setting the
first and second member's data_member_location to 0 and 4, respectively.
gdb/testsuite/ChangeLog:
* gdb.dwarf2/bitfield-parent-optimized-out.exp: Fix DWARF code for
the definition of struct S.
---
gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp b/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
index 27d8044..b789970 100644
--- a/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
+++ b/gdb/testsuite/gdb.dwarf2/bitfield-parent-optimized-out.exp
@@ -43,19 +43,18 @@ Dwarf::assemble $asm_file {
struct_label: structure_type {
{name S}
- {byte_size 4 DW_FORM_sdata}
+ {byte_size 8 DW_FORM_sdata}
} {
member {
{name bitfield}
{type :$int_label}
{bit_size 12 DW_FORM_sdata}
{bit_offset 20 DW_FORM_sdata}
- {data_member_location 2 DW_FORM_sdata}
}
member {
{name intfield}
{type :$int_label}
- {data_member_location 2 DW_FORM_sdata}
+ {data_member_location 4 DW_FORM_sdata}
}
}