Author: mstorsjo Date: Tue Sep 26 01:07:26 2017 New Revision: 314197 URL: http://llvm.org/viewvc/llvm-project?rev=314197&view=rev Log: Skip building unused parts when targeting SJLJ
When SJLJ exceptions are used, those functions aren't used. This fixes build failures on ARM with SJLJ enabled (e.g. on armv7/iOS) when built using the CMake project files. Differential Revision: https://reviews.llvm.org/D38249 Modified: libunwind/trunk/src/UnwindLevel1.c libunwind/trunk/src/UnwindRegistersRestore.S libunwind/trunk/src/UnwindRegistersSave.S libunwind/trunk/src/libunwind.cpp Modified: libunwind/trunk/src/UnwindLevel1.c URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/UnwindLevel1.c?rev=314197&r1=314196&r2=314197&view=diff ============================================================================== --- libunwind/trunk/src/UnwindLevel1.c (original) +++ libunwind/trunk/src/UnwindLevel1.c Tue Sep 26 01:07:26 2017 @@ -30,7 +30,7 @@ #include "unwind.h" #include "config.h" -#if !defined(_LIBUNWIND_ARM_EHABI) +#if !defined(_LIBUNWIND_ARM_EHABI) && !defined(__USING_SJLJ_EXCEPTIONS__) static _Unwind_Reason_Code unwind_phase1(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *exception_object) { @@ -503,4 +503,4 @@ _LIBUNWIND_EXPORT void _Unwind_SetIP(str unw_set_reg(cursor, UNW_REG_IP, value); } -#endif // !defined(_LIBUNWIND_ARM_EHABI) +#endif // !defined(_LIBUNWIND_ARM_EHABI) && !defined(__USING_SJLJ_EXCEPTIONS__) Modified: libunwind/trunk/src/UnwindRegistersRestore.S URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/UnwindRegistersRestore.S?rev=314197&r1=314196&r2=314197&view=diff ============================================================================== --- libunwind/trunk/src/UnwindRegistersRestore.S (original) +++ libunwind/trunk/src/UnwindRegistersRestore.S Tue Sep 26 01:07:26 2017 @@ -308,7 +308,7 @@ DEFINE_LIBUNWIND_PRIVATE_FUNCTION(_ZN9li ldp x0, x1, [x0, #0x000] // restore x0,x1 ret x30 // jump to pc -#elif defined(__arm__) && !defined(__APPLE__) +#elif defined(__arm__) && !(defined(__APPLE__) || defined(__USING_SJLJ_EXCEPTIONS__)) #if !defined(__ARM_ARCH_ISA_ARM) .thumb Modified: libunwind/trunk/src/UnwindRegistersSave.S URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/UnwindRegistersSave.S?rev=314197&r1=314196&r2=314197&view=diff ============================================================================== --- libunwind/trunk/src/UnwindRegistersSave.S (original) +++ libunwind/trunk/src/UnwindRegistersSave.S Tue Sep 26 01:07:26 2017 @@ -289,7 +289,7 @@ DEFINE_LIBUNWIND_FUNCTION(unw_getcontext mov x0, #0 // return UNW_ESUCCESS ret -#elif defined(__arm__) && !defined(__APPLE__) +#elif defined(__arm__) && !(defined(__APPLE__) || defined(__USING_SJLJ_EXCEPTIONS__)) #if !defined(__ARM_ARCH_ISA_ARM) .thumb Modified: libunwind/trunk/src/libunwind.cpp URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/src/libunwind.cpp?rev=314197&r1=314196&r2=314197&view=diff ============================================================================== --- libunwind/trunk/src/libunwind.cpp (original) +++ libunwind/trunk/src/libunwind.cpp Tue Sep 26 01:07:26 2017 @@ -24,6 +24,7 @@ #include <stdlib.h> +#if !defined(__USING_SJLJ_EXCEPTIONS__) #include "AddressSpace.hpp" #include "UnwindCursor.hpp" @@ -341,6 +342,7 @@ void _unw_remove_dynamic_fde(unw_word_t DwarfFDECache<LocalAddressSpace>::removeAllIn((LocalAddressSpace::pint_t)fde); } #endif // defined(_LIBUNWIND_SUPPORT_DWARF_UNWIND) +#endif // !defined(__USING_SJLJ_EXCEPTIONS__) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits