<div dir="ltr">Hi all,<br><br>The LLVM discussion linked [0] happens to be us Sony folks, and it's supporting the use-case Kyle described of automatic downcasting, i.e. identifying the most-derived-class of an object from its vtable pointer. Having to demangle the symbol table is a real pain (Tom, CC'd knows more) especially with things like anonymous namespaces.<br><br>Right now the approach is to have a top-level nameless global variable with the location set to the vtable address, and a DW_AT_specification linking into the class definition:<br><br><font face="monospace">0x00000082: DW_TAG_variable</font><br><font face="monospace"> DW_AT_specification (0x000000b6 "_vtable$")</font><br><font face="monospace"> DW_AT_alignment (8)</font><br><font face="monospace"> DW_AT_location (DW_OP_addrx 0x1)</font><br><br><font face="arial, sans-serif">[Then deeper into the DIE tree,]</font><div><font face="monospace"><br></font></div><div><font face="monospace">0x0000008b: DW_TAG_structure_type<br> DW_AT_containing_type (0x00000034 "CBase")<br> DW_AT_calling_convention (DW_CC_pass_by_reference)<br> DW_AT_name ("CDerived")<br> DW_AT_decl_file ("vtables.cpp")<br> DW_AT_decl_line (6)</font></div><div><font face="monospace"><br></font></div><div><font face="monospace"> [...]<br><br>0x000000b6: DW_TAG_variable<br> DW_AT_name ("_vtable$")<br> DW_AT_type (0x00000081 "void *")<br> DW_AT_external (true)<br> DW_AT_declaration (true)<br> DW_AT_artificial (true)<br> DW_AT_accessibility (DW_ACCESS_private)</font><br><br>This works well enough for our own debugger use-cases; I agree with Cary that it's hacky to rely on the name of a variable to signify important information like this and an officially blessed way could help.</div><div><br></div><div>I've no opinion on the
<span style="font-family:monospace">DW_AT_vtable_elem_location </span><font face="arial, sans-serif">behaviours, although we can consider it a separate issue.</font><br><br>[0] <a href="https://github.com/llvm/llvm-project/pull/130255">https://github.com/llvm/llvm-project/pull/130255</a></div><div><br></div><div>--</div><div>Thanks,</div><div>Jeremy</div><div><br></div></div>