@@ -30,8 +30,11 @@ EXCEPTION_DISPOSITION _GCC_specific_handler(PEXCEPTION_RECORD, void *, PCONTEXT,
3030 _Unwind_Personality_Fn );
3131#endif
3232
33- #if __has_feature (ptrauth_qualifier )
33+ #if __has_feature (ptrauth_calls ) || defined( __PTRAUTH__ )
3434#include <ptrauth.h>
35+
36+ #define __gcc_personality_has_ptrauth 1
37+
3538#if __has_feature (ptrauth_restricted_intptr_qualifier )
3639#define __ptrauth_gcc_personality_intptr (key , addressDiscriminated , \
3740 discriminator ) \
@@ -42,6 +45,7 @@ EXCEPTION_DISPOSITION _GCC_specific_handler(PEXCEPTION_RECORD, void *, PCONTEXT,
4245 __ptrauth(key, addressDiscriminated, discriminator)
4346#endif
4447#else
48+ #define __gcc_personality_has_ptrauth 0
4549#define __ptrauth_gcc_personality_intptr (...)
4650#endif
4751
@@ -283,7 +287,7 @@ COMPILER_RT_ABI _Unwind_Reason_Code __gcc_personality_v0(
283287 _Unwind_SetGR (context , __builtin_eh_return_data_regno (1 ), 0 );
284288 size_t __ptrauth_gcc_personality_lpad landingPad =
285289 funcStart + landingPadOffset ;
286- #if __has_feature ( ptrauth_qualifier )
290+ #if __gcc_personality_has_ptrauth
287291 uintptr_t stackPointer = _Unwind_GetGR (context , -2 );
288292 const uintptr_t existingDiscriminator =
289293 ptrauth_blend_discriminator (& landingPad ,
0 commit comments