diff options
author | Dan Albert <danalbert@google.com> | 2014-04-23 04:45:42 +0000 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2014-04-23 04:45:42 +0000 |
commit | 0056c8eb017b1be46dc63dd6cf3a403f66078439 (patch) | |
tree | 01b3a8dbc93852fa9e722d5a288af2cd010a7d59 /libcxxabi | |
parent | 47f07f8c9a1d5de7e1f84e61d2fd506828e07b8c (diff) | |
download | bcm5719-llvm-0056c8eb017b1be46dc63dd6cf3a403f66078439.tar.gz bcm5719-llvm-0056c8eb017b1be46dc63dd6cf3a403f66078439.zip |
Fixes incorrect #ifs for SJ/LJ exceptions
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.
llvm-svn: 206941
Diffstat (limited to 'libcxxabi')
-rw-r--r-- | libcxxabi/include/unwind.h | 2 | ||||
-rw-r--r-- | libcxxabi/src/cxa_exception.cpp | 6 | ||||
-rw-r--r-- | libcxxabi/src/cxa_personality.cpp | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/libcxxabi/include/unwind.h b/libcxxabi/include/unwind.h index c5acd934af3..20634ae9304 100644 --- a/libcxxabi/include/unwind.h +++ b/libcxxabi/include/unwind.h @@ -83,7 +83,7 @@ extern "C" { // // The following are the base functions documented by the C++ ABI // -#if __arm__ +#if __USING_SJLJ_EXCEPTIONS__ 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/libcxxabi/src/cxa_exception.cpp b/libcxxabi/src/cxa_exception.cpp index 744dddd55a5..64040fd6885 100644 --- a/libcxxabi/src/cxa_exception.cpp +++ b/libcxxabi/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 __USING_SJLJ_EXCEPTIONS__ _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 __USING_SJLJ_EXCEPTIONS__ _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 __USING_SJLJ_EXCEPTIONS__ _Unwind_SjLj_RaiseException(&dep_exception_header->unwindHeader); #else _Unwind_RaiseException(&dep_exception_header->unwindHeader); diff --git a/libcxxabi/src/cxa_personality.cpp b/libcxxabi/src/cxa_personality.cpp index 81104b8ca4c..60b7db5da73 100644 --- a/libcxxabi/src/cxa_personality.cpp +++ b/libcxxabi/src/cxa_personality.cpp @@ -838,7 +838,7 @@ _UA_CLEANUP_PHASE */ _Unwind_Reason_Code -#if __arm__ +#if __USING_SJLJ_EXCEPTIONS__ __gxx_personality_sj0 #else __gxx_personality_v0 |