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)
263#define ptrauth_sign_generic_data(__value, __data) \
264 __builtin_ptrauth_sign_generic_data(__value, __data)
267#define ptrauth_cxx_vtable_pointer(key, address_discrimination, \
268 extra_discrimination...) \
269 [[clang::ptrauth_vtable_pointer(key, address_discrimination, \
270 extra_discrimination)]]
273#define __ptrauth_init_fini_discriminator 0xd9d4
276#define __ptrauth_objc_method_list_imp \
277 __ptrauth(ptrauth_key_function_pointer, 1, 0)
279#if __has_feature(ptrauth_objc_method_list_pointer)
280#define __ptrauth_objc_method_list_pointer \
281 __ptrauth(ptrauth_key_method_list_pointer, 1, 0xC310)
283#define __ptrauth_objc_method_list_pointer
286#define __ptrauth_isa_discriminator 0x6AE1
287#define __ptrauth_super_discriminator 0xB5AB
288#define __ptrauth_objc_isa_pointer \
289 __ptrauth(ptrauth_key_objc_isa_pointer, 1, __ptrauth_isa_discriminator)
290#if __has_feature(ptrauth_restricted_intptr_qualifier)
291#define __ptrauth_objc_isa_uintptr \
292 __ptrauth_restricted_intptr(ptrauth_key_objc_isa_pointer, 1, \
293 __ptrauth_isa_discriminator)
295#define __ptrauth_objc_isa_uintptr \
296 __ptrauth(ptrauth_key_objc_isa_pointer, 1, __ptrauth_isa_discriminator)
299#define __ptrauth_objc_super_pointer \
300 __ptrauth(ptrauth_key_objc_super_pointer, 1, __ptrauth_super_discriminator)
302#define __ptrauth_objc_sel_discriminator 0x57c2
303#if __has_feature(ptrauth_objc_interface_sel)
304#define __ptrauth_objc_sel \
305 __ptrauth(ptrauth_key_objc_sel_pointer, 1, __ptrauth_objc_sel_discriminator)
307#define __ptrauth_objc_sel
310#define __ptrauth_objc_class_ro_discriminator 0x61f8
311#define __ptrauth_objc_class_ro \
312 __ptrauth(ptrauth_key_objc_class_ro_pointer, 1, \
313 __ptrauth_objc_class_ro_discriminator)
317#define ptrauth_strip(__value, __key) \
323#define ptrauth_blend_discriminator(__pointer, __integer) \
327 ((ptrauth_extra_data_t)0); \
330#define ptrauth_sign_constant(__value, __key, __data) \
337#define ptrauth_sign_unauthenticated(__value, __key, __data) \
344#define ptrauth_auth_and_resign(__value, __old_key, __old_data, __new_key, \
354#define ptrauth_auth_function(__value, __old_key, __old_data) \
361#define ptrauth_auth_data(__value, __old_key, __old_data) \
368#define ptrauth_string_discriminator(__string) \
371 ((ptrauth_extra_data_t)0); \
374#define ptrauth_type_discriminator(__type) ((ptrauth_extra_data_t)0)
376#define ptrauth_sign_generic_data(__value, __data) \
380 ((ptrauth_generic_signature_t)0); \
384#define ptrauth_cxx_vtable_pointer(key, address_discrimination, \
385 extra_discrimination...)
387#define __ptrauth_objc_isa_pointer
388#define __ptrauth_objc_isa_uintptr
389#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