[cfe-dev] [PATCH 2/3] Fixes incorrect #ifs for SJ/LJ exceptions
Dan Albert
danalbert at google.com
Wed Apr 16 09:29:24 PDT 2014
The was working because, given __APPLE__, _LIBUNWIND_BUILD_SJLJ_APIS was set to
__arm__, but other ARM targets not using SJ/LJ will fail to compile.
---
include/unwind.h | 2 +-
src/cxa_exception.cpp | 6 +++---
src/cxa_personality.cpp | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/include/unwind.h b/include/unwind.h
index c5acd93..50e2d4b 100644
--- a/include/unwind.h
+++ b/include/unwind.h
@@ -83,7 +83,7 @@ extern "C" {
//
// The following are the base functions documented by the C++ ABI
//
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
extern _Unwind_Reason_Code
_Unwind_SjLj_RaiseException(struct _Unwind_Exception *exception_object);
extern void _Unwind_SjLj_Resume(struct _Unwind_Exception *exception_object);
diff --git a/src/cxa_exception.cpp b/src/cxa_exception.cpp
index 744dddd..787d8a8 100644
--- a/src/cxa_exception.cpp
+++ b/src/cxa_exception.cpp
@@ -232,7 +232,7 @@ __cxa_throw(void* thrown_object, std::type_info* tinfo, void (*dest)(void*))
globals->uncaughtExceptions += 1; // Not atomically, since globals are thread-local
exception_header->unwindHeader.exception_cleanup = exception_cleanup_func;
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
_Unwind_SjLj_RaiseException(&exception_header->unwindHeader);
#else
_Unwind_RaiseException(&exception_header->unwindHeader);
@@ -465,7 +465,7 @@ __cxa_rethrow()
// nothing
globals->caughtExceptions = 0;
}
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
_Unwind_SjLj_RaiseException(&exception_header->unwindHeader);
#else
_Unwind_RaiseException(&exception_header->unwindHeader);
@@ -594,7 +594,7 @@ __cxa_rethrow_primary_exception(void* thrown_object)
setDependentExceptionClass(&dep_exception_header->unwindHeader);
__cxa_get_globals()->uncaughtExceptions += 1;
dep_exception_header->unwindHeader.exception_cleanup = dependent_exception_cleanup;
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
_Unwind_SjLj_RaiseException(&dep_exception_header->unwindHeader);
#else
_Unwind_RaiseException(&dep_exception_header->unwindHeader);
diff --git a/src/cxa_personality.cpp b/src/cxa_personality.cpp
index 81104b8..32a3127 100644
--- a/src/cxa_personality.cpp
+++ b/src/cxa_personality.cpp
@@ -838,7 +838,7 @@ _UA_CLEANUP_PHASE
*/
_Unwind_Reason_Code
-#if __arm__
+#if _LIBUNWIND_BUILD_SJLJ_APIS
__gxx_personality_sj0
#else
__gxx_personality_v0
--
1.9.1.423.g4596e3a
More information about the cfe-dev
mailing list