> On Feb 28, 2022, at 1:11 PM, David Blaikie via Dwarf-Discuss 
> <dwarf-discuss@lists.dwarfstd.org> wrote:
> 
> 
> 
> On Mon, Feb 28, 2022 at 12:55 PM Greg Clayton via Dwarf-Discuss 
> <dwarf-discuss@lists.dwarfstd.org <mailto:dwarf-discuss@lists.dwarfstd.org>> 
> wrote:
> 
> 
>> On Feb 28, 2022, at 5:49 AM, Ron Louzon via Dwarf-Discuss 
>> <dwarf-discuss@lists.dwarfstd.org <mailto:dwarf-discuss@lists.dwarfstd.org>> 
>> wrote:
>> 
>> I have an application which uses DwarfLib to extract type information from 
>> debug executable images.  I have found in the DWARF data that some structure 
>> types have a "virtual" pointer added as their first member and this 
>> pointer's DIE contains the tag DW_AT_artificial=true.  How does that pointer 
>> member affect the offsets of the members that follow it in the structure. 
> 
> This will cause all other members to be pushed out by a pointer size.
> 
>> Should this 4-byte pointer be ignored or will its size cause the other 
>> structure members to be pushed out in memory by 4 bytes?
> 
> All offsets in the DWARF should be correct for all members, including 
> artificial members and any members that follow it in memory. So yes, if there 
> is a vtable pointer added as the first member, its offset and all other 
> offsets will be correct, so there is no need to adjust anything when reading 
> this data. 
> 
> You could choose to not show this, but I find it is often easier to show this 
> information in case some compiler change in the future marks something that 
> you might want to see as artificial. For example the "this" parameter to C++ 
> methods is marked as artificial, and people do want to see the "this" in the 
> variables view. Granted that is a variable vs a member variable.
> 
> Probably the important distinction there is that "this", while artificial, is 
> named/usable in the source whereas the vtable isn't.
> 
> Either having some DWARF attribute to communicate that distinction, or a 
> workaround might be to detect that the vtable name uses a reserved identifier 
> could be good - I guess the reality is that DWARF consumers probably hardcode 
> some sort of "this is the vtable pointer" -o so maybe we should have some 
> DWARF attribute that communicates that, instead of relying on the string name 
> of the member? Not sure.

Sounds interesting, yes. Maybe a DW_AT_language_runtime attribute? This could 
let people know that the item is part of the language runtime and not 
necessarily something the user would always want to see.

> _______________________________________________
> Dwarf-Discuss mailing list
> Dwarf-Discuss@lists.dwarfstd.org <mailto:Dwarf-Discuss@lists.dwarfstd.org>
> http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org 
> <http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org>
_______________________________________________
Dwarf-Discuss mailing list
Dwarf-Discuss@lists.dwarfstd.org
http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org

Reply via email to