CarlosAlbertoEnciso wrote: > > Given the _vtable$ artificial member: use the DW_AT_containing_type to find > > the vtable global variable. > > It seems to me that this attribute should refer to a type and not a variable.
Good point. Another option is to use `DW_AT_specification`. ``` 0x00000042: DW_TAG_variable DW_AT_specification (0x0000005c "_vtable$") DW_AT_linkage_name ("_ZTV8CDerived") ... 0x0000004c: DW_TAG_structure_type ("CDerived") ... 0x0000005c: DW_TAG_variable DW_AT_name ("_vtable$") DW_AT_artificial (true) DW_AT_specification <0x00000042> --> VTable global variable ... ``` But potentially consumers can go into a loop if they follow both `DW_AT_specification`, without having additional knowledge about the `artificial` DIE. ``` 0x00000042: DW_TAG_variable DW_AT_linkage_name ("_ZTV8CDerived") ... 0x0000004c: DW_TAG_structure_type ("CDerived") ... 0x0000005c: DW_TAG_variable DW_AT_name ("_vtable$") DW_AT_artificial (true) DW_AT_specification <0x00000042> --> VTable global variable ... ``` If we remove the first `DW_AT_specification`, we lost the ability to traverse the global variables (vtable's) and find their associated compound type. https://github.com/llvm/llvm-project/pull/130255 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits