This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Mangling change between gcc 3.0 and gcc 3.1


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:

Attachment: demangle-diffs.txt
Description: Text document


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]