On 7 February 2018 at 17:20, Simon Marchi <simon.mar...@polymtl.ca> wrote: > On 2018-02-07 12:08, Jonathan Wakely wrote: >> >> Why would they not have a mangled name? >> >>> Interesting. What do they look like, and in what context do they appear? >> >> >> Anywhere you need a name for linkage purposes, such as in a function >> signature, or as a template argument of another type, or in the >> std::type_info::name() for the type etc. etc. >> >> $ g++ -o test.o -c -x c++ - <<< 'struct X {}; void f(X) {} >> template<typename T> struct Y { }; void g(Y<X>) {}' && nm >> --defined-only test.o >> 0000000000000000 T _Z1f1X >> 0000000000000007 T _Z1g1YI1XE >> >> The mangled name for X is "X" and the mangled name for Y<X> is "YI1XE" >> which includes the name "X". >> >> This isn't really on-topic for solving the GDB type lookup problem though. > > > Ah ok, the class name appears mangled in other entities' mangled name. But > from what I understand there's no mangled name for the class such that > > echo <class mangled name> | c++filt > > outputs the class name (e.g. "Foo<10>"). That wouldn't make sense, since > there's no symbol for the class itself.
echo _Z3FooILi10EE | c++filt