[Bug debug/49130] discrepancies between DW_AT_name and demangler

dodji at seketeli dot org gcc-bugzilla@gcc.gnu.org
Tue May 31 11:57:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49130

--- Comment #7 from dodji at seketeli dot org <dodji at seketeli dot org> 2011-05-31 11:16:16 UTC ---
"jan.kratochvil at redhat dot com" <gcc-bugzilla@gcc.gnu.org> a écrit:

> --- Comment #6 from Jan Kratochvil <jan.kratochvil at redhat dot com> 2011-05-30 08:44:43 UTC ---
> Another issue is with DMGL_VERBOSE.  nm -C does not use DMGL_VERBOSE:
> libstdc++.so.6.0.16.debug
> 00000000000a4e50 t bool __gnu_cxx::operator==<char*,
> std::string>(__gnu_cxx::__normal_iterator<char*, std::string> const&,
> __gnu_cxx::__normal_iterator<char*, std::string> const&)
>
> But the DIE uses "DMGL_VERBOSE":
>  <2><1836e2>: Abbrev Number: 29 (DW_TAG_subprogram)
>     <1836e4>   DW_AT_name        : (indirect string, offset: 0x2e3f0):
> operator==<char*, std::basic_string<char> >
>  <1><188ab4>: Abbrev Number: 103 (DW_TAG_subprogram)
>     <188ab5>   DW_AT_specification: <0x1836e2>
>  <1><193100>: Abbrev Number: 129 (DW_TAG_subprogram)
>     <193102>   DW_AT_abstract_origin: <0x188ab4>
>     <193106>   DW_AT_low_pc      : 0xa4e50

I understand that DW_AT_name and DW_AT_MIPS_linkage_name being
/gratuitously/ different can be an issue.  But here, I understand what
you are highlighting as a different matter.

nm -C is compressing[1] the output to avoid cluttering it too much.  But
DW_AT_name really represents the name of the operator as written in the
source code[2], with its template parameters replaced with their
corresponding arguments.

How would that be an issue?


[1]: http://www.codesourcery.com/public/cxx-abi/abi.html#mangling, look
for 'compression' (chapter 5.1.8 there).

[2]: DWARF4 spec, 1.21 [Identitier Names] says:
     "DW_AT_name attribute, whose value is a string representing the
     name as it appears in the source program"



More information about the Gcc-bugs mailing list