discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problem with ffi/forwardInvocation and exception handling on OpenSol


From: David Chisnall
Subject: Re: Problem with ffi/forwardInvocation and exception handling on OpenSolaris
Date: Mon, 28 Jun 2010 13:14:11 +0100

Please can you replace the -c with -S in this command and send me the generated 
assembly?

David
On 28 Jun 2010, at 12:27, Saso Kiselkov wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> I checked and gnustep-make actually does generate the correct flags:
> 
> gcc main.m -c \
>              -MMD -MP -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1
> - -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fpic -fPIC -DGSWARN
> - -DGSDIAGNOSE -Wno-import -m64 -fno-strict-aliasing -fexceptions
> - -fobjc-exceptions -D_NATIVE_OBJC_EXCEPTIONS -fgnu-runtime -W -Wall -O0
> - -ggdb3 -I/usr/gcc/4.3/lib/gcc/i386-pc-solaris2.11/4.3.3/include/
> - -fconstant-string-class=NSConstantString -I.
> - -I/export/home/diablos/GNUstep/Library/Headers
> - -I/usr/GNUstep/Local/Library/Headers
> -I/usr/GNUstep/System/Library/Headers \
>               -o obj/main.m.o
> 
> Since the problem could be in libgcc_s, what should I do? Rebuild my
> compiler? Your insight is greatly appreciated!
> 
> BR,
> - --
> Saso
> 
> On 06/28/2010 01:23 PM, David Chisnall wrote:
>> On 28 Jun 2010, at 11:59, Saso Kiselkov wrote:
>> 
>>> So if I understand correct, instead of doing an [exception raise], I
>>> should call the _Unwind_Backtrace function below? I tried it and it
>>> generated:
>>> 
>>> 40157e:do_throw() in /export/home/diablos/excp_fail/obj/excp_fail
>> 
>> Ah, Solaris - one of the only two platforms (Darwin being the other) where 
>> that code actually works as documented...
>> 
>> So, the unwind library can't propagate beyond the do_throw() function.  This 
>> means that either do_throw() or -forwardInvocation: (not sure which, I'd 
>> have to check the libgcc_s code, and I don't want to because it's horrible) 
>> hasn't been compiled with unwind support.
>> 
>> Since these are both in your main.m file, I would imagine that the problem 
>> is a lack of -fexceptions in the compile flags for this file.  GNUstep Make 
>> (in theory, at least), ought to be providing this flag, but it might only be 
>> providing -fobjc-exceptions, which means that C functions won't have unwind 
>> data generated.
>> 
>> David
>> 
>> -- Send from my Jacquard Loom
>> 
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.10 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iEYEARECAAYFAkwohzsACgkQRO8UcfzpOHD+hACdGHN7+UTniwKV7ph9DuDZldXs
> SqEAnjOwCR9d91q68WrLRuxe40+c5rLe
> =+keN
> -----END PGP SIGNATURE-----


-- Sent from my PDP-11




reply via email to

[Prev in Thread] Current Thread [Next in Thread]