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, \
201#define ptrauth_auth_load_relative_and_sign(__value, __old_key, __old_data, \
202 __new_key, __new_data, __offset) \
203 __builtin_ptrauth_auth_load_relative_and_sign( \
204 __value, __old_key, __old_data, __new_key, __new_data, __offset)
223#define ptrauth_auth_function(__value, __old_key, __old_data) \
224 ptrauth_auth_and_resign(__value, __old_key, __old_data, \
225 ptrauth_key_function_pointer, 0)
236#define ptrauth_auth_data(__value, __old_key, __old_data) \
237 __builtin_ptrauth_auth(__value, __old_key, __old_data)
249#define ptrauth_string_discriminator(__string) \
250 __builtin_ptrauth_string_discriminator(__string)
266#define ptrauth_type_discriminator(__type) \
267 __builtin_ptrauth_type_discriminator(__type)
273#if __has_feature(ptrauth_function_pointer_type_discrimination)
274#define ptrauth_function_pointer_type_discriminator(__type) \
275 __builtin_ptrauth_type_discriminator(__type)
277#define ptrauth_function_pointer_type_discriminator(__type) \
278 ((ptrauth_extra_data_t)0)
300#define ptrauth_sign_generic_data(__value, __data) \
301 __builtin_ptrauth_sign_generic_data(__value, __data)
304#define ptrauth_cxx_vtable_pointer(key, address_discrimination, \
305 extra_discrimination...) \
306 [[clang::ptrauth_vtable_pointer(key, address_discrimination, \
307 extra_discrimination)]]
310#define __ptrauth_init_fini_discriminator 0xd9d4
313#define __ptrauth_objc_method_list_imp \
314 __ptrauth(ptrauth_key_function_pointer, 1, 0)
316#if __has_feature(ptrauth_objc_method_list_pointer)
317#define __ptrauth_objc_method_list_pointer \
318 __ptrauth(ptrauth_key_method_list_pointer, 1, 0xC310)
320#define __ptrauth_objc_method_list_pointer
323#define __ptrauth_isa_discriminator 0x6AE1
324#define __ptrauth_super_discriminator 0xB5AB
325#define __ptrauth_objc_isa_pointer \
326 __ptrauth(ptrauth_key_objc_isa_pointer, 1, __ptrauth_isa_discriminator)
327#if __has_feature(ptrauth_restricted_intptr_qualifier)
328#define __ptrauth_objc_isa_uintptr \
329 __ptrauth_restricted_intptr(ptrauth_key_objc_isa_pointer, 1, \
330 __ptrauth_isa_discriminator)
332#define __ptrauth_objc_isa_uintptr \
333 __ptrauth(ptrauth_key_objc_isa_pointer, 1, __ptrauth_isa_discriminator)
336#define __ptrauth_objc_super_pointer \
337 __ptrauth(ptrauth_key_objc_super_pointer, 1, __ptrauth_super_discriminator)
339#define __ptrauth_objc_sel_discriminator 0x57c2
340#if __has_feature(ptrauth_objc_interface_sel)
341#define __ptrauth_objc_sel \
342 __ptrauth(ptrauth_key_objc_sel_pointer, 1, __ptrauth_objc_sel_discriminator)
344#define __ptrauth_objc_sel
347#define __ptrauth_objc_class_ro_discriminator 0x61f8
348#define __ptrauth_objc_class_ro \
349 __ptrauth(ptrauth_key_objc_class_ro_pointer, 1, \
350 __ptrauth_objc_class_ro_discriminator)
354#define ptrauth_strip(__value, __key) \
360#define ptrauth_blend_discriminator(__pointer, __integer) \
364 ((ptrauth_extra_data_t)0); \
367#define ptrauth_sign_constant(__value, __key, __data) \
374#define ptrauth_sign_unauthenticated(__value, __key, __data) \
381#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \
391#define ptrauth_auth_load_relative_and_sign(__value, __old_key, __old_data, \
392 __new_key, __new_data, __offset) \
398 const char *__value_tmp = (const char *)(__value); \
399 (void *)(__value_tmp + *(const int *)(__value_tmp + (__offset))); \
402#define ptrauth_auth_function(__value, __old_key, __old_data) \
409#define ptrauth_auth_data(__value, __old_key, __old_data) \
416#define ptrauth_string_discriminator(__string) \
419 ((ptrauth_extra_data_t)0); \
422#define ptrauth_type_discriminator(__type) ((ptrauth_extra_data_t)0)
423#define ptrauth_function_pointer_type_discriminator(__type) \
424 ((ptrauth_extra_data_t)0)
426#define ptrauth_sign_generic_data(__value, __data) \
430 ((ptrauth_generic_signature_t)0); \
433#define ptrauth_cxx_vtable_pointer(key, address_discrimination, \
434 extra_discrimination...)
436#define __ptrauth_objc_isa_pointer
437#define __ptrauth_objc_isa_uintptr
438#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