>>>>> "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