Re: gdb 8.x - g++ 7.x compatibility

Jonathan Wakely <[email protected]>
Newsgroups gmane.comp.gdb.devel,gmane.comp.gcc.devel
Message-ID <CAH6eHdTXCUZ57Reg+--c9Sx=o=kkKoU9grvricJ3kk5Fc=i07g@mail.gmail.com>
On 7 February 2018 at 17:20, Simon Marchi <[email protected]> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.