diff --git a/objcxx_eh_mingw.cc b/objcxx_eh_mingw.cc index c45068b..489ef36 100644 --- a/objcxx_eh_mingw.cc +++ b/objcxx_eh_mingw.cc @@ -1,6 +1,7 @@ #include #include #include +#include #include "dwarf_eh.h" #include "objcxx_eh_private.h" #include "objcxx_eh.h" @@ -96,3 +97,45 @@ OBJC_PUBLIC extern objc_uncaught_exception_handler objc_setUncaughtExceptionHand { return __atomic_exchange_n(&_objc_unexpected_exception, handler, __ATOMIC_SEQ_CST); } + +extern "C" void* __cxa_begin_catch(void *object); + +extern "C" +OBJC_PUBLIC +void* objc_begin_catch(void* object) +{ + return __cxa_begin_catch(object); +} + +extern "C" void __cxa_end_catch(); + +extern "C" +OBJC_PUBLIC +void objc_end_catch() +{ + __cxa_end_catch(); +} + +extern "C" void __cxa_rethrow(); + +extern "C" +OBJC_PUBLIC +void objc_exception_rethrow() +{ + __cxa_rethrow(); +} + +extern "C" EXCEPTION_DISPOSITION __gxx_personality_seh0(PEXCEPTION_RECORD ms_exc, + void *this_frame, + PCONTEXT ms_orig_context, + PDISPATCHER_CONTEXT ms_disp); + +extern "C" +OBJC_PUBLIC +EXCEPTION_DISPOSITION __gnu_objc_personality_seh0(PEXCEPTION_RECORD ms_exc, + void *this_frame, + PCONTEXT ms_orig_context, + PDISPATCHER_CONTEXT ms_disp) +{ + return __gxx_personality_seh0(ms_exc, this_frame, ms_orig_context, ms_disp); +}