demangling (Ubuntu 64bit 12.04, dmd 64bit 2.060)

Carl Sturtivant sturtivant at gmail.com
Mon Aug 20 13:45:47 PDT 2012


I've been looking at the objects etcetera produced by dmd, and 
using D's function demangle in std.demangle to decrypt some of 
the symbols found in such objects by nm.

http://sourceware.org/binutils/docs-2.22/binutils/nm.html

While demangle does produce a demangled version of some symbols, 
it does not in other cases where they nevertheless look as if 
they may be mangled names of some kind. I considered that perhaps 
they are C++ mangled names, but have been unable to get nm to 
unmangle them, even though it nominally knows about C++ name 
mangling.

Is there a better analog of demangle I can use to translate back 
some of these more intractable mangled names? I tried the one in 
core.demangle but it did no better. Or is there somewhere I could 
determine the demangling rules and implement them for myself? Any 
suggestions will be gratefully received.

Here are some examples that are not demangled by 
std.demangle.demangle :

_D13libd_demangle12__ModuleInfoZ
_D15TypeInfo_Struct6__vtblZ
_D3std5stdio12__ModuleInfoZ
_D3std6traits15__T8DemangleTkZ8Demangle6__initZ
_D47TypeInfo_S3std6traits15__T8DemangleTkZ8Demangle6__initZ



More information about the Digitalmars-d-learn mailing list