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