Hi, > On 17 Dec 2015, at 10:48, Dmitry Moskalchuk <d...@crystax.net> 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 _______________________________________________ Gnustep-dev mailing list Gnustep-dev@gnu.org https://lists.gnu.org/mailman/listinfo/gnustep-dev