From 08bad37c3245490e0bb31fb70ce1063cc934c18d Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Wed, 21 Feb 2024 10:45:37 +0100 Subject: [PATCH] =?UTF-8?q?MinGW:=20Add=20exception-handling=20fa=C3=A7ade?= =?UTF-8?q?s=20to=20libobjc2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- objcxx_eh_mingw.cc | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) 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); +}