[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