Mangling change between gcc 3.0 and gcc 3.1

Klee Dienes klee@apple.com
Wed Nov 6 17:05:00 GMT 2002


At the least, the demangling of the old output seems incorrect.  
_Z1xMK1sFvvE demangles to

	x(void (s const::*)())

, which seems bogus.

Assuming the new output is correct, I believe the following patch to 
cp-demangle.c causes it to be demangled correctly:

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: demangle-diffs.txt
URL: <https://gcc.gnu.org/pipermail/gcc/attachments/20021106/87bf1f4c/attachment.txt>
-------------- next part --------------


On Wednesday, November 6, 2002, at 07:44 PM, Matt Austern wrote:

> Consider the following code:
>   struct s;
>   void x (void (s::*)() const) {}
>
> With gcc 3.0, we get the mangled name _Z1xMK1sFvvE,
> which the 3.0 version of c++filt knows how to
> demangle.  With 3.1 through 3.3 we get the mangled
> name _Z1xM1sKFvvE, which the 3.1 and 3.2 versions
> of c++filt do not know how to demangle.
>
> Obviously this is a bug in 3.1 or 3.2: either the
> compiler or the demangler is wrong.  The question
> I don't know: which is it?
>
> (Yes, I could just look up the ABI document and
> figure it out myself, but I'm hoping someone here
> just happens to know the issue already.)
>
> 			--Matt
>


More information about the Gcc mailing list