gnustep-dev
[Top][All Lists]
Advanced

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

Re: undefined reference to __gnustep_objcxx_personality_v0


From: David Chisnall
Subject: Re: undefined reference to __gnustep_objcxx_personality_v0
Date: Sun, 20 Dec 2015 10:14:54 +0000

Hi,

> On 17 Dec 2015, at 10:48, Dmitry Moskalchuk <address@hidden> wrote:
> 
> 
> David Chisnall <theraven <at> sucs.org> writes:
> 
>> 
>> It is.  It's the personality function used for ObjC++, which delegates to
>> either the C++ or ObjC personality functions as appropriate.
>> 
>> I didn't finish it for ARM and do not currently have an ARM system to test
>> on. It shouldn't be too difficult to do though...
> 
> Hi David,
> 
> I'd be happy to help implementing this for the ARM and contribute to the
> GNUstep. I'm not very familiar with 'personality' mechanism, but I've read
> 'personality functions' section of the "Itanium ABI" document, and yes, it
> doesn't seem to be hard to implement.
> 
> However, as far as I see, there are differences specifically for ARM, how
> to do that. Could you shed some light on that or point me to the documentation
> or code where I could learn about ARM specifics and implement
> "__gnustep_objcxx_personality_v0" for ARM properly?


The differences between ARM and not-ARM should be largely encapsulated in the 
unwind-*.h headers.

The Objective-C++ exception handling part is here:

https://github.com/gnustep/libobjc2/blob/master/eh_personality.c#L491

It actually looks as if it ought to work on ARM, so you can try removing the 
#ifndef on #490 and see if it does.  Basically, when we’re in an Objective-C++ 
catch block, we’re going to catch either a C++ or Objective-C exception.  If an 
Objective-C exception was thrown, then we allocate a new C++ exception and pass 
that off to the C++ personality function.  If we’ve been thrown a C++ 
exception, then we just pass it through.

David




reply via email to

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