Index: src/runtime/amiga-library.m ================================================================== --- src/runtime/amiga-library.m +++ src/runtime/amiga-library.m @@ -79,12 +79,12 @@ extern id _Nullable objc_getProperty_m68k(void); extern void objc_setProperty_m68k(void); extern void objc_getPropertyStruct_m68k(void); extern void objc_setPropertyStruct_m68k(void); extern void objc_enumerationMutation_m68k(void); -extern int __gnu_objc_personality_sj0_m68k(void); extern int __gnu_objc_personality_v0_m68k(void); +extern int __gnu_objc_personality_sj0_m68k(void); extern id _Nullable objc_retain_m68k(void); extern id _Nullable objc_retainBlock_m68k(void); extern id _Nullable objc_retainAutorelease_m68k(void); extern void objc_release_m68k(void); extern id _Nullable objc_autorelease_m68k(void); @@ -585,10 +585,11 @@ (CONST_APTR)objc_setProperty_m68k, (CONST_APTR)objc_getPropertyStruct_m68k, (CONST_APTR)objc_setPropertyStruct_m68k, (CONST_APTR)objc_enumerationMutation_m68k, (CONST_APTR)__gnu_objc_personality_v0_m68k, + (CONST_APTR)__gnu_objc_personality_sj0_m68k, (CONST_APTR)objc_retain_m68k, (CONST_APTR)objc_retainBlock_m68k, (CONST_APTR)objc_retainAutorelease_m68k, (CONST_APTR)objc_release_m68k, (CONST_APTR)objc_autorelease_m68k, Index: src/runtime/amigaos3.sfd ================================================================== --- src/runtime/amigaos3.sfd +++ src/runtime/amigaos3.sfd @@ -23,11 +23,12 @@ id objc_getProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, bool atomic)(a0,a1,d0,d1) void objc_setProperty(id _Nonnull self, SEL _Nonnull _cmd, ptrdiff_t offset, id value, bool atomic, signed char copy)(a0,a1,d0,a2,d1,d2) void objc_getPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2) void objc_setPropertyStruct(void *_Nonnull dest, const void *_Nonnull src, ptrdiff_t size, bool atomic, bool strong)(a0,a1,d0,d1,d2) void objc_enumerationMutation(id _Nonnull object)(a0) -int __gnu_objc_personality_v0(int version, int actions, uint64_t *_Nonnull exClass, void *_Nonnull ex, void *_Nonnull ctx)(d0,d1,d2,a0,a1) +int __gnu_objc_personality_v0_m68k(int version, int actions, uint64_t *_Nonnull exClass, void *_Nonnull ex, void *_Nonnull ctx)(d0,d1,d2,a0,a1) +int __gnu_objc_personality_sj0_m68k(int version, int actions, uint64_t *_Nonnull exClass, void *_Nonnull ex, void *_Nonnull ctx)(d0,d1,d2,a0,a1) id _Nullable objc_retain(id _Nullable object)(a0) id _Nullable objc_retainBlock(id _Nullable block)(a0) id _Nullable objc_retainAutorelease(id _Nullable object)(a0) void objc_release(id _Nullable object)(a0) id _Nullable objc_autorelease(id _Nullable object)(a0) Index: src/runtime/linklib/linklib.m ================================================================== --- src/runtime/linklib/linklib.m +++ src/runtime/linklib/linklib.m @@ -88,16 +88,16 @@ bool atomic, bool strong) SYM("objc_getPropertyStruct"); void linklib_objc_setPropertyStruct(void *dest, const void *src, ptrdiff_t size, bool atomic, bool strong) SYM("objc_setPropertyStruct"); void linklib_objc_enumerationMutation(id object) SYM("objc_enumerationMutation"); -#ifdef HAVE_SJLJ_EXCEPTIONS +#ifndef HAVE_SJLJ_EXCEPTIONS +int linklib___gnu_objc_personality_v0(int version, int actions, + uint64_t exClass, void *ex, void *ctx) SYM("__gnu_objc_personality_v0"); +#else int linklib___gnu_objc_personality_sj0(int version, int actions, uint64_t exClass, void *ex, void *ctx) SYM("__gnu_objc_personality_sj0"); -#else -int linklib___gnu_objc_personality_v0(int version, int actions, - uint64_t exClass, void *ex, void *ctx) SYM("__gnu_objc_personality_v0"); #endif id linklib_objc_retain(id object) SYM("objc_retain"); id linklib_objc_retainBlock(id block) SYM("objc_retainBlock"); id linklib_objc_retainAutorelease(id object) SYM("objc_retainAutorelease"); void linklib_objc_release(id object) SYM("objc_release"); @@ -396,25 +396,33 @@ #endif OF_UNREACHABLE } -#ifdef HAVE_SJLJ_EXCEPTIONS -int -linklib___gnu_objc_personality_sj0(int version, int actions, uint64_t exClass, - void *ex, void *ctx) -{ - return __gnu_objc_personality_sj0(version, actions, &exClass, ex, ctx); -} -#else int linklib___gnu_objc_personality_v0(int version, int actions, uint64_t exClass, void *ex, void *ctx) { - return __gnu_objc_personality_v0(version, actions, &exClass, ex, ctx); +#ifndef HAVE_SJLJ_EXCEPTIONS + return __gnu_objc_personality_v0_m68k(version, actions, &exClass, ex, + ctx); +#else + abort(); +#endif } + +int +linklib___gnu_objc_personality_sj0(int version, int actions, uint64_t exClass, + void *ex, void *ctx) +{ +#ifdef HAVE_SJLJ_EXCEPTIONS + return __gnu_objc_personality_sj0_m68k(version, actions, &exClass, ex, + ctx); +#else + abort(); #endif +} id linklib_objc_retain(id object) { return objc_retain(object); Index: src/runtime/morphos-clib.h ================================================================== --- src/runtime/morphos-clib.h +++ src/runtime/morphos-clib.h @@ -17,11 +17,12 @@ id objc_getProperty(id, SEL, ptrdiff_t, bool); void objc_setProperty(id, SEL, ptrdiff_t, id, bool, signed char); void objc_getPropertyStruct(void *, const void *, ptrdiff_t, bool, bool); void objc_setPropertyStruct(void *, const void *, ptrdiff_t, bool, bool); void objc_enumerationMutation(id); -int __gnu_objc_personality_v0(int, int, uint64_t *, void *, void *); +int __gnu_objc_personality_v0_m68k(int, int, uint64_t *, void *, void *); +int __gnu_objc_personality_sj0_m68k(int, int, uint64_t *, void *, void *); id objc_retain(id); id objc_retainBlock(id); id objc_retainAutorelease(id); void objc_release(id); id objc_autorelease(id); Index: src/runtime/morphos.fd ================================================================== --- src/runtime/morphos.fd +++ src/runtime/morphos.fd @@ -21,12 +21,12 @@ objc_getProperty(self,_cmd,offset,atomic)(a0,a1,d0,d1) objc_setProperty(self,_cmd,offset,value,atomic,copy)(a0,a1,d0,a2,d1,d2) objc_getPropertyStruct(dest,src,size,atomic,strong)(a0,a1,d0,d1,d2) objc_setPropertyStruct(dest,src,size,atomic,strong)(a0,a1,d0,d1,d2) objc_enumerationMutation(object)(a0) -__gnu_objc_personality_v0(version,actions,exClass,ex,ctx)(d0,d1,d2,a0,a1) -__gnu_objc_personality_sj0(version,actions,exClass,ex,ctx)(d0,d1,d2,a0,a1) +__gnu_objc_personality_v0_m68k(version,actions,exClass,ex,ctx)(d0,d1,d2,a0,a1) +__gnu_objc_personality_sj0_m68k(version,actions,exClass,ex,ctx)(d0,d1,d2,a0,a1) objc_retain(object)(a0) objc_retainBlock(block)(a0) objc_retainAutorelease(object)(a0) objc_release(object)(a0) objc_autorelease(object)(a0)