https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81932
--- Comment #24 from Xi Ruoyao <ryxi at stu dot xidian.edu.cn> ---
(In reply to Paul Smith from comment #23)
> The lookup_type() was just to show the problem more clearly: I don't do that
> in my actual Python code. This part (or something similar) is what I use:
>
> class tv(gdb.Function):
> def __init__(self):
> gdb.Function.__init__(self, "tv")
> def invoke(self, vector):
> gdb.write("depth: %d\n" % (vector['tree']['_depth']))
>
> and when I run this I get:
>
> warning: RTTI symbol not found for class 'TreeVector<Pod, 2u>::Tree'
>
> In other words, it's not that I'm trying to look up that type myself: that's
> the type that GDB is trying to look up when it tries to evaluate the
> variable of type "TreeVector<Pod, 2>::Tree" in my program.
Yes. GDB does following:
(1) Find the mangled name of the vtable of tv.
(2) Demangle the name, to be 'vtable for TreeVector<Pod, 2u>::Tree'.
(3) Skip 'vtable for ' and get 'TreeVector<Pod, 2u>::Tree'.
(4) Lookup this symbol.