On 2/28/22 13:11, David Blaikie via Dwarf-Discuss wrote:
On Mon, Feb 28, 2022 at 12:55 PM Greg Clayton via Dwarf-Discuss 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.

This is a peculiarity of C++ where an artificial variable has a user-
accessible name.  Rather than have a special attribute to distinguish
this oddity, and since "this" is a reserved word in C++, it seems
easiest to simply check for this special case if the language is C++.
You can reasonably hard-code "this" knowing it can't be used for any
other purpose.  You cannot say the same about vtable pointers which can
have any (or no) name.

--
Michael Eager
_______________________________________________
Dwarf-Discuss mailing list
Dwarf-Discuss@lists.dwarfstd.org
http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org

Reply via email to