User account creation filtered due to spam.

Bug 35201

Summary: libdemangle no longer distinguishes constructor/destructor variants
Product: gcc Reporter: Sanjay Patel <sanjay3000>
Component: demanglerAssignee: Not yet assigned to anyone <unassigned>
Status: NEW ---    
Severity: normal CC: gcc-bugs, ian, pinskia
Priority: P3    
Version: 4.1.0   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: Last reconfirmed: 2008-07-10 05:49:25

Description Sanjay Patel 2008-02-14 20:30:06 UTC
The C++ ABI at http://www.codesourcery.com/cxx-abi/abi.html defines:

 <ctor-dtor-name> ::= C1 # complete object constructor
     ::= C2 # base object constructor
     ::= C3 # complete object allocating constructor
     ::= D0 # deleting destructor
     ::= D1 # complete object destructor
     ::= D2 # base object destructor

However, libdemange/c++filt no longer translate those specifiers. I think this is a regression from previous revisions of the library. They used to specify "in-charge" or other strings for the various ctor/dtor flavors.

Example of raw constructor string:
_ZN9DagSymbolC2Ev
_ZN9DagSymbolC1Ev

These both are demangled as:
DagSymbol::DagSymbol()
Comment 1 Ian Lance Taylor 2008-07-10 05:49:25 UTC
Yes, the old demangler printed additional text in some cases when DMGL_VERBOSE was passed as a flag.  c++filt passes that flag.  The new demangler doesn't print that additional text.  There are several FIXME comments in libiberty/cp-demangle.c which marks the places which could or should be changed.