This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: binutils/libiberty patch for c++filt to demangle ObjC++ symbols
- From: "Andrew Pinski" <pinskia at gmail dot com>
- To: "Dave MacLachlan" <dmaclach at google dot com>
- Cc: binutils at sourceware dot org, gcc-patches at gcc dot gnu dot org, "DJ Delorie" <dj at delorie dot com>, "Daniel Berlin" <dannyb at google dot com>, "Mike Stump" <mrs at apple dot com>
- Date: Fri, 13 Apr 2007 10:17:39 -0700
- Subject: Re: binutils/libiberty patch for c++filt to demangle ObjC++ symbols
- References: <27E8A691-807E-4CB5-A7EE-6A3FAC4013A1@google.com> <200704130412.l3D4CbdI024712@localhost.localdomain> <31CDB327-F3DB-4884-95EF-98C247D70A2F@google.com>
On 4/13/07, Dave MacLachlan <dmaclach@google.com> wrote:
This is a patch for c++filt so it can demangle ObjC++ symbols. Turns
out that if you have an Objective C++ file (.mm) with a static var
inside of a method it will get mangled in such a fashion that the
current c++filt can't unmangle it:
@implementation Foo
+ (void)bar:(id)sender {
static int baz = 1;
}
@end
gets mangled to
_ZZ11+[Foo bar:]E3baz
Actually I think this is the way it gets mangled on Darwin, I think it
gets mangled differently on any other target as the other targets
actually mangle the message name instead of keeping it as "+[Foo
bar:]".
So you might want to double check what happens under Linux with the
objective-C++ front-end also.
Thanks,
Andrew Pinski