@@ -76,14 +76,12 @@ ._Unwind_SetIP = _Unwind_SetIP, ._Unwind_SetGR = _Unwind_SetGR, ._Unwind_Resume = _Unwind_Resume, .__register_frame_info = __register_frame_info, .__deregister_frame_info = __deregister_frame_info, - .stdout_ = stdout, - .stderr_ = stderr }; - objc_init(&libc); + objc_init(&libc, stdout, stderr); initialized = true; } OF_DESTRUCTOR() @@ -168,12 +166,14 @@ * starts from objc_exception_throw(), this means exceptions would * never work. If, however, we're using a function pointer instead of * the inline stub, the compiler does generate a frame and everything * works fine. */ + register void *a6 OBJC_M68K_REG("a6") = ObjFWRTBase; uintptr_t throw = (((uintptr_t)ObjFWRTBase) - 0x60); ((void (*)(id OBJC_M68K_REG("a0")))throw)(object); + (void)a6; OF_UNREACHABLE } int @@ -226,16 +226,20 @@ * objc_enumerationMutation() might throw an exception that could never * be caught. If, however, we're using a function pointer instead of * the inline stub, the compiler does generate a frame and everything * works fine. */ - uintptr_t throw = (((uintptr_t)ObjFWRTBase) - 0x8A); - ((void (*)(id OBJC_M68K_REG("a0")))throw)(object); + register void *a6 OBJC_M68K_REG("a6") = ObjFWRTBase; + uintptr_t enumerationMutation = (((uintptr_t)ObjFWRTBase) - 0x8A); + ((void (*)(id OBJC_M68K_REG("a0")))enumerationMutation)(object); + (void)a6; + + OF_UNREACHABLE } int __gnu_objc_personality_v0(int version, int actions, uint64_t ex_class, void *ex, void *ctx) { return glue___gnu_objc_personality_v0(version, actions, &ex_class, ex, ctx); }