diff --git a/compiler-rt/lib/builtins/gcc_personality_v0.c b/compiler-rt/lib/builtins/gcc_personality_v0.c index 3ed17fa788c28..6d92a7b248f3c 100644 --- a/compiler-rt/lib/builtins/gcc_personality_v0.c +++ b/compiler-rt/lib/builtins/gcc_personality_v0.c @@ -30,6 +30,10 @@ EXCEPTION_DISPOSITION _GCC_specific_handler(PEXCEPTION_RECORD, void *, PCONTEXT, _Unwind_Personality_Fn); #endif +#ifndef __has_feature +#define __has_feature(__feature) 0 +#endif + #if __has_feature(ptrauth_calls) #include diff --git a/libunwind/include/__libunwind_config.h b/libunwind/include/__libunwind_config.h index 343934e885368..980d11ef5d4f2 100644 --- a/libunwind/include/__libunwind_config.h +++ b/libunwind/include/__libunwind_config.h @@ -212,11 +212,13 @@ # define _LIBUNWIND_HIGHEST_DWARF_REGISTER 287 #endif // _LIBUNWIND_IS_NATIVE_ONLY -#if __has_feature(ptrauth_calls) && __has_feature(ptrauth_returns) -# define _LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING 1 -#elif __has_feature(ptrauth_calls) != __has_feature(ptrauth_returns) -# error "Either both or none of ptrauth_calls and ptrauth_returns "\ - "is allowed to be enabled" +#if defined(__has_feature) +# if __has_feature(ptrauth_calls) && __has_feature(ptrauth_returns) +# define _LIBUNWIND_TARGET_AARCH64_AUTHENTICATED_UNWINDING 1 +# elif __has_feature(ptrauth_calls) != __has_feature(ptrauth_returns) +# error "Either both or none of ptrauth_calls and ptrauth_returns "\ + "is allowed to be enabled" +# endif #endif #endif // ____LIBUNWIND_CONFIG_H__ diff --git a/libunwind/src/UnwindRegistersRestore.S b/libunwind/src/UnwindRegistersRestore.S index 1ab4c43b673b4..198735fa800a9 100644 --- a/libunwind/src/UnwindRegistersRestore.S +++ b/libunwind/src/UnwindRegistersRestore.S @@ -634,6 +634,10 @@ Lnovec: #elif defined(__aarch64__) +#ifndef __has_feature +#define __has_feature(__feature) 0 +#endif + #if defined(__ARM_FEATURE_GCS_DEFAULT) .arch_extension gcs #endif diff --git a/libunwind/src/UnwindRegistersSave.S b/libunwind/src/UnwindRegistersSave.S index 31a177f4a0df4..619a59751151e 100644 --- a/libunwind/src/UnwindRegistersSave.S +++ b/libunwind/src/UnwindRegistersSave.S @@ -763,6 +763,10 @@ LnoR2Fix: #elif defined(__aarch64__) +#ifndef __has_feature +#define __has_feature(__feature) 0 +#endif + // // extern int __unw_getcontext(unw_context_t* thread_state) //