Author: Martin Storsjö Date: 2022-06-06T23:21:05+03:00 New Revision: 2293d46a01752e312a0796d044a25a49b2fd17f5
URL: https://github.com/llvm/llvm-project/commit/2293d46a01752e312a0796d044a25a49b2fd17f5 DIFF: https://github.com/llvm/llvm-project/commit/2293d46a01752e312a0796d044a25a49b2fd17f5.diff LOG: [clang] [Headers] Check __SEH__, when checking if ARM EHABI is implied ARM EHABI isn't signalled by any specific compiler builtin define, but is implied by the lack of defines specifying any other exception handling mechanism, `__USING_SJLJ_EXCEPTIONS__` or `__ARM_DWARF_EH__`. As Windows SEH also can be used for unwinding, check for the `__SEH__` define too, in the same way. This is the same change as 4a3722a2c3dff1fe885cc38bf43d3c095c9851e7 / D126866, applied on the clang headers. Differential Revision: https://reviews.llvm.org/D126865 Added: Modified: clang/lib/Headers/unwind.h Removed: ################################################################################ diff --git a/clang/lib/Headers/unwind.h b/clang/lib/Headers/unwind.h index 6e069798f02d6..971a62da0d212 100644 --- a/clang/lib/Headers/unwind.h +++ b/clang/lib/Headers/unwind.h @@ -62,7 +62,8 @@ typedef intptr_t _sleb128_t; typedef uintptr_t _uleb128_t; struct _Unwind_Context; -#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH__)) +#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || \ + defined(__ARM_DWARF_EH__) || defined(__SEH__)) struct _Unwind_Control_Block; typedef struct _Unwind_Control_Block _Unwind_Exception; /* Alias */ #else @@ -72,7 +73,7 @@ typedef struct _Unwind_Exception _Unwind_Exception; typedef enum { _URC_NO_REASON = 0, #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \ - !defined(__ARM_DWARF_EH__) + !defined(__ARM_DWARF_EH__) && !defined(__SEH__) _URC_OK = 0, /* used by ARM EHABI */ #endif _URC_FOREIGN_EXCEPTION_CAUGHT = 1, @@ -86,7 +87,7 @@ typedef enum { _URC_INSTALL_CONTEXT = 7, _URC_CONTINUE_UNWIND = 8, #if defined(__arm__) && !defined(__USING_SJLJ_EXCEPTIONS__) && \ - !defined(__ARM_DWARF_EH__) + !defined(__ARM_DWARF_EH__) && !defined(__SEH__) _URC_FAILURE = 9 /* used by ARM EHABI */ #endif } _Unwind_Reason_Code; @@ -103,7 +104,8 @@ typedef enum { typedef void (*_Unwind_Exception_Cleanup_Fn)(_Unwind_Reason_Code, _Unwind_Exception *); -#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH__)) +#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || \ + defined(__ARM_DWARF_EH__) || defined(__SEH__)) typedef struct _Unwind_Control_Block _Unwind_Control_Block; typedef uint32_t _Unwind_EHT_Header; @@ -167,7 +169,8 @@ typedef _Unwind_Personality_Fn __personality_routine; typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *, void *); -#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || defined(__ARM_DWARF_EH__)) +#if defined(__arm__) && !(defined(__USING_SJLJ_EXCEPTIONS__) || \ + defined(__ARM_DWARF_EH__) || defined(__SEH__)) typedef enum { _UVRSC_CORE = 0, /* integer register */ _UVRSC_VFP = 1, /* vfp */ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits