97#if __has_feature(ptrauth_intrinsics) || defined(__PTRAUTH__)
108#define ptrauth_strip(__value, __key) __builtin_ptrauth_strip(__value, __key)
124#define ptrauth_blend_discriminator(__pointer, __integer) \
125 __builtin_ptrauth_blend_discriminator(__pointer, __integer)
138#define ptrauth_sign_constant(__value, __key, __data) \
139 __builtin_ptrauth_sign_constant(__value, __key, __data)
153#define ptrauth_sign_unauthenticated(__value, __key, __data) \
154 __builtin_ptrauth_sign_unauthenticated(__value, __key, __data)
175#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \
177 __builtin_ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \
200#define ptrauth_auth_with_pc_and_resign(__value, __old_key, __old_data, \
201 __old_pc, __new_key, __new_data) \
202 __builtin_ptrauth_auth_with_pc_and_resign(__value, __old_key, __old_data, \
203 __old_pc, __new_key, __new_data)
225#define ptrauth_auth_load_relative_and_sign(__value, __old_key, __old_data, \
226 __new_key, __new_data, __offset) \
227 __builtin_ptrauth_auth_load_relative_and_sign( \
228 __value, __old_key, __old_data, __new_key, __new_data, __offset)
247#define ptrauth_auth_function(__value, __old_key, __old_data) \
248 ptrauth_auth_and_resign(__value, __old_key, __old_data, \
249 ptrauth_key_function_pointer, 0)
260#define ptrauth_auth_data(__value, __old_key, __old_data) \
261 __builtin_ptrauth_auth(__value, __old_key, __old_data)
273#define ptrauth_string_discriminator(__string) \
274 __builtin_ptrauth_string_discriminator(__string)
290#define ptrauth_type_discriminator(__type) \
291 __builtin_ptrauth_type_discriminator(__type)
297#if __has_feature(ptrauth_function_pointer_type_discrimination)
298#define ptrauth_function_pointer_type_discriminator(__type) \
299 __builtin_ptrauth_type_discriminator(__type)
301#define ptrauth_function_pointer_type_discriminator(__type) \
302 ((ptrauth_extra_data_t)0)
324#define ptrauth_sign_generic_data(__value, __data) \
325 __builtin_ptrauth_sign_generic_data(__value, __data)
328#define ptrauth_cxx_vtable_pointer(key, address_discrimination, \
329 extra_discrimination...) \
330 [[clang::ptrauth_vtable_pointer(key, address_discrimination, \
331 extra_discrimination)]]
334#define __ptrauth_init_fini_discriminator 0xd9d4
337#define __ptrauth_objc_method_list_imp \
338 __ptrauth(ptrauth_key_function_pointer, 1, 0)
340#if __has_feature(ptrauth_objc_method_list_pointer)
341#define __ptrauth_objc_method_list_pointer \
342 __ptrauth(ptrauth_key_method_list_pointer, 1, 0xC310)
344#define __ptrauth_objc_method_list_pointer
347#define __ptrauth_isa_discriminator 0x6AE1
348#define __ptrauth_super_discriminator 0xB5AB
349#define __ptrauth_objc_isa_pointer \
350 __ptrauth(ptrauth_key_objc_isa_pointer, 1, __ptrauth_isa_discriminator)
351#if __has_feature(ptrauth_restricted_intptr_qualifier)
352#define __ptrauth_objc_isa_uintptr \
353 __ptrauth_restricted_intptr(ptrauth_key_objc_isa_pointer, 1, \
354 __ptrauth_isa_discriminator)
356#define __ptrauth_objc_isa_uintptr \
357 __ptrauth(ptrauth_key_objc_isa_pointer, 1, __ptrauth_isa_discriminator)
360#define __ptrauth_objc_super_pointer \
361 __ptrauth(ptrauth_key_objc_super_pointer, 1, __ptrauth_super_discriminator)
363#define __ptrauth_objc_sel_discriminator 0x57c2
364#if __has_feature(ptrauth_objc_interface_sel)
365#define __ptrauth_objc_sel \
366 __ptrauth(ptrauth_key_objc_sel_pointer, 1, __ptrauth_objc_sel_discriminator)
368#define __ptrauth_objc_sel
371#define __ptrauth_objc_class_ro_discriminator 0x61f8
372#define __ptrauth_objc_class_ro \
373 __ptrauth(ptrauth_key_objc_class_ro_pointer, 1, \
374 __ptrauth_objc_class_ro_discriminator)
376#if __has_feature(ptrauth_init_fini_address_discrimination)
377#define __ptrauth_init_fini_pointer \
378 __ptrauth(ptrauth_key_init_fini_pointer, 1, __ptrauth_init_fini_discriminator)
380#define __ptrauth_init_fini_pointer \
381 __ptrauth(ptrauth_key_init_fini_pointer, 0, __ptrauth_init_fini_discriminator)
386#define ptrauth_strip(__value, __key) \
392#define ptrauth_blend_discriminator(__pointer, __integer) \
396 ((ptrauth_extra_data_t)0); \
399#define ptrauth_sign_constant(__value, __key, __data) \
406#define ptrauth_sign_unauthenticated(__value, __key, __data) \
413#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \
423#define ptrauth_auth_with_pc_and_resign(__value, __old_key, __old_data, \
424 __old_pc, __new_key, __new_data) \
434#define ptrauth_auth_load_relative_and_sign(__value, __old_key, __old_data, \
435 __new_key, __new_data, __offset) \
441 const char *__value_tmp = (const char *)(__value); \
442 (void *)(__value_tmp + *(const int *)(__value_tmp + (__offset))); \
445#define ptrauth_auth_function(__value, __old_key, __old_data) \
452#define ptrauth_auth_data(__value, __old_key, __old_data) \
459#define ptrauth_string_discriminator(__string) \
462 ((ptrauth_extra_data_t)0); \
465#define ptrauth_type_discriminator(__type) ((ptrauth_extra_data_t)0)
466#define ptrauth_function_pointer_type_discriminator(__type) \
467 ((ptrauth_extra_data_t)0)
469#define ptrauth_sign_generic_data(__value, __data) \
473 ((ptrauth_generic_signature_t)0); \
476#define ptrauth_cxx_vtable_pointer(key, address_discrimination, \
477 extra_discrimination...)
479#define __ptrauth_objc_isa_pointer
480#define __ptrauth_objc_isa_uintptr
481#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