>>>>> "Simon" == Simon Marchi <sim...@simark.ca> writes:

Simon> Just to make sure I understand, can you clarify how
Simon> DW_AT_data_member_location and DW_AT_bit_offset are used in this
Simon> case?  In particular, which one is constant and which one is an
Simon> evaluated expression?

Dynamic DW_AT_data_member_location, static DW_AT_bit_offset:


 <5><117a>: Abbrev Number: 17 (DW_TAG_member)
    <117b>   DW_AT_name        : (indirect string, offset: 0x1959): 
another_field
...
    <1188>   DW_AT_bit_offset  : 6
    <1189>   DW_AT_data_member_location: 6 byte block: 99 3d 1 0 0 22   
(DW_OP_call4: <0x1193>; DW_OP_plus)
...
 <3><1193>: Abbrev Number: 2 (DW_TAG_dwarf_procedure)
    <1194>   DW_AT_location    : 15 byte block: 97 94 1 37 1a 32 1e 23 7 38 1b 
31 1c 23 3       (DW_OP_push_object_address; DW_OP_deref_size: 1; DW_OP_lit7; 
DW_OP_and; DW_OP_lit2; DW_OP_mul; DW_OP_plus_uconst: 7; DW_OP_lit8; DW_OP_div; 
DW_OP_lit1; DW_OP_minus; DW_OP_plus_uconst: 3)


This comes from the description of this gdb patch, which includes a test
case.  (However, you'd need a patched GCC to get this output.)

    https://sourceware.org/pipermail/gdb-patches/2025-April/217289.html

Tom
-- 
Dwarf-discuss mailing list
Dwarf-discuss@lists.dwarfstd.org
https://lists.dwarfstd.org/mailman/listinfo/dwarf-discuss

Reply via email to