98#if __has_feature(ptrauth_intrinsics) || defined(__PTRAUTH__)
109#define ptrauth_strip(__value, __key) __builtin_ptrauth_strip(__value, __key)
125#define ptrauth_blend_discriminator(__pointer, __integer) \
126 __builtin_ptrauth_blend_discriminator(__pointer, __integer)
139#define ptrauth_sign_constant(__value, __key, __data) \
140 __builtin_ptrauth_sign_constant(__value, __key, __data)
154#define ptrauth_sign_unauthenticated(__value, __key, __data) \
155 __builtin_ptrauth_sign_unauthenticated(__value, __key, __data)
176#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \
178 __builtin_ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \
198#define ptrauth_auth_function(__value, __old_key, __old_data) \
199 ptrauth_auth_and_resign(__value, __old_key, __old_data, \
200 ptrauth_key_function_pointer, 0)
211#define ptrauth_auth_data(__value, __old_key, __old_data) \
212 __builtin_ptrauth_auth(__value, __old_key, __old_data)
224#define ptrauth_string_discriminator(__string) \
225 __builtin_ptrauth_string_discriminator(__string)
241#define ptrauth_type_discriminator(__type) \
242 __builtin_ptrauth_type_discriminator(__type)
248#if __has_feature(ptrauth_function_pointer_type_discrimination)
249#define ptrauth_function_pointer_type_discriminator(__type) \
250 __builtin_ptrauth_type_discriminator(__type)
252#define ptrauth_function_pointer_type_discriminator(__type) \
253 ((ptrauth_extra_data_t)0)
275#define ptrauth_sign_generic_data(__value, __data) \
276 __builtin_ptrauth_sign_generic_data(__value, __data)
279#define ptrauth_cxx_vtable_pointer(key, address_discrimination, \
280 extra_discrimination...) \
281 [[clang::ptrauth_vtable_pointer(key, address_discrimination, \
282 extra_discrimination)]]
285#define __ptrauth_init_fini_discriminator 0xd9d4
288#define __ptrauth_objc_method_list_imp \
289 __ptrauth(ptrauth_key_function_pointer, 1, 0)
291#if __has_feature(ptrauth_objc_method_list_pointer)
292#define __ptrauth_objc_method_list_pointer \
293 __ptrauth(ptrauth_key_method_list_pointer, 1, 0xC310)
295#define __ptrauth_objc_method_list_pointer
298#define __ptrauth_isa_discriminator 0x6AE1
299#define __ptrauth_super_discriminator 0xB5AB
300#define __ptrauth_objc_isa_pointer \
301 __ptrauth(ptrauth_key_objc_isa_pointer, 1, __ptrauth_isa_discriminator)
302#if __has_feature(ptrauth_restricted_intptr_qualifier)
303#define __ptrauth_objc_isa_uintptr \
304 __ptrauth_restricted_intptr(ptrauth_key_objc_isa_pointer, 1, \
305 __ptrauth_isa_discriminator)
307#define __ptrauth_objc_isa_uintptr \
308 __ptrauth(ptrauth_key_objc_isa_pointer, 1, __ptrauth_isa_discriminator)
311#define __ptrauth_objc_super_pointer \
312 __ptrauth(ptrauth_key_objc_super_pointer, 1, __ptrauth_super_discriminator)
314#define __ptrauth_objc_sel_discriminator 0x57c2
315#if __has_feature(ptrauth_objc_interface_sel)
316#define __ptrauth_objc_sel \
317 __ptrauth(ptrauth_key_objc_sel_pointer, 1, __ptrauth_objc_sel_discriminator)
319#define __ptrauth_objc_sel
322#define __ptrauth_objc_class_ro_discriminator 0x61f8
323#define __ptrauth_objc_class_ro \
324 __ptrauth(ptrauth_key_objc_class_ro_pointer, 1, \
325 __ptrauth_objc_class_ro_discriminator)
329#define ptrauth_strip(__value, __key) \
335#define ptrauth_blend_discriminator(__pointer, __integer) \
339 ((ptrauth_extra_data_t)0); \
342#define ptrauth_sign_constant(__value, __key, __data) \
349#define ptrauth_sign_unauthenticated(__value, __key, __data) \
356#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \
366#define ptrauth_auth_function(__value, __old_key, __old_data) \
373#define ptrauth_auth_data(__value, __old_key, __old_data) \
380#define ptrauth_string_discriminator(__string) \
383 ((ptrauth_extra_data_t)0); \
386#define ptrauth_type_discriminator(__type) ((ptrauth_extra_data_t)0)
387#define ptrauth_function_pointer_type_discriminator(__type) \
388 ((ptrauth_extra_data_t)0)
390#define ptrauth_sign_generic_data(__value, __data) \
394 ((ptrauth_generic_signature_t)0); \
398#define ptrauth_cxx_vtable_pointer(key, address_discrimination, \
399 extra_discrimination...)
401#define __ptrauth_objc_isa_pointer
402#define __ptrauth_objc_isa_uintptr
403#define __ptrauth_objc_super_pointer
__UINTPTR_TYPE__ ptrauth_extra_data_t
__UINTPTR_TYPE__ ptrauth_generic_signature_t
@ ptrauth_key_method_list_pointer
@ ptrauth_key_return_address
@ ptrauth_key_process_independent_code
@ ptrauth_key_process_dependent_code
@ ptrauth_key_process_independent_data
@ ptrauth_key_cxx_vtable_pointer
@ ptrauth_key_objc_super_pointer
@ ptrauth_key_init_fini_pointer
@ ptrauth_key_objc_isa_pointer
@ ptrauth_key_objc_sel_pointer
@ ptrauth_key_objc_class_ro_pointer
@ ptrauth_key_process_dependent_data
@ ptrauth_key_function_pointer