[libcxxabi] [libunwind] [WebAssembly] __USING_WASM_EXCEPTIONS__ -> __WASM_EXCEPTIONS__ (PR #92840)
via cfe-commits
cfe-commits at lists.llvm.org
Mon May 20 18:47:03 PDT 2024
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff 00179e92c147e16de1f7c653f88c8805aef820c1 e04e685a8fbf3e7915a9eaff3798fe77d15aab0c -- libcxxabi/include/cxxabi.h libcxxabi/src/cxa_exception.cpp libcxxabi/src/cxa_exception.h libcxxabi/src/cxa_personality.cpp libunwind/src/Unwind-wasm.c libunwind/src/libunwind.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/libcxxabi/include/cxxabi.h b/libcxxabi/include/cxxabi.h
index 9d9beecf75..58e240cdf3 100644
--- a/libcxxabi/include/cxxabi.h
+++ b/libcxxabi/include/cxxabi.h
@@ -51,14 +51,13 @@ extern _LIBCXXABI_FUNC_VIS __cxa_exception*
__cxa_init_primary_exception(void* object, std::type_info* tinfo, void(_LIBCXXABI_DTOR_FUNC* dest)(void*)) throw();
// 2.4.3 Throwing the Exception Object
-extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_NORETURN void
-__cxa_throw(void *thrown_exception, std::type_info *tinfo,
-#ifdef __WASM_EXCEPTIONS__
- // In Wasm, a destructor returns its argument
- void *(_LIBCXXABI_DTOR_FUNC *dest)(void *));
-#else
+extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_NORETURN void __cxa_throw(void* thrown_exception, std::type_info* tinfo,
+# ifdef __WASM_EXCEPTIONS__
+ // In Wasm, a destructor returns its argument
+ void*(_LIBCXXABI_DTOR_FUNC* dest)(void*));
+# else
void (_LIBCXXABI_DTOR_FUNC *dest)(void *));
-#endif
+# endif
// 2.5.3 Exception Handlers
extern _LIBCXXABI_FUNC_VIS void *
diff --git a/libcxxabi/src/cxa_exception.cpp b/libcxxabi/src/cxa_exception.cpp
index 3141d50a6b..3889fef1d6 100644
--- a/libcxxabi/src/cxa_exception.cpp
+++ b/libcxxabi/src/cxa_exception.cpp
@@ -269,7 +269,7 @@ exception.
void
#ifdef __WASM_EXCEPTIONS__
// In Wasm, a destructor returns its argument
-__cxa_throw(void *thrown_object, std::type_info *tinfo, void *(_LIBCXXABI_DTOR_FUNC *dest)(void *)) {
+__cxa_throw(void* thrown_object, std::type_info* tinfo, void*(_LIBCXXABI_DTOR_FUNC* dest)(void*)) {
#else
__cxa_throw(void *thrown_object, std::type_info *tinfo, void (_LIBCXXABI_DTOR_FUNC *dest)(void *)) {
#endif
diff --git a/libcxxabi/src/cxa_personality.cpp b/libcxxabi/src/cxa_personality.cpp
index 843a18a4cb..eb18932ef0 100644
--- a/libcxxabi/src/cxa_personality.cpp
+++ b/libcxxabi/src/cxa_personality.cpp
@@ -548,7 +548,7 @@ set_registers(_Unwind_Exception* unwind_exception, _Unwind_Context* context,
const scan_results& results)
{
#if defined(__USING_SJLJ_EXCEPTIONS__) || defined(__WASM_EXCEPTIONS__)
-#define __builtin_eh_return_data_regno(regno) regno
+# define __builtin_eh_return_data_regno(regno) regno
#elif defined(__ibmxl__)
// IBM xlclang++ compiler does not support __builtin_eh_return_data_regno.
#define __builtin_eh_return_data_regno(regno) regno + 3
@@ -694,157 +694,133 @@ static void scan_eh_tab(scan_results &results, _Unwind_Action actions,
uintptr_t landingPad = readEncodedPointer(&callSitePtr, callSiteEncoding);
uintptr_t actionEntry = readULEB128(&callSitePtr);
if ((start <= ipOffset) && (ipOffset < (start + length)))
-#else // __USING_SJLJ_EXCEPTIONS__ || __WASM_EXCEPTIONS__
- // ip is 1-based index into this table
+#else // __USING_SJLJ_EXCEPTIONS__ || __WASM_EXCEPTIONS__ \
+ // ip is 1-based index into this table
uintptr_t landingPad = readULEB128(&callSitePtr);
uintptr_t actionEntry = readULEB128(&callSitePtr);
if (--ip == 0)
#endif // __USING_SJLJ_EXCEPTIONS__ || __WASM_EXCEPTIONS__
{
- // Found the call site containing ip.
+ // Found the call site containing ip.
#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__WASM_EXCEPTIONS__)
- if (landingPad == 0)
- {
- // No handler here
- results.reason = _URC_CONTINUE_UNWIND;
- return;
- }
- landingPad = (uintptr_t)lpStart + landingPad;
+ if (landingPad == 0) {
+ // No handler here
+ results.reason = _URC_CONTINUE_UNWIND;
+ return;
+ }
+ landingPad = (uintptr_t)lpStart + landingPad;
#else // __USING_SJLJ_EXCEPTIONS__ || __WASM_EXCEPTIONS__
- ++landingPad;
+ ++landingPad;
#endif // __USING_SJLJ_EXCEPTIONS__ || __WASM_EXCEPTIONS__
- results.landingPad = landingPad;
- if (actionEntry == 0)
- {
- // Found a cleanup
- results.reason = (actions & _UA_SEARCH_PHASE) ? _URC_CONTINUE_UNWIND : _URC_HANDLER_FOUND;
+ results.landingPad = landingPad;
+ if (actionEntry == 0) {
+ // Found a cleanup
+ results.reason = (actions & _UA_SEARCH_PHASE) ? _URC_CONTINUE_UNWIND : _URC_HANDLER_FOUND;
+ return;
+ }
+ // Convert 1-based byte offset into
+ const uint8_t* action = actionTableStart + (actionEntry - 1);
+ bool hasCleanup = false;
+ // Scan action entries until you find a matching handler, cleanup, or the end of action list
+ while (true) {
+ const uint8_t* actionRecord = action;
+ int64_t ttypeIndex = readSLEB128(&action);
+ if (ttypeIndex > 0) {
+ // Found a catch, does it actually catch?
+ // First check for catch (...)
+ const __shim_type_info* catchType =
+ get_shim_type_info(static_cast<uint64_t>(ttypeIndex), classInfo, ttypeEncoding, native_exception,
+ unwind_exception, base);
+ if (catchType == 0) {
+ // Found catch (...) catches everything, including
+ // foreign exceptions. This is search phase, cleanup
+ // phase with foreign exception, or forced unwinding.
+ assert(actions & (_UA_SEARCH_PHASE | _UA_HANDLER_FRAME | _UA_FORCE_UNWIND));
+ results.ttypeIndex = ttypeIndex;
+ results.actionRecord = actionRecord;
+ results.adjustedPtr = get_thrown_object_ptr(unwind_exception);
+ results.reason = _URC_HANDLER_FOUND;
return;
- }
- // Convert 1-based byte offset into
- const uint8_t* action = actionTableStart + (actionEntry - 1);
- bool hasCleanup = false;
- // Scan action entries until you find a matching handler, cleanup, or the end of action list
- while (true)
- {
- const uint8_t* actionRecord = action;
- int64_t ttypeIndex = readSLEB128(&action);
- if (ttypeIndex > 0)
- {
- // Found a catch, does it actually catch?
- // First check for catch (...)
- const __shim_type_info* catchType =
- get_shim_type_info(static_cast<uint64_t>(ttypeIndex),
- classInfo, ttypeEncoding,
- native_exception, unwind_exception,
- base);
- if (catchType == 0)
- {
- // Found catch (...) catches everything, including
- // foreign exceptions. This is search phase, cleanup
- // phase with foreign exception, or forced unwinding.
- assert(actions & (_UA_SEARCH_PHASE | _UA_HANDLER_FRAME |
- _UA_FORCE_UNWIND));
- results.ttypeIndex = ttypeIndex;
- results.actionRecord = actionRecord;
- results.adjustedPtr =
- get_thrown_object_ptr(unwind_exception);
- results.reason = _URC_HANDLER_FOUND;
- return;
- }
- // Else this is a catch (T) clause and will never
- // catch a foreign exception
- else if (native_exception)
- {
- __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception+1) - 1;
- void* adjustedPtr = get_thrown_object_ptr(unwind_exception);
- const __shim_type_info* excpType =
- static_cast<const __shim_type_info*>(exception_header->exceptionType);
- if (adjustedPtr == 0 || excpType == 0)
- {
- // Something very bad happened
- call_terminate(native_exception, unwind_exception);
- }
- if (catchType->can_catch(excpType, adjustedPtr))
- {
- // Found a matching handler. This is either search
- // phase or forced unwinding.
- assert(actions &
- (_UA_SEARCH_PHASE | _UA_FORCE_UNWIND));
- results.ttypeIndex = ttypeIndex;
- results.actionRecord = actionRecord;
- results.adjustedPtr = adjustedPtr;
- results.reason = _URC_HANDLER_FOUND;
- return;
- }
- }
- // Scan next action ...
+ }
+ // Else this is a catch (T) clause and will never
+ // catch a foreign exception
+ else if (native_exception) {
+ __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception + 1) - 1;
+ void* adjustedPtr = get_thrown_object_ptr(unwind_exception);
+ const __shim_type_info* excpType =
+ static_cast<const __shim_type_info*>(exception_header->exceptionType);
+ if (adjustedPtr == 0 || excpType == 0) {
+ // Something very bad happened
+ call_terminate(native_exception, unwind_exception);
}
- else if (ttypeIndex < 0)
- {
- // Found an exception specification.
- if (actions & _UA_FORCE_UNWIND) {
- // Skip if forced unwinding.
- } else if (native_exception) {
- // Does the exception spec catch this native exception?
- __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception+1) - 1;
- void* adjustedPtr = get_thrown_object_ptr(unwind_exception);
- const __shim_type_info* excpType =
- static_cast<const __shim_type_info*>(exception_header->exceptionType);
- if (adjustedPtr == 0 || excpType == 0)
- {
- // Something very bad happened
- call_terminate(native_exception, unwind_exception);
- }
- if (exception_spec_can_catch(ttypeIndex, classInfo,
- ttypeEncoding, excpType,
- adjustedPtr,
- unwind_exception, base))
- {
- // Native exception caught by exception
- // specification.
- assert(actions & _UA_SEARCH_PHASE);
- results.ttypeIndex = ttypeIndex;
- results.actionRecord = actionRecord;
- results.adjustedPtr = adjustedPtr;
- results.reason = _URC_HANDLER_FOUND;
- return;
- }
- } else {
- // foreign exception caught by exception spec
- results.ttypeIndex = ttypeIndex;
- results.actionRecord = actionRecord;
- results.adjustedPtr =
- get_thrown_object_ptr(unwind_exception);
- results.reason = _URC_HANDLER_FOUND;
- return;
- }
- // Scan next action ...
- } else {
- hasCleanup = true;
+ if (catchType->can_catch(excpType, adjustedPtr)) {
+ // Found a matching handler. This is either search
+ // phase or forced unwinding.
+ assert(actions & (_UA_SEARCH_PHASE | _UA_FORCE_UNWIND));
+ results.ttypeIndex = ttypeIndex;
+ results.actionRecord = actionRecord;
+ results.adjustedPtr = adjustedPtr;
+ results.reason = _URC_HANDLER_FOUND;
+ return;
}
- const uint8_t* temp = action;
- int64_t actionOffset = readSLEB128(&temp);
- if (actionOffset == 0)
- {
- // End of action list. If this is phase 2 and we have found
- // a cleanup (ttypeIndex=0), return _URC_HANDLER_FOUND;
- // otherwise return _URC_CONTINUE_UNWIND.
- results.reason = hasCleanup && actions & _UA_CLEANUP_PHASE
- ? _URC_HANDLER_FOUND
- : _URC_CONTINUE_UNWIND;
- return;
+ }
+ // Scan next action ...
+ } else if (ttypeIndex < 0) {
+ // Found an exception specification.
+ if (actions & _UA_FORCE_UNWIND) {
+ // Skip if forced unwinding.
+ } else if (native_exception) {
+ // Does the exception spec catch this native exception?
+ __cxa_exception* exception_header = (__cxa_exception*)(unwind_exception + 1) - 1;
+ void* adjustedPtr = get_thrown_object_ptr(unwind_exception);
+ const __shim_type_info* excpType =
+ static_cast<const __shim_type_info*>(exception_header->exceptionType);
+ if (adjustedPtr == 0 || excpType == 0) {
+ // Something very bad happened
+ call_terminate(native_exception, unwind_exception);
+ }
+ if (exception_spec_can_catch(ttypeIndex, classInfo, ttypeEncoding, excpType, adjustedPtr,
+ unwind_exception, base)) {
+ // Native exception caught by exception
+ // specification.
+ assert(actions & _UA_SEARCH_PHASE);
+ results.ttypeIndex = ttypeIndex;
+ results.actionRecord = actionRecord;
+ results.adjustedPtr = adjustedPtr;
+ results.reason = _URC_HANDLER_FOUND;
+ return;
}
- // Go to next action
- action += actionOffset;
- } // there is no break out of this loop, only return
+ } else {
+ // foreign exception caught by exception spec
+ results.ttypeIndex = ttypeIndex;
+ results.actionRecord = actionRecord;
+ results.adjustedPtr = get_thrown_object_ptr(unwind_exception);
+ results.reason = _URC_HANDLER_FOUND;
+ return;
+ }
+ // Scan next action ...
+ } else {
+ hasCleanup = true;
+ }
+ const uint8_t* temp = action;
+ int64_t actionOffset = readSLEB128(&temp);
+ if (actionOffset == 0) {
+ // End of action list. If this is phase 2 and we have found
+ // a cleanup (ttypeIndex=0), return _URC_HANDLER_FOUND;
+ // otherwise return _URC_CONTINUE_UNWIND.
+ results.reason = hasCleanup && actions & _UA_CLEANUP_PHASE ? _URC_HANDLER_FOUND : _URC_CONTINUE_UNWIND;
+ return;
+ }
+ // Go to next action
+ action += actionOffset;
+ } // there is no break out of this loop, only return
}
#if !defined(__USING_SJLJ_EXCEPTIONS__) && !defined(__WASM_EXCEPTIONS__)
- else if (ipOffset < start)
- {
- // There is no call site for this ip
- // Something bad has happened. We should never get here.
- // Possible stack corruption.
- call_terminate(native_exception, unwind_exception);
+ else if (ipOffset < start) {
+ // There is no call site for this ip
+ // Something bad has happened. We should never get here.
+ // Possible stack corruption.
+ call_terminate(native_exception, unwind_exception);
}
#endif // !__USING_SJLJ_EXCEPTIONS__ && !__WASM_EXCEPTIONS__
} // there might be some tricky cases which break out of this loop
@@ -903,7 +879,7 @@ _UA_CLEANUP_PHASE
*/
#if !defined(_LIBCXXABI_ARM_EHABI)
-#ifdef __WASM_EXCEPTIONS__
+# ifdef __WASM_EXCEPTIONS__
_Unwind_Reason_Code __gxx_personality_wasm0
#elif defined(__SEH__) && !defined(__USING_SJLJ_EXCEPTIONS__)
static _Unwind_Reason_Code __gxx_personality_imp
@@ -972,7 +948,7 @@ __gxx_personality_v0
exc->languageSpecificData = results.languageSpecificData;
exc->catchTemp = reinterpret_cast<void*>(results.landingPad);
exc->adjustedPtr = results.adjustedPtr;
-#ifdef __WASM_EXCEPTIONS__
+# ifdef __WASM_EXCEPTIONS__
// Wasm only uses a single phase (_UA_SEARCH_PHASE), so save the
// results here.
set_registers(unwind_exception, context, results);
``````````
</details>
https://github.com/llvm/llvm-project/pull/92840
More information about the cfe-commits
mailing list