|
From: | Andrew Pinski |
Subject: | Re: Crash with new-style exceptions on FreeBSD amd64 |
Date: | Mon, 19 Mar 2007 02:12:25 -0700 |
On 3/19/07, Michael Gardner <address@hidden> wrote:
Also, regarding the problem configuring gnustep-make with --enable-native-objc-exceptions: I emailed the port's maintainer, and he mentioned that he got the same result on his FreeBSD system. It looks like a gcc bug to me, but can anyone confirm it on a non-FreeBSD OS? Specifically, if you look at the output of ldd for a binary compiled from a .c file using '-x objective-c', libgcc is listed after libc. But if you rename the same file with a .m extension and compile it without the -x option, libgcc is listed before libc.
Again this is the same problem as listed in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31089 Yes the bug report is against 4.3 but don't let that fool you. Also the reason why libgcc is listed after libc in the case with "-x objective-c" is that shared libgcc is not used by default unless gcc sees a objective-C file, in this case it matches with .m. Adding -shared-libgcc fixes the problem by forcing the shared libgcc to link to your program (instead of indirectly from a library). The way this works for Linux is slightly different and most likely no one else sees this, the standard specs for libgcc for linux, uses the option --as-needed which forces you to link to the shared libgcc if it is needed for eh (assuming your binutils is new enough). Maybe the specs for libgcc for FreeBSD needs to be updated for this new binutils options also and FreeBSD's binutils also updated. -- Pinski
[Prev in Thread] | Current Thread | [Next in Thread] |