<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Feb 28, 2022, at 1:11 PM, David Blaikie via Dwarf-Discuss <<a href="mailto:dwarf-discuss@lists.dwarfstd.org" class="">dwarf-discuss@lists.dwarfstd.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class="Apple-interchange-newline"><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Feb 28, 2022 at 12:55 PM Greg Clayton via Dwarf-Discuss <<a href="mailto:dwarf-discuss@lists.dwarfstd.org" class="">dwarf-discuss@lists.dwarfstd.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="overflow-wrap: break-word;" class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Feb 28, 2022, at 5:49 AM, Ron Louzon via Dwarf-Discuss <<a href="mailto:dwarf-discuss@lists.dwarfstd.org" target="_blank" class="">dwarf-discuss@lists.dwarfstd.org</a>> wrote:</div><br class=""><div class=""><div class=""><div style="font-family: verdana, helvetica, sans-serif; font-size: 13px;" class=""><div dir="ltr" class="">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. </div></div></div></div></blockquote><div class=""><br class=""></div><div class="">This will cause all other members to be pushed out by a pointer size.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><div style="font-family: verdana, helvetica, sans-serif; font-size: 13px;" class=""><div dir="ltr" class="">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?</div></div></div></div></blockquote><div class=""><br class=""></div>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. </div><div class=""><br class=""></div><div class="">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.</div></div></blockquote><div class=""><br class="">Probably the important distinction there is that "this", while artificial, is named/usable in the source whereas the vtable isn't.<br class=""><br class="">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.</div></div></div></div></blockquote><div><br class=""></div>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.</div><div><br class=""><blockquote type="cite" class=""><div class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">_______________________________________________</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Dwarf-Discuss mailing list</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="mailto:Dwarf-Discuss@lists.dwarfstd.org" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">Dwarf-Discuss@lists.dwarfstd.org</a><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><a href="http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org</a></div></blockquote></div><br class=""></body></html>