This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] bitfield-parent-optimized-out: Fix struct definition
- From: Pedro Alves <palves at redhat dot com>
- To: Luis Machado <lgustavo at codesourcery dot com>, Andreas Arnez <arnez at linux dot vnet dot ibm dot com>, gdb-patches at sourceware dot org
- Date: Tue, 15 Nov 2016 18:12:06 +0000
- Subject: Re: [PATCH] bitfield-parent-optimized-out: Fix struct definition
- Authentication-results: sourceware.org; auth=none
- References: <m3bmxlx0ya.fsf@oc1027705133.ibm.com> <42361b5d-89ad-553d-ca60-534af299d2ce@codesourcery.com>
On 11/11/2016 11:26 PM, Luis Machado wrote:
> On 11/11/2016 01:37 PM, Andreas Arnez wrote:
>> 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}
>> }
>> }
>>
>>
>
> The patch looks good to me, but i'm wondering if Pedro meant for both
> members to overlap (a union) instead of being two separate members?
Possibly; I don't remember. If the changed test would still trigger
the old GDB bug, then I'm fine with the change.
Thanks,
Pedro Alves