aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2020-12-19 12:13:03 +0100
committerGitHub <noreply@github.com>2020-12-19 12:13:03 +0100
commitb090451646904006ac41b2b99e532489d89ea837 (patch)
treeb0a5ec423dc42f5bf6dcf533b90f8c67a69e9b99 /lib
parent506af7e52e0985b410ea089bf5fa3247ab2377cb (diff)
parent3f81ddb735bfc8e6fb1776df7407ace213816252 (diff)
downloadzig-b090451646904006ac41b2b99e532489d89ea837.tar.gz
zig-b090451646904006ac41b2b99e532489d89ea837.zip
Merge pull request #7318 from kubkon/cc-macho
stage1: cross compile to x86_64 and arm64 macOS from anywhere with LLVM
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/include/aarch64-macos-gnu/Availability.h482
-rw-r--r--lib/libc/include/aarch64-macos-gnu/AvailabilityInternal.h4675
-rw-r--r--lib/libc/include/aarch64-macos-gnu/AvailabilityMacros.h4013
-rw-r--r--lib/libc/include/aarch64-macos-gnu/AvailabilityVersions.h207
-rw-r--r--lib/libc/include/aarch64-macos-gnu/TargetConditionals.h508
-rw-r--r--lib/libc/include/aarch64-macos-gnu/_ctermid.h35
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/_limits.h9
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/_mcontext.h91
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/_param.h22
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/_types.h98
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/arch.h67
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/endian.h78
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/limits.h110
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/param.h147
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/signal.h18
-rw-r--r--lib/libc/include/aarch64-macos-gnu/arm/types.h107
-rw-r--r--lib/libc/include/aarch64-macos-gnu/bsm/audit.h391
-rw-r--r--lib/libc/include/aarch64-macos-gnu/dispatch/block.h428
-rw-r--r--lib/libc/include/aarch64-macos-gnu/dispatch/dispatch.h80
-rw-r--r--lib/libc/include/aarch64-macos-gnu/dispatch/group.h279
-rw-r--r--lib/libc/include/aarch64-macos-gnu/dispatch/object.h606
-rw-r--r--lib/libc/include/aarch64-macos-gnu/dispatch/queue.h1674
-rw-r--r--lib/libc/include/aarch64-macos-gnu/dispatch/semaphore.h117
-rw-r--r--lib/libc/include/aarch64-macos-gnu/dispatch/source.h780
-rw-r--r--lib/libc/include/aarch64-macos-gnu/dispatch/workloop.h163
-rw-r--r--lib/libc/include/aarch64-macos-gnu/libkern/OSAtomicDeprecated.h1266
-rw-r--r--lib/libc/include/aarch64-macos-gnu/libkern/OSAtomicQueue.h115
-rw-r--r--lib/libc/include/aarch64-macos-gnu/libkern/OSByteOrder.h317
-rw-r--r--lib/libc/include/aarch64-macos-gnu/libkern/_OSByteOrder.h133
-rw-r--r--lib/libc/include/aarch64-macos-gnu/libkern/arm/OSByteOrder.h216
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach-o/dyld.h272
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach-o/loader.h1601
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/_structs.h645
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/boolean.h70
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/exception.h79
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/kern_return.h74
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/processor_info.h72
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/rpc.h35
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/thread_state.h44
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/thread_status.h249
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/vm_param.h103
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/arm/vm_types.h157
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/kern_return.h334
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/mach_port.h1808
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/mach_traps.h297
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/mach_types.h283
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine.h411
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/_structs.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/boolean.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/exception.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/kern_return.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/processor_info.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/rpc.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/thread_state.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/thread_status.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/vm_param.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/machine/vm_types.h40
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/message.h908
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/port.h429
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/processor_set.h585
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/task.h2523
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/task_info.h524
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/task_policy.h186
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/task_special_ports.h133
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/thread_act.h1386
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/thread_special_ports.h86
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/thread_status.h100
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/vm_prot.h153
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/vm_statistics.h550
-rw-r--r--lib/libc/include/aarch64-macos-gnu/mach/vm_types.h97
-rw-r--r--lib/libc/include/aarch64-macos-gnu/machine/_mcontext.h34
-rw-r--r--lib/libc/include/aarch64-macos-gnu/machine/_param.h34
-rw-r--r--lib/libc/include/aarch64-macos-gnu/machine/_types.h39
-rw-r--r--lib/libc/include/aarch64-macos-gnu/machine/endian.h42
-rw-r--r--lib/libc/include/aarch64-macos-gnu/machine/limits.h11
-rw-r--r--lib/libc/include/aarch64-macos-gnu/machine/param.h42
-rw-r--r--lib/libc/include/aarch64-macos-gnu/machine/signal.h39
-rw-r--r--lib/libc/include/aarch64-macos-gnu/machine/types.h42
-rw-r--r--lib/libc/include/aarch64-macos-gnu/malloc/_malloc.h56
-rw-r--r--lib/libc/include/aarch64-macos-gnu/malloc/malloc.h314
-rw-r--r--lib/libc/include/aarch64-macos-gnu/math.h775
-rw-r--r--lib/libc/include/aarch64-macos-gnu/net/if.h442
-rw-r--r--lib/libc/include/aarch64-macos-gnu/net/if_var.h243
-rw-r--r--lib/libc/include/aarch64-macos-gnu/netinet/in.h672
-rw-r--r--lib/libc/include/aarch64-macos-gnu/netinet/tcp.h285
-rw-r--r--lib/libc/include/aarch64-macos-gnu/netinet6/in6.h681
-rw-r--r--lib/libc/include/aarch64-macos-gnu/objc/objc-api.h286
-rw-r--r--lib/libc/include/aarch64-macos-gnu/objc/runtime.h2164
-rw-r--r--lib/libc/include/aarch64-macos-gnu/os/base.h322
-rw-r--r--lib/libc/include/aarch64-macos-gnu/os/clock.h18
-rw-r--r--lib/libc/include/aarch64-macos-gnu/os/object.h303
-rw-r--r--lib/libc/include/aarch64-macos-gnu/os/workgroup.h37
-rw-r--r--lib/libc/include/aarch64-macos-gnu/os/workgroup_base.h78
-rw-r--r--lib/libc/include/aarch64-macos-gnu/os/workgroup_interval.h155
-rw-r--r--lib/libc/include/aarch64-macos-gnu/os/workgroup_object.h357
-rw-r--r--lib/libc/include/aarch64-macos-gnu/os/workgroup_parallel.h74
-rw-r--r--lib/libc/include/aarch64-macos-gnu/pthread.h592
-rw-r--r--lib/libc/include/aarch64-macos-gnu/pthread/sched.h45
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sched.h45
-rw-r--r--lib/libc/include/aarch64-macos-gnu/signal.h124
-rw-r--r--lib/libc/include/aarch64-macos-gnu/simd/common.h4458
-rw-r--r--lib/libc/include/aarch64-macos-gnu/simd/conversion.h1966
-rw-r--r--lib/libc/include/aarch64-macos-gnu/simd/logic.h1315
-rw-r--r--lib/libc/include/aarch64-macos-gnu/simd/math.h5380
-rw-r--r--lib/libc/include/aarch64-macos-gnu/simd/packed.h1031
-rw-r--r--lib/libc/include/aarch64-macos-gnu/simd/quaternion.h1194
-rw-r--r--lib/libc/include/aarch64-macos-gnu/spawn.h187
-rw-r--r--lib/libc/include/aarch64-macos-gnu/stdio.h410
-rw-r--r--lib/libc/include/aarch64-macos-gnu/stdlib.h373
-rw-r--r--lib/libc/include/aarch64-macos-gnu/string.h197
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_attr_t.h32
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_cond_t.h32
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_condattr_t.h32
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h32
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h32
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_t.h32
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_types.h120
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_select.h57
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_symbol_aliasing.h534
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_types/_fd_def.h121
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_types/_int8_t.h31
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/_types/_ucontext.h59
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/acl.h212
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/attr.h586
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/cdefs.h876
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/event.h396
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/fcntl.h581
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/ioccom.h99
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/kauth.h410
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/mman.h263
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/mount.h434
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/param.h235
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/proc.h224
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/resource.h512
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/shm.h190
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/socket.h741
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/sockio.h180
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/spawn.h79
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/stat.h432
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/sysctl.h779
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/syslimits.h125
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/uio.h111
-rw-r--r--lib/libc/include/aarch64-macos-gnu/sys/un.h106
-rw-r--r--lib/libc/include/aarch64-macos-gnu/xlocale/_inttypes.h48
-rw-r--r--lib/libc/include/aarch64-macos-gnu/xlocale/_wchar.h147
-rw-r--r--lib/libc/include/aarch64-macos-gnu/xpc/availability.h124
-rw-r--r--lib/libc/include/aarch64-macos-gnu/xpc/base.h213
-rw-r--r--lib/libc/include/aarch64-macos-gnu/xpc/connection.h748
-rw-r--r--lib/libc/include/aarch64-macos-gnu/xpc/xpc.h2701
-rw-r--r--lib/libc/include/any-macos-any/AssertMacros.h (renamed from lib/libc/include/x86_64-macos-gnu/AssertMacros.h)2
-rw-r--r--lib/libc/include/any-macos-any/Block.h (renamed from lib/libc/include/x86_64-macos-gnu/Block.h)2
-rw-r--r--lib/libc/include/any-macos-any/ConditionalMacros.h (renamed from lib/libc/include/x86_64-macos-gnu/ConditionalMacros.h)3
-rw-r--r--lib/libc/include/any-macos-any/MacTypes.h (renamed from lib/libc/include/x86_64-macos-gnu/MacTypes.h)3
-rw-r--r--lib/libc/include/any-macos-any/__wctype.h (renamed from lib/libc/include/x86_64-macos-gnu/__wctype.h)2
-rw-r--r--lib/libc/include/any-macos-any/_ctype.h (renamed from lib/libc/include/x86_64-macos-gnu/_ctype.h)2
-rw-r--r--lib/libc/include/any-macos-any/_locale.h (renamed from lib/libc/include/x86_64-macos-gnu/_locale.h)2
-rw-r--r--lib/libc/include/any-macos-any/_regex.h (renamed from lib/libc/include/x86_64-macos-gnu/_regex.h)2
-rw-r--r--lib/libc/include/any-macos-any/_stdio.h (renamed from lib/libc/include/x86_64-macos-gnu/_stdio.h)2
-rw-r--r--lib/libc/include/any-macos-any/_types.h (renamed from lib/libc/include/x86_64-macos-gnu/_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/_types/_intmax_t.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_intmax_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/_types/_nl_item.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_nl_item.h)0
-rw-r--r--lib/libc/include/any-macos-any/_types/_uint16_t.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_uint16_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/_types/_uint32_t.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_uint32_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/_types/_uint64_t.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_uint64_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/_types/_uint8_t.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_uint8_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/_types/_uintmax_t.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_uintmax_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/_types/_wctrans_t.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_wctrans_t.h)0
-rw-r--r--lib/libc/include/any-macos-any/_types/_wctype_t.h (renamed from lib/libc/include/x86_64-macos-gnu/_types/_wctype_t.h)0
-rw-r--r--lib/libc/include/any-macos-any/_wctype.h (renamed from lib/libc/include/x86_64-macos-gnu/_wctype.h)2
-rw-r--r--lib/libc/include/any-macos-any/_xlocale.h (renamed from lib/libc/include/x86_64-macos-gnu/_xlocale.h)2
-rw-r--r--lib/libc/include/any-macos-any/aio.h (renamed from lib/libc/include/x86_64-macos-gnu/aio.h)2
-rw-r--r--lib/libc/include/any-macos-any/alloca.h (renamed from lib/libc/include/x86_64-macos-gnu/alloca.h)2
-rw-r--r--lib/libc/include/any-macos-any/architecture/byte_order.h (renamed from lib/libc/include/x86_64-macos-gnu/architecture/byte_order.h)2
-rw-r--r--lib/libc/include/any-macos-any/arpa/inet.h (renamed from lib/libc/include/x86_64-macos-gnu/arpa/inet.h)2
-rw-r--r--lib/libc/include/any-macos-any/assert.h (renamed from lib/libc/include/x86_64-macos-gnu/assert.h)2
-rw-r--r--lib/libc/include/any-macos-any/complex.h (renamed from lib/libc/include/x86_64-macos-gnu/complex.h)2
-rw-r--r--lib/libc/include/any-macos-any/copyfile.h (renamed from lib/libc/include/x86_64-macos-gnu/copyfile.h)2
-rw-r--r--lib/libc/include/any-macos-any/cpio.h (renamed from lib/libc/include/x86_64-macos-gnu/cpio.h)2
-rw-r--r--lib/libc/include/any-macos-any/crt_externs.h (renamed from lib/libc/include/x86_64-macos-gnu/crt_externs.h)2
-rw-r--r--lib/libc/include/any-macos-any/ctype.h (renamed from lib/libc/include/x86_64-macos-gnu/ctype.h)2
-rw-r--r--lib/libc/include/any-macos-any/device/device_types.h (renamed from lib/libc/include/x86_64-macos-gnu/device/device_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/dirent.h (renamed from lib/libc/include/x86_64-macos-gnu/dirent.h)2
-rw-r--r--lib/libc/include/any-macos-any/dispatch/base.h (renamed from lib/libc/include/x86_64-macos-gnu/dispatch/base.h)2
-rw-r--r--lib/libc/include/any-macos-any/dispatch/data.h (renamed from lib/libc/include/x86_64-macos-gnu/dispatch/data.h)2
-rw-r--r--lib/libc/include/any-macos-any/dispatch/io.h (renamed from lib/libc/include/x86_64-macos-gnu/dispatch/io.h)2
-rw-r--r--lib/libc/include/any-macos-any/dispatch/once.h (renamed from lib/libc/include/x86_64-macos-gnu/dispatch/once.h)2
-rw-r--r--lib/libc/include/any-macos-any/dispatch/time.h (renamed from lib/libc/include/x86_64-macos-gnu/dispatch/time.h)2
-rw-r--r--lib/libc/include/any-macos-any/dlfcn.h (renamed from lib/libc/include/x86_64-macos-gnu/dlfcn.h)2
-rw-r--r--lib/libc/include/any-macos-any/errno.h (renamed from lib/libc/include/x86_64-macos-gnu/errno.h)3
-rw-r--r--lib/libc/include/any-macos-any/execinfo.h (renamed from lib/libc/include/x86_64-macos-gnu/execinfo.h)2
-rw-r--r--lib/libc/include/any-macos-any/fcntl.h (renamed from lib/libc/include/x86_64-macos-gnu/fcntl.h)2
-rw-r--r--lib/libc/include/any-macos-any/fenv.h (renamed from lib/libc/include/x86_64-macos-gnu/fenv.h)3
-rw-r--r--lib/libc/include/any-macos-any/float.h (renamed from lib/libc/include/x86_64-macos-gnu/float.h)2
-rw-r--r--lib/libc/include/any-macos-any/fmtmsg.h (renamed from lib/libc/include/x86_64-macos-gnu/fmtmsg.h)2
-rw-r--r--lib/libc/include/any-macos-any/fnmatch.h (renamed from lib/libc/include/x86_64-macos-gnu/fnmatch.h)2
-rw-r--r--lib/libc/include/any-macos-any/ftw.h (renamed from lib/libc/include/x86_64-macos-gnu/ftw.h)2
-rw-r--r--lib/libc/include/any-macos-any/gethostuuid.h (renamed from lib/libc/include/x86_64-macos-gnu/gethostuuid.h)2
-rw-r--r--lib/libc/include/any-macos-any/glob.h (renamed from lib/libc/include/x86_64-macos-gnu/glob.h)2
-rw-r--r--lib/libc/include/any-macos-any/grp.h (renamed from lib/libc/include/x86_64-macos-gnu/grp.h)2
-rw-r--r--lib/libc/include/any-macos-any/hfs/hfs_format.h (renamed from lib/libc/include/x86_64-macos-gnu/hfs/hfs_format.h)2
-rw-r--r--lib/libc/include/any-macos-any/hfs/hfs_unistr.h (renamed from lib/libc/include/x86_64-macos-gnu/hfs/hfs_unistr.h)2
-rw-r--r--lib/libc/include/any-macos-any/iconv.h (renamed from lib/libc/include/x86_64-macos-gnu/iconv.h)2
-rw-r--r--lib/libc/include/any-macos-any/ifaddrs.h (renamed from lib/libc/include/x86_64-macos-gnu/ifaddrs.h)2
-rw-r--r--lib/libc/include/any-macos-any/inttypes.h (renamed from lib/libc/include/x86_64-macos-gnu/inttypes.h)2
-rw-r--r--lib/libc/include/any-macos-any/langinfo.h (renamed from lib/libc/include/x86_64-macos-gnu/langinfo.h)2
-rw-r--r--lib/libc/include/any-macos-any/launch.h (renamed from lib/libc/include/x86_64-macos-gnu/launch.h)2
-rw-r--r--lib/libc/include/any-macos-any/libgen.h (renamed from lib/libc/include/x86_64-macos-gnu/libgen.h)2
-rw-r--r--lib/libc/include/any-macos-any/libkern/OSAtomic.h (renamed from lib/libc/include/x86_64-macos-gnu/libkern/OSAtomic.h)2
-rw-r--r--lib/libc/include/any-macos-any/libkern/OSSpinLockDeprecated.h (renamed from lib/libc/include/x86_64-macos-gnu/libkern/OSSpinLockDeprecated.h)2
-rw-r--r--lib/libc/include/any-macos-any/libkern/OSTypes.h (renamed from lib/libc/include/x86_64-macos-gnu/libkern/OSTypes.h)2
-rw-r--r--lib/libc/include/any-macos-any/limits.h (renamed from lib/libc/include/x86_64-macos-gnu/limits.h)2
-rw-r--r--lib/libc/include/any-macos-any/locale.h (renamed from lib/libc/include/x86_64-macos-gnu/locale.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/boolean.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/boolean.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/clock.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/clock.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/clock_priv.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/clock_priv.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/clock_types.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/clock_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/dyld_kernel.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/dyld_kernel.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/error.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/error.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/exception_types.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/exception_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/host_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/host_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/host_notify.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/host_notify.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/host_priv.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/host_priv.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/host_security.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/host_security.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/host_special_ports.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/host_special_ports.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/kmod.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/kmod.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/lock_set.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/lock_set.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mach.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mach.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mach_error.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mach_error.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mach_host.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mach_host.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mach_init.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mach_init.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mach_interface.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mach_interface.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mach_time.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mach_time.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mach_voucher_types.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mach_voucher_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/memory_object_types.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/memory_object_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mig.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mig.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mig_errors.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mig_errors.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/mig_strncpy_zerofill_support.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/mig_strncpy_zerofill_support.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/ndr.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/ndr.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/notify.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/notify.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/policy.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/policy.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/processor.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/processor.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/processor_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/processor_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/rpc.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/rpc.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/semaphore.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/semaphore.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/std_types.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/std_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/sync_policy.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/sync_policy.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/task_inspect.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/task_inspect.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/thread_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/thread_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/thread_policy.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/thread_policy.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/thread_switch.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/thread_switch.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/time_value.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/time_value.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/vm_attributes.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/vm_attributes.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/vm_behavior.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/vm_behavior.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/vm_inherit.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/vm_inherit.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/vm_map.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/vm_map.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/vm_page_size.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/vm_page_size.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/vm_purgable.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/vm_purgable.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/vm_region.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/vm_region.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach/vm_sync.h (renamed from lib/libc/include/x86_64-macos-gnu/mach/vm_sync.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach_debug/hash_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach_debug/hash_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach_debug/ipc_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach_debug/ipc_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach_debug/lockgroup_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach_debug/lockgroup_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach_debug/mach_debug_types.h (renamed from lib/libc/include/x86_64-macos-gnu/mach_debug/mach_debug_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach_debug/page_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach_debug/page_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach_debug/vm_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach_debug/vm_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/mach_debug/zone_info.h (renamed from lib/libc/include/x86_64-macos-gnu/mach_debug/zone_info.h)2
-rw-r--r--lib/libc/include/any-macos-any/memory.h (renamed from lib/libc/include/x86_64-macos-gnu/memory.h)2
-rw-r--r--lib/libc/include/any-macos-any/monetary.h (renamed from lib/libc/include/x86_64-macos-gnu/monetary.h)2
-rw-r--r--lib/libc/include/any-macos-any/ndbm.h (renamed from lib/libc/include/x86_64-macos-gnu/ndbm.h)2
-rw-r--r--lib/libc/include/any-macos-any/net/if_dl.h (renamed from lib/libc/include/x86_64-macos-gnu/net/if_dl.h)2
-rw-r--r--lib/libc/include/any-macos-any/net/net_kev.h (renamed from lib/libc/include/x86_64-macos-gnu/net/net_kev.h)2
-rw-r--r--lib/libc/include/any-macos-any/netdb.h (renamed from lib/libc/include/x86_64-macos-gnu/netdb.h)2
-rw-r--r--lib/libc/include/any-macos-any/nl_types.h (renamed from lib/libc/include/x86_64-macos-gnu/nl_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/objc/NSObjCRuntime.h (renamed from lib/libc/include/x86_64-macos-gnu/objc/NSObjCRuntime.h)2
-rw-r--r--lib/libc/include/any-macos-any/objc/NSObject.h (renamed from lib/libc/include/x86_64-macos-gnu/objc/NSObject.h)2
-rw-r--r--lib/libc/include/any-macos-any/objc/message.h (renamed from lib/libc/include/x86_64-macos-gnu/objc/message.h)2
-rw-r--r--lib/libc/include/any-macos-any/objc/objc.h (renamed from lib/libc/include/x86_64-macos-gnu/objc/objc.h)2
-rw-r--r--lib/libc/include/any-macos-any/os/availability.h (renamed from lib/libc/include/x86_64-macos-gnu/os/availability.h)2
-rw-r--r--lib/libc/include/any-macos-any/os/lock.h (renamed from lib/libc/include/x86_64-macos-gnu/os/lock.h)2
-rw-r--r--lib/libc/include/any-macos-any/poll.h (renamed from lib/libc/include/x86_64-macos-gnu/poll.h)5
-rw-r--r--lib/libc/include/any-macos-any/pthread/pthread_impl.h (renamed from lib/libc/include/x86_64-macos-gnu/pthread/pthread_impl.h)2
-rw-r--r--lib/libc/include/any-macos-any/pthread/qos.h (renamed from lib/libc/include/x86_64-macos-gnu/pthread/qos.h)2
-rw-r--r--lib/libc/include/any-macos-any/pwd.h (renamed from lib/libc/include/x86_64-macos-gnu/pwd.h)2
-rw-r--r--lib/libc/include/any-macos-any/regex.h (renamed from lib/libc/include/x86_64-macos-gnu/regex.h)2
-rw-r--r--lib/libc/include/any-macos-any/runetype.h (renamed from lib/libc/include/x86_64-macos-gnu/runetype.h)2
-rw-r--r--lib/libc/include/any-macos-any/search.h (renamed from lib/libc/include/x86_64-macos-gnu/search.h)2
-rw-r--r--lib/libc/include/any-macos-any/secure/_common.h (renamed from lib/libc/include/x86_64-macos-gnu/secure/_common.h)2
-rw-r--r--lib/libc/include/any-macos-any/secure/_stdio.h (renamed from lib/libc/include/x86_64-macos-gnu/secure/_stdio.h)2
-rw-r--r--lib/libc/include/any-macos-any/secure/_string.h (renamed from lib/libc/include/x86_64-macos-gnu/secure/_string.h)2
-rw-r--r--lib/libc/include/any-macos-any/secure/_strings.h (renamed from lib/libc/include/x86_64-macos-gnu/secure/_strings.h)2
-rw-r--r--lib/libc/include/any-macos-any/semaphore.h (renamed from lib/libc/include/x86_64-macos-gnu/semaphore.h)2
-rw-r--r--lib/libc/include/any-macos-any/setjmp.h (renamed from lib/libc/include/x86_64-macos-gnu/setjmp.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/base.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/base.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/extern.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/extern.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/geometry.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/geometry.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/matrix.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/matrix.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/matrix_types.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/matrix_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/simd.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/simd.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/types.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/types.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/vector.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/vector.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/vector_make.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/vector_make.h)2
-rw-r--r--lib/libc/include/any-macos-any/simd/vector_types.h (renamed from lib/libc/include/x86_64-macos-gnu/simd/vector_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/stdint.h (renamed from lib/libc/include/x86_64-macos-gnu/stdint.h)2
-rw-r--r--lib/libc/include/any-macos-any/strings.h (renamed from lib/libc/include/x86_64-macos-gnu/strings.h)3
-rw-r--r--lib/libc/include/any-macos-any/sys/_endian.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_endian.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_posix_availability.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_posix_availability.h)3
-rw-r--r--lib/libc/include/any-macos-any/sys/_pthread/_pthread_key_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_key_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_pthread/_pthread_mutex_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_mutex_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_pthread/_pthread_mutexattr_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_mutexattr_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_pthread/_pthread_once_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_once_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_blkcnt_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_blkcnt_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_blksize_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_blksize_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_caddr_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_caddr_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_clock_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_clock_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_ct_rune_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_ct_rune_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_dev_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_dev_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_errno_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_errno_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fd_clr.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_clr.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fd_copy.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_copy.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fd_isset.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_isset.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fd_set.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_set.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fd_setsize.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_setsize.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fd_zero.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_zero.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_filesec_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_filesec_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fsblkcnt_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fsblkcnt_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fsfilcnt_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fsfilcnt_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fsid_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fsid_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_fsobj_id_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_fsobj_id_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_gid_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_gid_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_guid_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_guid_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_id_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_id_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_in_addr_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_in_addr_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_in_port_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_in_port_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_ino64_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_ino64_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_ino_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_ino_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_int16_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_int16_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_int32_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_int32_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_int64_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_int64_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_intptr_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_intptr_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_iovec_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_iovec_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_key_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_key_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_mach_port_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_mach_port_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_mbstate_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_mbstate_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_mode_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_mode_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_nlink_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_nlink_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_null.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_null.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_o_dsync.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_o_dsync.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_o_sync.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_o_sync.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_off_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_off_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_os_inline.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_os_inline.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_pid_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_pid_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_posix_vdisable.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_posix_vdisable.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_rsize_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_rsize_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_rune_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_rune_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_s_ifmt.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_s_ifmt.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_sa_family_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_sa_family_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_seek_set.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_seek_set.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_sigaltstack.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_sigaltstack.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_sigset_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_sigset_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_size_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_size_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_socklen_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_socklen_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_ssize_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_ssize_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_suseconds_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_suseconds_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_time_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_time_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_timespec.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_timespec.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_timeval.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_timeval32.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval32.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_timeval64.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval64.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_u_char.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_u_char.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_u_int.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_u_int16_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int16_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_u_int32_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int32_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_u_int64_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int64_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_u_int8_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int8_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_u_short.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_u_short.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_uid_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_uid_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_uintptr_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_uintptr_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_useconds_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_useconds_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_uuid_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_uuid_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_va_list.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_va_list.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_wchar_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_wchar_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/_types/_wint_t.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/_types/_wint_t.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/aio.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/aio.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/appleapiopts.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/appleapiopts.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/dirent.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/dirent.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/errno.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/errno.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/file.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/file.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/filio.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/filio.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/ioctl.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/ioctl.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/ipc.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/ipc.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/lock.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/lock.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/msg.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/msg.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/poll.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/poll.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/qos.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/qos.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/queue.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/queue.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/select.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/select.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/sem.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/sem.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/semaphore.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/semaphore.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/signal.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/signal.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/statvfs.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/statvfs.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/stdio.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/stdio.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/syslog.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/syslog.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/termios.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/termios.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/time.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/time.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/times.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/times.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/ttycom.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/ttycom.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/ttydefaults.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/ttydefaults.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/types.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/types.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/ucred.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/ucred.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/unistd.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/unistd.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/utsname.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/utsname.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/vm.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/vm.h)2
-rw-r--r--lib/libc/include/any-macos-any/sys/wait.h (renamed from lib/libc/include/x86_64-macos-gnu/sys/wait.h)2
-rw-r--r--lib/libc/include/any-macos-any/sysexits.h (renamed from lib/libc/include/x86_64-macos-gnu/sysexits.h)2
-rw-r--r--lib/libc/include/any-macos-any/syslog.h (renamed from lib/libc/include/x86_64-macos-gnu/syslog.h)3
-rw-r--r--lib/libc/include/any-macos-any/tar.h (renamed from lib/libc/include/x86_64-macos-gnu/tar.h)2
-rw-r--r--lib/libc/include/any-macos-any/termios.h (renamed from lib/libc/include/x86_64-macos-gnu/termios.h)2
-rw-r--r--lib/libc/include/any-macos-any/tgmath.h (renamed from lib/libc/include/x86_64-macos-gnu/tgmath.h)2
-rw-r--r--lib/libc/include/any-macos-any/time.h (renamed from lib/libc/include/x86_64-macos-gnu/time.h)2
-rw-r--r--lib/libc/include/any-macos-any/ulimit.h (renamed from lib/libc/include/x86_64-macos-gnu/ulimit.h)2
-rw-r--r--lib/libc/include/any-macos-any/unistd.h (renamed from lib/libc/include/x86_64-macos-gnu/unistd.h)2
-rw-r--r--lib/libc/include/any-macos-any/utime.h (renamed from lib/libc/include/x86_64-macos-gnu/utime.h)2
-rw-r--r--lib/libc/include/any-macos-any/utmpx.h (renamed from lib/libc/include/x86_64-macos-gnu/utmpx.h)2
-rw-r--r--lib/libc/include/any-macos-any/uuid/uuid.h (renamed from lib/libc/include/x86_64-macos-gnu/uuid/uuid.h)2
-rw-r--r--lib/libc/include/any-macos-any/wchar.h (renamed from lib/libc/include/x86_64-macos-gnu/wchar.h)2
-rw-r--r--lib/libc/include/any-macos-any/wctype.h (renamed from lib/libc/include/x86_64-macos-gnu/wctype.h)2
-rw-r--r--lib/libc/include/any-macos-any/wordexp.h (renamed from lib/libc/include/x86_64-macos-gnu/wordexp.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/__wctype.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/__wctype.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_ctype.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_ctype.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_langinfo.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_langinfo.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_monetary.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_monetary.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_regex.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_regex.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_stdio.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_stdio.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_stdlib.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_stdlib.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_string.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_string.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_time.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_time.h)2
-rw-r--r--lib/libc/include/any-macos-any/xlocale/_wctype.h (renamed from lib/libc/include/x86_64-macos-gnu/xlocale/_wctype.h)2
-rw-r--r--lib/libc/include/any-macos-any/xpc/activity.h (renamed from lib/libc/include/x86_64-macos-gnu/xpc/activity.h)3
-rw-r--r--lib/libc/include/any-macos-any/xpc/debug.h (renamed from lib/libc/include/x86_64-macos-gnu/xpc/debug.h)2
-rw-r--r--lib/libc/include/any-macos-any/xpc/endpoint.h (renamed from lib/libc/include/x86_64-macos-gnu/xpc/endpoint.h)2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/Availability.h3
-rw-r--r--lib/libc/include/x86_64-macos-gnu/AvailabilityInternal.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/AvailabilityMacros.h4
-rw-r--r--lib/libc/include/x86_64-macos-gnu/TargetConditionals.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/_ctermid.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/bsm/audit.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/dispatch/block.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/dispatch/dispatch.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/dispatch/group.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/dispatch/object.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/dispatch/queue.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/dispatch/semaphore.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/dispatch/source.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/dispatch/workloop.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/_limits.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/_mcontext.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/_param.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/_types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/eflags.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/endian.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/limits.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/param.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/signal.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/i386/types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicDeprecated.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicQueue.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/libkern/OSByteOrder.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/libkern/_OSByteOrder.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/libkern/i386/OSByteOrder.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/libkern/i386/_OSByteOrder.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach-o/dyld.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach-o/loader.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/_structs.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/boolean.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/exception.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/fp_reg.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/kern_return.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/processor_info.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/rpc.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/thread_state.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/thread_status.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/vm_param.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/i386/vm_types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/kern_return.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/mach_port.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/mach_traps.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/mach_types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/_structs.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/boolean.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/exception.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/kern_return.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/processor_info.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/rpc.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/thread_state.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/thread_status.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/vm_param.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/machine/vm_types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/message.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/port.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/processor_set.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/task.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/task_info.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/task_policy.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/task_special_ports.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/thread_act.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/thread_special_ports.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/thread_status.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/vm_prot.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/vm_statistics.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/mach/vm_types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/machine/_mcontext.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/machine/_param.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/machine/_types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/machine/endian.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/machine/limits.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/machine/param.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/machine/signal.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/machine/types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/malloc/_malloc.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/malloc/malloc.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/math.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/net/if.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/net/if_var.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/netinet/in.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/netinet/tcp.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/netinet6/in6.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/objc/objc-api.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/objc/runtime.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/os/base.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/os/object.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/pthread.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/pthread/sched.h3
-rw-r--r--lib/libc/include/x86_64-macos-gnu/pthread_impl.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sched.h3
-rw-r--r--lib/libc/include/x86_64-macos-gnu/signal.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/simd/common.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/simd/conversion.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/simd/logic.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/simd/math.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/simd/packed.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/simd/quaternion.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/spawn.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/stdio.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/stdlib.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/string.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_attr_t.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_cond_t.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_condattr_t.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_t.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_types.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_select.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_symbol_aliasing.h3
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_def.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_types/_int8_t.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/_types/_ucontext.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/acl.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/attr.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/cdefs.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/event.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/fcntl.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/ioccom.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/kauth.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/mman.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/mount.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/param.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/proc.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/resource.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/shm.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/socket.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/sockio.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/spawn.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/stat.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/sysctl.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/syslimits.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/uio.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/sys/un.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/xlocale/_inttypes.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/xlocale/_wchar.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/xpc/availability.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/xpc/base.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/xpc/connection.h2
-rw-r--r--lib/libc/include/x86_64-macos-gnu/xpc/xpc.h2
-rw-r--r--lib/std/macho.zig27
588 files changed, 69816 insertions, 452 deletions
diff --git a/lib/libc/include/aarch64-macos-gnu/Availability.h b/lib/libc/include/aarch64-macos-gnu/Availability.h
new file mode 100644
index 0000000000..f636f9e5cd
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/Availability.h
@@ -0,0 +1,482 @@
+/*
+ * Copyright (c) 2007-2016 by Apple Inc.. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef __AVAILABILITY__
+#define __AVAILABILITY__
+ /*
+ These macros are for use in OS header files. They enable function prototypes
+ and Objective-C methods to be tagged with the OS version in which they
+ were first available; and, if applicable, the OS version in which they
+ became deprecated.
+
+ The desktop Mac OS X and iOS each have different version numbers.
+ The __OSX_AVAILABLE_STARTING() macro allows you to specify both the desktop
+ and iOS version numbers. For instance:
+ __OSX_AVAILABLE_STARTING(__MAC_10_2,__IPHONE_2_0)
+ means the function/method was first available on Mac OS X 10.2 on the desktop
+ and first available in iOS 2.0 on the iPhone.
+
+ If a function is available on one platform, but not the other a _NA (not
+ applicable) parameter is used. For instance:
+ __OSX_AVAILABLE_STARTING(__MAC_10_3,__IPHONE_NA)
+ means that the function/method was first available on Mac OS X 10.3, and it
+ currently not implemented on the iPhone.
+
+ At some point, a function/method may be deprecated. That means Apple
+ recommends applications stop using the function, either because there is a
+ better replacement or the functionality is being phased out. Deprecated
+ functions/methods can be tagged with a __OSX_AVAILABLE_BUT_DEPRECATED()
+ macro which specifies the OS version where the function became available
+ as well as the OS version in which it became deprecated. For instance:
+ __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_5,__IPHONE_NA,__IPHONE_NA)
+ means that the function/method was introduced in Mac OS X 10.0, then
+ became deprecated beginning in Mac OS X 10.5. On iOS the function
+ has never been available.
+
+ For these macros to function properly, a program must specify the OS version range
+ it is targeting. The min OS version is specified as an option to the compiler:
+ -mmacosx-version-min=10.x when building for Mac OS X, and -miphoneos-version-min=y.z
+ when building for the iPhone. The upper bound for the OS version is rarely needed,
+ but it can be set on the command line via: -D__MAC_OS_X_VERSION_MAX_ALLOWED=10x0 for
+ Mac OS X and __IPHONE_OS_VERSION_MAX_ALLOWED = y0z00 for iOS.
+
+ Examples:
+
+ A function available in Mac OS X 10.5 and later, but not on the phone:
+
+ extern void mymacfunc() __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_NA);
+
+
+ An Objective-C method in Mac OS X 10.5 and later, but not on the phone:
+
+ @interface MyClass : NSObject
+ -(void) mymacmethod __OSX_AVAILABLE_STARTING(__MAC_10_5,__IPHONE_NA);
+ @end
+
+
+ An enum available on the phone, but not available on Mac OS X:
+
+ #if __IPHONE_OS_VERSION_MIN_REQUIRED
+ enum { myEnum = 1 };
+ #endif
+ Note: this works when targeting the Mac OS X platform because
+ __IPHONE_OS_VERSION_MIN_REQUIRED is undefined which evaluates to zero.
+
+
+ An enum with values added in different iPhoneOS versions:
+
+ enum {
+ myX = 1, // Usable on iPhoneOS 2.1 and later
+ myY = 2, // Usable on iPhoneOS 3.0 and later
+ myZ = 3, // Usable on iPhoneOS 3.0 and later
+ ...
+ Note: you do not want to use #if with enumeration values
+ when a client needs to see all values at compile time
+ and use runtime logic to only use the viable values.
+
+
+ It is also possible to use the *_VERSION_MIN_REQUIRED in source code to make one
+ source base that can be compiled to target a range of OS versions. It is best
+ to not use the _MAC_* and __IPHONE_* macros for comparisons, but rather their values.
+ That is because you might get compiled on an old OS that does not define a later
+ OS version macro, and in the C preprocessor undefined values evaluate to zero
+ in expresssions, which could cause the #if expression to evaluate in an unexpected
+ way.
+
+ #ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
+ // code only compiled when targeting Mac OS X and not iPhone
+ // note use of 1050 instead of __MAC_10_5
+ #if __MAC_OS_X_VERSION_MIN_REQUIRED < 1050
+ // code in here might run on pre-Leopard OS
+ #else
+ // code here can assume Leopard or later
+ #endif
+ #endif
+
+
+*/
+
+/*
+ * __API_TO_BE_DEPRECATED is used as a version number in API that will be deprecated
+ * in an upcoming release. This soft deprecation is an intermediate step before formal
+ * deprecation to notify developers about the API before compiler warnings are generated.
+ * You can find all places in your code that use soft deprecated API by redefining the
+ * value of this macro to your current minimum deployment target, for example:
+ * (macOS)
+ * clang -D__API_TO_BE_DEPRECATED=10.12 <other compiler flags>
+ * (iOS)
+ * clang -D__API_TO_BE_DEPRECATED=11.0 <other compiler flags>
+ */
+
+#ifndef __API_TO_BE_DEPRECATED
+#define __API_TO_BE_DEPRECATED 100000
+#endif
+
+#include <AvailabilityVersions.h>
+#include <AvailabilityInternal.h>
+
+#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
+ #define __OSX_AVAILABLE_STARTING(_osx, _ios) __AVAILABILITY_INTERNAL##_ios
+ #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep) \
+ __AVAILABILITY_INTERNAL##_iosIntro##_DEP##_iosDep
+ #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg) \
+ __AVAILABILITY_INTERNAL##_iosIntro##_DEP##_iosDep##_MSG(_msg)
+
+#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED)
+
+ #if defined(__has_builtin)
+ #if __has_builtin(__is_target_arch)
+ #if __has_builtin(__is_target_vendor)
+ #if __has_builtin(__is_target_os)
+ #if __has_builtin(__is_target_environment)
+ #if __has_builtin(__is_target_variant_os)
+ #if __has_builtin(__is_target_variant_environment)
+ #if (__is_target_arch(x86_64) && __is_target_vendor(apple) && ((__is_target_os(ios) && __is_target_environment(macabi)) || (__is_target_variant_os(ios) && __is_target_variant_environment(macabi))))
+ #define __OSX_AVAILABLE_STARTING(_osx, _ios) __AVAILABILITY_INTERNAL##_osx __AVAILABILITY_INTERNAL##_ios
+ #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep) \
+ __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep __AVAILABILITY_INTERNAL##_iosIntro##_DEP##_iosDep
+ #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg) \
+ __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep##_MSG(_msg) __AVAILABILITY_INTERNAL##_iosIntro##_DEP##_iosDep##_MSG(_msg)
+ #endif /* # if __is_target_arch... */
+ #endif /* #if __has_builtin(__is_target_variant_environment) */
+ #endif /* #if __has_builtin(__is_target_variant_os) */
+ #endif /* #if __has_builtin(__is_target_environment) */
+ #endif /* #if __has_builtin(__is_target_os) */
+ #endif /* #if __has_builtin(__is_target_vendor) */
+ #endif /* #if __has_builtin(__is_target_arch) */
+ #endif /* #if defined(__has_builtin) */
+
+ #ifndef __OSX_AVAILABLE_STARTING
+ #if defined(__has_attribute) && defined(__has_feature)
+ #if __has_attribute(availability)
+ #define __OSX_AVAILABLE_STARTING(_osx, _ios) __AVAILABILITY_INTERNAL##_osx
+ #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep) \
+ __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep
+ #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg) \
+ __AVAILABILITY_INTERNAL##_osxIntro##_DEP##_osxDep##_MSG(_msg)
+ #else
+ #define __OSX_AVAILABLE_STARTING(_osx, _ios)
+ #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep)
+ #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg)
+ #endif
+ #else
+ #define __OSX_AVAILABLE_STARTING(_osx, _ios)
+ #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep)
+ #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg)
+ #endif
+#endif /* __OSX_AVAILABLE_STARTING */
+
+#else
+ #define __OSX_AVAILABLE_STARTING(_osx, _ios)
+ #define __OSX_AVAILABLE_BUT_DEPRECATED(_osxIntro, _osxDep, _iosIntro, _iosDep)
+ #define __OSX_AVAILABLE_BUT_DEPRECATED_MSG(_osxIntro, _osxDep, _iosIntro, _iosDep, _msg)
+#endif
+
+
+#if defined(__has_feature)
+ #if __has_feature(attribute_availability_with_message)
+ #define __OS_AVAILABILITY(_target, _availability) __attribute__((availability(_target,_availability)))
+ #define __OS_AVAILABILITY_MSG(_target, _availability, _msg) __attribute__((availability(_target,_availability,message=_msg)))
+ #elif __has_feature(attribute_availability)
+ #define __OS_AVAILABILITY(_target, _availability) __attribute__((availability(_target,_availability)))
+ #define __OS_AVAILABILITY_MSG(_target, _availability, _msg) __attribute__((availability(_target,_availability)))
+ #else
+ #define __OS_AVAILABILITY(_target, _availability)
+ #define __OS_AVAILABILITY_MSG(_target, _availability, _msg)
+ #endif
+#else
+ #define __OS_AVAILABILITY(_target, _availability)
+ #define __OS_AVAILABILITY_MSG(_target, _availability, _msg)
+#endif
+
+
+/* for use to document app extension usage */
+#if defined(__has_feature)
+ #if __has_feature(attribute_availability_app_extension)
+ #define __OSX_EXTENSION_UNAVAILABLE(_msg) __OS_AVAILABILITY_MSG(macosx_app_extension,unavailable,_msg)
+ #define __IOS_EXTENSION_UNAVAILABLE(_msg) __OS_AVAILABILITY_MSG(ios_app_extension,unavailable,_msg)
+ #else
+ #define __OSX_EXTENSION_UNAVAILABLE(_msg)
+ #define __IOS_EXTENSION_UNAVAILABLE(_msg)
+ #endif
+#else
+ #define __OSX_EXTENSION_UNAVAILABLE(_msg)
+ #define __IOS_EXTENSION_UNAVAILABLE(_msg)
+#endif
+
+#define __OS_EXTENSION_UNAVAILABLE(_msg) __OSX_EXTENSION_UNAVAILABLE(_msg) __IOS_EXTENSION_UNAVAILABLE(_msg)
+
+
+
+/* for use marking APIs available info for Mac OSX */
+#if defined(__has_attribute)
+ #if __has_attribute(availability)
+ #define __OSX_UNAVAILABLE __OS_AVAILABILITY(macosx,unavailable)
+ #define __OSX_AVAILABLE(_vers) __OS_AVAILABILITY(macosx,introduced=_vers)
+ #define __OSX_DEPRECATED(_start, _dep, _msg) __OSX_AVAILABLE(_start) __OS_AVAILABILITY_MSG(macosx,deprecated=_dep,_msg)
+ #endif
+#endif
+
+#ifndef __OSX_UNAVAILABLE
+ #define __OSX_UNAVAILABLE
+#endif
+
+#ifndef __OSX_AVAILABLE
+ #define __OSX_AVAILABLE(_vers)
+#endif
+
+#ifndef __OSX_DEPRECATED
+ #define __OSX_DEPRECATED(_start, _dep, _msg)
+#endif
+
+
+/* for use marking APIs available info for iOS */
+#if defined(__has_attribute)
+ #if __has_attribute(availability)
+ #define __IOS_UNAVAILABLE __OS_AVAILABILITY(ios,unavailable)
+ #define __IOS_PROHIBITED __OS_AVAILABILITY(ios,unavailable)
+ #define __IOS_AVAILABLE(_vers) __OS_AVAILABILITY(ios,introduced=_vers)
+ #define __IOS_DEPRECATED(_start, _dep, _msg) __IOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(ios,deprecated=_dep,_msg)
+ #endif
+#endif
+
+#ifndef __IOS_UNAVAILABLE
+ #define __IOS_UNAVAILABLE
+#endif
+
+#ifndef __IOS_PROHIBITED
+ #define __IOS_PROHIBITED
+#endif
+
+#ifndef __IOS_AVAILABLE
+ #define __IOS_AVAILABLE(_vers)
+#endif
+
+#ifndef __IOS_DEPRECATED
+ #define __IOS_DEPRECATED(_start, _dep, _msg)
+#endif
+
+
+/* for use marking APIs available info for tvOS */
+#if defined(__has_feature)
+ #if __has_feature(attribute_availability_tvos)
+ #define __TVOS_UNAVAILABLE __OS_AVAILABILITY(tvos,unavailable)
+ #define __TVOS_PROHIBITED __OS_AVAILABILITY(tvos,unavailable)
+ #define __TVOS_AVAILABLE(_vers) __OS_AVAILABILITY(tvos,introduced=_vers)
+ #define __TVOS_DEPRECATED(_start, _dep, _msg) __TVOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(tvos,deprecated=_dep,_msg)
+ #endif
+#endif
+
+#ifndef __TVOS_UNAVAILABLE
+ #define __TVOS_UNAVAILABLE
+#endif
+
+#ifndef __TVOS_PROHIBITED
+ #define __TVOS_PROHIBITED
+#endif
+
+#ifndef __TVOS_AVAILABLE
+ #define __TVOS_AVAILABLE(_vers)
+#endif
+
+#ifndef __TVOS_DEPRECATED
+ #define __TVOS_DEPRECATED(_start, _dep, _msg)
+#endif
+
+
+/* for use marking APIs available info for Watch OS */
+#if defined(__has_feature)
+ #if __has_feature(attribute_availability_watchos)
+ #define __WATCHOS_UNAVAILABLE __OS_AVAILABILITY(watchos,unavailable)
+ #define __WATCHOS_PROHIBITED __OS_AVAILABILITY(watchos,unavailable)
+ #define __WATCHOS_AVAILABLE(_vers) __OS_AVAILABILITY(watchos,introduced=_vers)
+ #define __WATCHOS_DEPRECATED(_start, _dep, _msg) __WATCHOS_AVAILABLE(_start) __OS_AVAILABILITY_MSG(watchos,deprecated=_dep,_msg)
+ #endif
+#endif
+
+#ifndef __WATCHOS_UNAVAILABLE
+ #define __WATCHOS_UNAVAILABLE
+#endif
+
+#ifndef __WATCHOS_PROHIBITED
+ #define __WATCHOS_PROHIBITED
+#endif
+
+#ifndef __WATCHOS_AVAILABLE
+ #define __WATCHOS_AVAILABLE(_vers)
+#endif
+
+#ifndef __WATCHOS_DEPRECATED
+ #define __WATCHOS_DEPRECATED(_start, _dep, _msg)
+#endif
+
+
+/* for use marking APIs unavailable for swift */
+#if defined(__has_feature)
+ #if __has_feature(attribute_availability_swift)
+ #define __SWIFT_UNAVAILABLE __OS_AVAILABILITY(swift,unavailable)
+ #define __SWIFT_UNAVAILABLE_MSG(_msg) __OS_AVAILABILITY_MSG(swift,unavailable,_msg)
+ #endif
+#endif
+
+#ifndef __SWIFT_UNAVAILABLE
+ #define __SWIFT_UNAVAILABLE
+#endif
+
+#ifndef __SWIFT_UNAVAILABLE_MSG
+ #define __SWIFT_UNAVAILABLE_MSG(_msg)
+#endif
+
+/*
+ Macros for defining which versions/platform a given symbol can be used.
+
+ @see http://clang.llvm.org/docs/AttributeReference.html#availability
+
+ * Note that these macros are only compatible with clang compilers that
+ * support the following target selection options:
+ *
+ * -mmacosx-version-min
+ * -miphoneos-version-min
+ * -mwatchos-version-min
+ * -mtvos-version-min
+ */
+
+#if defined(__has_feature) && defined(__has_attribute)
+ #if __has_attribute(availability)
+
+ /*
+ * API Introductions
+ *
+ * Use to specify the release that a particular API became available.
+ *
+ * Platform names:
+ * macos, ios, tvos, watchos
+ *
+ * Examples:
+ * __API_AVAILABLE(macos(10.10))
+ * __API_AVAILABLE(macos(10.9), ios(10.0))
+ * __API_AVAILABLE(macos(10.4), ios(8.0), watchos(2.0), tvos(10.0))
+ * __API_AVAILABLE(driverkit(19.0))
+ */
+ #define __API_AVAILABLE(...) __API_AVAILABLE_GET_MACRO(__VA_ARGS__,__API_AVAILABLE7, __API_AVAILABLE6, __API_AVAILABLE5, __API_AVAILABLE4, __API_AVAILABLE3, __API_AVAILABLE2, __API_AVAILABLE1, 0)(__VA_ARGS__)
+
+ #define __API_AVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_AVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_AVAILABLE_BEGIN7, __API_AVAILABLE_BEGIN6, __API_AVAILABLE_BEGIN5, __API_AVAILABLE_BEGIN4, __API_AVAILABLE_BEGIN3, __API_AVAILABLE_BEGIN2, __API_AVAILABLE_BEGIN1, 0)(__VA_ARGS__)
+ #define __API_AVAILABLE_END _Pragma("clang attribute pop")
+
+ /*
+ * API Deprecations
+ *
+ * Use to specify the release that a particular API became unavailable.
+ *
+ * Platform names:
+ * macos, ios, tvos, watchos
+ *
+ * Examples:
+ *
+ * __API_DEPRECATED("No longer supported", macos(10.4, 10.8))
+ * __API_DEPRECATED("No longer supported", macos(10.4, 10.8), ios(2.0, 3.0), watchos(2.0, 3.0), tvos(9.0, 10.0))
+ *
+ * __API_DEPRECATED_WITH_REPLACEMENT("-setName:", tvos(10.0, 10.4), ios(9.0, 10.0))
+ * __API_DEPRECATED_WITH_REPLACEMENT("SomeClassName", macos(10.4, 10.6), watchos(2.0, 3.0))
+ */
+ #define __API_DEPRECATED(...) __API_DEPRECATED_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_MSG8,__API_DEPRECATED_MSG7,__API_DEPRECATED_MSG6,__API_DEPRECATED_MSG5,__API_DEPRECATED_MSG4,__API_DEPRECATED_MSG3,__API_DEPRECATED_MSG2,__API_DEPRECATED_MSG1, 0)(__VA_ARGS__)
+ #define __API_DEPRECATED_WITH_REPLACEMENT(...) __API_DEPRECATED_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_REP8,__API_DEPRECATED_REP7,__API_DEPRECATED_REP6,__API_DEPRECATED_REP5,__API_DEPRECATED_REP4,__API_DEPRECATED_REP3,__API_DEPRECATED_REP2,__API_DEPRECATED_REP1, 0)(__VA_ARGS__)
+
+ #define __API_DEPRECATED_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_MSG_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN_MSG8,__API_DEPRECATED_BEGIN_MSG7, __API_DEPRECATED_BEGIN_MSG6, __API_DEPRECATED_BEGIN_MSG5, __API_DEPRECATED_BEGIN_MSG4, __API_DEPRECATED_BEGIN_MSG3, __API_DEPRECATED_BEGIN_MSG2, __API_DEPRECATED_BEGIN_MSG1, 0)(__VA_ARGS__)
+ #define __API_DEPRECATED_END _Pragma("clang attribute pop")
+
+ #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...) _Pragma("clang attribute push") __API_DEPRECATED_BEGIN_REP_GET_MACRO(__VA_ARGS__,__API_DEPRECATED_BEGIN_REP8,__API_DEPRECATED_BEGIN_REP7, __API_DEPRECATED_BEGIN_REP6, __API_DEPRECATED_BEGIN_REP5, __API_DEPRECATED_BEGIN_REP4, __API_DEPRECATED_BEGIN_REP3, __API_DEPRECATED_BEGIN_REP2, __API_DEPRECATED_BEGIN_REP1, 0)(__VA_ARGS__)
+ #define __API_DEPRECATED_WITH_REPLACEMENT_END _Pragma("clang attribute pop")
+
+ /*
+ * API Unavailability
+ * Use to specify that an API is unavailable for a particular platform.
+ *
+ * Example:
+ * __API_UNAVAILABLE(macos)
+ * __API_UNAVAILABLE(watchos, tvos)
+ */
+ #define __API_UNAVAILABLE(...) __API_UNAVAILABLE_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE7,__API_UNAVAILABLE6,__API_UNAVAILABLE5,__API_UNAVAILABLE4,__API_UNAVAILABLE3,__API_UNAVAILABLE2,__API_UNAVAILABLE1, 0)(__VA_ARGS__)
+
+ #define __API_UNAVAILABLE_BEGIN(...) _Pragma("clang attribute push") __API_UNAVAILABLE_BEGIN_GET_MACRO(__VA_ARGS__,__API_UNAVAILABLE_BEGIN7,__API_UNAVAILABLE_BEGIN6, __API_UNAVAILABLE_BEGIN5, __API_UNAVAILABLE_BEGIN4, __API_UNAVAILABLE_BEGIN3, __API_UNAVAILABLE_BEGIN2, __API_UNAVAILABLE_BEGIN1, 0)(__VA_ARGS__)
+ #define __API_UNAVAILABLE_END _Pragma("clang attribute pop")
+ #else
+
+ /*
+ * Evaluate to nothing for compilers that don't support availability.
+ */
+
+ #define __API_AVAILABLE(...)
+ #define __API_AVAILABLE_BEGIN(...)
+ #define __API_AVAILABLE_END
+ #define __API_DEPRECATED(...)
+ #define __API_DEPRECATED_WITH_REPLACEMENT(...)
+ #define __API_DEPRECATED_BEGIN(...)
+ #define __API_DEPRECATED_END
+ #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...)
+ #define __API_DEPRECATED_WITH_REPLACEMENT_END
+ #define __API_UNAVAILABLE(...)
+ #define __API_UNAVAILABLE_BEGIN(...)
+ #define __API_UNAVAILABLE_END
+ #endif /* __has_attribute(availability) */
+#else
+
+ /*
+ * Evaluate to nothing for compilers that don't support clang language extensions.
+ */
+
+ #define __API_AVAILABLE(...)
+ #define __API_AVAILABLE_BEGIN(...)
+ #define __API_AVAILABLE_END
+ #define __API_DEPRECATED(...)
+ #define __API_DEPRECATED_WITH_REPLACEMENT(...)
+ #define __API_DEPRECATED_BEGIN(...)
+ #define __API_DEPRECATED_END
+ #define __API_DEPRECATED_WITH_REPLACEMENT_BEGIN(...)
+ #define __API_DEPRECATED_WITH_REPLACEMENT_END
+ #define __API_UNAVAILABLE(...)
+ #define __API_UNAVAILABLE_BEGIN(...)
+ #define __API_UNAVAILABLE_END
+#endif /* #if defined(__has_feature) && defined(__has_attribute) */
+
+#if __has_include(<AvailabilityProhibitedInternal.h>)
+ #include <AvailabilityProhibitedInternal.h>
+#endif
+
+/*
+ * If SPI decorations have not been defined elsewhere, disable them.
+ */
+
+#ifndef __SPI_AVAILABLE
+ #define __SPI_AVAILABLE(...)
+#endif
+
+#ifndef __SPI_DEPRECATED
+ #define __SPI_DEPRECATED(...)
+#endif
+
+#ifndef __SPI_DEPRECATED_WITH_REPLACEMENT
+ #define __SPI_DEPRECATED_WITH_REPLACEMENT(...)
+#endif
+
+#endif /* __AVAILABILITY__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/AvailabilityInternal.h b/lib/libc/include/aarch64-macos-gnu/AvailabilityInternal.h
new file mode 100644
index 0000000000..56de12636a
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/AvailabilityInternal.h
@@ -0,0 +1,4675 @@
+/*
+ * Copyright (c) 2007-2016 by Apple Inc.. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+/*
+ File: AvailabilityInternal.h
+
+ Contains: implementation details of __OSX_AVAILABLE_* macros from <Availability.h>
+
+*/
+#ifndef __AVAILABILITY_INTERNAL__
+#define __AVAILABILITY_INTERNAL__
+
+#if __has_include(<AvailabilityInternalPrivate.h>)
+ #include <AvailabilityInternalPrivate.h>
+#endif
+
+#ifndef __MAC_OS_X_VERSION_MIN_REQUIRED
+ #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+ /* compiler for Mac OS X sets __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ */
+ #define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+ #endif
+#endif /* __MAC_OS_X_VERSION_MIN_REQUIRED*/
+
+#ifndef __IPHONE_OS_VERSION_MIN_REQUIRED
+ #ifdef __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
+ /* compiler sets __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ when -miphoneos-version-min is used */
+ #define __IPHONE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__
+ /* set to 1 when RC_FALLBACK_PLATFORM=iphoneos */
+ #elif 0
+ #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_14_0
+ #endif
+#endif /* __IPHONE_OS_VERSION_MIN_REQUIRED */
+
+#ifndef __TV_OS_VERSION_MIN_REQUIRED
+ #ifdef __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
+ /* compiler sets __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__ when -mtvos-version-min is used */
+ #define __TV_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_TV_OS_VERSION_MIN_REQUIRED__
+ #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_14_2
+ /* for compatibility with existing code. New code should use platform specific checks */
+ #define __IPHONE_OS_VERSION_MIN_REQUIRED 90000
+ #endif
+#endif
+
+#ifndef __WATCH_OS_VERSION_MIN_REQUIRED
+ #ifdef __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
+ /* compiler sets __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__ when -mwatchos-version-min is used */
+ #define __WATCH_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_WATCH_OS_VERSION_MIN_REQUIRED__
+ #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_7_1
+ /* for compatibility with existing code. New code should use platform specific checks */
+ #define __IPHONE_OS_VERSION_MIN_REQUIRED 90000
+ #endif
+#endif
+
+#ifndef __BRIDGE_OS_VERSION_MIN_REQUIRED
+ #ifdef __ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__
+
+ #define __BRIDGE_OS_VERSION_MIN_REQUIRED __ENVIRONMENT_BRIDGE_OS_VERSION_MIN_REQUIRED__
+ #define __BRIDGE_OS_VERSION_MAX_ALLOWED 50000
+ /* for compatibility with existing code. New code should use platform specific checks */
+ #define __IPHONE_OS_VERSION_MIN_REQUIRED 110000
+ #endif
+#endif
+
+#ifndef __DRIVERKIT_VERSION_MIN_REQUIRED
+ #ifdef __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__
+ #define __DRIVERKIT_VERSION_MIN_REQUIRED __ENVIRONMENT_DRIVERKIT_VERSION_MIN_REQUIRED__
+ #endif
+#endif
+
+#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
+ /* make sure a default max version is set */
+ #ifndef __MAC_OS_X_VERSION_MAX_ALLOWED
+ #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_11_0
+ #endif
+#endif /* __MAC_OS_X_VERSION_MIN_REQUIRED */
+
+#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
+ /* make sure a default max version is set */
+ #ifndef __IPHONE_OS_VERSION_MAX_ALLOWED
+ #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_14_2
+ #endif
+ /* make sure a valid min is set */
+ #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_2_0
+ #undef __IPHONE_OS_VERSION_MIN_REQUIRED
+ #define __IPHONE_OS_VERSION_MIN_REQUIRED __IPHONE_2_0
+ #endif
+#endif
+
+#define __AVAILABILITY_INTERNAL_DEPRECATED __attribute__((deprecated))
+#ifdef __has_feature
+ #if __has_feature(attribute_deprecated_with_message)
+ #define __AVAILABILITY_INTERNAL_DEPRECATED_MSG(_msg) __attribute__((deprecated(_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL_DEPRECATED_MSG(_msg) __attribute__((deprecated))
+ #endif
+#elif defined(__GNUC__) && ((__GNUC__ >= 5) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)))
+ #define __AVAILABILITY_INTERNAL_DEPRECATED_MSG(_msg) __attribute__((deprecated(_msg)))
+#else
+ #define __AVAILABILITY_INTERNAL_DEPRECATED_MSG(_msg) __attribute__((deprecated))
+#endif
+#define __AVAILABILITY_INTERNAL_UNAVAILABLE __attribute__((unavailable))
+#define __AVAILABILITY_INTERNAL_WEAK_IMPORT __attribute__((weak_import))
+#define __AVAILABILITY_INTERNAL_REGULAR
+
+#if defined(__has_builtin)
+ #if __has_builtin(__is_target_arch)
+ #if __has_builtin(__is_target_vendor)
+ #if __has_builtin(__is_target_os)
+ #if __has_builtin(__is_target_environment)
+ #if __has_builtin(__is_target_variant_os)
+ #if __has_builtin(__is_target_variant_environment)
+ #if (__is_target_arch(x86_64) && __is_target_vendor(apple) && ((__is_target_os(ios) && __is_target_environment(macabi)) || (__is_target_variant_os(ios) && __is_target_variant_environment(macabi))))
+ #define __ENABLE_LEGACY_IPHONE_AVAILABILITY 1
+ #define __ENABLE_LEGACY_MAC_AVAILABILITY 1
+ #endif /* # if __is_target_arch... */
+ #endif /* #if __has_builtin(__is_target_variant_environment) */
+ #endif /* #if __has_builtin(__is_target_variant_os) */
+ #endif /* #if __has_builtin(__is_target_environment) */
+ #endif /* #if __has_builtin(__is_target_os) */
+ #endif /* #if __has_builtin(__is_target_vendor) */
+ #endif /* #if __has_builtin(__is_target_arch) */
+#endif /* #if defined(__has_builtin) */
+
+#ifndef __ENABLE_LEGACY_IPHONE_AVAILABILITY
+ #ifdef __IPHONE_OS_VERSION_MIN_REQUIRED
+ #define __ENABLE_LEGACY_IPHONE_AVAILABILITY 1
+ #elif defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
+ #define __ENABLE_LEGACY_MAC_AVAILABILITY 1
+ #endif
+#endif /* __ENABLE_LEGACY_IPHONE_AVAILABILITY */
+
+#ifdef __ENABLE_LEGACY_IPHONE_AVAILABILITY
+ #if defined(__has_attribute) && defined(__has_feature)
+ #if __has_attribute(availability)
+ /* use better attributes if possible */
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0 __attribute__((availability(ios,introduced=2.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=2.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=2.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=2.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=2.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_11_0 __attribute__((availability(ios,introduced=2.0,deprecated=11.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_0 __attribute__((availability(ios,introduced=2.0,deprecated=2.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=2.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=2.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_1 __attribute__((availability(ios,introduced=2.0,deprecated=2.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=2.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=2.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_2 __attribute__((availability(ios,introduced=2.0,deprecated=2.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=2.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_2_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=2.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_0 __attribute__((availability(ios,introduced=2.0,deprecated=3.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=3.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=3.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_1 __attribute__((availability(ios,introduced=2.0,deprecated=3.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=3.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=3.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_2 __attribute__((availability(ios,introduced=2.0,deprecated=3.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=3.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=3.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_0 __attribute__((availability(ios,introduced=2.0,deprecated=4.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=4.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=4.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_1 __attribute__((availability(ios,introduced=2.0,deprecated=4.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=4.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=4.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=2.0,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=2.0,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=2.0,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=2.0,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=2.0,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=2.0,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=2.0,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=2.0,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=2.0,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=2.0,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=2.0,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=2.0,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=2.0,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=2.0,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=2.0,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=2.0,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=2.0,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=2.0,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=2.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=2.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1 __attribute__((availability(ios,introduced=2.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=2.1,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=2.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=2.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=2.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_2_1 __attribute__((availability(ios,introduced=2.1,deprecated=2.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_2_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=2.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_2_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=2.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_2_2 __attribute__((availability(ios,introduced=2.1,deprecated=2.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_2_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=2.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_2_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=2.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_0 __attribute__((availability(ios,introduced=2.1,deprecated=3.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=3.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=3.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_1 __attribute__((availability(ios,introduced=2.1,deprecated=3.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=3.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=3.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_2 __attribute__((availability(ios,introduced=2.1,deprecated=3.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=3.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=3.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_0 __attribute__((availability(ios,introduced=2.1,deprecated=4.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=4.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=4.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_1 __attribute__((availability(ios,introduced=2.1,deprecated=4.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=4.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=4.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=2.1,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=2.1,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=2.1,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=2.1,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=2.1,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=2.1,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=2.1,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=2.1,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=2.1,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=2.1,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=2.1,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=2.1,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=2.1,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=2.1,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=2.1,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=2.1,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=2.1,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=2.1,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=2.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=2.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2 __attribute__((availability(ios,introduced=2.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=2.2,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=2.2,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=2.2,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=2.2,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_2_2 __attribute__((availability(ios,introduced=2.2,deprecated=2.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_2_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=2.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_2_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=2.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_0 __attribute__((availability(ios,introduced=2.2,deprecated=3.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=3.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=3.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_1 __attribute__((availability(ios,introduced=2.2,deprecated=3.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=3.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=3.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_2 __attribute__((availability(ios,introduced=2.2,deprecated=3.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=3.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=3.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_0 __attribute__((availability(ios,introduced=2.2,deprecated=4.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=4.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=4.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_1 __attribute__((availability(ios,introduced=2.2,deprecated=4.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=4.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=4.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=2.2,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=2.2,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=2.2,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=2.2,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=2.2,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=2.2,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=2.2,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=2.2,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=2.2,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=2.2,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=2.2,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=2.2,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=2.2,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=2.2,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=2.2,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=2.2,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=2.2,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=2.2,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_NA __attribute__((availability(ios,introduced=2.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_2_2_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=2.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0 __attribute__((availability(ios,introduced=3.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=3.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=3.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=3.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=3.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_0 __attribute__((availability(ios,introduced=3.0,deprecated=3.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=3.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=3.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_1 __attribute__((availability(ios,introduced=3.0,deprecated=3.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=3.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=3.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_2 __attribute__((availability(ios,introduced=3.0,deprecated=3.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=3.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=3.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_0 __attribute__((availability(ios,introduced=3.0,deprecated=4.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=4.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=4.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_1 __attribute__((availability(ios,introduced=3.0,deprecated=4.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=4.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=4.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=3.0,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=3.0,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=3.0,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=3.0,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=3.0,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=3.0,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=3.0,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=3.0,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=3.0,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=3.0,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=3.0,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=3.0,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=3.0,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=3.0,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=3.0,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=3.0,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=3.0,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=3.0,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=3.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=3.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1 __attribute__((availability(ios,introduced=3.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=3.1,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=3.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=3.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=3.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_3_1 __attribute__((availability(ios,introduced=3.1,deprecated=3.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=3.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_3_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=3.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_3_2 __attribute__((availability(ios,introduced=3.1,deprecated=3.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=3.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=3.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_0 __attribute__((availability(ios,introduced=3.1,deprecated=4.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=4.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=4.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_1 __attribute__((availability(ios,introduced=3.1,deprecated=4.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=4.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=4.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=3.1,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=3.1,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=3.1,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=3.1,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=3.1,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=3.1,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=3.1,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=3.1,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=3.1,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=3.1,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=3.1,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=3.1,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=3.1,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=3.1,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=3.1,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=3.1,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=3.1,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=3.1,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=3.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=3.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2 __attribute__((availability(ios,introduced=3.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=3.2,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=3.2,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=3.2,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=3.2,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_3_2 __attribute__((availability(ios,introduced=3.2,deprecated=3.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=3.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_3_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=3.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_0 __attribute__((availability(ios,introduced=3.2,deprecated=4.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=4.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=4.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_1 __attribute__((availability(ios,introduced=3.2,deprecated=4.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=4.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=4.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=3.2,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=3.2,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=3.2,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=3.2,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=3.2,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=3.2,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=3.2,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=3.2,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=3.2,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=3.2,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=3.2,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=3.2,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=3.2,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=3.2,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=3.2,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=3.2,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=3.2,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=3.2,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_NA __attribute__((availability(ios,introduced=3.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_3_2_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=3.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0 __attribute__((availability(ios,introduced=4.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=4.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=4.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=4.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=4.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_12_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=12.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_12_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=12.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_0 __attribute__((availability(ios,introduced=4.0,deprecated=4.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_1 __attribute__((availability(ios,introduced=4.0,deprecated=4.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=4.0,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=4.0,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=4.0,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=4.0,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=4.0,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=4.0,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=4.0,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=4.0,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=4.0,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=4.0,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=4.0,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=4.0,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=4.0,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=4.0,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=4.0,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=4.0,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=4.0,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=4.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=4.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1 __attribute__((availability(ios,introduced=4.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=4.1,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=4.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=4.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=4.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_1 __attribute__((availability(ios,introduced=4.1,deprecated=4.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=4.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=4.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=4.1,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=4.1,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=4.1,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=4.1,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=4.1,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=4.1,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=4.1,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=4.1,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=4.1,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=4.1,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=4.1,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=4.1,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=4.1,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=4.1,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=4.1,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=4.1,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=4.1,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=4.1,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=4.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=4.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2 __attribute__((availability(ios,introduced=4.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=4.2,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=4.2,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=4.2,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=4.2,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_4_2 __attribute__((availability(ios,introduced=4.2,deprecated=4.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=4.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_4_2_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=4.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=4.2,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=4.2,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=4.2,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=4.2,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=4.2,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=4.2,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=4.2,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=4.2,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=4.2,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=4.2,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=4.2,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=4.2,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=4.2,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=4.2,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=4.2,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=4.2,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=4.2,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_NA __attribute__((availability(ios,introduced=4.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_2_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=4.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3 __attribute__((availability(ios,introduced=4.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=4.3,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=4.3,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=4.3,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=4.3,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_4_3 __attribute__((availability(ios,introduced=4.3,deprecated=4.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=4.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_4_3_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=4.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=4.3,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=4.3,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=4.3,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=4.3,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=4.3,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=4.3,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=4.3,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=4.3,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=4.3,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=4.3,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=4.3,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=4.3,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=4.3,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=4.3,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=4.3,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=4.3,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_NA __attribute__((availability(ios,introduced=4.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_4_3_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=4.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0 __attribute__((availability(ios,introduced=5.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=5.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=5.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=5.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=5.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_11_0 __attribute__((availability(ios,introduced=5.0,deprecated=11.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_5_0 __attribute__((availability(ios,introduced=5.0,deprecated=5.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=5.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_5_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=5.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=5.0,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=5.0,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=5.0,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=5.0,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=5.0,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=5.0,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=5.0,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=5.0,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=5.0,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=5.0,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=5.0,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=5.0,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=5.0,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=5.0,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=5.0,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=5.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=5.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1 __attribute__((availability(ios,introduced=5.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=5.1,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=5.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=5.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=5.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_5_1 __attribute__((availability(ios,introduced=5.1,deprecated=5.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=5.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_5_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=5.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=5.1,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=5.1,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=5.1,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=5.1,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=5.1,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=5.1,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=5.1,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=5.1,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=5.1,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=5.1,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=5.1,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=5.1,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=5.1,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=5.1,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=5.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_5_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=5.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0 __attribute__((availability(ios,introduced=6.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=6.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=6.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=6.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=6.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_6_0 __attribute__((availability(ios,introduced=6.0,deprecated=6.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=6.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_6_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=6.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=6.0,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=6.0,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=6.0,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=6.0,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=6.0,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=6.0,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=6.0,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=6.0,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=6.0,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=6.0,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=6.0,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=6.0,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=6.0,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=6.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=6.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1 __attribute__((availability(ios,introduced=6.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=6.1,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=6.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=6.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=6.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_6_1 __attribute__((availability(ios,introduced=6.1,deprecated=6.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=6.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_6_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=6.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=6.1,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=6.1,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=6.1,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=6.1,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=6.1,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=6.1,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=6.1,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=6.1,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=6.1,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=6.1,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=6.1,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=6.1,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=6.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_6_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=6.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0 __attribute__((availability(ios,introduced=7.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=7.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=7.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=7.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=7.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_11_0 __attribute__((availability(ios,introduced=7.0,deprecated=11.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_11_3 __attribute__((availability(ios,introduced=7.0,deprecated=11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_12_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=12.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_12_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=12.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_7_0 __attribute__((availability(ios,introduced=7.0,deprecated=7.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=7.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_7_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=7.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=7.0,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=7.0,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=7.0,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=7.0,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=7.0,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=7.0,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=7.0,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=7.0,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=7.0,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=7.0,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=7.0,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=7.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=7.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1 __attribute__((availability(ios,introduced=7.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=7.1,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=7.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=7.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=7.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_7_1 __attribute__((availability(ios,introduced=7.1,deprecated=7.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=7.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_7_1_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=7.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=7.1,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=7.1,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=7.1,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=7.1,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=7.1,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=7.1,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=7.1,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=7.1,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=7.1,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=7.1,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=7.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_7_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=7.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0 __attribute__((availability(ios,introduced=8.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=8.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=8.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=8.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=8.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_11_0_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_11_0_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_11_3 __attribute__((availability(ios,introduced=8.0,deprecated=11.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_12_0 __attribute__((availability(ios,introduced=8.0,deprecated=12.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_0 __attribute__((availability(ios,introduced=8.0,deprecated=8.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_0_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=8.0,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=8.0,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=8.0,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=8.0,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=8.0,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=8.0,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=8.0,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=8.0,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.0,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=8.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=8.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1 __attribute__((availability(ios,introduced=8.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=8.1,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=8.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=8.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=8.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_1 __attribute__((availability(ios,introduced=8.1,deprecated=8.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=8.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_1_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=8.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=8.1,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=8.1,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=8.1,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=8.1,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=8.1,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=8.1,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=8.1,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.1,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=8.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=8.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2 __attribute__((availability(ios,introduced=8.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=8.2,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=8.2,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=8.2,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=8.2,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_2 __attribute__((availability(ios,introduced=8.2,deprecated=8.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=8.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_2_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=8.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=8.2,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=8.2,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=8.2,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=8.2,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=8.2,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=8.2,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.2,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_NA __attribute__((availability(ios,introduced=8.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_2_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=8.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3 __attribute__((availability(ios,introduced=8.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=8.3,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=8.3,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=8.3,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=8.3,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_8_3 __attribute__((availability(ios,introduced=8.3,deprecated=8.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=8.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_8_3_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=8.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=8.3,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=8.3,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=8.3,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=8.3,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=8.3,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.3,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_NA __attribute__((availability(ios,introduced=8.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_3_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=8.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4 __attribute__((availability(ios,introduced=8.4)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=8.4,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=8.4,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=8.4,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=8.4,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_8_4 __attribute__((availability(ios,introduced=8.4,deprecated=8.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=8.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_8_4_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=8.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=8.4,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=8.4,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=8.4,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=8.4,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=8.4,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_NA __attribute__((availability(ios,introduced=8.4)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_8_4_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=8.4)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0 __attribute__((availability(ios,introduced=9.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=9.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=9.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=9.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=9.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_0 __attribute__((availability(ios,introduced=9.0,deprecated=9.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=9.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_0_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=9.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=9.0,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=9.0,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=9.0,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=9.0,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=9.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=9.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1 __attribute__((availability(ios,introduced=9.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=9.1,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=9.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=9.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=9.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_1 __attribute__((availability(ios,introduced=9.1,deprecated=9.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=9.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_1_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=9.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=9.1,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=9.1,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=9.1,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=9.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=9.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2 __attribute__((availability(ios,introduced=9.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=9.2,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=9.2,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=9.2,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=9.2,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_9_2 __attribute__((availability(ios,introduced=9.2,deprecated=9.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=9.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_9_2_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=9.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=9.2,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=9.2,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_NA __attribute__((availability(ios,introduced=9.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_2_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=9.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3 __attribute__((availability(ios,introduced=9.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=9.3,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=9.3,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=9.3,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=9.3,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_9_3 __attribute__((availability(ios,introduced=9.3,deprecated=9.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=9.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_9_3_MSG(_msg) __attribute__((availability(ios,introduced=9.3,deprecated=9.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_NA __attribute__((availability(ios,introduced=9.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_9_3_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=9.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0 __attribute__((availability(ios,introduced=10.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_0 __attribute__((availability(ios,introduced=10.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=10.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_0_MSG(_msg) __attribute__((availability(ios,introduced=10.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=10.0,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=10.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=10.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=10.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=10.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=10.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=10.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=10.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=10.0,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_11_0 __attribute__((availability(ios,introduced=10.0,deprecated=11.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_12_0 __attribute__((availability(ios,introduced=10.0,deprecated=12.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_NA __attribute__((availability(ios,introduced=10.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_0_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=10.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1 __attribute__((availability(ios,introduced=10.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_1 __attribute__((availability(ios,introduced=10.1,deprecated=10.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=10.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_1_MSG(_msg) __attribute__((availability(ios,introduced=10.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=10.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=10.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=10.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=10.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=10.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=10.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_NA __attribute__((availability(ios,introduced=10.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_1_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=10.1)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2 __attribute__((availability(ios,introduced=10.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2_DEP__IPHONE_10_2 __attribute__((availability(ios,introduced=10.2,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=10.2,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2_DEP__IPHONE_10_2_MSG(_msg) __attribute__((availability(ios,introduced=10.2,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=10.2,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=10.2,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=10.2,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2_DEP__IPHONE_NA __attribute__((availability(ios,introduced=10.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_2_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=10.2)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_3 __attribute__((availability(ios,introduced=10.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_3_DEP__IPHONE_10_3 __attribute__((availability(ios,introduced=10.3,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_3_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=10.3,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_3_DEP__IPHONE_10_3_MSG(_msg) __attribute__((availability(ios,introduced=10.3,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_3_DEP__IPHONE_NA __attribute__((availability(ios,introduced=10.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_10_3_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,introduced=10.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_11 __attribute__((availability(ios,introduced=11)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_11_0 __attribute__((availability(ios,introduced=11.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_11_3 __attribute__((availability(ios,introduced=11.3)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_12_0 __attribute__((availability(ios,introduced=12.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_13_0 __attribute__((availability(ios,introduced=13.0)))
+
+ #define __AVAILABILITY_INTERNAL__IPHONE_NA __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_NA__IPHONE_NA __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_NA_DEP__IPHONE_NA __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_NA_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,unavailable)))
+
+ #if __has_builtin(__is_target_arch)
+ #if __has_builtin(__is_target_vendor)
+ #if __has_builtin(__is_target_os)
+ #if __has_builtin(__is_target_environment)
+ #if __has_builtin(__is_target_variant_os)
+ #if __has_builtin(__is_target_variant_environment)
+ #if ((__is_target_arch(x86_64) || __is_target_arch(arm64) || __is_target_arch(arm64e)) && __is_target_vendor(apple) && __is_target_os(ios) && __is_target_environment(macabi))
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION __attribute__((availability(ios,introduced=4.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION_MSG(_msg) __attribute__((availability(ios,unavailable)))
+ #endif
+ #endif /* #if __has_builtin(__is_target_variant_environment) */
+ #endif /* #if __has_builtin(__is_target_variant_os) */
+ #endif /* #if __has_builtin(__is_target_environment) */
+ #endif /* #if __has_builtin(__is_target_os) */
+ #endif /* #if __has_builtin(__is_target_vendor) */
+ #endif /* #if __has_builtin(__is_target_arch) */
+
+ #ifndef __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION __attribute__((availability(ios,introduced=4.0)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION __attribute__((availability(ios,introduced=4.0,deprecated=4.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION_MSG(_msg) __attribute__((availability(ios,introduced=4.0,deprecated=4.0)))
+ #endif
+ #endif /* __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION */
+ #endif
+ #endif
+#endif
+
+#if __ENABLE_LEGACY_MAC_AVAILABILITY
+ #if defined(__has_attribute) && defined(__has_feature)
+ #if __has_attribute(availability)
+ /* use better attributes if possible */
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.1,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.12)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.1,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.1,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.1,deprecated=10.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.1,deprecated=10.5)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.5,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.5)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.1,deprecated=10.6)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.6,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.6)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.1,deprecated=10.7)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.7,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.7)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.1,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.1,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.1,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_1_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_2 __attribute__((availability(macosx,introduced=10.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.2,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.2,deprecated=10.13)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.2,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.2,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.2,deprecated=10.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.2,deprecated=10.5)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.5,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.5)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.2,deprecated=10.6)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.6,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.6)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.2,deprecated=10.7)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.7,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.7)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.2,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.2,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.2,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_3 __attribute__((availability(macosx,introduced=10.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.3,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.3,deprecated=10.13)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.3,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.3,deprecated=10.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.3,deprecated=10.5)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.5,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.5)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.3,deprecated=10.6)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.6,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.6)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.3,deprecated=10.7)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.7,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.7)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.3,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.3,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.3,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_4 __attribute__((availability(macosx,introduced=10.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.4,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.4,deprecated=10.13)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.4,deprecated=10.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.4,deprecated=10.5)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.5)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.4,deprecated=10.6)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.6)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.4,deprecated=10.7)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.7,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.7)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.4,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.4,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.4,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_5 __attribute__((availability(macosx,introduced=10.5)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEPRECATED__MAC_10_7 __attribute__((availability(macosx,introduced=10.5.DEPRECATED..MAC.10.7)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.5,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.5,deprecated=10.5)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.5,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.5)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.6)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.5,deprecated=10.7)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.7,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.7)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.5,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.5,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.5,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.5)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.5)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_6 __attribute__((availability(macosx,introduced=10.6)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.6,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.6,deprecated=10.13)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.6,deprecated=10.6)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.6,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.6)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.6,deprecated=10.7)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.7,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.7)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.6,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.6,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.6,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.6)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.6)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_7 __attribute__((availability(macosx,introduced=10.7)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.7,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_13_2 __attribute__((availability(macosx,introduced=10.7,deprecated=10.13.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.7,deprecated=10.7)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.7,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.7)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.7,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.7,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.7,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.7)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.7)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_8 __attribute__((availability(macosx,introduced=10.8)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.8,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.8,deprecated=10.13)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.8,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.8,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.8,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.8)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.8)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9 __attribute__((availability(macosx,introduced=10.9)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.9,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.9,deprecated=10.13)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.9,deprecated=10.14)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.9,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.9,deprecated=10.9)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.9)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.9)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_0 __attribute__((availability(macosx,introduced=10.0)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_0 __attribute__((availability(macosx,introduced=10.0,deprecated=10.0)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_0_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.0,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_0_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.0)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.0,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.0,deprecated=10.13)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_2 __attribute__((availability(macosx,introduced=10.0,deprecated=10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_3 __attribute__((availability(macosx,introduced=10.0,deprecated=10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_4 __attribute__((availability(macosx,introduced=10.0,deprecated=10.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_5 __attribute__((availability(macosx,introduced=10.0,deprecated=10.5)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.5,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_5_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.5)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_6 __attribute__((availability(macosx,introduced=10.0,deprecated=10.6)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.6,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_6_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.6)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_7 __attribute__((availability(macosx,introduced=10.0,deprecated=10.7)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.7,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_7_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.7)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_8 __attribute__((availability(macosx,introduced=10.0,deprecated=10.8)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.8,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_8_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.8)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_9 __attribute__((availability(macosx,introduced=10.0,deprecated=10.9)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.9,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_9_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.9)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.13,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.0,deprecated=10.13)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.0)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_0_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.0)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_1 __attribute__((availability(macosx,introduced=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10 __attribute__((availability(macosx,introduced=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.10.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.10,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_3 __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10.3)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_10_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.10)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.10,deprecated=10.13)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.13,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.10,deprecated=10.13)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.10,deprecated=10.13.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.10)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11 __attribute__((availability(macosx,introduced=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.11.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.11.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_3_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.3)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.11.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_1 __attribute__((availability(macosx,introduced=10.11,deprecated=10.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_2 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_3 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.3)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.3,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_3_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.3)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_4 __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.11)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.11,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.11)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12 __attribute__((availability(macosx,introduced=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1,deprecated=10.12.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_1_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.1)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2,deprecated=10.12.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_2_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.2)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12.4,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.4,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.4,deprecated=10.12.4)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_4_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_1 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.1)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.1,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_1_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.1)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_2 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.2)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.2,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_2_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.2)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_4 __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.4)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.4,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_4_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12.4)))
+ #endif
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_12_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.12)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13 __attribute__((availability(macosx,introduced=10.12,deprecated=10.13)))
+ #if __has_feature(attribute_availability_with_message)
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.13,message=_msg)))
+ #else
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13_MSG(_msg) __attribute__((availability(macosx,introduced=10.12,deprecated=10.13)))
+ #endif
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.12,deprecated=10.13.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.12,deprecated=10.14)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_NA __attribute__((availability(macosx,introduced=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_12_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,introduced=10.12)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_13 __attribute__((availability(macosx,introduced=10.13)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_13_4 __attribute__((availability(macosx,introduced=10.13.4)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_14 __attribute__((availability(macosx,introduced=10.14)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_14_DEP__MAC_10_14 __attribute__((availability(macosx,introduced=10.14,deprecated=10.14)))
+ #define __AVAILABILITY_INTERNAL__MAC_10_15 __attribute__((availability(macosx,introduced=10.15)))
+
+ #define __AVAILABILITY_INTERNAL__MAC_NA __attribute__((availability(macosx,unavailable)))
+ #define __AVAILABILITY_INTERNAL__MAC_NA_DEP__MAC_NA __attribute__((availability(macosx,unavailable)))
+ #define __AVAILABILITY_INTERNAL__MAC_NA_DEP__MAC_NA_MSG(_msg) __attribute__((availability(macosx,unavailable)))
+
+ #define __AVAILABILITY_INTERNAL__IPHONE_NA __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_NA__IPHONE_NA __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_NA_DEP__IPHONE_NA __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_NA_DEP__IPHONE_NA_MSG(_msg) __attribute__((availability(ios,unavailable)))
+
+ #ifndef __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION __attribute__((availability(ios,unavailable)))
+ #define __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION_DEP__IPHONE_COMPAT_VERSION_MSG(_msg) __attribute__((availability(ios,unavailable)))
+ #endif /* __AVAILABILITY_INTERNAL__IPHONE_COMPAT_VERSION */
+ #endif
+ #endif
+#endif /* __ENABLE_LEGACY_MAC_AVAILABILITY */
+
+/*
+ Macros for defining which versions/platform a given symbol can be used.
+
+ @see http://clang.llvm.org/docs/AttributeReference.html#availability
+ */
+
+#if defined(__has_feature) && defined(__has_attribute)
+ #if __has_attribute(availability)
+
+
+ #define __API_AVAILABLE_PLATFORM_macos(x) macos,introduced=x
+ #define __API_AVAILABLE_PLATFORM_macosx(x) macosx,introduced=x
+ #define __API_AVAILABLE_PLATFORM_ios(x) ios,introduced=x
+ #define __API_AVAILABLE_PLATFORM_watchos(x) watchos,introduced=x
+ #define __API_AVAILABLE_PLATFORM_tvos(x) tvos,introduced=x
+
+ #define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x
+ #define __API_AVAILABLE_PLATFORM_macCatalyst(x) macCatalyst,introduced=x
+ #ifndef __API_AVAILABLE_PLATFORM_uikitformac
+ #define __API_AVAILABLE_PLATFORM_uikitformac(x) uikitformac,introduced=x
+ #endif
+ #define __API_AVAILABLE_PLATFORM_driverkit(x) driverkit,introduced=x
+
+ #if defined(__has_attribute)
+ #if __has_attribute(availability)
+ #define __API_A(x) __attribute__((availability(__API_AVAILABLE_PLATFORM_##x)))
+ #else
+ #define __API_A(x)
+ #endif
+ #else
+ #define __API_A(x)
+ #endif
+
+ #define __API_AVAILABLE1(x) __API_A(x)
+ #define __API_AVAILABLE2(x,y) __API_A(x) __API_A(y)
+ #define __API_AVAILABLE3(x,y,z) __API_A(x) __API_A(y) __API_A(z)
+ #define __API_AVAILABLE4(x,y,z,t) __API_A(x) __API_A(y) __API_A(z) __API_A(t)
+ #define __API_AVAILABLE5(x,y,z,t,b) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b)
+ #define __API_AVAILABLE6(x,y,z,t,b,m) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b) __API_A(m)
+ #define __API_AVAILABLE7(x,y,z,t,b,m,d) __API_A(x) __API_A(y) __API_A(z) __API_A(t) __API_A(b) __API_A(m) __API_A(d)
+ #define __API_AVAILABLE_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME
+
+ #define __API_APPLY_TO any(record, enum, enum_constant, function, objc_method, objc_category, objc_protocol, objc_interface, objc_property, type_alias, variable, field)
+ #define __API_RANGE_STRINGIFY(x) __API_RANGE_STRINGIFY2(x)
+ #define __API_RANGE_STRINGIFY2(x) #x
+
+ #define __API_A_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_AVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
+
+ #define __API_AVAILABLE_BEGIN1(a) __API_A_BEGIN(a)
+ #define __API_AVAILABLE_BEGIN2(a,b) __API_A_BEGIN(a) __API_A_BEGIN(b)
+ #define __API_AVAILABLE_BEGIN3(a,b,c) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c)
+ #define __API_AVAILABLE_BEGIN4(a,b,c,d) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d)
+ #define __API_AVAILABLE_BEGIN5(a,b,c,d,e) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e)
+ #define __API_AVAILABLE_BEGIN6(a,b,c,d,e,f) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e) __API_A_BEGIN(f)
+ #define __API_AVAILABLE_BEGIN7(a,b,c,d,e,f,g) __API_A_BEGIN(a) __API_A_BEGIN(b) __API_A_BEGIN(c) __API_A_BEGIN(d) __API_A_BEGIN(e) __API_A_BEGIN(f) __API_A_BEGIN(g)
+ #define __API_AVAILABLE_BEGIN_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME
+
+
+ #define __API_DEPRECATED_PLATFORM_macos(x,y) macos,introduced=x,deprecated=y
+ #define __API_DEPRECATED_PLATFORM_macosx(x,y) macosx,introduced=x,deprecated=y
+ #define __API_DEPRECATED_PLATFORM_ios(x,y) ios,introduced=x,deprecated=y
+ #define __API_DEPRECATED_PLATFORM_watchos(x,y) watchos,introduced=x,deprecated=y
+ #define __API_DEPRECATED_PLATFORM_tvos(x,y) tvos,introduced=x,deprecated=y
+
+ #define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y
+ #define __API_DEPRECATED_PLATFORM_macCatalyst(x,y) macCatalyst,introduced=x,deprecated=y
+ #ifndef __API_DEPRECATED_PLATFORM_uikitformac
+ #define __API_DEPRECATED_PLATFORM_uikitformac(x) uikitformac,introduced=x,deprecated=y
+ #endif
+ #define __API_DEPRECATED_PLATFORM_driverkit(x,y) driverkit,introduced=x,deprecated=y
+
+ #if defined(__has_attribute)
+ #if __has_attribute(availability)
+ #define __API_D(msg,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg)))
+ #else
+ #define __API_D(msg,x)
+ #endif
+ #else
+ #define __API_D(msg,x)
+ #endif
+
+ #define __API_DEPRECATED_MSG2(msg,x) __API_D(msg,x)
+ #define __API_DEPRECATED_MSG3(msg,x,y) __API_D(msg,x) __API_D(msg,y)
+ #define __API_DEPRECATED_MSG4(msg,x,y,z) __API_DEPRECATED_MSG3(msg,x,y) __API_D(msg,z)
+ #define __API_DEPRECATED_MSG5(msg,x,y,z,t) __API_DEPRECATED_MSG4(msg,x,y,z) __API_D(msg,t)
+ #define __API_DEPRECATED_MSG6(msg,x,y,z,t,b) __API_DEPRECATED_MSG5(msg,x,y,z,t) __API_D(msg,b)
+ #define __API_DEPRECATED_MSG7(msg,x,y,z,t,b,m) __API_DEPRECATED_MSG6(msg,x,y,z,t,b) __API_D(msg,m)
+ #define __API_DEPRECATED_MSG8(msg,x,y,z,t,b,m,d) __API_DEPRECATED_MSG7(msg,x,y,z,t,b,m) __API_D(msg,d)
+ #define __API_DEPRECATED_MSG_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
+
+ #define __API_D_BEGIN(msg, x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,message=msg))), apply_to = __API_APPLY_TO)))
+
+ #define __API_DEPRECATED_BEGIN_MSG2(msg,a) __API_D_BEGIN(msg,a)
+ #define __API_DEPRECATED_BEGIN_MSG3(msg,a,b) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b)
+ #define __API_DEPRECATED_BEGIN_MSG4(msg,a,b,c) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c)
+ #define __API_DEPRECATED_BEGIN_MSG5(msg,a,b,c,d) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d)
+ #define __API_DEPRECATED_BEGIN_MSG6(msg,a,b,c,d,e) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e)
+ #define __API_DEPRECATED_BEGIN_MSG7(msg,a,b,c,d,e,f) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e) __API_D_BEGIN(msg,f)
+ #define __API_DEPRECATED_BEGIN_MSG8(msg,a,b,c,d,e,f,g) __API_D_BEGIN(msg,a) __API_D_BEGIN(msg,b) __API_D_BEGIN(msg,c) __API_D_BEGIN(msg,d) __API_D_BEGIN(msg,e) __API_D_BEGIN(msg,f) __API_D_BEGIN(msg,g)
+ #define __API_DEPRECATED_BEGIN_MSG_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
+
+ #if __has_feature(attribute_availability_with_replacement)
+ #define __API_R(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep)))
+ #else
+ #define __API_R(rep,x) __attribute__((availability(__API_DEPRECATED_PLATFORM_##x)))
+ #endif
+
+ #define __API_DEPRECATED_REP2(rep,x) __API_R(rep,x)
+ #define __API_DEPRECATED_REP3(rep,x,y) __API_R(rep,x) __API_R(rep,y)
+ #define __API_DEPRECATED_REP4(rep,x,y,z) __API_DEPRECATED_REP3(rep,x,y) __API_R(rep,z)
+ #define __API_DEPRECATED_REP5(rep,x,y,z,t) __API_DEPRECATED_REP4(rep,x,y,z) __API_R(rep,t)
+ #define __API_DEPRECATED_REP6(rep,x,y,z,t,b) __API_DEPRECATED_REP5(rep,x,y,z,t) __API_R(rep,b)
+ #define __API_DEPRECATED_REP7(rep,x,y,z,t,b,m) __API_DEPRECATED_REP6(rep,x,y,z,t,b) __API_R(rep,m)
+ #define __API_DEPRECATED_REP8(rep,x,y,z,t,b,m,d) __API_DEPRECATED_REP7(rep,x,y,z,t,b,m) __API_R(rep,d)
+ #define __API_DEPRECATED_REP_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
+
+ #if __has_feature(attribute_availability_with_replacement)
+ #define __API_R_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x,replacement=rep))), apply_to = __API_APPLY_TO)))
+ #else
+ #define __API_R_BEGIN(rep,x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_DEPRECATED_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
+ #endif
+
+ #define __API_DEPRECATED_BEGIN_REP2(rep,a) __API_R_BEGIN(rep,a)
+ #define __API_DEPRECATED_BEGIN_REP3(rep,a,b) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b)
+ #define __API_DEPRECATED_BEGIN_REP4(rep,a,b,c) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c)
+ #define __API_DEPRECATED_BEGIN_REP5(rep,a,b,c,d) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d)
+ #define __API_DEPRECATED_BEGIN_REP6(rep,a,b,c,d,e) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e)
+ #define __API_DEPRECATED_BEGIN_REP7(rep,a,b,c,d,e,f) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e) __API_R_BEGIN(rep,f)
+ #define __API_DEPRECATED_BEGIN_REP8(rep,a,b,c,d,e,f,g) __API_R_BEGIN(rep,a) __API_R_BEGIN(rep,b) __API_R_BEGIN(rep,c) __API_R_BEGIN(rep,d) __API_R_BEGIN(rep,e) __API_R_BEGIN(rep,f) __API_R_BEGIN(rep,g)
+ #define __API_DEPRECATED_BEGIN_REP_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
+
+ /*
+ * API Unavailability
+ * Use to specify that an API is unavailable for a particular platform.
+ *
+ * Example:
+ * __API_UNAVAILABLE(macos)
+ * __API_UNAVAILABLE(watchos, tvos)
+ */
+ #define __API_UNAVAILABLE_PLATFORM_macos macos,unavailable
+ #define __API_UNAVAILABLE_PLATFORM_macosx macosx,unavailable
+ #define __API_UNAVAILABLE_PLATFORM_ios ios,unavailable
+ #define __API_UNAVAILABLE_PLATFORM_watchos watchos,unavailable
+ #define __API_UNAVAILABLE_PLATFORM_tvos tvos,unavailable
+
+ #define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable
+ #define __API_UNAVAILABLE_PLATFORM_macCatalyst macCatalyst,unavailable
+ #ifndef __API_UNAVAILABLE_PLATFORM_uikitformac
+ #define __API_UNAVAILABLE_PLATFORM_uikitformac(x) uikitformac,unavailable
+ #endif
+ #define __API_UNAVAILABLE_PLATFORM_driverkit driverkit,unavailable
+
+ #if defined(__has_attribute)
+ #if __has_attribute(availability)
+ #define __API_U(x) __attribute__((availability(__API_UNAVAILABLE_PLATFORM_##x)))
+ #else
+ #define __API_U(x)
+ #endif
+ #else
+ #define __API_U(x)
+ #endif
+
+ #define __API_UNAVAILABLE1(x) __API_U(x)
+ #define __API_UNAVAILABLE2(x,y) __API_U(x) __API_U(y)
+ #define __API_UNAVAILABLE3(x,y,z) __API_UNAVAILABLE2(x,y) __API_U(z)
+ #define __API_UNAVAILABLE4(x,y,z,t) __API_UNAVAILABLE3(x,y,z) __API_U(t)
+ #define __API_UNAVAILABLE5(x,y,z,t,b) __API_UNAVAILABLE4(x,y,z,t) __API_U(b)
+ #define __API_UNAVAILABLE6(x,y,z,t,b,m) __API_UNAVAILABLE5(x,y,z,t,b) __API_U(m)
+ #define __API_UNAVAILABLE7(x,y,z,t,b,m,d) __API_UNAVAILABLE6(x,y,z,t,b,m) __API_U(d)
+ #define __API_UNAVAILABLE_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME
+
+ #define __API_U_BEGIN(x) _Pragma(__API_RANGE_STRINGIFY (clang attribute (__attribute__((availability(__API_UNAVAILABLE_PLATFORM_##x))), apply_to = __API_APPLY_TO)))
+
+ #define __API_UNAVAILABLE_BEGIN1(a) __API_U_BEGIN(a)
+ #define __API_UNAVAILABLE_BEGIN2(a,b) __API_U_BEGIN(a) __API_U_BEGIN(b)
+ #define __API_UNAVAILABLE_BEGIN3(a,b,c) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c)
+ #define __API_UNAVAILABLE_BEGIN4(a,b,c,d) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d)
+ #define __API_UNAVAILABLE_BEGIN5(a,b,c,d,e) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e)
+ #define __API_UNAVAILABLE_BEGIN6(a,b,c,d,e,f) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e) __API_U_BEGIN(f)
+ #define __API_UNAVAILABLE_BEGIN7(a,b,c,d,e,f) __API_U_BEGIN(a) __API_U_BEGIN(b) __API_U_BEGIN(c) __API_U_BEGIN(d) __API_U_BEGIN(e) __API_U_BEGIN(f) __API_U_BEGIN(g)
+ #define __API_UNAVAILABLE_BEGIN_GET_MACRO(_1,_2,_3,_4,_5,_6,_7,NAME,...) NAME
+ #else
+
+ /*
+ * Evaluate to nothing for compilers that don't support availability.
+ */
+
+ #define __API_AVAILABLE_GET_MACRO(...)
+ #define __API_AVAILABLE_BEGIN_GET_MACRO(...)
+ #define __API_DEPRECATED_MSG_GET_MACRO(...)
+ #define __API_DEPRECATED_REP_GET_MACRO(...)
+ #define __API_DEPRECATED_BEGIN_MSG_GET_MACRO(...)
+ #define __API_DEPRECATED_BEGIN_REP_GET_MACRO
+ #define __API_UNAVAILABLE_GET_MACRO(...)
+ #define __API_UNAVAILABLE_BEGIN_GET_MACRO(...)
+ #endif /* __has_attribute(availability) */
+#else
+
+ /*
+ * Evaluate to nothing for compilers that don't support clang language extensions.
+ */
+
+ #define __API_AVAILABLE_GET_MACRO(...)
+ #define __API_AVAILABLE_BEGIN_GET_MACRO(...)
+ #define __API_DEPRECATED_MSG_GET_MACRO(...)
+ #define __API_DEPRECATED_REP_GET_MACRO(...)
+ #define __API_DEPRECATED_BEGIN_MSG_GET_MACRO(...)
+ #define __API_DEPRECATED_BEGIN_REP_GET_MACRO
+ #define __API_UNAVAILABLE_GET_MACRO(...)
+ #define __API_UNAVAILABLE_BEGIN_GET_MACRO(...)
+#endif /* #if defined(__has_feature) && defined(__has_attribute) */
+
+/*
+ * Swift compiler version
+ * Allows for project-agnostic “epochs” for frameworks imported into Swift via the Clang importer, like #if _compiler_version for Swift
+ * Example:
+ *
+ * #if __swift_compiler_version_at_least(800, 2, 20)
+ * - (nonnull NSString *)description;
+ * #else
+ * - (NSString *)description;
+ * #endif
+ */
+
+#ifdef __SWIFT_COMPILER_VERSION
+ #define __swift_compiler_version_at_least_impl(X, Y, Z, a, b, ...) \
+ __SWIFT_COMPILER_VERSION >= ((X * UINT64_C(1000) * 1000 * 1000) + (Z * 1000 * 1000) + (a * 1000) + b)
+ #define __swift_compiler_version_at_least(...) __swift_compiler_version_at_least_impl(__VA_ARGS__, 0, 0, 0, 0)
+#else
+ #define __swift_compiler_version_at_least(...) 1
+#endif
+
+/*
+ * If __SPI_AVAILABLE has not been defined elsewhere, disable it.
+ */
+
+#ifndef __SPI_AVAILABLE
+ #define __SPI_AVAILABLE(...)
+#endif
+
+#endif /* __AVAILABILITY_INTERNAL__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/AvailabilityMacros.h b/lib/libc/include/aarch64-macos-gnu/AvailabilityMacros.h
new file mode 100644
index 0000000000..bd044a2a03
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/AvailabilityMacros.h
@@ -0,0 +1,4013 @@
+/*
+ * Copyright (c) 2001-2010 by Apple Inc.. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+/*
+ File: AvailabilityMacros.h
+
+ More Info: See the SDK Compatibility Guide
+
+ Contains: Autoconfiguration of AVAILABLE_ macros for Mac OS X
+
+ This header enables a developer to specify build time
+ constraints on what Mac OS X versions the resulting
+ application will be run. There are two bounds a developer
+ can specify:
+
+ MAC_OS_X_VERSION_MIN_REQUIRED
+ MAC_OS_X_VERSION_MAX_ALLOWED
+
+ The lower bound controls which calls to OS functions will
+ be weak-importing (allowed to be unresolved at launch time).
+ The upper bound controls which OS functionality, if used,
+ will result in a compiler error because that functionality is
+ not available on any OS in the specifed range.
+
+ For example, suppose an application is compiled with:
+
+ MAC_OS_X_VERSION_MIN_REQUIRED = MAC_OS_X_VERSION_10_2
+ MAC_OS_X_VERSION_MAX_ALLOWED = MAC_OS_X_VERSION_10_3
+
+ and an OS header contains:
+
+ extern void funcA(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER;
+ extern void funcB(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2;
+ extern void funcC(void) AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3;
+ extern void funcD(void) AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER;
+ extern void funcE(void) AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER;
+ extern void funcF(void) AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
+ extern void funcG(void) AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+ typedef long TypeA DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER;
+ typedef long TypeB DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER;
+ typedef long TypeC DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER;
+ typedef long TypeD DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER;
+ typedef long TypeE DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER;
+
+ Any application code which uses these declarations will get the following:
+
+ compile link run
+ ------- ------ -------
+ funcA: normal normal normal
+ funcB: warning normal normal
+ funcC: normal normal normal
+ funcD: normal normal normal
+ funcE: normal normal normal
+ funcF: normal weak on 10.3 normal, on 10.2 (&funcF == NULL)
+ funcG: error error n/a
+ typeA: warning
+ typeB: warning
+ typeC: warning
+ typeD: normal
+ typeE: normal
+
+
+*/
+#ifndef __AVAILABILITYMACROS__
+#define __AVAILABILITYMACROS__
+
+/*
+ * Set up standard Mac OS X versions
+ */
+#define MAC_OS_X_VERSION_10_0 1000
+#define MAC_OS_X_VERSION_10_1 1010
+#define MAC_OS_X_VERSION_10_2 1020
+#define MAC_OS_X_VERSION_10_3 1030
+#define MAC_OS_X_VERSION_10_4 1040
+#define MAC_OS_X_VERSION_10_5 1050
+#define MAC_OS_X_VERSION_10_6 1060
+#define MAC_OS_X_VERSION_10_7 1070
+#define MAC_OS_X_VERSION_10_8 1080
+#define MAC_OS_X_VERSION_10_9 1090
+#define MAC_OS_X_VERSION_10_10 101000
+#define MAC_OS_X_VERSION_10_10_2 101002
+#define MAC_OS_X_VERSION_10_10_3 101003
+#define MAC_OS_X_VERSION_10_11 101100
+#define MAC_OS_X_VERSION_10_11_2 101102
+#define MAC_OS_X_VERSION_10_11_3 101103
+#define MAC_OS_X_VERSION_10_11_4 101104
+#define MAC_OS_X_VERSION_10_12 101200
+#define MAC_OS_X_VERSION_10_12_1 101201
+#define MAC_OS_X_VERSION_10_12_2 101202
+#define MAC_OS_X_VERSION_10_12_4 101204
+#define MAC_OS_X_VERSION_10_13 101300
+#define MAC_OS_X_VERSION_10_13_1 101301
+#define MAC_OS_X_VERSION_10_13_2 101302
+#define MAC_OS_X_VERSION_10_13_4 101304
+#define MAC_OS_X_VERSION_10_14 101400
+#define MAC_OS_X_VERSION_10_14_1 101401
+#define MAC_OS_X_VERSION_10_14_4 101404
+#define MAC_OS_X_VERSION_10_15 101500
+#define MAC_OS_VERSION_11_0 110000
+
+/*
+ * If min OS not specified, assume 10.4 for intel
+ * Note: compiler driver may set _ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED_ based on MACOSX_DEPLOYMENT_TARGET environment variable
+ */
+#ifndef MAC_OS_X_VERSION_MIN_REQUIRED
+ #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+ #if (__i386__ || __x86_64__) && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < MAC_OS_X_VERSION_10_4)
+ #warning Building for Intel with Mac OS X Deployment Target < 10.4 is invalid.
+ #endif
+ #define MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+ #else
+ #if __i386__ || __x86_64__
+ #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_4
+ #elif __arm__ || __arm64__
+ #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_5
+ #else
+ #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_1
+ #endif
+ #endif
+#endif
+
+/*
+ * if max OS not specified, assume larger of (10.15, min)
+ */
+#ifndef MAC_OS_X_VERSION_MAX_ALLOWED
+ #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_VERSION_11_0
+ #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_MIN_REQUIRED
+ #else
+ #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_VERSION_11_0
+ #endif
+#endif
+
+/*
+ * Error on bad values
+ */
+#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_MIN_REQUIRED
+ #error MAC_OS_X_VERSION_MAX_ALLOWED must be >= MAC_OS_X_VERSION_MIN_REQUIRED
+#endif
+#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_0
+ #error MAC_OS_X_VERSION_MIN_REQUIRED must be >= MAC_OS_X_VERSION_10_0
+#endif
+
+/*
+ * only certain compilers support __attribute__((weak_import))
+ */
+#if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1))) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1020)
+ #define WEAK_IMPORT_ATTRIBUTE __attribute__((weak_import))
+#elif defined(__MWERKS__) && (__MWERKS__ >= 0x3205) && (MAC_OS_X_VERSION_MIN_REQUIRED >= 1020) && !defined(__INTEL__)
+ #define WEAK_IMPORT_ATTRIBUTE __attribute__((weak_import))
+#else
+ #define WEAK_IMPORT_ATTRIBUTE
+#endif
+
+/*
+ * only certain compilers support __attribute__((deprecated))
+ */
+#if defined(__has_feature) && defined(__has_attribute)
+ #if __has_attribute(deprecated)
+ #define DEPRECATED_ATTRIBUTE __attribute__((deprecated))
+ #if __has_feature(attribute_deprecated_with_message)
+ #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
+ #else
+ #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated))
+ #endif
+ #else
+ #define DEPRECATED_ATTRIBUTE
+ #define DEPRECATED_MSG_ATTRIBUTE(s)
+ #endif
+#elif defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
+ #define DEPRECATED_ATTRIBUTE __attribute__((deprecated))
+ #if (__GNUC__ >= 5) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5))
+ #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated(s)))
+ #else
+ #define DEPRECATED_MSG_ATTRIBUTE(s) __attribute__((deprecated))
+ #endif
+#else
+ #define DEPRECATED_ATTRIBUTE
+ #define DEPRECATED_MSG_ATTRIBUTE(s)
+#endif
+
+/*
+ * only certain compilers support __attribute__((unavailable))
+ */
+#if defined(__GNUC__) && ((__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 1)))
+ #define UNAVAILABLE_ATTRIBUTE __attribute__((unavailable))
+#else
+ #define UNAVAILABLE_ATTRIBUTE
+#endif
+
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+ *
+ * Used on functions introduced in Mac OS X 10.0
+ */
+#define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on functions introduced in Mac OS X 10.0,
+ * and deprecated in Mac OS X 10.0
+ */
+#define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.0
+ */
+#define DEPRECATED_IN_MAC_OS_X_VERSION_10_0_AND_LATER DEPRECATED_ATTRIBUTE
+
+#ifndef __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #ifdef __has_attribute
+ #if __has_attribute(availability)
+ #include <Availability.h>
+ #define __AVAILABILITY_MACROS_USES_AVAILABILITY 1
+ #endif
+ #endif
+#endif
+
+#if TARGET_OS_OSX
+#define __IPHONE_COMPAT_VERSION __IPHONE_NA
+#elif TARGET_OS_MACCATALYST
+#define __IPHONE_COMPAT_VERSION __IPHONE_NA
+#else
+#define __IPHONE_COMPAT_VERSION __IPHONE_4_0
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * and deprecated in Mac OS X 10.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_1 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * and deprecated in Mac OS X 10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_2 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * and deprecated in Mac OS X 10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_3 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * and deprecated in Mac OS X 10.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_4 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.5
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * and deprecated in Mac OS X 10.5
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_5, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.5
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.5
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_5, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.5
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_5, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.5
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_5, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.5
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_5, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_5 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * and deprecated in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_6, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_6, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_6, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_6, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_6, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_6, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_6 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * and deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_7 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_13
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.13
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+#define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_13 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_13, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+#define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_13 DEPRECATED_ATTRIBUTE
+#else
+#define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_13 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * and deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_8 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * and deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_9 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * and deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_10_2, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * and deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_2 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_10_3, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * and deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_10_3 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.11,
+ * and deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * but later deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_11_2, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.11.2,
+ * and deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2
+ *
+ * Used on declarations introduced in Mac OS X 10.11,
+ * but later deprecated in Mac OS X 10.11.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_11_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_2 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_11_3, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.11.3,
+ * and deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.11,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3
+ *
+ * Used on declarations introduced in Mac OS X 10.11.2,
+ * but later deprecated in Mac OS X 10.11.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_11_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_3
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_3 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_11_4, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.11.4,
+ * and deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.11,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.11.2,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4
+ *
+ * Used on declarations introduced in Mac OS X 10.11.3,
+ * but later deprecated in Mac OS X 10.11.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_11_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_11_4 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_12, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.12,
+ * and deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.11,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.11.2,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.11.3,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12
+ *
+ * Used on declarations introduced in Mac OS X 10.11.4,
+ * but later deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12 AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_12_1, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.12.1,
+ * and deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_1, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.11,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.11.2,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.11.3,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.11.4,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1
+ *
+ * Used on declarations introduced in Mac OS X 10.12,
+ * but later deprecated in Mac OS X 10.12.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12, __MAC_10_12_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_1
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_1 AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_12_2, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.12.2,
+ * and deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_2, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.11,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.11.2,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.11.3,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.11.4,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.12,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2
+ *
+ * Used on declarations introduced in Mac OS X 10.12.1,
+ * but later deprecated in Mac OS X 10.12.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_1, __MAC_10_12_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_2
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_2 AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_12_4, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER_BUT_DEPRECATED
+ *
+ * Used on declarations introduced in Mac OS X 10.12.4,
+ * and deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER_BUT_DEPRECATED __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_4, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER_BUT_DEPRECATED DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER_BUT_DEPRECATED AVAILABLE_MAC_OS_X_VERSION_10_12_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.0,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_0_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.1,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.2,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_2, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.3,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.4,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.5,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.6,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_6, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.7,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_7, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.8,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_8, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.9,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_9, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.10,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.10.2,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_2, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_10_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.10.3,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_10_3, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_10_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.11,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.11.2,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_2, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_11_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.11.3,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_3, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_11_3_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.11.4,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_11_4, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_11_4_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.12,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.12.1,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_1, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_12_1_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4
+ *
+ * Used on declarations introduced in Mac OS X 10.12.2,
+ * but later deprecated in Mac OS X 10.12.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_12_2, __MAC_10_12_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12_4
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 DEPRECATED_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER_BUT_DEPRECATED_IN_MAC_OS_X_VERSION_10_12_4 AVAILABLE_MAC_OS_X_VERSION_10_12_2_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.13
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_13, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_13
+ #define AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_13
+ #define AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_14_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.14
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_14_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_14, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_14
+ #define AVAILABLE_MAC_OS_X_VERSION_10_14_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_14
+ #define AVAILABLE_MAC_OS_X_VERSION_10_14_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_14_AND_LATER
+#endif
+
+/*
+ * AVAILABLE_MAC_OS_X_VERSION_10_15_AND_LATER
+ *
+ * Used on declarations introduced in Mac OS X 10.15
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define AVAILABLE_MAC_OS_X_VERSION_10_15_AND_LATER __OSX_AVAILABLE_STARTING(__MAC_10_15, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_15
+ #define AVAILABLE_MAC_OS_X_VERSION_10_15_AND_LATER UNAVAILABLE_ATTRIBUTE
+#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_15
+ #define AVAILABLE_MAC_OS_X_VERSION_10_15_AND_LATER WEAK_IMPORT_ATTRIBUTE
+#else
+ #define AVAILABLE_MAC_OS_X_VERSION_10_15_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.1
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_1, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_1
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_1_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.2
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_2, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_2
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_2_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.3
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_3, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_3_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_4
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_4_AND_LATER
+#endif
+
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.5
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_5, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_6_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.6
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_6_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_6, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_6
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_6_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_6_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.7
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_7, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_7
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_8_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.8
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_8_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_8
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_8_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_8_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_9_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.9
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_9_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_9
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_9_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_9_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_10_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.10
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_10_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_10, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_10
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_10_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_10_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_11_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.11
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_11, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_11
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_11_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_12_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.12
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_12, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_12_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_13_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.13
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_13_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_13, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_13_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_13_AND_LATER
+#endif
+
+/*
+ * DEPRECATED_IN_MAC_OS_X_VERSION_10_14_4_AND_LATER
+ *
+ * Used on types deprecated in Mac OS X 10.14.4
+ */
+#if __AVAILABILITY_MACROS_USES_AVAILABILITY
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_14_4_AND_LATER __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_14_4, __IPHONE_COMPAT_VERSION, __IPHONE_COMPAT_VERSION)
+#elif MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_14_4
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_14_4_AND_LATER DEPRECATED_ATTRIBUTE
+#else
+ #define DEPRECATED_IN_MAC_OS_X_VERSION_10_14_4_AND_LATER
+#endif
+
+#endif /* __AVAILABILITYMACROS__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/AvailabilityVersions.h b/lib/libc/include/aarch64-macos-gnu/AvailabilityVersions.h
new file mode 100644
index 0000000000..265379fb61
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/AvailabilityVersions.h
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 2019 by Apple Inc.. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef __AVAILABILITY_VERSIONS__
+#define __AVAILABILITY_VERSIONS__
+
+#define __MAC_10_0 1000
+#define __MAC_10_1 1010
+#define __MAC_10_2 1020
+#define __MAC_10_3 1030
+#define __MAC_10_4 1040
+#define __MAC_10_5 1050
+#define __MAC_10_6 1060
+#define __MAC_10_7 1070
+#define __MAC_10_8 1080
+#define __MAC_10_9 1090
+#define __MAC_10_10 101000
+#define __MAC_10_10_2 101002
+#define __MAC_10_10_3 101003
+#define __MAC_10_11 101100
+#define __MAC_10_11_2 101102
+#define __MAC_10_11_3 101103
+#define __MAC_10_11_4 101104
+#define __MAC_10_12 101200
+#define __MAC_10_12_1 101201
+#define __MAC_10_12_2 101202
+#define __MAC_10_12_4 101204
+#define __MAC_10_13 101300
+#define __MAC_10_13_1 101301
+#define __MAC_10_13_2 101302
+#define __MAC_10_13_4 101304
+#define __MAC_10_14 101400
+#define __MAC_10_14_1 101401
+#define __MAC_10_14_4 101404
+#define __MAC_10_14_6 101406
+#define __MAC_10_15 101500
+#define __MAC_10_15_1 101501
+#define __MAC_10_15_4 101504
+#define __MAC_10_16 101600
+#define __MAC_11_0 110000
+/* __MAC_NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */
+
+#define __IPHONE_2_0 20000
+#define __IPHONE_2_1 20100
+#define __IPHONE_2_2 20200
+#define __IPHONE_3_0 30000
+#define __IPHONE_3_1 30100
+#define __IPHONE_3_2 30200
+#define __IPHONE_4_0 40000
+#define __IPHONE_4_1 40100
+#define __IPHONE_4_2 40200
+#define __IPHONE_4_3 40300
+#define __IPHONE_5_0 50000
+#define __IPHONE_5_1 50100
+#define __IPHONE_6_0 60000
+#define __IPHONE_6_1 60100
+#define __IPHONE_7_0 70000
+#define __IPHONE_7_1 70100
+#define __IPHONE_8_0 80000
+#define __IPHONE_8_1 80100
+#define __IPHONE_8_2 80200
+#define __IPHONE_8_3 80300
+#define __IPHONE_8_4 80400
+#define __IPHONE_9_0 90000
+#define __IPHONE_9_1 90100
+#define __IPHONE_9_2 90200
+#define __IPHONE_9_3 90300
+#define __IPHONE_10_0 100000
+#define __IPHONE_10_1 100100
+#define __IPHONE_10_2 100200
+#define __IPHONE_10_3 100300
+#define __IPHONE_11_0 110000
+#define __IPHONE_11_1 110100
+#define __IPHONE_11_2 110200
+#define __IPHONE_11_3 110300
+#define __IPHONE_11_4 110400
+#define __IPHONE_12_0 120000
+#define __IPHONE_12_1 120100
+#define __IPHONE_12_2 120200
+#define __IPHONE_12_3 120300
+#define __IPHONE_12_4 120400
+#define __IPHONE_13_0 130000
+#define __IPHONE_13_1 130100
+#define __IPHONE_13_2 130200
+#define __IPHONE_13_3 130300
+#define __IPHONE_13_4 130400
+#define __IPHONE_13_5 130500
+#define __IPHONE_13_6 130600
+#define __IPHONE_13_7 130700
+#define __IPHONE_14_0 140000
+#define __IPHONE_14_1 140100
+#define __IPHONE_14_2 140200
+/* __IPHONE_NA is not defined to a value but is used as a token by macros to indicate that the API is unavailable */
+
+#define __TVOS_9_0 90000
+#define __TVOS_9_1 90100
+#define __TVOS_9_2 90200
+#define __TVOS_10_0 100000
+#define __TVOS_10_0_1 100001
+#define __TVOS_10_1 100100
+#define __TVOS_10_2 100200
+#define __TVOS_11_0 110000
+#define __TVOS_11_1 110100
+#define __TVOS_11_2 110200
+#define __TVOS_11_3 110300
+#define __TVOS_11_4 110400
+#define __TVOS_12_0 120000
+#define __TVOS_12_1 120100
+#define __TVOS_12_2 120200
+#define __TVOS_12_3 120300
+#define __TVOS_12_4 120400
+#define __TVOS_13_0 130000
+#define __TVOS_13_2 130200
+#define __TVOS_13_3 130300
+#define __TVOS_13_4 130400
+#define __TVOS_14_0 140000
+#define __TVOS_14_1 140100
+#define __TVOS_14_2 140200
+
+#define __WATCHOS_1_0 10000
+#define __WATCHOS_2_0 20000
+#define __WATCHOS_2_1 20100
+#define __WATCHOS_2_2 20200
+#define __WATCHOS_3_0 30000
+#define __WATCHOS_3_1 30100
+#define __WATCHOS_3_1_1 30101
+#define __WATCHOS_3_2 30200
+#define __WATCHOS_4_0 40000
+#define __WATCHOS_4_1 40100
+#define __WATCHOS_4_2 40200
+#define __WATCHOS_4_3 40300
+#define __WATCHOS_5_0 50000
+#define __WATCHOS_5_1 50100
+#define __WATCHOS_5_2 50200
+#define __WATCHOS_5_3 50300
+#define __WATCHOS_6_0 60000
+#define __WATCHOS_6_1 60100
+#define __WATCHOS_6_2 60200
+#define __WATCHOS_7_0 70000
+#define __WATCHOS_7_1 70100
+
+/*
+ * Set up standard Mac OS X versions
+ */
+
+#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE)
+
+#define MAC_OS_X_VERSION_10_0 1000
+#define MAC_OS_X_VERSION_10_1 1010
+#define MAC_OS_X_VERSION_10_2 1020
+#define MAC_OS_X_VERSION_10_3 1030
+#define MAC_OS_X_VERSION_10_4 1040
+#define MAC_OS_X_VERSION_10_5 1050
+#define MAC_OS_X_VERSION_10_6 1060
+#define MAC_OS_X_VERSION_10_7 1070
+#define MAC_OS_X_VERSION_10_8 1080
+#define MAC_OS_X_VERSION_10_9 1090
+#define MAC_OS_X_VERSION_10_10 101000
+#define MAC_OS_X_VERSION_10_10_2 101002
+#define MAC_OS_X_VERSION_10_10_3 101003
+#define MAC_OS_X_VERSION_10_11 101100
+#define MAC_OS_X_VERSION_10_11_2 101102
+#define MAC_OS_X_VERSION_10_11_3 101103
+#define MAC_OS_X_VERSION_10_11_4 101104
+#define MAC_OS_X_VERSION_10_12 101200
+#define MAC_OS_X_VERSION_10_12_1 101201
+#define MAC_OS_X_VERSION_10_12_2 101202
+#define MAC_OS_X_VERSION_10_12_4 101204
+#define MAC_OS_X_VERSION_10_13 101300
+#define MAC_OS_X_VERSION_10_13_1 101301
+#define MAC_OS_X_VERSION_10_13_2 101302
+#define MAC_OS_X_VERSION_10_13_4 101304
+#define MAC_OS_X_VERSION_10_14 101400
+#define MAC_OS_X_VERSION_10_14_1 101401
+#define MAC_OS_X_VERSION_10_14_4 101404
+#define MAC_OS_X_VERSION_10_14_6 101406
+#define MAC_OS_X_VERSION_10_15 101500
+#define MAC_OS_X_VERSION_10_15_1 101501
+#define MAC_OS_X_VERSION_10_16 101600
+#define MAC_OS_VERSION_11_0 110000
+
+#endif /* #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE) */
+
+#define __DRIVERKIT_19_0 190000
+#define __DRIVERKIT_20_0 200000
+
+#endif /* __AVAILABILITY_VERSIONS__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/TargetConditionals.h b/lib/libc/include/aarch64-macos-gnu/TargetConditionals.h
new file mode 100644
index 0000000000..e0a993f0ec
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/TargetConditionals.h
@@ -0,0 +1,508 @@
+/*
+ * Copyright (c) 2000-2014 by Apple Inc.. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+/*
+ File: TargetConditionals.h
+
+ Contains: Autoconfiguration of TARGET_ conditionals for Mac OS X and iPhone
+
+ Note: TargetConditionals.h in 3.4 Universal Interfaces works
+ with all compilers. This header only recognizes compilers
+ known to run on Mac OS X.
+
+*/
+
+#ifndef __TARGETCONDITIONALS__
+#define __TARGETCONDITIONALS__
+
+/*
+ *
+ * TARGET_CPU_*
+ * These conditionals specify which microprocessor instruction set is being
+ * generated. At most one of these is true, the rest are false.
+ *
+ * TARGET_CPU_PPC - Compiler is generating PowerPC instructions for 32-bit mode
+ * TARGET_CPU_PPC64 - Compiler is generating PowerPC instructions for 64-bit mode
+ * TARGET_CPU_68K - Compiler is generating 680x0 instructions
+ * TARGET_CPU_X86 - Compiler is generating x86 instructions for 32-bit mode
+ * TARGET_CPU_X86_64 - Compiler is generating x86 instructions for 64-bit mode
+ * TARGET_CPU_ARM - Compiler is generating ARM instructions for 32-bit mode
+ * TARGET_CPU_ARM64 - Compiler is generating ARM instructions for 64-bit mode
+ * TARGET_CPU_MIPS - Compiler is generating MIPS instructions
+ * TARGET_CPU_SPARC - Compiler is generating Sparc instructions
+ * TARGET_CPU_ALPHA - Compiler is generating Dec Alpha instructions
+ *
+ *
+ * TARGET_OS_*
+ * These conditionals specify in which Operating System the generated code will
+ * run. Indention is used to show which conditionals are evolutionary subclasses.
+ *
+ * The MAC/WIN32/UNIX conditionals are mutually exclusive.
+ * The IOS/TV/WATCH conditionals are mutually exclusive.
+ *
+ *
+ * TARGET_OS_WIN32 - Generated code will run under 32-bit Windows
+ * TARGET_OS_UNIX - Generated code will run under some Unix (not OSX)
+ * TARGET_OS_MAC - Generated code will run under Mac OS X variant
+ * TARGET_OS_OSX - Generated code will run under OS X devices
+ * TARGET_OS_IPHONE - Generated code for firmware, devices, or simulator
+ * TARGET_OS_IOS - Generated code will run under iOS
+ * TARGET_OS_TV - Generated code will run under Apple TV OS
+ * TARGET_OS_WATCH - Generated code will run under Apple Watch OS
+ * TARGET_OS_BRIDGE - Generated code will run under Bridge devices
+ * TARGET_OS_MACCATALYST - Generated code will run under macOS
+ * TARGET_OS_SIMULATOR - Generated code will run under a simulator
+ *
+ * TARGET_OS_EMBEDDED - DEPRECATED: Use TARGET_OS_IPHONE and/or TARGET_OS_SIMULATOR instead
+ * TARGET_IPHONE_SIMULATOR - DEPRECATED: Same as TARGET_OS_SIMULATOR
+ * TARGET_OS_NANO - DEPRECATED: Same as TARGET_OS_WATCH
+ *
+ * +---------------------------------------------------------------------+
+ * | TARGET_OS_MAC |
+ * | +---+ +-----------------------------------------------+ +---------+ |
+ * | | | | TARGET_OS_IPHONE | | | |
+ * | | | | +---------------+ +----+ +-------+ +--------+ | | | |
+ * | | | | | IOS | | | | | | | | | | |
+ * | |OSX| | |+-------------+| | TV | | WATCH | | BRIDGE | | |DRIVERKIT| |
+ * | | | | || MACCATALYST || | | | | | | | | | |
+ * | | | | |+-------------+| | | | | | | | | | |
+ * | | | | +---------------+ +----+ +-------+ +--------+ | | | |
+ * | +---+ +-----------------------------------------------+ +---------+ |
+ * +---------------------------------------------------------------------+
+ *
+ * TARGET_RT_*
+ * These conditionals specify in which runtime the generated code will
+ * run. This is needed when the OS and CPU support more than one runtime
+ * (e.g. Mac OS X supports CFM and mach-o).
+ *
+ * TARGET_RT_LITTLE_ENDIAN - Generated code uses little endian format for integers
+ * TARGET_RT_BIG_ENDIAN - Generated code uses big endian format for integers
+ * TARGET_RT_64_BIT - Generated code uses 64-bit pointers
+ * TARGET_RT_MAC_CFM - TARGET_OS_MAC is true and CFM68K or PowerPC CFM (TVectors) are used
+ * TARGET_RT_MAC_MACHO - TARGET_OS_MAC is true and Mach-O/dlyd runtime is used
+ */
+
+ /*
+ * TARGET_OS conditionals can be enabled via clang preprocessor extensions:
+ *
+ * __is_target_arch
+ * __is_target_vendor
+ * __is_target_os
+ * __is_target_environment
+ *
+ * “-target=x86_64-apple-ios12-macabi”
+ * TARGET_OS_MAC=1
+ * TARGET_OS_IPHONE=1
+ * TARGET_OS_IOS=1
+ * TARGET_OS_MACCATALYST=1
+ *
+ * “-target=x86_64-apple-ios12-simulator”
+ * TARGET_OS_MAC=1
+ * TARGET_OS_IPHONE=1
+ * TARGET_OS_IOS=1
+ * TARGET_OS_SIMULATOR=1
+ *
+ * DYNAMIC_TARGETS_ENABLED indicates that the core TARGET_OS macros were enabled via clang preprocessor extensions.
+ * If this value is not set, the macro enablements will fall back to the static behavior.
+ * It is disabled by default.
+ */
+
+#if defined(__has_builtin)
+ #if __has_builtin(__is_target_arch)
+ #if __has_builtin(__is_target_vendor)
+ #if __has_builtin(__is_target_os)
+ #if __has_builtin(__is_target_environment)
+
+ /* “-target=x86_64-apple-ios12-macabi” */
+ /* “-target=arm64-apple-ios12-macabi” */
+ /* “-target=arm64e-apple-ios12-macabi” */
+ #if (__is_target_arch(x86_64) || __is_target_arch(arm64) || __is_target_arch(arm64e)) && __is_target_vendor(apple) && __is_target_os(ios) && __is_target_environment(macabi)
+ #define TARGET_OS_OSX 0
+ #define TARGET_OS_IPHONE 1
+ #define TARGET_OS_IOS 1
+ #define TARGET_OS_WATCH 0
+
+ #define TARGET_OS_TV 0
+ #define TARGET_OS_SIMULATOR 0
+ #define TARGET_OS_EMBEDDED 0
+ #define TARGET_OS_RTKIT 0
+ #define TARGET_OS_MACCATALYST 1
+ #define TARGET_OS_MACCATALYST 1
+ #ifndef TARGET_OS_UIKITFORMAC
+ #define TARGET_OS_UIKITFORMAC 1
+ #endif
+ #define TARGET_OS_DRIVERKIT 0
+ #define DYNAMIC_TARGETS_ENABLED 1
+ #endif
+
+ /* “-target=x86_64-apple-ios12-simulator” */
+ #if __is_target_arch(x86_64) && __is_target_vendor(apple) && __is_target_os(ios) && __is_target_environment(simulator)
+ #define TARGET_OS_OSX 0
+ #define TARGET_OS_IPHONE 1
+ #define TARGET_OS_IOS 1
+ #define TARGET_OS_WATCH 0
+
+ #define TARGET_OS_TV 0
+ #define TARGET_OS_SIMULATOR 1
+ #define TARGET_OS_EMBEDDED 0
+ #define TARGET_OS_RTKIT 0
+ #define TARGET_OS_MACCATALYST 0
+ #define TARGET_OS_MACCATALYST 0
+ #ifndef TARGET_OS_UIKITFORMAC
+ #define TARGET_OS_UIKITFORMAC 0
+ #endif
+ #define TARGET_OS_DRIVERKIT 0
+ #define DYNAMIC_TARGETS_ENABLED 1
+ #endif
+
+ /* -target=x86_64-apple-driverkit19.0 */
+ /* -target=arm64-apple-driverkit19.0 */
+ /* -target=arm64e-apple-driverkit19.0 */
+ #if (__is_target_arch(x86_64) || __is_target_arch(arm64) || __is_target_arch(arm64e)) && __is_target_vendor(apple) && __is_target_os(driverkit)
+ #define TARGET_OS_OSX 0
+ #define TARGET_OS_IPHONE 0
+ #define TARGET_OS_IOS 0
+ #define TARGET_OS_WATCH 0
+
+ #define TARGET_OS_TV 0
+ #define TARGET_OS_SIMULATOR 0
+ #define TARGET_OS_EMBEDDED 0
+ #define TARGET_OS_RTKIT 0
+ #define TARGET_OS_MACCATALYST 0
+ #define TARGET_OS_MACCATALYST 0
+ #ifndef TARGET_OS_UIKITFORMAC
+ #define TARGET_OS_UIKITFORMAC 0
+ #endif
+ #define TARGET_OS_DRIVERKIT 1
+ #define DYNAMIC_TARGETS_ENABLED 1
+ #endif
+
+ #endif /* #if __has_builtin(__is_target_environment) */
+ #endif /* #if __has_builtin(__is_target_os) */
+ #endif /* #if __has_builtin(__is_target_vendor) */
+ #endif /* #if __has_builtin(__is_target_arch) */
+#endif /* #if defined(__has_builtin) */
+
+
+#ifndef DYNAMIC_TARGETS_ENABLED
+ #define DYNAMIC_TARGETS_ENABLED 0
+#endif /* DYNAMIC_TARGETS_ENABLED */
+
+/*
+ * gcc based compiler used on Mac OS X
+ */
+#if defined(__GNUC__) && ( defined(__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__MACOS_CLASSIC__) )
+ #define TARGET_OS_MAC 1
+ #define TARGET_OS_WIN32 0
+ #define TARGET_OS_UNIX 0
+
+ #if !DYNAMIC_TARGETS_ENABLED
+ #define TARGET_OS_OSX 1
+ #define TARGET_OS_IPHONE 0
+ #define TARGET_OS_IOS 0
+ #define TARGET_OS_WATCH 0
+
+ #define TARGET_OS_TV 0
+ #define TARGET_OS_MACCATALYST 0
+ #define TARGET_OS_MACCATALYST 0
+ #ifndef TARGET_OS_UIKITFORMAC
+ #define TARGET_OS_UIKITFORMAC 0
+ #endif
+ #define TARGET_OS_SIMULATOR 0
+ #define TARGET_OS_EMBEDDED 0
+ #define TARGET_OS_RTKIT 0
+ #define TARGET_OS_DRIVERKIT 0
+ #endif
+
+ #define TARGET_IPHONE_SIMULATOR TARGET_OS_SIMULATOR /* deprecated */
+ #define TARGET_OS_NANO TARGET_OS_WATCH /* deprecated */
+
+ #define TARGET_ABI_USES_IOS_VALUES (!TARGET_CPU_X86_64 || (TARGET_OS_IPHONE && !TARGET_OS_MACCATALYST))
+ #if defined(__ppc__)
+ #define TARGET_CPU_PPC 1
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #define TARGET_RT_LITTLE_ENDIAN 0
+ #define TARGET_RT_BIG_ENDIAN 1
+ #define TARGET_RT_64_BIT 0
+ #ifdef __MACOS_CLASSIC__
+ #define TARGET_RT_MAC_CFM 1
+ #define TARGET_RT_MAC_MACHO 0
+ #else
+ #define TARGET_RT_MAC_CFM 0
+ #define TARGET_RT_MAC_MACHO 1
+ #endif
+ #elif defined(__ppc64__)
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 1
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #define TARGET_RT_LITTLE_ENDIAN 0
+ #define TARGET_RT_BIG_ENDIAN 1
+ #define TARGET_RT_64_BIT 1
+ #define TARGET_RT_MAC_CFM 0
+ #define TARGET_RT_MAC_MACHO 1
+ #elif defined(__i386__)
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 1
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #define TARGET_RT_MAC_CFM 0
+ #define TARGET_RT_MAC_MACHO 1
+ #define TARGET_RT_LITTLE_ENDIAN 1
+ #define TARGET_RT_BIG_ENDIAN 0
+ #define TARGET_RT_64_BIT 0
+ #elif defined(__x86_64__)
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 1
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #define TARGET_RT_MAC_CFM 0
+ #define TARGET_RT_MAC_MACHO 1
+ #define TARGET_RT_LITTLE_ENDIAN 1
+ #define TARGET_RT_BIG_ENDIAN 0
+ #define TARGET_RT_64_BIT 1
+ #elif defined(__arm__)
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_ARM 1
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #define TARGET_RT_MAC_CFM 0
+ #define TARGET_RT_MAC_MACHO 1
+ #define TARGET_RT_LITTLE_ENDIAN 1
+ #define TARGET_RT_BIG_ENDIAN 0
+ #define TARGET_RT_64_BIT 0
+ #elif defined(__arm64__)
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 1
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #define TARGET_RT_MAC_CFM 0
+ #define TARGET_RT_MAC_MACHO 1
+ #define TARGET_RT_LITTLE_ENDIAN 1
+ #define TARGET_RT_BIG_ENDIAN 0
+ #if __LP64__
+ #define TARGET_RT_64_BIT 1
+ #else
+ #define TARGET_RT_64_BIT 0
+ #endif
+ #else
+ #error unrecognized GNU C compiler
+ #endif
+
+
+
+/*
+ * CodeWarrior compiler from Metrowerks/Motorola
+ */
+#elif defined(__MWERKS__)
+ #define TARGET_OS_MAC 1
+ #define TARGET_OS_WIN32 0
+ #define TARGET_OS_UNIX 0
+ #define TARGET_OS_EMBEDDED 0
+ #if defined(__POWERPC__)
+ #define TARGET_CPU_PPC 1
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #define TARGET_RT_LITTLE_ENDIAN 0
+ #define TARGET_RT_BIG_ENDIAN 1
+ #elif defined(__INTEL__)
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 1
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #define TARGET_RT_LITTLE_ENDIAN 1
+ #define TARGET_RT_BIG_ENDIAN 0
+ #else
+ #error unknown Metrowerks CPU type
+ #endif
+ #define TARGET_RT_64_BIT 0
+ #ifdef __MACH__
+ #define TARGET_RT_MAC_CFM 0
+ #define TARGET_RT_MAC_MACHO 1
+ #else
+ #define TARGET_RT_MAC_CFM 1
+ #define TARGET_RT_MAC_MACHO 0
+ #endif
+
+/*
+ * unknown compiler
+ */
+#else
+ #if defined(TARGET_CPU_PPC) && TARGET_CPU_PPC
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #elif defined(TARGET_CPU_PPC64) && TARGET_CPU_PPC64
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #elif defined(TARGET_CPU_X86) && TARGET_CPU_X86
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #elif defined(TARGET_CPU_X86_64) && TARGET_CPU_X86_64
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #elif defined(TARGET_CPU_ARM) && TARGET_CPU_ARM
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #elif defined(TARGET_CPU_ARM64) && TARGET_CPU_ARM64
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_PPC64 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_X86_64 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #else
+ /*
+ NOTE: If your compiler errors out here then support for your compiler
+ has not yet been added to TargetConditionals.h.
+
+ TargetConditionals.h is designed to be plug-and-play. It auto detects
+ which compiler is being run and configures the TARGET_ conditionals
+ appropriately.
+
+ The short term work around is to set the TARGET_CPU_ and TARGET_OS_
+ on the command line to the compiler (e.g. -DTARGET_CPU_MIPS=1 -DTARGET_OS_UNIX=1)
+
+ The long term solution is to add a new case to this file which
+ auto detects your compiler and sets up the TARGET_ conditionals.
+ Then submit the changes to Apple Computer.
+ */
+ #error TargetConditionals.h: unknown compiler (see comment above)
+ #define TARGET_CPU_PPC 0
+ #define TARGET_CPU_68K 0
+ #define TARGET_CPU_X86 0
+ #define TARGET_CPU_ARM 0
+ #define TARGET_CPU_ARM64 0
+ #define TARGET_CPU_MIPS 0
+ #define TARGET_CPU_SPARC 0
+ #define TARGET_CPU_ALPHA 0
+ #endif
+ #define TARGET_OS_MAC 1
+ #define TARGET_OS_WIN32 0
+ #define TARGET_OS_UNIX 0
+ #define TARGET_OS_EMBEDDED 0
+ #if TARGET_CPU_PPC || TARGET_CPU_PPC64
+ #define TARGET_RT_BIG_ENDIAN 1
+ #define TARGET_RT_LITTLE_ENDIAN 0
+ #else
+ #define TARGET_RT_BIG_ENDIAN 0
+ #define TARGET_RT_LITTLE_ENDIAN 1
+ #endif
+ #if TARGET_CPU_PPC64 || TARGET_CPU_X86_64
+ #define TARGET_RT_64_BIT 1
+ #else
+ #define TARGET_RT_64_BIT 0
+ #endif
+ #ifdef __MACH__
+ #define TARGET_RT_MAC_MACHO 1
+ #define TARGET_RT_MAC_CFM 0
+ #else
+ #define TARGET_RT_MAC_MACHO 0
+ #define TARGET_RT_MAC_CFM 1
+ #endif
+
+#endif
+
+#endif /* __TARGETCONDITIONALS__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/_ctermid.h b/lib/libc/include/aarch64-macos-gnu/_ctermid.h
new file mode 100644
index 0000000000..defba5353b
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/_ctermid.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2000, 2002-2006, 2008-2010, 2012, 2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _CTERMID_H_
+#define _CTERMID_H_
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+char *ctermid(char *);
+
+__END_DECLS
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/_limits.h b/lib/libc/include/aarch64-macos-gnu/arm/_limits.h
new file mode 100644
index 0000000000..dd9eb5c2be
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/_limits.h
@@ -0,0 +1,9 @@
+/*
+ * Copyright (c) 2004-2007 Apple Inc. All rights reserved.
+ */
+#ifndef _ARM__LIMITS_H_
+#define _ARM__LIMITS_H_
+
+#define __DARWIN_CLK_TCK 100 /* ticks per second */
+
+#endif /* _ARM__LIMITS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/_mcontext.h b/lib/libc/include/aarch64-macos-gnu/arm/_mcontext.h
new file mode 100644
index 0000000000..72253cfbac
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/_mcontext.h
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef __ARM_MCONTEXT_H_
+#define __ARM_MCONTEXT_H_
+
+#include <sys/cdefs.h> /* __DARWIN_UNIX03 */
+#include <sys/appleapiopts.h>
+#include <mach/machine/_structs.h>
+
+#ifndef _STRUCT_MCONTEXT32
+#if __DARWIN_UNIX03
+#define _STRUCT_MCONTEXT32 struct __darwin_mcontext32
+_STRUCT_MCONTEXT32
+{
+ _STRUCT_ARM_EXCEPTION_STATE __es;
+ _STRUCT_ARM_THREAD_STATE __ss;
+ _STRUCT_ARM_VFP_STATE __fs;
+};
+
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_MCONTEXT32 struct mcontext32
+_STRUCT_MCONTEXT32
+{
+ _STRUCT_ARM_EXCEPTION_STATE es;
+ _STRUCT_ARM_THREAD_STATE ss;
+ _STRUCT_ARM_VFP_STATE fs;
+};
+
+#endif /* __DARWIN_UNIX03 */
+#endif /* _STRUCT_MCONTEXT32 */
+
+
+#ifndef _STRUCT_MCONTEXT64
+#if __DARWIN_UNIX03
+#define _STRUCT_MCONTEXT64 struct __darwin_mcontext64
+_STRUCT_MCONTEXT64
+{
+ _STRUCT_ARM_EXCEPTION_STATE64 __es;
+ _STRUCT_ARM_THREAD_STATE64 __ss;
+ _STRUCT_ARM_NEON_STATE64 __ns;
+};
+
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_MCONTEXT64 struct mcontext64
+_STRUCT_MCONTEXT64
+{
+ _STRUCT_ARM_EXCEPTION_STATE64 es;
+ _STRUCT_ARM_THREAD_STATE64 ss;
+ _STRUCT_ARM_NEON_STATE64 ns;
+};
+#endif /* __DARWIN_UNIX03 */
+#endif /* _STRUCT_MCONTEXT32 */
+
+#ifndef _MCONTEXT_T
+#define _MCONTEXT_T
+#if defined(__arm64__)
+typedef _STRUCT_MCONTEXT64 *mcontext_t;
+#define _STRUCT_MCONTEXT _STRUCT_MCONTEXT64
+#else
+typedef _STRUCT_MCONTEXT32 *mcontext_t;
+#define _STRUCT_MCONTEXT _STRUCT_MCONTEXT32
+#endif
+#endif /* _MCONTEXT_T */
+
+#endif /* __ARM_MCONTEXT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/_param.h b/lib/libc/include/aarch64-macos-gnu/arm/_param.h
new file mode 100644
index 0000000000..81c5bf53cf
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/_param.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2006-2007 Apple Inc. All rights reserved.
+ */
+
+#ifndef _ARM__PARAM_H_
+#define _ARM__PARAM_H_
+
+#include <arm/_types.h>
+
+/*
+ * Round p (pointer or byte index) up to a correctly-aligned value for all
+ * data types (int, long, ...). The result is unsigned int and must be
+ * cast to any desired pointer type.
+ */
+#define __DARWIN_ALIGNBYTES (sizeof(__darwin_size_t) - 1)
+#define __DARWIN_ALIGN(p) ((__darwin_size_t)((__darwin_size_t)(p) + __DARWIN_ALIGNBYTES) &~ __DARWIN_ALIGNBYTES)
+
+#define __DARWIN_ALIGNBYTES32 (sizeof(__uint32_t) - 1)
+#define __DARWIN_ALIGN32(p) ((__darwin_size_t)((__darwin_size_t)(p) + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
+
+
+#endif /* _ARM__PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/_types.h b/lib/libc/include/aarch64-macos-gnu/arm/_types.h
new file mode 100644
index 0000000000..d6c4de8fac
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/_types.h
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ */
+#ifndef _BSD_ARM__TYPES_H_
+#define _BSD_ARM__TYPES_H_
+
+/*
+ * This header file contains integer types. It's intended to also contain
+ * flotaing point and other arithmetic types, as needed, later.
+ */
+
+#ifdef __GNUC__
+typedef __signed char __int8_t;
+#else /* !__GNUC__ */
+typedef char __int8_t;
+#endif /* !__GNUC__ */
+typedef unsigned char __uint8_t;
+typedef short __int16_t;
+typedef unsigned short __uint16_t;
+typedef int __int32_t;
+typedef unsigned int __uint32_t;
+typedef long long __int64_t;
+typedef unsigned long long __uint64_t;
+
+typedef long __darwin_intptr_t;
+typedef unsigned int __darwin_natural_t;
+
+/*
+ * The rune type below is declared to be an ``int'' instead of the more natural
+ * ``unsigned long'' or ``long''. Two things are happening here. It is not
+ * unsigned so that EOF (-1) can be naturally assigned to it and used. Also,
+ * it looks like 10646 will be a 31 bit standard. This means that if your
+ * ints cannot hold 32 bits, you will be in trouble. The reason an int was
+ * chosen over a long is that the is*() and to*() routines take ints (says
+ * ANSI C), but they use __darwin_ct_rune_t instead of int. By changing it
+ * here, you lose a bit of ANSI conformance, but your programs will still
+ * work.
+ *
+ * NOTE: rune_t is not covered by ANSI nor other standards, and should not
+ * be instantiated outside of lib/libc/locale. Use wchar_t. wchar_t and
+ * rune_t must be the same type. Also wint_t must be no narrower than
+ * wchar_t, and should also be able to hold all members of the largest
+ * character set plus one extra value (WEOF). wint_t must be at least 16 bits.
+ */
+
+typedef int __darwin_ct_rune_t; /* ct_rune_t */
+
+/*
+ * mbstate_t is an opaque object to keep conversion state, during multibyte
+ * stream conversions. The content must not be referenced by user programs.
+ */
+typedef union {
+ char __mbstate8[128];
+ long long _mbstateL; /* for alignment */
+} __mbstate_t;
+
+typedef __mbstate_t __darwin_mbstate_t; /* mbstate_t */
+
+#if defined(__PTRDIFF_TYPE__)
+typedef __PTRDIFF_TYPE__ __darwin_ptrdiff_t; /* ptr1 - ptr2 */
+#elif defined(__LP64__)
+typedef long __darwin_ptrdiff_t; /* ptr1 - ptr2 */
+#else
+typedef int __darwin_ptrdiff_t; /* ptr1 - ptr2 */
+#endif /* __GNUC__ */
+
+#if defined(__SIZE_TYPE__)
+typedef __SIZE_TYPE__ __darwin_size_t; /* sizeof() */
+#else
+typedef unsigned long __darwin_size_t; /* sizeof() */
+#endif
+
+#if (__GNUC__ > 2)
+typedef __builtin_va_list __darwin_va_list; /* va_list */
+#else
+typedef void * __darwin_va_list; /* va_list */
+#endif
+
+#if defined(__WCHAR_TYPE__)
+typedef __WCHAR_TYPE__ __darwin_wchar_t; /* wchar_t */
+#else
+typedef __darwin_ct_rune_t __darwin_wchar_t; /* wchar_t */
+#endif
+
+typedef __darwin_wchar_t __darwin_rune_t; /* rune_t */
+
+#if defined(__WINT_TYPE__)
+typedef __WINT_TYPE__ __darwin_wint_t; /* wint_t */
+#else
+typedef __darwin_ct_rune_t __darwin_wint_t; /* wint_t */
+#endif
+
+typedef unsigned long __darwin_clock_t; /* clock() */
+typedef __uint32_t __darwin_socklen_t; /* socklen_t (duh) */
+typedef long __darwin_ssize_t; /* byte count or error */
+typedef long __darwin_time_t; /* time() */
+
+#endif /* _BSD_ARM__TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/arch.h b/lib/libc/include/aarch64-macos-gnu/arm/arch.h
new file mode 100644
index 0000000000..e93e87bf06
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/arch.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _ARM_ARCH_H
+#define _ARM_ARCH_H
+
+/* Collect the __ARM_ARCH_*__ compiler flags into something easier to use. */
+#if defined (__ARM_ARCH_7A__) || defined (__ARM_ARCH_7S__) || defined (__ARM_ARCH_7F__) || defined (__ARM_ARCH_7K__)
+#define _ARM_ARCH_7
+#endif
+
+#if defined (_ARM_ARCH_7) || defined (__ARM_ARCH_6K__) || defined (__ARM_ARCH_6ZK__)
+#define _ARM_ARCH_6K
+#endif
+
+#if defined (_ARM_ARCH_7) || defined (__ARM_ARCH_6Z__) || defined (__ARM_ARCH_6ZK__)
+#define _ARM_ARCH_6Z
+#endif
+
+#if defined (__ARM_ARCH_6__) || defined (__ARM_ARCH_6J__) || \
+ defined (_ARM_ARCH_6Z) || defined (_ARM_ARCH_6K)
+#define _ARM_ARCH_6
+#endif
+
+#if defined (_ARM_ARCH_6) || defined (__ARM_ARCH_5E__) || \
+ defined (__ARM_ARCH_5TE__) || defined (__ARM_ARCH_5TEJ__)
+#define _ARM_ARCH_5E
+#endif
+
+#if defined (_ARM_ARCH_5E) || defined (__ARM_ARCH_5__) || \
+ defined (__ARM_ARCH_5T__)
+#define _ARM_ARCH_5
+#endif
+
+#if defined (_ARM_ARCH_5) || defined (__ARM_ARCH_4T__)
+#define _ARM_ARCH_4T
+#endif
+
+#if defined (_ARM_ARCH_4T) || defined (__ARM_ARCH_4__)
+#define _ARM_ARCH_4
+#endif
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/endian.h b/lib/libc/include/aarch64-macos-gnu/arm/endian.h
new file mode 100644
index 0000000000..d05874ecf4
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/endian.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ */
+/*
+ * Copyright 1995 NeXT Computer, Inc. All rights reserved.
+ */
+/*
+ * Copyright (c) 1987, 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)endian.h 8.1 (Berkeley) 6/11/93
+ */
+
+#ifndef _ARM__ENDIAN_H_
+#define _ARM__ENDIAN_H_
+
+#include <sys/cdefs.h>
+/*
+ * Define _NOQUAD if the compiler does NOT support 64-bit integers.
+ */
+/* #define _NOQUAD */
+
+/*
+ * Define the order of 32-bit words in 64-bit words.
+ */
+#define _QUAD_HIGHWORD 1
+#define _QUAD_LOWWORD 0
+
+/*
+ * Definitions for byte order, according to byte significance from low
+ * address to high.
+ */
+#define __DARWIN_LITTLE_ENDIAN 1234 /* LSB first: i386, vax */
+#define __DARWIN_BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */
+#define __DARWIN_PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */
+
+#define __DARWIN_BYTE_ORDER __DARWIN_LITTLE_ENDIAN
+
+#if defined(KERNEL) || (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+
+#define LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN
+#define BIG_ENDIAN __DARWIN_BIG_ENDIAN
+#define PDP_ENDIAN __DARWIN_PDP_ENDIAN
+
+#define BYTE_ORDER __DARWIN_BYTE_ORDER
+
+#include <sys/_endian.h>
+
+#endif /* defined(KERNEL) || (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) */
+#endif /* !_ARM__ENDIAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/limits.h b/lib/libc/include/aarch64-macos-gnu/arm/limits.h
new file mode 100644
index 0000000000..f889c48b6a
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/limits.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ */
+/*
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)limits.h 8.3 (Berkeley) 1/4/94
+ */
+
+#ifndef _ARM_LIMITS_H_
+#define _ARM_LIMITS_H_
+
+#include <sys/cdefs.h>
+#include <arm/_limits.h>
+
+#define CHAR_BIT 8 /* number of bits in a char */
+#define MB_LEN_MAX 6 /* Allow 31 bit UTF2 */
+
+#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+#define CLK_TCK __DARWIN_CLK_TCK /* ticks per second */
+#endif /* !_ANSI_SOURCE && (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * According to ANSI (section 2.2.4.2), the values below must be usable by
+ * #if preprocessing directives. Additionally, the expression must have the
+ * same type as would an expression that is an object of the corresponding
+ * type converted according to the integral promotions. The subtraction for
+ * INT_MIN and LONG_MIN is so the value is not unsigned; 2147483648 is an
+ * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
+ * These numbers work for pcc as well. The UINT_MAX and ULONG_MAX values
+ * are written as hex so that GCC will be quiet about large integer constants.
+ */
+#define SCHAR_MAX 127 /* min value for a signed char */
+#define SCHAR_MIN (-128) /* max value for a signed char */
+
+#define UCHAR_MAX 255 /* max value for an unsigned char */
+#define CHAR_MAX 127 /* max value for a char */
+#define CHAR_MIN (-128) /* min value for a char */
+
+#define USHRT_MAX 65535 /* max value for an unsigned short */
+#define SHRT_MAX 32767 /* max value for a short */
+#define SHRT_MIN (-32768) /* min value for a short */
+
+#define UINT_MAX 0xffffffff /* max value for an unsigned int */
+#define INT_MAX 2147483647 /* max value for an int */
+#define INT_MIN (-2147483647-1) /* min value for an int */
+
+#ifdef __LP64__
+#define ULONG_MAX 0xffffffffffffffffUL /* max unsigned long */
+#define LONG_MAX 0x7fffffffffffffffL /* max signed long */
+#define LONG_MIN (-0x7fffffffffffffffL-1) /* min signed long */
+#else /* !__LP64__ */
+#define ULONG_MAX 0xffffffffUL /* max unsigned long */
+#define LONG_MAX 2147483647L /* max signed long */
+#define LONG_MIN (-2147483647L-1) /* min signed long */
+#endif /* __LP64__ */
+
+#define ULLONG_MAX 0xffffffffffffffffULL /* max unsigned long long */
+#define LLONG_MAX 0x7fffffffffffffffLL /* max signed long long */
+#define LLONG_MIN (-0x7fffffffffffffffLL-1) /* min signed long long */
+
+#if !defined(_ANSI_SOURCE)
+#ifdef __LP64__
+#define LONG_BIT 64
+#else /* !__LP64__ */
+#define LONG_BIT 32
+#endif /* __LP64__ */
+#define SSIZE_MAX LONG_MAX /* max value for a ssize_t */
+#define WORD_BIT 32
+
+#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE)
+#define SIZE_T_MAX ULONG_MAX /* max value for a size_t */
+
+#define UQUAD_MAX ULLONG_MAX
+#define QUAD_MAX LLONG_MAX
+#define QUAD_MIN LLONG_MIN
+
+#endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE */
+#endif /* !_ANSI_SOURCE */
+
+#endif /* _ARM_LIMITS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/param.h b/lib/libc/include/aarch64-macos-gnu/arm/param.h
new file mode 100644
index 0000000000..e70f68f9c3
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/param.h
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2000-2010 Apple Inc. All rights reserved.
+ */
+/*-
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)param.h 8.1 (Berkeley) 4/4/95
+ */
+
+/*
+ * Machine dependent constants for ARM
+ */
+
+#ifndef _ARM_PARAM_H_
+#define _ARM_PARAM_H_
+
+#include <arm/_param.h>
+
+/*
+ * Round p (pointer or byte index) up to a correctly-aligned value for all
+ * data types (int, long, ...). The result is unsigned int and must be
+ * cast to any desired pointer type.
+ */
+#define ALIGNBYTES __DARWIN_ALIGNBYTES
+#define ALIGN(p) __DARWIN_ALIGN(p)
+
+#define NBPG 4096 /* bytes/page */
+#define PGOFSET (NBPG-1) /* byte offset into page */
+#define PGSHIFT 12 /* LOG2(NBPG) */
+
+#define DEV_BSIZE 512
+#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
+#define BLKDEV_IOSIZE 2048
+#define MAXPHYS (64 * 1024) /* max raw I/O transfer size */
+
+#define CLSIZE 1
+#define CLSIZELOG2 0
+
+/*
+ * Constants related to network buffer management.
+ * MCLBYTES must be no larger than CLBYTES (the software page size), and,
+ * on machines that exchange pages of input or output buffers with mbuf
+ * clusters (MAPPED_MBUFS), MCLBYTES must also be an integral multiple
+ * of the hardware page size.
+ */
+#define MSIZESHIFT 8 /* 256 */
+#define MSIZE (1 << MSIZESHIFT) /* size of an mbuf */
+#define MCLSHIFT 11 /* 2048 */
+#define MCLBYTES (1 << MCLSHIFT) /* size of an mbuf cluster */
+#define MBIGCLSHIFT 12 /* 4096 */
+#define MBIGCLBYTES (1 << MBIGCLSHIFT) /* size of a big cluster */
+#define M16KCLSHIFT 14 /* 16384 */
+#define M16KCLBYTES (1 << M16KCLSHIFT) /* size of a jumbo cluster */
+
+#define MCLOFSET (MCLBYTES - 1)
+#ifndef NMBCLUSTERS
+#define NMBCLUSTERS CONFIG_NMBCLUSTERS /* cl map size */
+#endif
+
+/*
+ * Some macros for units conversion
+ */
+/* Core clicks (NeXT_page_size bytes) to segments and vice versa */
+#define ctos(x) (x)
+#define stoc(x) (x)
+
+/* Core clicks (4096 bytes) to disk blocks */
+#define ctod(x) ((x)<<(PGSHIFT-DEV_BSHIFT))
+#define dtoc(x) ((x)>>(PGSHIFT-DEV_BSHIFT))
+#define dtob(x) ((x)<<DEV_BSHIFT)
+
+/* clicks to bytes */
+#define ctob(x) ((x)<<PGSHIFT)
+
+/* bytes to clicks */
+#define btoc(x) (((unsigned)(x)+(NBPG-1))>>PGSHIFT)
+
+#ifdef __APPLE__
+#define btodb(bytes, devBlockSize) \
+ ((unsigned)(bytes) / devBlockSize)
+#define dbtob(db, devBlockSize) \
+ ((unsigned)(db) * devBlockSize)
+#else
+#define btodb(bytes) /* calculates (bytes / DEV_BSIZE) */ \
+ ((unsigned)(bytes) >> DEV_BSHIFT)
+#define dbtob(db) /* calculates (db * DEV_BSIZE) */ \
+ ((unsigned)(db) << DEV_BSHIFT)
+#endif
+
+/*
+ * Map a ``block device block'' to a file system block.
+ * This should be device dependent, and will be if we
+ * add an entry to cdevsw/bdevsw for that purpose.
+ * For now though just use DEV_BSIZE.
+ */
+#define bdbtofsb(bn) ((bn) / (BLKDEV_IOSIZE/DEV_BSIZE))
+
+/*
+ * Macros to decode (and encode) processor status word.
+ */
+#define STATUS_WORD(rpl, ipl) (((ipl) << 8) | (rpl))
+#define USERMODE(x) (((x) & 3) == 3)
+#define BASEPRI(x) (((x) & (255 << 8)) == 0)
+
+
+#if defined(KERNEL) || defined(STANDALONE)
+#define DELAY(n) delay(n)
+
+#else /* defined(KERNEL) || defined(STANDALONE) */
+#define DELAY(n) { int N = (n); while (--N > 0); }
+#endif /* defined(KERNEL) || defined(STANDALONE) */
+
+#endif /* _ARM_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/signal.h b/lib/libc/include/aarch64-macos-gnu/arm/signal.h
new file mode 100644
index 0000000000..80d2564826
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/signal.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2000-2009 Apple, Inc. All rights reserved.
+ */
+/*
+ * Copyright (c) 1992 NeXT Computer, Inc.
+ *
+ */
+
+#ifndef _ARM_SIGNAL_
+#define _ARM_SIGNAL_ 1
+
+#include <sys/cdefs.h>
+
+#ifndef _ANSI_SOURCE
+typedef int sig_atomic_t;
+#endif /* ! _ANSI_SOURCE */
+
+#endif /* _ARM_SIGNAL_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/arm/types.h b/lib/libc/include/aarch64-macos-gnu/arm/types.h
new file mode 100644
index 0000000000..9a6c23bb9a
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/arm/types.h
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2000-2008 Apple Inc. All rights reserved.
+ */
+/*
+ * Copyright 1995 NeXT Computer, Inc. All rights reserved.
+ */
+/*
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)types.h 8.3 (Berkeley) 1/5/94
+ */
+
+#ifndef _MACHTYPES_H_
+#define _MACHTYPES_H_
+
+#ifndef __ASSEMBLER__
+#include <arm/_types.h>
+#include <sys/cdefs.h>
+/*
+ * Basic integral types. Omit the typedef if
+ * not possible for a machine/compiler combination.
+ */
+#include <sys/_types/_int8_t.h>
+#include <sys/_types/_int16_t.h>
+#include <sys/_types/_int32_t.h>
+#include <sys/_types/_int64_t.h>
+
+#include <sys/_types/_u_int8_t.h>
+#include <sys/_types/_u_int16_t.h>
+#include <sys/_types/_u_int32_t.h>
+#include <sys/_types/_u_int64_t.h>
+
+#if __LP64__
+typedef int64_t register_t;
+#else
+typedef int32_t register_t;
+#endif
+
+#include <sys/_types/_intptr_t.h>
+#include <sys/_types/_uintptr_t.h>
+
+#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+/* These types are used for reserving the largest possible size. */
+#ifdef __arm64__
+typedef u_int64_t user_addr_t;
+typedef u_int64_t user_size_t;
+typedef int64_t user_ssize_t;
+typedef int64_t user_long_t;
+typedef u_int64_t user_ulong_t;
+typedef int64_t user_time_t;
+typedef int64_t user_off_t;
+#else
+typedef u_int32_t user_addr_t;
+typedef u_int32_t user_size_t;
+typedef int32_t user_ssize_t;
+typedef int32_t user_long_t;
+typedef u_int32_t user_ulong_t;
+typedef int32_t user_time_t;
+typedef int64_t user_off_t;
+#endif
+
+#define USER_ADDR_NULL ((user_addr_t) 0)
+#define CAST_USER_ADDR_T(a_ptr) ((user_addr_t)((uintptr_t)(a_ptr)))
+
+
+#endif /* !_ANSI_SOURCE && (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/* This defines the size of syscall arguments after copying into the kernel: */
+#if defined(__arm__)
+typedef u_int32_t syscall_arg_t;
+#elif defined(__arm64__)
+typedef u_int64_t syscall_arg_t;
+#else
+#error Unknown architecture.
+#endif
+
+#endif /* __ASSEMBLER__ */
+#endif /* _MACHTYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/bsm/audit.h b/lib/libc/include/aarch64-macos-gnu/bsm/audit.h
new file mode 100644
index 0000000000..e6be5e8dab
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/bsm/audit.h
@@ -0,0 +1,391 @@
+/*-
+ * Copyright (c) 2005-2009 Apple Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $P4: //depot/projects/trustedbsd/openbsm/sys/bsm/audit.h#10 $
+ */
+
+#ifndef _BSM_AUDIT_H
+#define _BSM_AUDIT_H
+
+#include <sys/param.h>
+#include <sys/types.h>
+
+#define AUDIT_RECORD_MAGIC 0x828a0f1b
+#define MAX_AUDIT_RECORDS 20
+#define MAXAUDITDATA (0x8000 - 1)
+#define MAX_AUDIT_RECORD_SIZE MAXAUDITDATA
+#define MIN_AUDIT_FILE_SIZE (512 * 1024)
+
+/*
+ * Minimum noumber of free blocks on the filesystem containing the audit
+ * log necessary to avoid a hard log rotation. DO NOT SET THIS VALUE TO 0
+ * as the kernel does an unsigned compare, plus we want to leave a few blocks
+ * free so userspace can terminate the log, etc.
+ */
+#define AUDIT_HARD_LIMIT_FREE_BLOCKS 4
+
+/*
+ * Triggers for the audit daemon.
+ */
+#define AUDIT_TRIGGER_MIN 1
+#define AUDIT_TRIGGER_LOW_SPACE 1 /* Below low watermark. */
+#define AUDIT_TRIGGER_ROTATE_KERNEL 2 /* Kernel requests rotate. */
+#define AUDIT_TRIGGER_READ_FILE 3 /* Re-read config file. */
+#define AUDIT_TRIGGER_CLOSE_AND_DIE 4 /* Terminate audit. */
+#define AUDIT_TRIGGER_NO_SPACE 5 /* Below min free space. */
+#define AUDIT_TRIGGER_ROTATE_USER 6 /* User requests rotate. */
+#define AUDIT_TRIGGER_INITIALIZE 7 /* User initialize of auditd. */
+#define AUDIT_TRIGGER_EXPIRE_TRAILS 8 /* User expiration of trails. */
+#define AUDIT_TRIGGER_MAX 8
+
+/*
+ * The special device filename (FreeBSD).
+ */
+#define AUDITDEV_FILENAME "audit"
+#define AUDIT_TRIGGER_FILE ("/dev/" AUDITDEV_FILENAME)
+
+/*
+ * Pre-defined audit IDs
+ */
+#define AU_DEFAUDITID (uid_t)(-1)
+#define AU_DEFAUDITSID 0
+#define AU_ASSIGN_ASID -1
+
+/*
+ * IPC types.
+ */
+#define AT_IPC_MSG ((unsigned char)1) /* Message IPC id. */
+#define AT_IPC_SEM ((unsigned char)2) /* Semaphore IPC id. */
+#define AT_IPC_SHM ((unsigned char)3) /* Shared mem IPC id. */
+
+/*
+ * Audit conditions.
+ */
+#define AUC_UNSET 0
+#define AUC_AUDITING 1
+#define AUC_NOAUDIT 2
+#define AUC_DISABLED -1
+
+/*
+ * auditon(2) commands.
+ */
+#define A_OLDGETPOLICY 2
+#define A_OLDSETPOLICY 3
+#define A_GETKMASK 4
+#define A_SETKMASK 5
+#define A_OLDGETQCTRL 6
+#define A_OLDSETQCTRL 7
+#define A_GETCWD 8
+#define A_GETCAR 9
+#define A_GETSTAT 12
+#define A_SETSTAT 13
+#define A_SETUMASK 14
+#define A_SETSMASK 15
+#define A_OLDGETCOND 20
+#define A_OLDSETCOND 21
+#define A_GETCLASS 22
+#define A_SETCLASS 23
+#define A_GETPINFO 24
+#define A_SETPMASK 25
+#define A_SETFSIZE 26
+#define A_GETFSIZE 27
+#define A_GETPINFO_ADDR 28
+#define A_GETKAUDIT 29
+#define A_SETKAUDIT 30
+#define A_SENDTRIGGER 31
+#define A_GETSINFO_ADDR 32
+#define A_GETPOLICY 33
+#define A_SETPOLICY 34
+#define A_GETQCTRL 35
+#define A_SETQCTRL 36
+#define A_GETCOND 37
+#define A_SETCOND 38
+#define A_GETSFLAGS 39
+#define A_SETSFLAGS 40
+#define A_GETCTLMODE 41
+#define A_SETCTLMODE 42
+#define A_GETEXPAFTER 43
+#define A_SETEXPAFTER 44
+
+/*
+ * Audit policy controls.
+ */
+#define AUDIT_CNT 0x0001
+#define AUDIT_AHLT 0x0002
+#define AUDIT_ARGV 0x0004
+#define AUDIT_ARGE 0x0008
+#define AUDIT_SEQ 0x0010
+#define AUDIT_WINDATA 0x0020
+#define AUDIT_USER 0x0040
+#define AUDIT_GROUP 0x0080
+#define AUDIT_TRAIL 0x0100
+#define AUDIT_PATH 0x0200
+#define AUDIT_SCNT 0x0400
+#define AUDIT_PUBLIC 0x0800
+#define AUDIT_ZONENAME 0x1000
+#define AUDIT_PERZONE 0x2000
+
+/*
+ * Default audit queue control parameters.
+ */
+#define AQ_HIWATER 100
+#define AQ_MAXHIGH 10000
+#define AQ_LOWATER 10
+#define AQ_BUFSZ MAXAUDITDATA
+#define AQ_MAXBUFSZ 1048576
+
+/*
+ * Default minimum percentage free space on file system.
+ */
+#define AU_FS_MINFREE 20
+
+/*
+ * Type definitions used indicating the length of variable length addresses
+ * in tokens containing addresses, such as header fields.
+ */
+#define AU_IPv4 4
+#define AU_IPv6 16
+
+/*
+ * Reserved audit class mask indicating which classes are unable to have
+ * events added or removed by unentitled processes.
+ */
+#define AU_CLASS_MASK_RESERVED 0x10000000
+
+/*
+ * Audit control modes
+ */
+#define AUDIT_CTLMODE_NORMAL ((unsigned char)1)
+#define AUDIT_CTLMODE_EXTERNAL ((unsigned char)2)
+
+/*
+ * Audit file expire_after op modes
+ */
+#define AUDIT_EXPIRE_OP_AND ((unsigned char)0)
+#define AUDIT_EXPIRE_OP_OR ((unsigned char)1)
+
+__BEGIN_DECLS
+
+typedef uid_t au_id_t;
+typedef pid_t au_asid_t;
+typedef u_int16_t au_event_t;
+typedef u_int16_t au_emod_t;
+typedef u_int32_t au_class_t;
+typedef u_int64_t au_asflgs_t __attribute__ ((aligned(8)));
+typedef unsigned char au_ctlmode_t;
+
+struct au_tid {
+ dev_t port;
+ u_int32_t machine;
+};
+typedef struct au_tid au_tid_t;
+
+struct au_tid_addr {
+ dev_t at_port;
+ u_int32_t at_type;
+ u_int32_t at_addr[4];
+};
+typedef struct au_tid_addr au_tid_addr_t;
+
+struct au_mask {
+ unsigned int am_success; /* Success bits. */
+ unsigned int am_failure; /* Failure bits. */
+};
+typedef struct au_mask au_mask_t;
+
+struct auditinfo {
+ au_id_t ai_auid; /* Audit user ID. */
+ au_mask_t ai_mask; /* Audit masks. */
+ au_tid_t ai_termid; /* Terminal ID. */
+ au_asid_t ai_asid; /* Audit session ID. */
+};
+typedef struct auditinfo auditinfo_t;
+
+struct auditinfo_addr {
+ au_id_t ai_auid; /* Audit user ID. */
+ au_mask_t ai_mask; /* Audit masks. */
+ au_tid_addr_t ai_termid; /* Terminal ID. */
+ au_asid_t ai_asid; /* Audit session ID. */
+ au_asflgs_t ai_flags; /* Audit session flags. */
+};
+typedef struct auditinfo_addr auditinfo_addr_t;
+
+struct auditpinfo {
+ pid_t ap_pid; /* ID of target process. */
+ au_id_t ap_auid; /* Audit user ID. */
+ au_mask_t ap_mask; /* Audit masks. */
+ au_tid_t ap_termid; /* Terminal ID. */
+ au_asid_t ap_asid; /* Audit session ID. */
+};
+typedef struct auditpinfo auditpinfo_t;
+
+struct auditpinfo_addr {
+ pid_t ap_pid; /* ID of target process. */
+ au_id_t ap_auid; /* Audit user ID. */
+ au_mask_t ap_mask; /* Audit masks. */
+ au_tid_addr_t ap_termid; /* Terminal ID. */
+ au_asid_t ap_asid; /* Audit session ID. */
+ au_asflgs_t ap_flags; /* Audit session flags. */
+};
+typedef struct auditpinfo_addr auditpinfo_addr_t;
+
+struct au_session {
+ auditinfo_addr_t *as_aia_p; /* Ptr to full audit info. */
+ au_mask_t as_mask; /* Process Audit Masks. */
+};
+typedef struct au_session au_session_t;
+
+struct au_expire_after {
+ time_t age; /* Age after which trail files should be expired */
+ size_t size; /* Aggregate trail size when files should be expired */
+ unsigned char op_type; /* Operator used with the above values to determine when files should be expired */
+};
+typedef struct au_expire_after au_expire_after_t;
+
+/*
+ * Contents of token_t are opaque outside of libbsm.
+ */
+typedef struct au_token token_t;
+
+/*
+ * Kernel audit queue control parameters:
+ * Default: Maximum:
+ * aq_hiwater: AQ_HIWATER (100) AQ_MAXHIGH (10000)
+ * aq_lowater: AQ_LOWATER (10) <aq_hiwater
+ * aq_bufsz: AQ_BUFSZ (32767) AQ_MAXBUFSZ (1048576)
+ * aq_delay: 20 20000 (not used)
+ */
+struct au_qctrl {
+ int aq_hiwater; /* Max # of audit recs in queue when */
+ /* threads with new ARs get blocked. */
+
+ int aq_lowater; /* # of audit recs in queue when */
+ /* blocked threads get unblocked. */
+
+ int aq_bufsz; /* Max size of audit record for audit(2). */
+ int aq_delay; /* Queue delay (not used). */
+ int aq_minfree; /* Minimum filesystem percent free space. */
+};
+typedef struct au_qctrl au_qctrl_t;
+
+/*
+ * Structure for the audit statistics.
+ */
+struct audit_stat {
+ unsigned int as_version;
+ unsigned int as_numevent;
+ int as_generated;
+ int as_nonattrib;
+ int as_kernel;
+ int as_audit;
+ int as_auditctl;
+ int as_enqueue;
+ int as_written;
+ int as_wblocked;
+ int as_rblocked;
+ int as_dropped;
+ int as_totalsize;
+ unsigned int as_memused;
+};
+typedef struct audit_stat au_stat_t;
+
+/*
+ * Structure for the audit file statistics.
+ */
+struct audit_fstat {
+ u_int64_t af_filesz;
+ u_int64_t af_currsz;
+};
+typedef struct audit_fstat au_fstat_t;
+
+/*
+ * Audit to event class mapping.
+ */
+struct au_evclass_map {
+ au_event_t ec_number;
+ au_class_t ec_class;
+};
+typedef struct au_evclass_map au_evclass_map_t;
+
+
+#if !defined(_KERNEL) && !defined(KERNEL)
+#include <Availability.h>
+#define __AUDIT_API_DEPRECATED __API_DEPRECATED("audit is deprecated", macos(10.4, 11.0))
+#else
+#define __AUDIT_API_DEPRECATED
+#endif
+
+/*
+ * Audit system calls.
+ */
+#if !defined(_KERNEL) && !defined(KERNEL)
+int audit(const void *, int)
+__AUDIT_API_DEPRECATED;
+int auditon(int, void *, int)
+__AUDIT_API_DEPRECATED;
+int auditctl(const char *)
+__AUDIT_API_DEPRECATED;
+int getauid(au_id_t *);
+int setauid(const au_id_t *);
+int getaudit_addr(struct auditinfo_addr *, int);
+int setaudit_addr(const struct auditinfo_addr *, int);
+
+#if defined(__APPLE__)
+#include <Availability.h>
+
+/*
+ * getaudit()/setaudit() are deprecated and have been replaced with
+ * wrappers to the getaudit_addr()/setaudit_addr() syscalls above.
+ */
+
+int getaudit(struct auditinfo *)
+__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8,
+ __IPHONE_2_0, __IPHONE_6_0);
+int setaudit(const struct auditinfo *)
+__OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_8,
+ __IPHONE_2_0, __IPHONE_6_0);
+#else
+
+int getaudit(struct auditinfo *)
+__AUDIT_API_DEPRECATED;
+int setaudit(const struct auditinfo *)
+__AUDIT_API_DEPRECATED;
+#endif /* !__APPLE__ */
+
+#ifdef __APPLE_API_PRIVATE
+#include <mach/port.h>
+mach_port_name_t audit_session_self(void);
+au_asid_t audit_session_join(mach_port_name_t port);
+int audit_session_port(au_asid_t asid, mach_port_name_t *portname);
+#endif /* __APPLE_API_PRIVATE */
+
+#endif /* defined(_KERNEL) || defined(KERNEL) */
+
+__END_DECLS
+
+#endif /* !_BSM_AUDIT_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/dispatch/block.h b/lib/libc/include/aarch64-macos-gnu/dispatch/block.h
new file mode 100644
index 0000000000..f4b9b9ead4
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/dispatch/block.h
@@ -0,0 +1,428 @@
+/*
+ * Copyright (c) 2014 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DISPATCH_BLOCK__
+#define __DISPATCH_BLOCK__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+#ifdef __BLOCKS__
+
+/*!
+ * @group Dispatch block objects
+ */
+
+DISPATCH_ASSUME_NONNULL_BEGIN
+
+__BEGIN_DECLS
+
+/*!
+ * @typedef dispatch_block_flags_t
+ * Flags to pass to the dispatch_block_create* functions.
+ *
+ * @const DISPATCH_BLOCK_BARRIER
+ * Flag indicating that a dispatch block object should act as a barrier block
+ * when submitted to a DISPATCH_QUEUE_CONCURRENT queue.
+ * See dispatch_barrier_async() for details.
+ * This flag has no effect when the dispatch block object is invoked directly.
+ *
+ * @const DISPATCH_BLOCK_DETACHED
+ * Flag indicating that a dispatch block object should execute disassociated
+ * from current execution context attributes such as os_activity_t
+ * and properties of the current IPC request (if any). With regard to QoS class,
+ * the behavior is the same as for DISPATCH_BLOCK_NO_QOS. If invoked directly,
+ * the block object will remove the other attributes from the calling thread for
+ * the duration of the block body (before applying attributes assigned to the
+ * block object, if any). If submitted to a queue, the block object will be
+ * executed with the attributes of the queue (or any attributes specifically
+ * assigned to the block object).
+ *
+ * @const DISPATCH_BLOCK_ASSIGN_CURRENT
+ * Flag indicating that a dispatch block object should be assigned the execution
+ * context attributes that are current at the time the block object is created.
+ * This applies to attributes such as QOS class, os_activity_t and properties of
+ * the current IPC request (if any). If invoked directly, the block object will
+ * apply these attributes to the calling thread for the duration of the block
+ * body. If the block object is submitted to a queue, this flag replaces the
+ * default behavior of associating the submitted block instance with the
+ * execution context attributes that are current at the time of submission.
+ * If a specific QOS class is assigned with DISPATCH_BLOCK_NO_QOS_CLASS or
+ * dispatch_block_create_with_qos_class(), that QOS class takes precedence over
+ * the QOS class assignment indicated by this flag.
+ *
+ * @const DISPATCH_BLOCK_NO_QOS_CLASS
+ * Flag indicating that a dispatch block object should be not be assigned a QOS
+ * class. If invoked directly, the block object will be executed with the QOS
+ * class of the calling thread. If the block object is submitted to a queue,
+ * this replaces the default behavior of associating the submitted block
+ * instance with the QOS class current at the time of submission.
+ * This flag is ignored if a specific QOS class is assigned with
+ * dispatch_block_create_with_qos_class().
+ *
+ * @const DISPATCH_BLOCK_INHERIT_QOS_CLASS
+ * Flag indicating that execution of a dispatch block object submitted to a
+ * queue should prefer the QOS class assigned to the queue over the QOS class
+ * assigned to the block (resp. associated with the block at the time of
+ * submission). The latter will only be used if the queue in question does not
+ * have an assigned QOS class, as long as doing so does not result in a QOS
+ * class lower than the QOS class inherited from the queue's target queue.
+ * This flag is the default when a dispatch block object is submitted to a queue
+ * for asynchronous execution and has no effect when the dispatch block object
+ * is invoked directly. It is ignored if DISPATCH_BLOCK_ENFORCE_QOS_CLASS is
+ * also passed.
+ *
+ * @const DISPATCH_BLOCK_ENFORCE_QOS_CLASS
+ * Flag indicating that execution of a dispatch block object submitted to a
+ * queue should prefer the QOS class assigned to the block (resp. associated
+ * with the block at the time of submission) over the QOS class assigned to the
+ * queue, as long as doing so will not result in a lower QOS class.
+ * This flag is the default when a dispatch block object is submitted to a queue
+ * for synchronous execution or when the dispatch block object is invoked
+ * directly.
+ */
+DISPATCH_OPTIONS(dispatch_block_flags, unsigned long,
+ DISPATCH_BLOCK_BARRIER
+ DISPATCH_ENUM_API_AVAILABLE(macos(10.10), ios(8.0)) = 0x1,
+ DISPATCH_BLOCK_DETACHED
+ DISPATCH_ENUM_API_AVAILABLE(macos(10.10), ios(8.0)) = 0x2,
+ DISPATCH_BLOCK_ASSIGN_CURRENT
+ DISPATCH_ENUM_API_AVAILABLE(macos(10.10), ios(8.0)) = 0x4,
+ DISPATCH_BLOCK_NO_QOS_CLASS
+ DISPATCH_ENUM_API_AVAILABLE(macos(10.10), ios(8.0)) = 0x8,
+ DISPATCH_BLOCK_INHERIT_QOS_CLASS
+ DISPATCH_ENUM_API_AVAILABLE(macos(10.10), ios(8.0)) = 0x10,
+ DISPATCH_BLOCK_ENFORCE_QOS_CLASS
+ DISPATCH_ENUM_API_AVAILABLE(macos(10.10), ios(8.0)) = 0x20,
+);
+
+/*!
+ * @function dispatch_block_create
+ *
+ * @abstract
+ * Create a new dispatch block object on the heap from an existing block and
+ * the given flags.
+ *
+ * @discussion
+ * The provided block is Block_copy'ed to the heap and retained by the newly
+ * created dispatch block object.
+ *
+ * The returned dispatch block object is intended to be submitted to a dispatch
+ * queue with dispatch_async() and related functions, but may also be invoked
+ * directly. Both operations can be performed an arbitrary number of times but
+ * only the first completed execution of a dispatch block object can be waited
+ * on with dispatch_block_wait() or observed with dispatch_block_notify().
+ *
+ * If the returned dispatch block object is submitted to a dispatch queue, the
+ * submitted block instance will be associated with the QOS class current at the
+ * time of submission, unless one of the following flags assigned a specific QOS
+ * class (or no QOS class) at the time of block creation:
+ * - DISPATCH_BLOCK_ASSIGN_CURRENT
+ * - DISPATCH_BLOCK_NO_QOS_CLASS
+ * - DISPATCH_BLOCK_DETACHED
+ * The QOS class the block object will be executed with also depends on the QOS
+ * class assigned to the queue and which of the following flags was specified or
+ * defaulted to:
+ * - DISPATCH_BLOCK_INHERIT_QOS_CLASS (default for asynchronous execution)
+ * - DISPATCH_BLOCK_ENFORCE_QOS_CLASS (default for synchronous execution)
+ * See description of dispatch_block_flags_t for details.
+ *
+ * If the returned dispatch block object is submitted directly to a serial queue
+ * and is configured to execute with a specific QOS class, the system will make
+ * a best effort to apply the necessary QOS overrides to ensure that blocks
+ * submitted earlier to the serial queue are executed at that same QOS class or
+ * higher.
+ *
+ * @param flags
+ * Configuration flags for the block object.
+ * Passing a value that is not a bitwise OR of flags from dispatch_block_flags_t
+ * results in NULL being returned.
+ *
+ * @param block
+ * The block to create the dispatch block object from.
+ *
+ * @result
+ * The newly created dispatch block object, or NULL.
+ * When not building with Objective-C ARC, must be released with a -[release]
+ * message or the Block_release() function.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_RETURNS_RETAINED_BLOCK
+DISPATCH_WARN_RESULT DISPATCH_NOTHROW
+dispatch_block_t
+dispatch_block_create(dispatch_block_flags_t flags, dispatch_block_t block);
+
+/*!
+ * @function dispatch_block_create_with_qos_class
+ *
+ * @abstract
+ * Create a new dispatch block object on the heap from an existing block and
+ * the given flags, and assign it the specified QOS class and relative priority.
+ *
+ * @discussion
+ * The provided block is Block_copy'ed to the heap and retained by the newly
+ * created dispatch block object.
+ *
+ * The returned dispatch block object is intended to be submitted to a dispatch
+ * queue with dispatch_async() and related functions, but may also be invoked
+ * directly. Both operations can be performed an arbitrary number of times but
+ * only the first completed execution of a dispatch block object can be waited
+ * on with dispatch_block_wait() or observed with dispatch_block_notify().
+ *
+ * If invoked directly, the returned dispatch block object will be executed with
+ * the assigned QOS class as long as that does not result in a lower QOS class
+ * than what is current on the calling thread.
+ *
+ * If the returned dispatch block object is submitted to a dispatch queue, the
+ * QOS class it will be executed with depends on the QOS class assigned to the
+ * block, the QOS class assigned to the queue and which of the following flags
+ * was specified or defaulted to:
+ * - DISPATCH_BLOCK_INHERIT_QOS_CLASS: default for asynchronous execution
+ * - DISPATCH_BLOCK_ENFORCE_QOS_CLASS: default for synchronous execution
+ * See description of dispatch_block_flags_t for details.
+ *
+ * If the returned dispatch block object is submitted directly to a serial queue
+ * and is configured to execute with a specific QOS class, the system will make
+ * a best effort to apply the necessary QOS overrides to ensure that blocks
+ * submitted earlier to the serial queue are executed at that same QOS class or
+ * higher.
+ *
+ * @param flags
+ * Configuration flags for the new block object.
+ * Passing a value that is not a bitwise OR of flags from dispatch_block_flags_t
+ * results in NULL being returned.
+ *
+ * @param qos_class
+ * A QOS class value:
+ * - QOS_CLASS_USER_INTERACTIVE
+ * - QOS_CLASS_USER_INITIATED
+ * - QOS_CLASS_DEFAULT
+ * - QOS_CLASS_UTILITY
+ * - QOS_CLASS_BACKGROUND
+ * - QOS_CLASS_UNSPECIFIED
+ * Passing QOS_CLASS_UNSPECIFIED is equivalent to specifying the
+ * DISPATCH_BLOCK_NO_QOS_CLASS flag. Passing any other value results in NULL
+ * being returned.
+ *
+ * @param relative_priority
+ * A relative priority within the QOS class. This value is a negative
+ * offset from the maximum supported scheduler priority for the given class.
+ * Passing a value greater than zero or less than QOS_MIN_RELATIVE_PRIORITY
+ * results in NULL being returned.
+ *
+ * @param block
+ * The block to create the dispatch block object from.
+ *
+ * @result
+ * The newly created dispatch block object, or NULL.
+ * When not building with Objective-C ARC, must be released with a -[release]
+ * message or the Block_release() function.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_NONNULL4 DISPATCH_RETURNS_RETAINED_BLOCK
+DISPATCH_WARN_RESULT DISPATCH_NOTHROW
+dispatch_block_t
+dispatch_block_create_with_qos_class(dispatch_block_flags_t flags,
+ dispatch_qos_class_t qos_class, int relative_priority,
+ dispatch_block_t block);
+
+/*!
+ * @function dispatch_block_perform
+ *
+ * @abstract
+ * Create, synchronously execute and release a dispatch block object from the
+ * specified block and flags.
+ *
+ * @discussion
+ * Behaves identically to the sequence
+ * <code>
+ * dispatch_block_t b = dispatch_block_create(flags, block);
+ * b();
+ * Block_release(b);
+ * </code>
+ * but may be implemented more efficiently internally by not requiring a copy
+ * to the heap of the specified block or the allocation of a new block object.
+ *
+ * @param flags
+ * Configuration flags for the temporary block object.
+ * The result of passing a value that is not a bitwise OR of flags from
+ * dispatch_block_flags_t is undefined.
+ *
+ * @param block
+ * The block to create the temporary block object from.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NOTHROW
+void
+dispatch_block_perform(dispatch_block_flags_t flags,
+ DISPATCH_NOESCAPE dispatch_block_t block);
+
+/*!
+ * @function dispatch_block_wait
+ *
+ * @abstract
+ * Wait synchronously until execution of the specified dispatch block object has
+ * completed or until the specified timeout has elapsed.
+ *
+ * @discussion
+ * This function will return immediately if execution of the block object has
+ * already completed.
+ *
+ * It is not possible to wait for multiple executions of the same block object
+ * with this interface; use dispatch_group_wait() for that purpose. A single
+ * dispatch block object may either be waited on once and executed once,
+ * or it may be executed any number of times. The behavior of any other
+ * combination is undefined. Submission to a dispatch queue counts as an
+ * execution, even if cancellation (dispatch_block_cancel) means the block's
+ * code never runs.
+ *
+ * The result of calling this function from multiple threads simultaneously
+ * with the same dispatch block object is undefined, but note that doing so
+ * would violate the rules described in the previous paragraph.
+ *
+ * If this function returns indicating that the specified timeout has elapsed,
+ * then that invocation does not count as the one allowed wait.
+ *
+ * If at the time this function is called, the specified dispatch block object
+ * has been submitted directly to a serial queue, the system will make a best
+ * effort to apply the necessary QOS overrides to ensure that the block and any
+ * blocks submitted earlier to that serial queue are executed at the QOS class
+ * (or higher) of the thread calling dispatch_block_wait().
+ *
+ * @param block
+ * The dispatch block object to wait on.
+ * The result of passing NULL or a block object not returned by one of the
+ * dispatch_block_create* functions is undefined.
+ *
+ * @param timeout
+ * When to timeout (see dispatch_time). As a convenience, there are the
+ * DISPATCH_TIME_NOW and DISPATCH_TIME_FOREVER constants.
+ *
+ * @result
+ * Returns zero on success (the dispatch block object completed within the
+ * specified timeout) or non-zero on error (i.e. timed out).
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+intptr_t
+dispatch_block_wait(dispatch_block_t block, dispatch_time_t timeout);
+
+/*!
+ * @function dispatch_block_notify
+ *
+ * @abstract
+ * Schedule a notification block to be submitted to a queue when the execution
+ * of a specified dispatch block object has completed.
+ *
+ * @discussion
+ * This function will submit the notification block immediately if execution of
+ * the observed block object has already completed.
+ *
+ * It is not possible to be notified of multiple executions of the same block
+ * object with this interface, use dispatch_group_notify() for that purpose.
+ *
+ * A single dispatch block object may either be observed one or more times
+ * and executed once, or it may be executed any number of times. The behavior
+ * of any other combination is undefined. Submission to a dispatch queue
+ * counts as an execution, even if cancellation (dispatch_block_cancel) means
+ * the block's code never runs.
+ *
+ * If multiple notification blocks are scheduled for a single block object,
+ * there is no defined order in which the notification blocks will be submitted
+ * to their associated queues.
+ *
+ * @param block
+ * The dispatch block object to observe.
+ * The result of passing NULL or a block object not returned by one of the
+ * dispatch_block_create* functions is undefined.
+ *
+ * @param queue
+ * The queue to which the supplied notification block will be submitted when
+ * the observed block completes.
+ *
+ * @param notification_block
+ * The notification block to submit when the observed block object completes.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_block_notify(dispatch_block_t block, dispatch_queue_t queue,
+ dispatch_block_t notification_block);
+
+/*!
+ * @function dispatch_block_cancel
+ *
+ * @abstract
+ * Asynchronously cancel the specified dispatch block object.
+ *
+ * @discussion
+ * Cancellation causes any future execution of the dispatch block object to
+ * return immediately, but does not affect any execution of the block object
+ * that is already in progress.
+ *
+ * Release of any resources associated with the block object will be delayed
+ * until execution of the block object is next attempted (or any execution
+ * already in progress completes).
+ *
+ * NOTE: care needs to be taken to ensure that a block object that may be
+ * canceled does not capture any resources that require execution of the
+ * block body in order to be released (e.g. memory allocated with
+ * malloc(3) that the block body calls free(3) on). Such resources will
+ * be leaked if the block body is never executed due to cancellation.
+ *
+ * @param block
+ * The dispatch block object to cancel.
+ * The result of passing NULL or a block object not returned by one of the
+ * dispatch_block_create* functions is undefined.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_block_cancel(dispatch_block_t block);
+
+/*!
+ * @function dispatch_block_testcancel
+ *
+ * @abstract
+ * Tests whether the given dispatch block object has been canceled.
+ *
+ * @param block
+ * The dispatch block object to test.
+ * The result of passing NULL or a block object not returned by one of the
+ * dispatch_block_create* functions is undefined.
+ *
+ * @result
+ * Non-zero if canceled and zero if not canceled.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE
+DISPATCH_NOTHROW
+intptr_t
+dispatch_block_testcancel(dispatch_block_t block);
+
+__END_DECLS
+
+DISPATCH_ASSUME_NONNULL_END
+
+#endif // __BLOCKS__
+
+#endif // __DISPATCH_BLOCK__ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/dispatch/dispatch.h b/lib/libc/include/aarch64-macos-gnu/dispatch/dispatch.h
new file mode 100644
index 0000000000..34274a7a0f
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/dispatch/dispatch.h
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2008-2013 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DISPATCH_PUBLIC__
+#define __DISPATCH_PUBLIC__
+
+#ifdef __APPLE__
+#include <Availability.h>
+#include <os/availability.h>
+#include <TargetConditionals.h>
+#include <os/base.h>
+#elif defined(_WIN32)
+#include <os/generic_win_base.h>
+#elif defined(__unix__)
+#include <os/generic_unix_base.h>
+#endif
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <stdarg.h>
+#include <string.h>
+#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
+#include <unistd.h>
+#endif
+#include <fcntl.h>
+#if defined(_WIN32)
+#include <time.h>
+#endif
+
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(__has_feature)
+#if __has_feature(modules)
+#if !defined(__arm__)
+#include <stdio.h> // for off_t (to match Glibc.modulemap)
+#endif
+#endif
+#endif
+
+#define DISPATCH_API_VERSION 20181008
+
+#ifndef __DISPATCH_INDIRECT__
+#define __DISPATCH_INDIRECT__
+#endif
+
+#include <os/object.h>
+#include <os/workgroup.h>
+#include <dispatch/base.h>
+#include <dispatch/time.h>
+#include <dispatch/object.h>
+#include <dispatch/queue.h>
+#include <dispatch/block.h>
+#include <dispatch/source.h>
+#include <dispatch/group.h>
+#include <dispatch/semaphore.h>
+#include <dispatch/once.h>
+#include <dispatch/data.h>
+#include <dispatch/io.h>
+#include <dispatch/workloop.h>
+
+#undef __DISPATCH_INDIRECT__
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/dispatch/group.h b/lib/libc/include/aarch64-macos-gnu/dispatch/group.h
new file mode 100644
index 0000000000..549da4b3fc
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/dispatch/group.h
@@ -0,0 +1,279 @@
+/*
+ * Copyright (c) 2008-2013 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DISPATCH_GROUP__
+#define __DISPATCH_GROUP__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+DISPATCH_ASSUME_NONNULL_BEGIN
+
+/*!
+ * @typedef dispatch_group_t
+ * @abstract
+ * A group of blocks submitted to queues for asynchronous invocation.
+ */
+DISPATCH_DECL(dispatch_group);
+
+__BEGIN_DECLS
+
+/*!
+ * @function dispatch_group_create
+ *
+ * @abstract
+ * Creates new group with which blocks may be associated.
+ *
+ * @discussion
+ * This function creates a new group with which blocks may be associated.
+ * The dispatch group may be used to wait for the completion of the blocks it
+ * references. The group object memory is freed with dispatch_release().
+ *
+ * @result
+ * The newly created group, or NULL on failure.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_RETURNS_RETAINED DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+dispatch_group_t
+dispatch_group_create(void);
+
+/*!
+ * @function dispatch_group_async
+ *
+ * @abstract
+ * Submits a block to a dispatch queue and associates the block with the given
+ * dispatch group.
+ *
+ * @discussion
+ * Submits a block to a dispatch queue and associates the block with the given
+ * dispatch group. The dispatch group may be used to wait for the completion
+ * of the blocks it references.
+ *
+ * @param group
+ * A dispatch group to associate with the submitted block.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param queue
+ * The dispatch queue to which the block will be submitted for asynchronous
+ * invocation.
+ *
+ * @param block
+ * The block to perform asynchronously.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_group_async(dispatch_group_t group,
+ dispatch_queue_t queue,
+ dispatch_block_t block);
+#endif /* __BLOCKS__ */
+
+/*!
+ * @function dispatch_group_async_f
+ *
+ * @abstract
+ * Submits a function to a dispatch queue and associates the block with the
+ * given dispatch group.
+ *
+ * @discussion
+ * See dispatch_group_async() for details.
+ *
+ * @param group
+ * A dispatch group to associate with the submitted function.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param queue
+ * The dispatch queue to which the function will be submitted for asynchronous
+ * invocation.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_group_async_f().
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL2 DISPATCH_NONNULL4
+DISPATCH_NOTHROW
+void
+dispatch_group_async_f(dispatch_group_t group,
+ dispatch_queue_t queue,
+ void *_Nullable context,
+ dispatch_function_t work);
+
+/*!
+ * @function dispatch_group_wait
+ *
+ * @abstract
+ * Wait synchronously until all the blocks associated with a group have
+ * completed or until the specified timeout has elapsed.
+ *
+ * @discussion
+ * This function waits for the completion of the blocks associated with the
+ * given dispatch group, and returns after all blocks have completed or when
+ * the specified timeout has elapsed.
+ *
+ * This function will return immediately if there are no blocks associated
+ * with the dispatch group (i.e. the group is empty).
+ *
+ * The result of calling this function from multiple threads simultaneously
+ * with the same dispatch group is undefined.
+ *
+ * After the successful return of this function, the dispatch group is empty.
+ * It may either be released with dispatch_release() or re-used for additional
+ * blocks. See dispatch_group_async() for more information.
+ *
+ * @param group
+ * The dispatch group to wait on.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param timeout
+ * When to timeout (see dispatch_time). As a convenience, there are the
+ * DISPATCH_TIME_NOW and DISPATCH_TIME_FOREVER constants.
+ *
+ * @result
+ * Returns zero on success (all blocks associated with the group completed
+ * within the specified timeout) or non-zero on error (i.e. timed out).
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+intptr_t
+dispatch_group_wait(dispatch_group_t group, dispatch_time_t timeout);
+
+/*!
+ * @function dispatch_group_notify
+ *
+ * @abstract
+ * Schedule a block to be submitted to a queue when all the blocks associated
+ * with a group have completed.
+ *
+ * @discussion
+ * This function schedules a notification block to be submitted to the specified
+ * queue once all blocks associated with the dispatch group have completed.
+ *
+ * If no blocks are associated with the dispatch group (i.e. the group is empty)
+ * then the notification block will be submitted immediately.
+ *
+ * The group will be empty at the time the notification block is submitted to
+ * the target queue. The group may either be released with dispatch_release()
+ * or reused for additional operations.
+ * See dispatch_group_async() for more information.
+ *
+ * @param group
+ * The dispatch group to observe.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param queue
+ * The queue to which the supplied block will be submitted when the group
+ * completes.
+ *
+ * @param block
+ * The block to submit when the group completes.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_group_notify(dispatch_group_t group,
+ dispatch_queue_t queue,
+ dispatch_block_t block);
+#endif /* __BLOCKS__ */
+
+/*!
+ * @function dispatch_group_notify_f
+ *
+ * @abstract
+ * Schedule a function to be submitted to a queue when all the blocks
+ * associated with a group have completed.
+ *
+ * @discussion
+ * See dispatch_group_notify() for details.
+ *
+ * @param group
+ * The dispatch group to observe.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_group_notify_f().
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL2 DISPATCH_NONNULL4
+DISPATCH_NOTHROW
+void
+dispatch_group_notify_f(dispatch_group_t group,
+ dispatch_queue_t queue,
+ void *_Nullable context,
+ dispatch_function_t work);
+
+/*!
+ * @function dispatch_group_enter
+ *
+ * @abstract
+ * Manually indicate a block has entered the group
+ *
+ * @discussion
+ * Calling this function indicates another block has joined the group through
+ * a means other than dispatch_group_async(). Calls to this function must be
+ * balanced with dispatch_group_leave().
+ *
+ * @param group
+ * The dispatch group to update.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_group_enter(dispatch_group_t group);
+
+/*!
+ * @function dispatch_group_leave
+ *
+ * @abstract
+ * Manually indicate a block in the group has completed
+ *
+ * @discussion
+ * Calling this function indicates block has completed and left the dispatch
+ * group by a means other than dispatch_group_async().
+ *
+ * @param group
+ * The dispatch group to update.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_group_leave(dispatch_group_t group);
+
+__END_DECLS
+
+DISPATCH_ASSUME_NONNULL_END
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/dispatch/object.h b/lib/libc/include/aarch64-macos-gnu/dispatch/object.h
new file mode 100644
index 0000000000..c658773f09
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/dispatch/object.h
@@ -0,0 +1,606 @@
+/*
+ * Copyright (c) 2008-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DISPATCH_OBJECT__
+#define __DISPATCH_OBJECT__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+#if __has_include(<sys/qos.h>)
+#include <sys/qos.h>
+#endif
+
+DISPATCH_ASSUME_NONNULL_BEGIN
+
+/*!
+ * @typedef dispatch_object_t
+ *
+ * @abstract
+ * Abstract base type for all dispatch objects.
+ * The details of the type definition are language-specific.
+ *
+ * @discussion
+ * Dispatch objects are reference counted via calls to dispatch_retain() and
+ * dispatch_release().
+ */
+
+#if OS_OBJECT_USE_OBJC
+/*
+ * By default, dispatch objects are declared as Objective-C types when building
+ * with an Objective-C compiler. This allows them to participate in ARC, in RR
+ * management by the Blocks runtime and in leaks checking by the static
+ * analyzer, and enables them to be added to Cocoa collections.
+ * See <os/object.h> for details.
+ */
+OS_OBJECT_DECL_CLASS(dispatch_object);
+
+#if OS_OBJECT_SWIFT3
+#define DISPATCH_DECL(name) OS_OBJECT_DECL_SUBCLASS_SWIFT(name, dispatch_object)
+#define DISPATCH_DECL_SUBCLASS(name, base) OS_OBJECT_DECL_SUBCLASS_SWIFT(name, base)
+#else // OS_OBJECT_SWIFT3
+#define DISPATCH_DECL(name) OS_OBJECT_DECL_SUBCLASS(name, dispatch_object)
+#define DISPATCH_DECL_SUBCLASS(name, base) OS_OBJECT_DECL_SUBCLASS(name, base)
+
+DISPATCH_INLINE DISPATCH_ALWAYS_INLINE DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+_dispatch_object_validate(dispatch_object_t object)
+{
+ void *isa = *(void *volatile*)(OS_OBJECT_BRIDGE void*)object;
+ (void)isa;
+}
+#endif // OS_OBJECT_SWIFT3
+
+#define DISPATCH_GLOBAL_OBJECT(type, object) ((OS_OBJECT_BRIDGE type)&(object))
+#define DISPATCH_RETURNS_RETAINED OS_OBJECT_RETURNS_RETAINED
+#elif defined(__cplusplus) && !defined(__DISPATCH_BUILDING_DISPATCH__)
+/*
+ * Dispatch objects are NOT C++ objects. Nevertheless, we can at least keep C++
+ * aware of type compatibility.
+ */
+typedef struct dispatch_object_s {
+private:
+ dispatch_object_s();
+ ~dispatch_object_s();
+ dispatch_object_s(const dispatch_object_s &);
+ void operator=(const dispatch_object_s &);
+} *dispatch_object_t;
+#define DISPATCH_DECL(name) \
+ typedef struct name##_s : public dispatch_object_s {} *name##_t
+#define DISPATCH_DECL_SUBCLASS(name, base) \
+ typedef struct name##_s : public base##_s {} *name##_t
+#define DISPATCH_GLOBAL_OBJECT(type, object) (static_cast<type>(&(object)))
+#define DISPATCH_RETURNS_RETAINED
+#else /* Plain C */
+typedef union {
+ struct _os_object_s *_os_obj;
+ struct dispatch_object_s *_do;
+ struct dispatch_queue_s *_dq;
+ struct dispatch_queue_attr_s *_dqa;
+ struct dispatch_group_s *_dg;
+ struct dispatch_source_s *_ds;
+ struct dispatch_channel_s *_dch;
+ struct dispatch_mach_s *_dm;
+ struct dispatch_mach_msg_s *_dmsg;
+ struct dispatch_semaphore_s *_dsema;
+ struct dispatch_data_s *_ddata;
+ struct dispatch_io_s *_dchannel;
+} dispatch_object_t DISPATCH_TRANSPARENT_UNION;
+#define DISPATCH_DECL(name) typedef struct name##_s *name##_t
+#define DISPATCH_DECL_SUBCLASS(name, base) typedef base##_t name##_t
+#define DISPATCH_GLOBAL_OBJECT(type, object) ((type)&(object))
+#define DISPATCH_RETURNS_RETAINED
+#endif
+
+#if OS_OBJECT_SWIFT3 && OS_OBJECT_USE_OBJC
+#define DISPATCH_SOURCE_TYPE_DECL(name) \
+ DISPATCH_EXPORT struct dispatch_source_type_s \
+ _dispatch_source_type_##name; \
+ OS_OBJECT_DECL_PROTOCOL(dispatch_source_##name, <OS_dispatch_source>); \
+ OS_OBJECT_CLASS_IMPLEMENTS_PROTOCOL( \
+ dispatch_source, dispatch_source_##name)
+#define DISPATCH_SOURCE_DECL(name) \
+ DISPATCH_DECL(name); \
+ OS_OBJECT_DECL_PROTOCOL(name, <NSObject>); \
+ OS_OBJECT_CLASS_IMPLEMENTS_PROTOCOL(name, name)
+#ifndef DISPATCH_DATA_DECL
+#define DISPATCH_DATA_DECL(name) OS_OBJECT_DECL_SWIFT(name)
+#endif // DISPATCH_DATA_DECL
+#else
+#define DISPATCH_SOURCE_DECL(name) \
+ DISPATCH_DECL(name);
+#define DISPATCH_DATA_DECL(name) DISPATCH_DECL(name)
+#define DISPATCH_SOURCE_TYPE_DECL(name) \
+ DISPATCH_EXPORT const struct dispatch_source_type_s \
+ _dispatch_source_type_##name
+#endif
+
+#ifdef __BLOCKS__
+/*!
+ * @typedef dispatch_block_t
+ *
+ * @abstract
+ * The type of blocks submitted to dispatch queues, which take no arguments
+ * and have no return value.
+ *
+ * @discussion
+ * When not building with Objective-C ARC, a block object allocated on or
+ * copied to the heap must be released with a -[release] message or the
+ * Block_release() function.
+ *
+ * The declaration of a block literal allocates storage on the stack.
+ * Therefore, this is an invalid construct:
+ * <code>
+ * dispatch_block_t block;
+ * if (x) {
+ * block = ^{ printf("true\n"); };
+ * } else {
+ * block = ^{ printf("false\n"); };
+ * }
+ * block(); // unsafe!!!
+ * </code>
+ *
+ * What is happening behind the scenes:
+ * <code>
+ * if (x) {
+ * struct Block __tmp_1 = ...; // setup details
+ * block = &__tmp_1;
+ * } else {
+ * struct Block __tmp_2 = ...; // setup details
+ * block = &__tmp_2;
+ * }
+ * </code>
+ *
+ * As the example demonstrates, the address of a stack variable is escaping the
+ * scope in which it is allocated. That is a classic C bug.
+ *
+ * Instead, the block literal must be copied to the heap with the Block_copy()
+ * function or by sending it a -[copy] message.
+ */
+typedef void (^dispatch_block_t)(void);
+#endif // __BLOCKS__
+
+__BEGIN_DECLS
+
+/*!
+ * @typedef dispatch_qos_class_t
+ * Alias for qos_class_t type.
+ */
+#if __has_include(<sys/qos.h>)
+typedef qos_class_t dispatch_qos_class_t;
+#else
+typedef unsigned int dispatch_qos_class_t;
+#endif
+
+/*!
+ * @function dispatch_retain
+ *
+ * @abstract
+ * Increment the reference count of a dispatch object.
+ *
+ * @discussion
+ * Calls to dispatch_retain() must be balanced with calls to
+ * dispatch_release().
+ *
+ * @param object
+ * The object to retain.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+DISPATCH_SWIFT_UNAVAILABLE("Can't be used with ARC")
+void
+dispatch_retain(dispatch_object_t object);
+#if OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+#undef dispatch_retain
+#define dispatch_retain(object) \
+ __extension__({ dispatch_object_t _o = (object); \
+ _dispatch_object_validate(_o); (void)[_o retain]; })
+#endif
+
+/*!
+ * @function dispatch_release
+ *
+ * @abstract
+ * Decrement the reference count of a dispatch object.
+ *
+ * @discussion
+ * A dispatch object is asynchronously deallocated once all references are
+ * released (i.e. the reference count becomes zero). The system does not
+ * guarantee that a given client is the last or only reference to a given
+ * object.
+ *
+ * @param object
+ * The object to release.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+DISPATCH_SWIFT_UNAVAILABLE("Can't be used with ARC")
+void
+dispatch_release(dispatch_object_t object);
+#if OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+#undef dispatch_release
+#define dispatch_release(object) \
+ __extension__({ dispatch_object_t _o = (object); \
+ _dispatch_object_validate(_o); [_o release]; })
+#endif
+
+/*!
+ * @function dispatch_get_context
+ *
+ * @abstract
+ * Returns the application defined context of the object.
+ *
+ * @param object
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @result
+ * The context of the object; may be NULL.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_PURE DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+void *_Nullable
+dispatch_get_context(dispatch_object_t object);
+
+/*!
+ * @function dispatch_set_context
+ *
+ * @abstract
+ * Associates an application defined context with the object.
+ *
+ * @param object
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The new client defined context for the object. This may be NULL.
+ *
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NOTHROW
+void
+dispatch_set_context(dispatch_object_t object, void *_Nullable context);
+
+/*!
+ * @function dispatch_set_finalizer_f
+ *
+ * @abstract
+ * Set the finalizer function for a dispatch object.
+ *
+ * @param object
+ * The dispatch object to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param finalizer
+ * The finalizer function pointer.
+ *
+ * @discussion
+ * A dispatch object's finalizer will be invoked on the object's target queue
+ * after all references to the object have been released. This finalizer may be
+ * used by the application to release any resources associated with the object,
+ * such as freeing the object's context.
+ * The context parameter passed to the finalizer function is the current
+ * context of the dispatch object at the time the finalizer call is made.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NOTHROW
+void
+dispatch_set_finalizer_f(dispatch_object_t object,
+ dispatch_function_t _Nullable finalizer);
+
+/*!
+ * @function dispatch_activate
+ *
+ * @abstract
+ * Activates the specified dispatch object.
+ *
+ * @discussion
+ * Dispatch objects such as queues and sources may be created in an inactive
+ * state. Objects in this state have to be activated before any blocks
+ * associated with them will be invoked.
+ *
+ * The target queue of inactive objects can be changed using
+ * dispatch_set_target_queue(). Change of target queue is no longer permitted
+ * once an initially inactive object has been activated.
+ *
+ * Calling dispatch_activate() on an active object has no effect.
+ * Releasing the last reference count on an inactive object is undefined.
+ *
+ * @param object
+ * The object to be activated.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_activate(dispatch_object_t object);
+
+/*!
+ * @function dispatch_suspend
+ *
+ * @abstract
+ * Suspends the invocation of blocks on a dispatch object.
+ *
+ * @discussion
+ * A suspended object will not invoke any blocks associated with it. The
+ * suspension of an object will occur after any running block associated with
+ * the object completes.
+ *
+ * Calls to dispatch_suspend() must be balanced with calls
+ * to dispatch_resume().
+ *
+ * @param object
+ * The object to be suspended.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_suspend(dispatch_object_t object);
+
+/*!
+ * @function dispatch_resume
+ *
+ * @abstract
+ * Resumes the invocation of blocks on a dispatch object.
+ *
+ * @discussion
+ * Dispatch objects can be suspended with dispatch_suspend(), which increments
+ * an internal suspension count. dispatch_resume() is the inverse operation,
+ * and consumes suspension counts. When the last suspension count is consumed,
+ * blocks associated with the object will be invoked again.
+ *
+ * For backward compatibility reasons, dispatch_resume() on an inactive and not
+ * otherwise suspended dispatch source object has the same effect as calling
+ * dispatch_activate(). For new code, using dispatch_activate() is preferred.
+ *
+ * If the specified object has zero suspension count and is not an inactive
+ * source, this function will result in an assertion and the process being
+ * terminated.
+ *
+ * @param object
+ * The object to be resumed.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_resume(dispatch_object_t object);
+
+/*!
+ * @function dispatch_set_qos_class_floor
+ *
+ * @abstract
+ * Sets the QOS class floor on a dispatch queue, source or workloop.
+ *
+ * @discussion
+ * The QOS class of workitems submitted to this object asynchronously will be
+ * elevated to at least the specified QOS class floor. The QOS of the workitem
+ * will be used if higher than the floor even when the workitem has been created
+ * without "ENFORCE" semantics.
+ *
+ * Setting the QOS class floor is equivalent to the QOS effects of configuring
+ * a queue whose target queue has a QoS class set to the same value.
+ *
+ * @param object
+ * A dispatch queue, workloop, or source to configure.
+ * The object must be inactive.
+ *
+ * Passing another object type or an object that has been activated is undefined
+ * and will cause the process to be terminated.
+ *
+ * @param qos_class
+ * A QOS class value:
+ * - QOS_CLASS_USER_INTERACTIVE
+ * - QOS_CLASS_USER_INITIATED
+ * - QOS_CLASS_DEFAULT
+ * - QOS_CLASS_UTILITY
+ * - QOS_CLASS_BACKGROUND
+ * Passing any other value is undefined.
+ *
+ * @param relative_priority
+ * A relative priority within the QOS class. This value is a negative
+ * offset from the maximum supported scheduler priority for the given class.
+ * Passing a value greater than zero or less than QOS_MIN_RELATIVE_PRIORITY
+ * is undefined.
+ */
+API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+DISPATCH_EXPORT DISPATCH_NOTHROW
+void
+dispatch_set_qos_class_floor(dispatch_object_t object,
+ dispatch_qos_class_t qos_class, int relative_priority);
+
+#ifdef __BLOCKS__
+/*!
+ * @function dispatch_wait
+ *
+ * @abstract
+ * Wait synchronously for an object or until the specified timeout has elapsed.
+ *
+ * @discussion
+ * Type-generic macro that maps to dispatch_block_wait, dispatch_group_wait or
+ * dispatch_semaphore_wait, depending on the type of the first argument.
+ * See documentation for these functions for more details.
+ * This function is unavailable for any other object type.
+ *
+ * @param object
+ * The object to wait on.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param timeout
+ * When to timeout (see dispatch_time). As a convenience, there are the
+ * DISPATCH_TIME_NOW and DISPATCH_TIME_FOREVER constants.
+ *
+ * @result
+ * Returns zero on success or non-zero on error (i.e. timed out).
+ */
+DISPATCH_UNAVAILABLE
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+intptr_t
+dispatch_wait(void *object, dispatch_time_t timeout);
+#if __has_extension(c_generic_selections)
+#define dispatch_wait(object, timeout) \
+ _Generic((object), \
+ dispatch_block_t:dispatch_block_wait, \
+ dispatch_group_t:dispatch_group_wait, \
+ dispatch_semaphore_t:dispatch_semaphore_wait \
+ )((object),(timeout))
+#endif
+
+/*!
+ * @function dispatch_notify
+ *
+ * @abstract
+ * Schedule a notification block to be submitted to a queue when the execution
+ * of a specified object has completed.
+ *
+ * @discussion
+ * Type-generic macro that maps to dispatch_block_notify or
+ * dispatch_group_notify, depending on the type of the first argument.
+ * See documentation for these functions for more details.
+ * This function is unavailable for any other object type.
+ *
+ * @param object
+ * The object to observe.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param queue
+ * The queue to which the supplied notification block will be submitted when
+ * the observed object completes.
+ *
+ * @param notification_block
+ * The block to submit when the observed object completes.
+ */
+DISPATCH_UNAVAILABLE
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_notify(void *object, dispatch_object_t queue,
+ dispatch_block_t notification_block);
+#if __has_extension(c_generic_selections)
+#define dispatch_notify(object, queue, notification_block) \
+ _Generic((object), \
+ dispatch_block_t:dispatch_block_notify, \
+ dispatch_group_t:dispatch_group_notify \
+ )((object),(queue), (notification_block))
+#endif
+
+/*!
+ * @function dispatch_cancel
+ *
+ * @abstract
+ * Cancel the specified object.
+ *
+ * @discussion
+ * Type-generic macro that maps to dispatch_block_cancel or
+ * dispatch_source_cancel, depending on the type of the first argument.
+ * See documentation for these functions for more details.
+ * This function is unavailable for any other object type.
+ *
+ * @param object
+ * The object to cancel.
+ * The result of passing NULL in this parameter is undefined.
+ */
+DISPATCH_UNAVAILABLE
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_cancel(void *object);
+#if __has_extension(c_generic_selections)
+#define dispatch_cancel(object) \
+ _Generic((object), \
+ dispatch_block_t:dispatch_block_cancel, \
+ dispatch_source_t:dispatch_source_cancel \
+ )((object))
+#endif
+
+/*!
+ * @function dispatch_testcancel
+ *
+ * @abstract
+ * Test whether the specified object has been canceled
+ *
+ * @discussion
+ * Type-generic macro that maps to dispatch_block_testcancel or
+ * dispatch_source_testcancel, depending on the type of the first argument.
+ * See documentation for these functions for more details.
+ * This function is unavailable for any other object type.
+ *
+ * @param object
+ * The object to test.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @result
+ * Non-zero if canceled and zero if not canceled.
+ */
+DISPATCH_UNAVAILABLE
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE
+DISPATCH_NOTHROW
+intptr_t
+dispatch_testcancel(void *object);
+#if __has_extension(c_generic_selections)
+#define dispatch_testcancel(object) \
+ _Generic((object), \
+ dispatch_block_t:dispatch_block_testcancel, \
+ dispatch_source_t:dispatch_source_testcancel \
+ )((object))
+#endif
+#endif // __BLOCKS__
+
+/*!
+ * @function dispatch_debug
+ *
+ * @abstract
+ * Programmatically log debug information about a dispatch object.
+ *
+ * @discussion
+ * Programmatically log debug information about a dispatch object. By default,
+ * the log output is sent to syslog at notice level. In the debug version of
+ * the library, the log output is sent to a file in /var/tmp.
+ * The log output destination can be configured via the LIBDISPATCH_LOG
+ * environment variable, valid values are: YES, NO, syslog, stderr, file.
+ *
+ * This function is deprecated and will be removed in a future release.
+ * Objective-C callers may use -debugDescription instead.
+ *
+ * @param object
+ * The object to introspect.
+ *
+ * @param message
+ * The message to log above and beyond the introspection.
+ */
+API_DEPRECATED("unsupported interface", macos(10.6,10.9), ios(4.0,6.0))
+DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NOTHROW DISPATCH_COLD
+__attribute__((__format__(printf,2,3)))
+void
+dispatch_debug(dispatch_object_t object, const char *message, ...);
+
+API_DEPRECATED("unsupported interface", macos(10.6,10.9), ios(4.0,6.0))
+DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NOTHROW DISPATCH_COLD
+__attribute__((__format__(printf,2,0)))
+void
+dispatch_debugv(dispatch_object_t object, const char *message, va_list ap);
+
+__END_DECLS
+
+DISPATCH_ASSUME_NONNULL_END
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/dispatch/queue.h b/lib/libc/include/aarch64-macos-gnu/dispatch/queue.h
new file mode 100644
index 0000000000..f4f8ab673e
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/dispatch/queue.h
@@ -0,0 +1,1674 @@
+/*
+ * Copyright (c) 2008-2014 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DISPATCH_QUEUE__
+#define __DISPATCH_QUEUE__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+DISPATCH_ASSUME_NONNULL_BEGIN
+
+/*!
+ * @header
+ *
+ * Dispatch is an abstract model for expressing concurrency via simple but
+ * powerful API.
+ *
+ * At the core, dispatch provides serial FIFO queues to which blocks may be
+ * submitted. Blocks submitted to these dispatch queues are invoked on a pool
+ * of threads fully managed by the system. No guarantee is made regarding
+ * which thread a block will be invoked on; however, it is guaranteed that only
+ * one block submitted to the FIFO dispatch queue will be invoked at a time.
+ *
+ * When multiple queues have blocks to be processed, the system is free to
+ * allocate additional threads to invoke the blocks concurrently. When the
+ * queues become empty, these threads are automatically released.
+ */
+
+/*!
+ * @typedef dispatch_queue_t
+ *
+ * @abstract
+ * Dispatch queues invoke workitems submitted to them.
+ *
+ * @discussion
+ * Dispatch queues come in many flavors, the most common one being the dispatch
+ * serial queue (See dispatch_queue_serial_t).
+ *
+ * The system manages a pool of threads which process dispatch queues and invoke
+ * workitems submitted to them.
+ *
+ * Conceptually a dispatch queue may have its own thread of execution, and
+ * interaction between queues is highly asynchronous.
+ *
+ * Dispatch queues are reference counted via calls to dispatch_retain() and
+ * dispatch_release(). Pending workitems submitted to a queue also hold a
+ * reference to the queue until they have finished. Once all references to a
+ * queue have been released, the queue will be deallocated by the system.
+ */
+DISPATCH_DECL(dispatch_queue);
+
+/*!
+ * @typedef dispatch_queue_global_t
+ *
+ * @abstract
+ * Dispatch global concurrent queues are an abstraction around the system thread
+ * pool which invokes workitems that are submitted to dispatch queues.
+ *
+ * @discussion
+ * Dispatch global concurrent queues provide buckets of priorities on top of the
+ * thread pool the system manages. The system will decide how many threads
+ * to allocate to this pool depending on demand and system load. In particular,
+ * the system tries to maintain a good level of concurrency for this resource,
+ * and will create new threads when too many existing worker threads block in
+ * system calls.
+ *
+ * The global concurrent queues are a shared resource and as such it is the
+ * responsiblity of every user of this resource to not submit an unbounded
+ * amount of work to this pool, especially work that may block, as this can
+ * cause the system to spawn very large numbers of threads (aka. thread
+ * explosion).
+ *
+ * Work items submitted to the global concurrent queues have no ordering
+ * guarantee with respect to the order of submission, and workitems submitted
+ * to these queues may be invoked concurrently.
+ *
+ * Dispatch global concurrent queues are well-known global objects that are
+ * returned by dispatch_get_global_queue(). These objects cannot be modified.
+ * Calls to dispatch_suspend(), dispatch_resume(), dispatch_set_context(), etc.,
+ * will have no effect when used with queues of this type.
+ */
+DISPATCH_DECL_SUBCLASS(dispatch_queue_global, dispatch_queue);
+
+/*!
+ * @typedef dispatch_queue_serial_t
+ *
+ * @abstract
+ * Dispatch serial queues invoke workitems submitted to them serially in FIFO
+ * order.
+ *
+ * @discussion
+ * Dispatch serial queues are lightweight objects to which workitems may be
+ * submitted to be invoked in FIFO order. A serial queue will only invoke one
+ * workitem at a time, but independent serial queues may each invoke their work
+ * items concurrently with respect to each other.
+ *
+ * Serial queues can target each other (See dispatch_set_target_queue()). The
+ * serial queue at the bottom of a queue hierarchy provides an exclusion
+ * context: at most one workitem submitted to any of the queues in such
+ * a hiearchy will run at any given time.
+ *
+ * Such hierarchies provide a natural construct to organize an application
+ * subsystem around.
+ *
+ * Serial queues are created by passing a dispatch queue attribute derived from
+ * DISPATCH_QUEUE_SERIAL to dispatch_queue_create_with_target().
+ */
+DISPATCH_DECL_SUBCLASS(dispatch_queue_serial, dispatch_queue);
+
+/*!
+ * @typedef dispatch_queue_main_t
+ *
+ * @abstract
+ * The type of the default queue that is bound to the main thread.
+ *
+ * @discussion
+ * The main queue is a serial queue (See dispatch_queue_serial_t) which is bound
+ * to the main thread of an application.
+ *
+ * In order to invoke workitems submitted to the main queue, the application
+ * must call dispatch_main(), NSApplicationMain(), or use a CFRunLoop on the
+ * main thread.
+ *
+ * The main queue is a well known global object that is made automatically on
+ * behalf of the main thread during process initialization and is returned by
+ * dispatch_get_main_queue(). This object cannot be modified. Calls to
+ * dispatch_suspend(), dispatch_resume(), dispatch_set_context(), etc., will
+ * have no effect when used on the main queue.
+ */
+DISPATCH_DECL_SUBCLASS(dispatch_queue_main, dispatch_queue_serial);
+
+/*!
+ * @typedef dispatch_queue_concurrent_t
+ *
+ * @abstract
+ * Dispatch concurrent queues invoke workitems submitted to them concurrently,
+ * and admit a notion of barrier workitems.
+ *
+ * @discussion
+ * Dispatch concurrent queues are lightweight objects to which regular and
+ * barrier workitems may be submited. Barrier workitems are invoked in
+ * exclusion of any other kind of workitem in FIFO order.
+ *
+ * Regular workitems can be invoked concurrently for the same concurrent queue,
+ * in any order. However, regular workitems will not be invoked before any
+ * barrier workitem submited ahead of them has been invoked.
+ *
+ * In other words, if a serial queue is equivalent to a mutex in the Dispatch
+ * world, a concurrent queue is equivalent to a reader-writer lock, where
+ * regular items are readers and barriers are writers.
+ *
+ * Concurrent queues are created by passing a dispatch queue attribute derived
+ * from DISPATCH_QUEUE_CONCURRENT to dispatch_queue_create_with_target().
+ *
+ * Caveat:
+ * Dispatch concurrent queues at this time do not implement priority inversion
+ * avoidance when lower priority regular workitems (readers) are being invoked
+ * and are preventing a higher priority barrier (writer) from being invoked.
+ */
+DISPATCH_DECL_SUBCLASS(dispatch_queue_concurrent, dispatch_queue);
+
+__BEGIN_DECLS
+
+/*!
+ * @function dispatch_async
+ *
+ * @abstract
+ * Submits a block for asynchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * The dispatch_async() function is the fundamental mechanism for submitting
+ * blocks to a dispatch queue.
+ *
+ * Calls to dispatch_async() always return immediately after the block has
+ * been submitted, and never wait for the block to be invoked.
+ *
+ * The target queue determines whether the block will be invoked serially or
+ * concurrently with respect to other blocks submitted to that same queue.
+ * Serial queues are processed concurrently with respect to each other.
+ *
+ * @param queue
+ * The target dispatch queue to which the block is submitted.
+ * The system will hold a reference on the target queue until the block
+ * has finished.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param block
+ * The block to submit to the target dispatch queue. This function performs
+ * Block_copy() and Block_release() on behalf of callers.
+ * The result of passing NULL in this parameter is undefined.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
+#endif
+
+/*!
+ * @function dispatch_async_f
+ *
+ * @abstract
+ * Submits a function for asynchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * See dispatch_async() for details.
+ *
+ * @param queue
+ * The target dispatch queue to which the function is submitted.
+ * The system will hold a reference on the target queue until the function
+ * has returned.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_async_f().
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_async_f(dispatch_queue_t queue,
+ void *_Nullable context, dispatch_function_t work);
+
+/*!
+ * @function dispatch_sync
+ *
+ * @abstract
+ * Submits a block for synchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * Submits a workitem to a dispatch queue like dispatch_async(), however
+ * dispatch_sync() will not return until the workitem has finished.
+ *
+ * Work items submitted to a queue with dispatch_sync() do not observe certain
+ * queue attributes of that queue when invoked (such as autorelease frequency
+ * and QOS class).
+ *
+ * Calls to dispatch_sync() targeting the current queue will result
+ * in dead-lock. Use of dispatch_sync() is also subject to the same
+ * multi-party dead-lock problems that may result from the use of a mutex.
+ * Use of dispatch_async() is preferred.
+ *
+ * Unlike dispatch_async(), no retain is performed on the target queue. Because
+ * calls to this function are synchronous, the dispatch_sync() "borrows" the
+ * reference of the caller.
+ *
+ * As an optimization, dispatch_sync() invokes the workitem on the thread which
+ * submitted the workitem, except when the passed queue is the main queue or
+ * a queue targetting it (See dispatch_queue_main_t,
+ * dispatch_set_target_queue()).
+ *
+ * @param queue
+ * The target dispatch queue to which the block is submitted.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param block
+ * The block to be invoked on the target dispatch queue.
+ * The result of passing NULL in this parameter is undefined.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_sync(dispatch_queue_t queue, DISPATCH_NOESCAPE dispatch_block_t block);
+#endif
+
+/*!
+ * @function dispatch_sync_f
+ *
+ * @abstract
+ * Submits a function for synchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * See dispatch_sync() for details.
+ *
+ * @param queue
+ * The target dispatch queue to which the function is submitted.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_sync_f().
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_sync_f(dispatch_queue_t queue,
+ void *_Nullable context, dispatch_function_t work);
+
+/*!
+ * @function dispatch_async_and_wait
+ *
+ * @abstract
+ * Submits a block for synchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * Submits a workitem to a dispatch queue like dispatch_async(), however
+ * dispatch_async_and_wait() will not return until the workitem has finished.
+ *
+ * Like functions of the dispatch_sync family, dispatch_async_and_wait() is
+ * subject to dead-lock (See dispatch_sync() for details).
+ *
+ * However, dispatch_async_and_wait() differs from functions of the
+ * dispatch_sync family in two fundamental ways: how it respects queue
+ * attributes and how it chooses the execution context invoking the workitem.
+ *
+ * <b>Differences with dispatch_sync()</b>
+ *
+ * Work items submitted to a queue with dispatch_async_and_wait() observe all
+ * queue attributes of that queue when invoked (inluding autorelease frequency
+ * or QOS class).
+ *
+ * When the runtime has brought up a thread to invoke the asynchronous workitems
+ * already submitted to the specified queue, that servicing thread will also be
+ * used to execute synchronous work submitted to the queue with
+ * dispatch_async_and_wait().
+ *
+ * However, if the runtime has not brought up a thread to service the specified
+ * queue (because it has no workitems enqueued, or only synchronous workitems),
+ * then dispatch_async_and_wait() will invoke the workitem on the calling thread,
+ * similar to the behaviour of functions in the dispatch_sync family.
+ *
+ * As an exception, if the queue the work is submitted to doesn't target
+ * a global concurrent queue (for example because it targets the main queue),
+ * then the workitem will never be invoked by the thread calling
+ * dispatch_async_and_wait().
+ *
+ * In other words, dispatch_async_and_wait() is similar to submitting
+ * a dispatch_block_create()d workitem to a queue and then waiting on it, as
+ * shown in the code example below. However, dispatch_async_and_wait() is
+ * significantly more efficient when a new thread is not required to execute
+ * the workitem (as it will use the stack of the submitting thread instead of
+ * requiring heap allocations).
+ *
+ * <code>
+ * dispatch_block_t b = dispatch_block_create(0, block);
+ * dispatch_async(queue, b);
+ * dispatch_block_wait(b, DISPATCH_TIME_FOREVER);
+ * Block_release(b);
+ * </code>
+ *
+ * @param queue
+ * The target dispatch queue to which the block is submitted.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param block
+ * The block to be invoked on the target dispatch queue.
+ * The result of passing NULL in this parameter is undefined.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_async_and_wait(dispatch_queue_t queue,
+ DISPATCH_NOESCAPE dispatch_block_t block);
+#endif
+
+/*!
+ * @function dispatch_async_and_wait_f
+ *
+ * @abstract
+ * Submits a function for synchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * See dispatch_async_and_wait() for details.
+ *
+ * @param queue
+ * The target dispatch queue to which the function is submitted.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_async_and_wait_f().
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_async_and_wait_f(dispatch_queue_t queue,
+ void *_Nullable context, dispatch_function_t work);
+
+
+#if defined(__APPLE__) && \
+ (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && \
+ __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_7_0) || \
+ (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \
+ __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_9)
+#define DISPATCH_APPLY_AUTO_AVAILABLE 0
+#define DISPATCH_APPLY_QUEUE_ARG_NULLABILITY _Nonnull
+#else
+#define DISPATCH_APPLY_AUTO_AVAILABLE 1
+#define DISPATCH_APPLY_QUEUE_ARG_NULLABILITY _Nullable
+#endif
+
+/*!
+ * @constant DISPATCH_APPLY_AUTO
+ *
+ * @abstract
+ * Constant to pass to dispatch_apply() or dispatch_apply_f() to request that
+ * the system automatically use worker threads that match the configuration of
+ * the current thread as closely as possible.
+ *
+ * @discussion
+ * When submitting a block for parallel invocation, passing this constant as the
+ * queue argument will automatically use the global concurrent queue that
+ * matches the Quality of Service of the caller most closely.
+ *
+ * No assumptions should be made about which global concurrent queue will
+ * actually be used.
+ *
+ * Using this constant deploys backward to macOS 10.9, iOS 7.0 and any tvOS or
+ * watchOS version.
+ */
+#if DISPATCH_APPLY_AUTO_AVAILABLE
+#define DISPATCH_APPLY_AUTO ((dispatch_queue_t _Nonnull)0)
+#endif
+
+/*!
+ * @function dispatch_apply
+ *
+ * @abstract
+ * Submits a block to a dispatch queue for parallel invocation.
+ *
+ * @discussion
+ * Submits a block to a dispatch queue for parallel invocation. This function
+ * waits for the task block to complete before returning. If the specified queue
+ * is concurrent, the block may be invoked concurrently, and it must therefore
+ * be reentrant safe.
+ *
+ * Each invocation of the block will be passed the current index of iteration.
+ *
+ * @param iterations
+ * The number of iterations to perform.
+ *
+ * @param queue
+ * The dispatch queue to which the block is submitted.
+ * The preferred value to pass is DISPATCH_APPLY_AUTO to automatically use
+ * a queue appropriate for the calling thread.
+ *
+ * @param block
+ * The block to be invoked the specified number of iterations.
+ * The result of passing NULL in this parameter is undefined.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_apply(size_t iterations,
+ dispatch_queue_t DISPATCH_APPLY_QUEUE_ARG_NULLABILITY queue,
+ DISPATCH_NOESCAPE void (^block)(size_t));
+#endif
+
+/*!
+ * @function dispatch_apply_f
+ *
+ * @abstract
+ * Submits a function to a dispatch queue for parallel invocation.
+ *
+ * @discussion
+ * See dispatch_apply() for details.
+ *
+ * @param iterations
+ * The number of iterations to perform.
+ *
+ * @param queue
+ * The dispatch queue to which the function is submitted.
+ * The preferred value to pass is DISPATCH_APPLY_AUTO to automatically use
+ * a queue appropriate for the calling thread.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the specified queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_apply_f(). The second parameter passed to this function is the
+ * current index of iteration.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL4 DISPATCH_NOTHROW
+void
+dispatch_apply_f(size_t iterations,
+ dispatch_queue_t DISPATCH_APPLY_QUEUE_ARG_NULLABILITY queue,
+ void *_Nullable context, void (*work)(void *_Nullable, size_t));
+
+/*!
+ * @function dispatch_get_current_queue
+ *
+ * @abstract
+ * Returns the queue on which the currently executing block is running.
+ *
+ * @discussion
+ * Returns the queue on which the currently executing block is running.
+ *
+ * When dispatch_get_current_queue() is called outside of the context of a
+ * submitted block, it will return the default concurrent queue.
+ *
+ * Recommended for debugging and logging purposes only:
+ * The code must not make any assumptions about the queue returned, unless it
+ * is one of the global queues or a queue the code has itself created.
+ * The code must not assume that synchronous execution onto a queue is safe
+ * from deadlock if that queue is not the one returned by
+ * dispatch_get_current_queue().
+ *
+ * When dispatch_get_current_queue() is called on the main thread, it may
+ * or may not return the same value as dispatch_get_main_queue(). Comparing
+ * the two is not a valid way to test whether code is executing on the
+ * main thread (see dispatch_assert_queue() and dispatch_assert_queue_not()).
+ *
+ * This function is deprecated and will be removed in a future release.
+ *
+ * @result
+ * Returns the current queue.
+ */
+API_DEPRECATED("unsupported interface", macos(10.6,10.9), ios(4.0,6.0))
+DISPATCH_EXPORT DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW
+dispatch_queue_t
+dispatch_get_current_queue(void);
+
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT
+struct dispatch_queue_s _dispatch_main_q;
+
+/*!
+ * @function dispatch_get_main_queue
+ *
+ * @abstract
+ * Returns the default queue that is bound to the main thread.
+ *
+ * @discussion
+ * In order to invoke blocks submitted to the main queue, the application must
+ * call dispatch_main(), NSApplicationMain(), or use a CFRunLoop on the main
+ * thread.
+ *
+ * The main queue is meant to be used in application context to interact with
+ * the main thread and the main runloop.
+ *
+ * Because the main queue doesn't behave entirely like a regular serial queue,
+ * it may have unwanted side-effects when used in processes that are not UI apps
+ * (daemons). For such processes, the main queue should be avoided.
+ *
+ * @see dispatch_queue_main_t
+ *
+ * @result
+ * Returns the main queue. This queue is created automatically on behalf of
+ * the main thread before main() is called.
+ */
+DISPATCH_INLINE DISPATCH_ALWAYS_INLINE DISPATCH_CONST DISPATCH_NOTHROW
+dispatch_queue_main_t
+dispatch_get_main_queue(void)
+{
+ return DISPATCH_GLOBAL_OBJECT(dispatch_queue_main_t, _dispatch_main_q);
+}
+
+/*!
+ * @typedef dispatch_queue_priority_t
+ * Type of dispatch_queue_priority
+ *
+ * @constant DISPATCH_QUEUE_PRIORITY_HIGH
+ * Items dispatched to the queue will run at high priority,
+ * i.e. the queue will be scheduled for execution before
+ * any default priority or low priority queue.
+ *
+ * @constant DISPATCH_QUEUE_PRIORITY_DEFAULT
+ * Items dispatched to the queue will run at the default
+ * priority, i.e. the queue will be scheduled for execution
+ * after all high priority queues have been scheduled, but
+ * before any low priority queues have been scheduled.
+ *
+ * @constant DISPATCH_QUEUE_PRIORITY_LOW
+ * Items dispatched to the queue will run at low priority,
+ * i.e. the queue will be scheduled for execution after all
+ * default priority and high priority queues have been
+ * scheduled.
+ *
+ * @constant DISPATCH_QUEUE_PRIORITY_BACKGROUND
+ * Items dispatched to the queue will run at background priority, i.e. the queue
+ * will be scheduled for execution after all higher priority queues have been
+ * scheduled and the system will run items on this queue on a thread with
+ * background status as per setpriority(2) (i.e. disk I/O is throttled and the
+ * thread's scheduling priority is set to lowest value).
+ */
+#define DISPATCH_QUEUE_PRIORITY_HIGH 2
+#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0
+#define DISPATCH_QUEUE_PRIORITY_LOW (-2)
+#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN
+
+typedef long dispatch_queue_priority_t;
+
+/*!
+ * @function dispatch_get_global_queue
+ *
+ * @abstract
+ * Returns a well-known global concurrent queue of a given quality of service
+ * class.
+ *
+ * @discussion
+ * See dispatch_queue_global_t.
+ *
+ * @param identifier
+ * A quality of service class defined in qos_class_t or a priority defined in
+ * dispatch_queue_priority_t.
+ *
+ * It is recommended to use quality of service class values to identify the
+ * well-known global concurrent queues:
+ * - QOS_CLASS_USER_INTERACTIVE
+ * - QOS_CLASS_USER_INITIATED
+ * - QOS_CLASS_DEFAULT
+ * - QOS_CLASS_UTILITY
+ * - QOS_CLASS_BACKGROUND
+ *
+ * The global concurrent queues may still be identified by their priority,
+ * which map to the following QOS classes:
+ * - DISPATCH_QUEUE_PRIORITY_HIGH: QOS_CLASS_USER_INITIATED
+ * - DISPATCH_QUEUE_PRIORITY_DEFAULT: QOS_CLASS_DEFAULT
+ * - DISPATCH_QUEUE_PRIORITY_LOW: QOS_CLASS_UTILITY
+ * - DISPATCH_QUEUE_PRIORITY_BACKGROUND: QOS_CLASS_BACKGROUND
+ *
+ * @param flags
+ * Reserved for future use. Passing any value other than zero may result in
+ * a NULL return value.
+ *
+ * @result
+ * Returns the requested global queue or NULL if the requested global queue
+ * does not exist.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_CONST DISPATCH_WARN_RESULT DISPATCH_NOTHROW
+dispatch_queue_global_t
+dispatch_get_global_queue(intptr_t identifier, uintptr_t flags);
+
+/*!
+ * @typedef dispatch_queue_attr_t
+ *
+ * @abstract
+ * Attribute for dispatch queues.
+ */
+DISPATCH_DECL(dispatch_queue_attr);
+
+/*!
+ * @const DISPATCH_QUEUE_SERIAL
+ *
+ * @discussion
+ * An attribute that can be used to create a dispatch queue that invokes blocks
+ * serially in FIFO order.
+ *
+ * See dispatch_queue_serial_t.
+ */
+#define DISPATCH_QUEUE_SERIAL NULL
+
+/*!
+ * @const DISPATCH_QUEUE_SERIAL_INACTIVE
+ *
+ * @discussion
+ * An attribute that can be used to create a dispatch queue that invokes blocks
+ * serially in FIFO order, and that is initially inactive.
+ *
+ * See dispatch_queue_attr_make_initially_inactive().
+ */
+#define DISPATCH_QUEUE_SERIAL_INACTIVE \
+ dispatch_queue_attr_make_initially_inactive(DISPATCH_QUEUE_SERIAL)
+
+/*!
+ * @const DISPATCH_QUEUE_CONCURRENT
+ *
+ * @discussion
+ * An attribute that can be used to create a dispatch queue that may invoke
+ * blocks concurrently and supports barrier blocks submitted with the dispatch
+ * barrier API.
+ *
+ * See dispatch_queue_concurrent_t.
+ */
+#define DISPATCH_QUEUE_CONCURRENT \
+ DISPATCH_GLOBAL_OBJECT(dispatch_queue_attr_t, \
+ _dispatch_queue_attr_concurrent)
+API_AVAILABLE(macos(10.7), ios(4.3))
+DISPATCH_EXPORT
+struct dispatch_queue_attr_s _dispatch_queue_attr_concurrent;
+
+/*!
+ * @const DISPATCH_QUEUE_CONCURRENT_INACTIVE
+ *
+ * @discussion
+ * An attribute that can be used to create a dispatch queue that may invoke
+ * blocks concurrently and supports barrier blocks submitted with the dispatch
+ * barrier API, and that is initially inactive.
+ *
+ * See dispatch_queue_attr_make_initially_inactive().
+ */
+#define DISPATCH_QUEUE_CONCURRENT_INACTIVE \
+ dispatch_queue_attr_make_initially_inactive(DISPATCH_QUEUE_CONCURRENT)
+
+/*!
+ * @function dispatch_queue_attr_make_initially_inactive
+ *
+ * @abstract
+ * Returns an attribute value which may be provided to dispatch_queue_create()
+ * or dispatch_queue_create_with_target(), in order to make the created queue
+ * initially inactive.
+ *
+ * @discussion
+ * Dispatch queues may be created in an inactive state. Queues in this state
+ * have to be activated before any blocks associated with them will be invoked.
+ *
+ * A queue in inactive state cannot be deallocated, dispatch_activate() must be
+ * called before the last reference to a queue created with this attribute is
+ * released.
+ *
+ * The target queue of a queue in inactive state can be changed using
+ * dispatch_set_target_queue(). Change of target queue is no longer permitted
+ * once an initially inactive queue has been activated.
+ *
+ * @param attr
+ * A queue attribute value to be combined with the initially inactive attribute.
+ *
+ * @return
+ * Returns an attribute value which may be provided to dispatch_queue_create()
+ * and dispatch_queue_create_with_target().
+ * The new value combines the attributes specified by the 'attr' parameter with
+ * the initially inactive attribute.
+ */
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+DISPATCH_EXPORT DISPATCH_WARN_RESULT DISPATCH_PURE DISPATCH_NOTHROW
+dispatch_queue_attr_t
+dispatch_queue_attr_make_initially_inactive(
+ dispatch_queue_attr_t _Nullable attr);
+
+/*!
+ * @const DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL
+ *
+ * @discussion
+ * A dispatch queue created with this attribute invokes blocks serially in FIFO
+ * order, and surrounds execution of any block submitted asynchronously to it
+ * with the equivalent of a individual Objective-C <code>@autoreleasepool</code>
+ * scope.
+ *
+ * See dispatch_queue_attr_make_with_autorelease_frequency().
+ */
+#define DISPATCH_QUEUE_SERIAL_WITH_AUTORELEASE_POOL \
+ dispatch_queue_attr_make_with_autorelease_frequency(\
+ DISPATCH_QUEUE_SERIAL, DISPATCH_AUTORELEASE_FREQUENCY_WORK_ITEM)
+
+/*!
+ * @const DISPATCH_QUEUE_CONCURRENT_WITH_AUTORELEASE_POOL
+ *
+ * @discussion
+ * A dispatch queue created with this attribute may invokes blocks concurrently
+ * and supports barrier blocks submitted with the dispatch barrier API. It also
+ * surrounds execution of any block submitted asynchronously to it with the
+ * equivalent of a individual Objective-C <code>@autoreleasepool</code>
+ *
+ * See dispatch_queue_attr_make_with_autorelease_frequency().
+ */
+#define DISPATCH_QUEUE_CONCURRENT_WITH_AUTORELEASE_POOL \
+ dispatch_queue_attr_make_with_autorelease_frequency(\
+ DISPATCH_QUEUE_CONCURRENT, DISPATCH_AUTORELEASE_FREQUENCY_WORK_ITEM)
+
+/*!
+ * @typedef dispatch_autorelease_frequency_t
+ * Values to pass to the dispatch_queue_attr_make_with_autorelease_frequency()
+ * function.
+ *
+ * @const DISPATCH_AUTORELEASE_FREQUENCY_INHERIT
+ * Dispatch queues with this autorelease frequency inherit the behavior from
+ * their target queue. This is the default behavior for manually created queues.
+ *
+ * @const DISPATCH_AUTORELEASE_FREQUENCY_WORK_ITEM
+ * Dispatch queues with this autorelease frequency push and pop an autorelease
+ * pool around the execution of every block that was submitted to it
+ * asynchronously.
+ * @see dispatch_queue_attr_make_with_autorelease_frequency().
+ *
+ * @const DISPATCH_AUTORELEASE_FREQUENCY_NEVER
+ * Dispatch queues with this autorelease frequency never set up an individual
+ * autorelease pool around the execution of a block that is submitted to it
+ * asynchronously. This is the behavior of the global concurrent queues.
+ */
+DISPATCH_ENUM(dispatch_autorelease_frequency, unsigned long,
+ DISPATCH_AUTORELEASE_FREQUENCY_INHERIT DISPATCH_ENUM_API_AVAILABLE(
+ macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) = 0,
+ DISPATCH_AUTORELEASE_FREQUENCY_WORK_ITEM DISPATCH_ENUM_API_AVAILABLE(
+ macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) = 1,
+ DISPATCH_AUTORELEASE_FREQUENCY_NEVER DISPATCH_ENUM_API_AVAILABLE(
+ macos(10.12), ios(10.0), tvos(10.0), watchos(3.0)) = 2,
+);
+
+/*!
+ * @function dispatch_queue_attr_make_with_autorelease_frequency
+ *
+ * @abstract
+ * Returns a dispatch queue attribute value with the autorelease frequency
+ * set to the specified value.
+ *
+ * @discussion
+ * When a queue uses the per-workitem autorelease frequency (either directly
+ * or inherithed from its target queue), any block submitted asynchronously to
+ * this queue (via dispatch_async(), dispatch_barrier_async(),
+ * dispatch_group_notify(), etc...) is executed as if surrounded by a individual
+ * Objective-C <code>@autoreleasepool</code> scope.
+ *
+ * Autorelease frequency has no effect on blocks that are submitted
+ * synchronously to a queue (via dispatch_sync(), dispatch_barrier_sync()).
+ *
+ * The global concurrent queues have the DISPATCH_AUTORELEASE_FREQUENCY_NEVER
+ * behavior. Manually created dispatch queues use
+ * DISPATCH_AUTORELEASE_FREQUENCY_INHERIT by default.
+ *
+ * Queues created with this attribute cannot change target queues after having
+ * been activated. See dispatch_set_target_queue() and dispatch_activate().
+ *
+ * @param attr
+ * A queue attribute value to be combined with the specified autorelease
+ * frequency or NULL.
+ *
+ * @param frequency
+ * The requested autorelease frequency.
+ *
+ * @return
+ * Returns an attribute value which may be provided to dispatch_queue_create()
+ * or NULL if an invalid autorelease frequency was requested.
+ * This new value combines the attributes specified by the 'attr' parameter and
+ * the chosen autorelease frequency.
+ */
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+DISPATCH_EXPORT DISPATCH_WARN_RESULT DISPATCH_PURE DISPATCH_NOTHROW
+dispatch_queue_attr_t
+dispatch_queue_attr_make_with_autorelease_frequency(
+ dispatch_queue_attr_t _Nullable attr,
+ dispatch_autorelease_frequency_t frequency);
+
+/*!
+ * @function dispatch_queue_attr_make_with_qos_class
+ *
+ * @abstract
+ * Returns an attribute value which may be provided to dispatch_queue_create()
+ * or dispatch_queue_create_with_target(), in order to assign a QOS class and
+ * relative priority to the queue.
+ *
+ * @discussion
+ * When specified in this manner, the QOS class and relative priority take
+ * precedence over those inherited from the dispatch queue's target queue (if
+ * any) as long that does not result in a lower QOS class and relative priority.
+ *
+ * The global queue priorities map to the following QOS classes:
+ * - DISPATCH_QUEUE_PRIORITY_HIGH: QOS_CLASS_USER_INITIATED
+ * - DISPATCH_QUEUE_PRIORITY_DEFAULT: QOS_CLASS_DEFAULT
+ * - DISPATCH_QUEUE_PRIORITY_LOW: QOS_CLASS_UTILITY
+ * - DISPATCH_QUEUE_PRIORITY_BACKGROUND: QOS_CLASS_BACKGROUND
+ *
+ * Example:
+ * <code>
+ * dispatch_queue_t queue;
+ * dispatch_queue_attr_t attr;
+ * attr = dispatch_queue_attr_make_with_qos_class(DISPATCH_QUEUE_SERIAL,
+ * QOS_CLASS_UTILITY, 0);
+ * queue = dispatch_queue_create("com.example.myqueue", attr);
+ * </code>
+ *
+ * The QOS class and relative priority set this way on a queue have no effect on
+ * blocks that are submitted synchronously to a queue (via dispatch_sync(),
+ * dispatch_barrier_sync()).
+ *
+ * @param attr
+ * A queue attribute value to be combined with the QOS class, or NULL.
+ *
+ * @param qos_class
+ * A QOS class value:
+ * - QOS_CLASS_USER_INTERACTIVE
+ * - QOS_CLASS_USER_INITIATED
+ * - QOS_CLASS_DEFAULT
+ * - QOS_CLASS_UTILITY
+ * - QOS_CLASS_BACKGROUND
+ * Passing any other value results in NULL being returned.
+ *
+ * @param relative_priority
+ * A relative priority within the QOS class. This value is a negative
+ * offset from the maximum supported scheduler priority for the given class.
+ * Passing a value greater than zero or less than QOS_MIN_RELATIVE_PRIORITY
+ * results in NULL being returned.
+ *
+ * @return
+ * Returns an attribute value which may be provided to dispatch_queue_create()
+ * and dispatch_queue_create_with_target(), or NULL if an invalid QOS class was
+ * requested.
+ * The new value combines the attributes specified by the 'attr' parameter and
+ * the new QOS class and relative priority.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_WARN_RESULT DISPATCH_PURE DISPATCH_NOTHROW
+dispatch_queue_attr_t
+dispatch_queue_attr_make_with_qos_class(dispatch_queue_attr_t _Nullable attr,
+ dispatch_qos_class_t qos_class, int relative_priority);
+
+/*!
+ * @const DISPATCH_TARGET_QUEUE_DEFAULT
+ * @discussion Constant to pass to the dispatch_queue_create_with_target(),
+ * dispatch_set_target_queue() and dispatch_source_create() functions to
+ * indicate that the default target queue for the object type in question
+ * should be used.
+ */
+#define DISPATCH_TARGET_QUEUE_DEFAULT NULL
+
+/*!
+ * @function dispatch_queue_create_with_target
+ *
+ * @abstract
+ * Creates a new dispatch queue with a specified target queue.
+ *
+ * @discussion
+ * Dispatch queues created with the DISPATCH_QUEUE_SERIAL or a NULL attribute
+ * invoke blocks serially in FIFO order.
+ *
+ * Dispatch queues created with the DISPATCH_QUEUE_CONCURRENT attribute may
+ * invoke blocks concurrently (similarly to the global concurrent queues, but
+ * potentially with more overhead), and support barrier blocks submitted with
+ * the dispatch barrier API, which e.g. enables the implementation of efficient
+ * reader-writer schemes.
+ *
+ * When a dispatch queue is no longer needed, it should be released with
+ * dispatch_release(). Note that any pending blocks submitted asynchronously to
+ * a queue will hold a reference to that queue. Therefore a queue will not be
+ * deallocated until all pending blocks have finished.
+ *
+ * When using a dispatch queue attribute @a attr specifying a QoS class (derived
+ * from the result of dispatch_queue_attr_make_with_qos_class()), passing the
+ * result of dispatch_get_global_queue() in @a target will ignore the QoS class
+ * of that global queue and will use the global queue with the QoS class
+ * specified by attr instead.
+ *
+ * Queues created with dispatch_queue_create_with_target() cannot have their
+ * target queue changed, unless created inactive (See
+ * dispatch_queue_attr_make_initially_inactive()), in which case the target
+ * queue can be changed until the newly created queue is activated with
+ * dispatch_activate().
+ *
+ * @param label
+ * A string label to attach to the queue.
+ * This parameter is optional and may be NULL.
+ *
+ * @param attr
+ * A predefined attribute such as DISPATCH_QUEUE_SERIAL,
+ * DISPATCH_QUEUE_CONCURRENT, or the result of a call to
+ * a dispatch_queue_attr_make_with_* function.
+ *
+ * @param target
+ * The target queue for the newly created queue. The target queue is retained.
+ * If this parameter is DISPATCH_TARGET_QUEUE_DEFAULT, sets the queue's target
+ * queue to the default target queue for the given queue type.
+ *
+ * @result
+ * The newly created dispatch queue.
+ */
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_RETURNS_RETAINED DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+dispatch_queue_t
+dispatch_queue_create_with_target(const char *_Nullable label,
+ dispatch_queue_attr_t _Nullable attr, dispatch_queue_t _Nullable target)
+ DISPATCH_ALIAS_V2(dispatch_queue_create_with_target);
+
+/*!
+ * @function dispatch_queue_create
+ *
+ * @abstract
+ * Creates a new dispatch queue to which blocks may be submitted.
+ *
+ * @discussion
+ * Dispatch queues created with the DISPATCH_QUEUE_SERIAL or a NULL attribute
+ * invoke blocks serially in FIFO order.
+ *
+ * Dispatch queues created with the DISPATCH_QUEUE_CONCURRENT attribute may
+ * invoke blocks concurrently (similarly to the global concurrent queues, but
+ * potentially with more overhead), and support barrier blocks submitted with
+ * the dispatch barrier API, which e.g. enables the implementation of efficient
+ * reader-writer schemes.
+ *
+ * When a dispatch queue is no longer needed, it should be released with
+ * dispatch_release(). Note that any pending blocks submitted asynchronously to
+ * a queue will hold a reference to that queue. Therefore a queue will not be
+ * deallocated until all pending blocks have finished.
+ *
+ * Passing the result of the dispatch_queue_attr_make_with_qos_class() function
+ * to the attr parameter of this function allows a quality of service class and
+ * relative priority to be specified for the newly created queue.
+ * The quality of service class so specified takes precedence over the quality
+ * of service class of the newly created dispatch queue's target queue (if any)
+ * as long that does not result in a lower QOS class and relative priority.
+ *
+ * When no quality of service class is specified, the target queue of a newly
+ * created dispatch queue is the default priority global concurrent queue.
+ *
+ * @param label
+ * A string label to attach to the queue.
+ * This parameter is optional and may be NULL.
+ *
+ * @param attr
+ * A predefined attribute such as DISPATCH_QUEUE_SERIAL,
+ * DISPATCH_QUEUE_CONCURRENT, or the result of a call to
+ * a dispatch_queue_attr_make_with_* function.
+ *
+ * @result
+ * The newly created dispatch queue.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_RETURNS_RETAINED DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+dispatch_queue_t
+dispatch_queue_create(const char *_Nullable label,
+ dispatch_queue_attr_t _Nullable attr);
+
+/*!
+ * @const DISPATCH_CURRENT_QUEUE_LABEL
+ * @discussion Constant to pass to the dispatch_queue_get_label() function to
+ * retrieve the label of the current queue.
+ */
+#define DISPATCH_CURRENT_QUEUE_LABEL NULL
+
+/*!
+ * @function dispatch_queue_get_label
+ *
+ * @abstract
+ * Returns the label of the given queue, as specified when the queue was
+ * created, or the empty string if a NULL label was specified.
+ *
+ * Passing DISPATCH_CURRENT_QUEUE_LABEL will return the label of the current
+ * queue.
+ *
+ * @param queue
+ * The queue to query, or DISPATCH_CURRENT_QUEUE_LABEL.
+ *
+ * @result
+ * The label of the queue.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW
+const char *
+dispatch_queue_get_label(dispatch_queue_t _Nullable queue);
+
+/*!
+ * @function dispatch_queue_get_qos_class
+ *
+ * @abstract
+ * Returns the QOS class and relative priority of the given queue.
+ *
+ * @discussion
+ * If the given queue was created with an attribute value returned from
+ * dispatch_queue_attr_make_with_qos_class(), this function returns the QOS
+ * class and relative priority specified at that time; for any other attribute
+ * value it returns a QOS class of QOS_CLASS_UNSPECIFIED and a relative
+ * priority of 0.
+ *
+ * If the given queue is one of the global queues, this function returns its
+ * assigned QOS class value as documented under dispatch_get_global_queue() and
+ * a relative priority of 0; in the case of the main queue it returns the QOS
+ * value provided by qos_class_main() and a relative priority of 0.
+ *
+ * @param queue
+ * The queue to query.
+ *
+ * @param relative_priority_ptr
+ * A pointer to an int variable to be filled with the relative priority offset
+ * within the QOS class, or NULL.
+ *
+ * @return
+ * A QOS class value:
+ * - QOS_CLASS_USER_INTERACTIVE
+ * - QOS_CLASS_USER_INITIATED
+ * - QOS_CLASS_DEFAULT
+ * - QOS_CLASS_UTILITY
+ * - QOS_CLASS_BACKGROUND
+ * - QOS_CLASS_UNSPECIFIED
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+DISPATCH_EXPORT DISPATCH_WARN_RESULT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+dispatch_qos_class_t
+dispatch_queue_get_qos_class(dispatch_queue_t queue,
+ int *_Nullable relative_priority_ptr);
+
+/*!
+ * @function dispatch_set_target_queue
+ *
+ * @abstract
+ * Sets the target queue for the given object.
+ *
+ * @discussion
+ * An object's target queue is responsible for processing the object.
+ *
+ * When no quality of service class and relative priority is specified for a
+ * dispatch queue at the time of creation, a dispatch queue's quality of service
+ * class is inherited from its target queue. The dispatch_get_global_queue()
+ * function may be used to obtain a target queue of a specific quality of
+ * service class, however the use of dispatch_queue_attr_make_with_qos_class()
+ * is recommended instead.
+ *
+ * Blocks submitted to a serial queue whose target queue is another serial
+ * queue will not be invoked concurrently with blocks submitted to the target
+ * queue or to any other queue with that same target queue.
+ *
+ * The result of introducing a cycle into the hierarchy of target queues is
+ * undefined.
+ *
+ * A dispatch source's target queue specifies where its event handler and
+ * cancellation handler blocks will be submitted.
+ *
+ * A dispatch I/O channel's target queue specifies where where its I/O
+ * operations are executed. If the channel's target queue's priority is set to
+ * DISPATCH_QUEUE_PRIORITY_BACKGROUND, then the I/O operations performed by
+ * dispatch_io_read() or dispatch_io_write() on that queue will be
+ * throttled when there is I/O contention.
+ *
+ * For all other dispatch object types, the only function of the target queue
+ * is to determine where an object's finalizer function is invoked.
+ *
+ * In general, changing the target queue of an object is an asynchronous
+ * operation that doesn't take effect immediately, and doesn't affect blocks
+ * already associated with the specified object.
+ *
+ * However, if an object is inactive at the time dispatch_set_target_queue() is
+ * called, then the target queue change takes effect immediately, and will
+ * affect blocks already associated with the specified object. After an
+ * initially inactive object has been activated, calling
+ * dispatch_set_target_queue() results in an assertion and the process being
+ * terminated.
+ *
+ * If a dispatch queue is active and targeted by other dispatch objects,
+ * changing its target queue results in undefined behavior.
+ *
+ * @param object
+ * The object to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param queue
+ * The new target queue for the object. The queue is retained, and the
+ * previous target queue, if any, is released.
+ * If queue is DISPATCH_TARGET_QUEUE_DEFAULT, set the object's target queue
+ * to the default target queue for the given object type.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NOTHROW
+void
+dispatch_set_target_queue(dispatch_object_t object,
+ dispatch_queue_t _Nullable queue);
+
+/*!
+ * @function dispatch_main
+ *
+ * @abstract
+ * Execute blocks submitted to the main queue.
+ *
+ * @discussion
+ * This function "parks" the main thread and waits for blocks to be submitted
+ * to the main queue. This function never returns.
+ *
+ * Applications that call NSApplicationMain() or CFRunLoopRun() on the
+ * main thread do not need to call dispatch_main().
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NOTHROW DISPATCH_NORETURN
+void
+dispatch_main(void);
+
+/*!
+ * @function dispatch_after
+ *
+ * @abstract
+ * Schedule a block for execution on a given queue at a specified time.
+ *
+ * @discussion
+ * Passing DISPATCH_TIME_NOW as the "when" parameter is supported, but not as
+ * optimal as calling dispatch_async() instead. Passing DISPATCH_TIME_FOREVER
+ * is undefined.
+ *
+ * @param when
+ * A temporal milestone returned by dispatch_time() or dispatch_walltime().
+ *
+ * @param queue
+ * A queue to which the given block will be submitted at the specified time.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param block
+ * The block of code to execute.
+ * The result of passing NULL in this parameter is undefined.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_after(dispatch_time_t when, dispatch_queue_t queue,
+ dispatch_block_t block);
+#endif
+
+/*!
+ * @function dispatch_after_f
+ *
+ * @abstract
+ * Schedule a function for execution on a given queue at a specified time.
+ *
+ * @discussion
+ * See dispatch_after() for details.
+ *
+ * @param when
+ * A temporal milestone returned by dispatch_time() or dispatch_walltime().
+ *
+ * @param queue
+ * A queue to which the given function will be submitted at the specified time.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_after_f().
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL2 DISPATCH_NONNULL4 DISPATCH_NOTHROW
+void
+dispatch_after_f(dispatch_time_t when, dispatch_queue_t queue,
+ void *_Nullable context, dispatch_function_t work);
+
+/*!
+ * @functiongroup Dispatch Barrier API
+ * The dispatch barrier API is a mechanism for submitting barrier blocks to a
+ * dispatch queue, analogous to the dispatch_async()/dispatch_sync() API.
+ * It enables the implementation of efficient reader/writer schemes.
+ * Barrier blocks only behave specially when submitted to queues created with
+ * the DISPATCH_QUEUE_CONCURRENT attribute; on such a queue, a barrier block
+ * will not run until all blocks submitted to the queue earlier have completed,
+ * and any blocks submitted to the queue after a barrier block will not run
+ * until the barrier block has completed.
+ * When submitted to a a global queue or to a queue not created with the
+ * DISPATCH_QUEUE_CONCURRENT attribute, barrier blocks behave identically to
+ * blocks submitted with the dispatch_async()/dispatch_sync() API.
+ */
+
+/*!
+ * @function dispatch_barrier_async
+ *
+ * @abstract
+ * Submits a barrier block for asynchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * Submits a block to a dispatch queue like dispatch_async(), but marks that
+ * block as a barrier (relevant only on DISPATCH_QUEUE_CONCURRENT queues).
+ *
+ * See dispatch_async() for details and "Dispatch Barrier API" for a description
+ * of the barrier semantics.
+ *
+ * @param queue
+ * The target dispatch queue to which the block is submitted.
+ * The system will hold a reference on the target queue until the block
+ * has finished.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param block
+ * The block to submit to the target dispatch queue. This function performs
+ * Block_copy() and Block_release() on behalf of callers.
+ * The result of passing NULL in this parameter is undefined.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.7), ios(4.3))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_barrier_async(dispatch_queue_t queue, dispatch_block_t block);
+#endif
+
+/*!
+ * @function dispatch_barrier_async_f
+ *
+ * @abstract
+ * Submits a barrier function for asynchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * Submits a function to a dispatch queue like dispatch_async_f(), but marks
+ * that function as a barrier (relevant only on DISPATCH_QUEUE_CONCURRENT
+ * queues).
+ *
+ * See dispatch_async_f() for details and "Dispatch Barrier API" for a
+ * description of the barrier semantics.
+ *
+ * @param queue
+ * The target dispatch queue to which the function is submitted.
+ * The system will hold a reference on the target queue until the function
+ * has returned.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_barrier_async_f().
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.7), ios(4.3))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_barrier_async_f(dispatch_queue_t queue,
+ void *_Nullable context, dispatch_function_t work);
+
+/*!
+ * @function dispatch_barrier_sync
+ *
+ * @abstract
+ * Submits a barrier block for synchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * Submits a block to a dispatch queue like dispatch_sync(), but marks that
+ * block as a barrier (relevant only on DISPATCH_QUEUE_CONCURRENT queues).
+ *
+ * See dispatch_sync() for details and "Dispatch Barrier API" for a description
+ * of the barrier semantics.
+ *
+ * @param queue
+ * The target dispatch queue to which the block is submitted.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param block
+ * The block to be invoked on the target dispatch queue.
+ * The result of passing NULL in this parameter is undefined.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.7), ios(4.3))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_barrier_sync(dispatch_queue_t queue,
+ DISPATCH_NOESCAPE dispatch_block_t block);
+#endif
+
+/*!
+ * @function dispatch_barrier_sync_f
+ *
+ * @abstract
+ * Submits a barrier function for synchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * Submits a function to a dispatch queue like dispatch_sync_f(), but marks that
+ * fuction as a barrier (relevant only on DISPATCH_QUEUE_CONCURRENT queues).
+ *
+ * See dispatch_sync_f() for details.
+ *
+ * @param queue
+ * The target dispatch queue to which the function is submitted.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_barrier_sync_f().
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.7), ios(4.3))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_barrier_sync_f(dispatch_queue_t queue,
+ void *_Nullable context, dispatch_function_t work);
+
+/*!
+ * @function dispatch_barrier_async_and_wait
+ *
+ * @abstract
+ * Submits a block for synchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * Submits a block to a dispatch queue like dispatch_async_and_wait(), but marks
+ * that block as a barrier (relevant only on DISPATCH_QUEUE_CONCURRENT
+ * queues).
+ *
+ * See "Dispatch Barrier API" for a description of the barrier semantics.
+ *
+ * @param queue
+ * The target dispatch queue to which the block is submitted.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param work
+ * The application-defined block to invoke on the target queue.
+ * The result of passing NULL in this parameter is undefined.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_barrier_async_and_wait(dispatch_queue_t queue,
+ DISPATCH_NOESCAPE dispatch_block_t block);
+#endif
+
+/*!
+ * @function dispatch_barrier_async_and_wait_f
+ *
+ * @abstract
+ * Submits a function for synchronous execution on a dispatch queue.
+ *
+ * @discussion
+ * Submits a function to a dispatch queue like dispatch_async_and_wait_f(), but
+ * marks that function as a barrier (relevant only on DISPATCH_QUEUE_CONCURRENT
+ * queues).
+ *
+ * See "Dispatch Barrier API" for a description of the barrier semantics.
+ *
+ * @param queue
+ * The target dispatch queue to which the function is submitted.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param context
+ * The application-defined context parameter to pass to the function.
+ *
+ * @param work
+ * The application-defined function to invoke on the target queue. The first
+ * parameter passed to this function is the context provided to
+ * dispatch_barrier_async_and_wait_f().
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NONNULL3 DISPATCH_NOTHROW
+void
+dispatch_barrier_async_and_wait_f(dispatch_queue_t queue,
+ void *_Nullable context, dispatch_function_t work);
+
+/*!
+ * @functiongroup Dispatch queue-specific contexts
+ * This API allows different subsystems to associate context to a shared queue
+ * without risk of collision and to retrieve that context from blocks executing
+ * on that queue or any of its child queues in the target queue hierarchy.
+ */
+
+/*!
+ * @function dispatch_queue_set_specific
+ *
+ * @abstract
+ * Associates a subsystem-specific context with a dispatch queue, for a key
+ * unique to the subsystem.
+ *
+ * @discussion
+ * The specified destructor will be invoked with the context on the default
+ * priority global concurrent queue when a new context is set for the same key,
+ * or after all references to the queue have been released.
+ *
+ * @param queue
+ * The dispatch queue to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param key
+ * The key to set the context for, typically a pointer to a static variable
+ * specific to the subsystem. Keys are only compared as pointers and never
+ * dereferenced. Passing a string constant directly is not recommended.
+ * The NULL key is reserved and attempts to set a context for it are ignored.
+ *
+ * @param context
+ * The new subsystem-specific context for the object. This may be NULL.
+ *
+ * @param destructor
+ * The destructor function pointer. This may be NULL and is ignored if context
+ * is NULL.
+ */
+API_AVAILABLE(macos(10.7), ios(5.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+void
+dispatch_queue_set_specific(dispatch_queue_t queue, const void *key,
+ void *_Nullable context, dispatch_function_t _Nullable destructor);
+
+/*!
+ * @function dispatch_queue_get_specific
+ *
+ * @abstract
+ * Returns the subsystem-specific context associated with a dispatch queue, for
+ * a key unique to the subsystem.
+ *
+ * @discussion
+ * Returns the context for the specified key if it has been set on the specified
+ * queue.
+ *
+ * @param queue
+ * The dispatch queue to query.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param key
+ * The key to get the context for, typically a pointer to a static variable
+ * specific to the subsystem. Keys are only compared as pointers and never
+ * dereferenced. Passing a string constant directly is not recommended.
+ *
+ * @result
+ * The context for the specified key or NULL if no context was found.
+ */
+API_AVAILABLE(macos(10.7), ios(5.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_PURE DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+void *_Nullable
+dispatch_queue_get_specific(dispatch_queue_t queue, const void *key);
+
+/*!
+ * @function dispatch_get_specific
+ *
+ * @abstract
+ * Returns the current subsystem-specific context for a key unique to the
+ * subsystem.
+ *
+ * @discussion
+ * When called from a block executing on a queue, returns the context for the
+ * specified key if it has been set on the queue, otherwise returns the result
+ * of dispatch_get_specific() executed on the queue's target queue or NULL
+ * if the current queue is a global concurrent queue.
+ *
+ * @param key
+ * The key to get the context for, typically a pointer to a static variable
+ * specific to the subsystem. Keys are only compared as pointers and never
+ * dereferenced. Passing a string constant directly is not recommended.
+ *
+ * @result
+ * The context for the specified key or NULL if no context was found.
+ */
+API_AVAILABLE(macos(10.7), ios(5.0))
+DISPATCH_EXPORT DISPATCH_PURE DISPATCH_WARN_RESULT DISPATCH_NOTHROW
+void *_Nullable
+dispatch_get_specific(const void *key);
+
+/*!
+ * @functiongroup Dispatch assertion API
+ *
+ * This API asserts at runtime that code is executing in (or out of) the context
+ * of a given queue. It can be used to check that a block accessing a resource
+ * does so from the proper queue protecting the resource. It also can be used
+ * to verify that a block that could cause a deadlock if run on a given queue
+ * never executes on that queue.
+ */
+
+/*!
+ * @function dispatch_assert_queue
+ *
+ * @abstract
+ * Verifies that the current block is executing on a given dispatch queue.
+ *
+ * @discussion
+ * Some code expects to be run on a specific dispatch queue. This function
+ * verifies that that expectation is true.
+ *
+ * If the currently executing block was submitted to the specified queue or to
+ * any queue targeting it (see dispatch_set_target_queue()), this function
+ * returns.
+ *
+ * If the currently executing block was submitted with a synchronous API
+ * (dispatch_sync(), dispatch_barrier_sync(), ...), the context of the
+ * submitting block is also evaluated (recursively).
+ * If a synchronously submitting block is found that was itself submitted to
+ * the specified queue or to any queue targeting it, this function returns.
+ *
+ * Otherwise this function asserts: it logs an explanation to the system log and
+ * terminates the application.
+ *
+ * Passing the result of dispatch_get_main_queue() to this function verifies
+ * that the current block was submitted to the main queue, or to a queue
+ * targeting it, or is running on the main thread (in any context).
+ *
+ * When dispatch_assert_queue() is called outside of the context of a
+ * submitted block (for example from the context of a thread created manually
+ * with pthread_create()) then this function will also assert and terminate
+ * the application.
+ *
+ * The variant dispatch_assert_queue_debug() is compiled out when the
+ * preprocessor macro NDEBUG is defined. (See also assert(3)).
+ *
+ * @param queue
+ * The dispatch queue that the current block is expected to run on.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1
+void
+dispatch_assert_queue(dispatch_queue_t queue)
+ DISPATCH_ALIAS_V2(dispatch_assert_queue);
+
+/*!
+ * @function dispatch_assert_queue_barrier
+ *
+ * @abstract
+ * Verifies that the current block is executing on a given dispatch queue,
+ * and that the block acts as a barrier on that queue.
+ *
+ * @discussion
+ * This behaves exactly like dispatch_assert_queue(), with the additional check
+ * that the current block acts as a barrier on the specified queue, which is
+ * always true if the specified queue is serial (see DISPATCH_BLOCK_BARRIER or
+ * dispatch_barrier_async() for details).
+ *
+ * The variant dispatch_assert_queue_barrier_debug() is compiled out when the
+ * preprocessor macro NDEBUG is defined. (See also assert()).
+ *
+ * @param queue
+ * The dispatch queue that the current block is expected to run as a barrier on.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1
+void
+dispatch_assert_queue_barrier(dispatch_queue_t queue);
+
+/*!
+ * @function dispatch_assert_queue_not
+ *
+ * @abstract
+ * Verifies that the current block is not executing on a given dispatch queue.
+ *
+ * @discussion
+ * This function is the equivalent of dispatch_assert_queue() with the test for
+ * equality inverted. That means that it will terminate the application when
+ * dispatch_assert_queue() would return, and vice-versa. See discussion there.
+ *
+ * The variant dispatch_assert_queue_not_debug() is compiled out when the
+ * preprocessor macro NDEBUG is defined. (See also assert(3)).
+ *
+ * @param queue
+ * The dispatch queue that the current block is expected not to run on.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.12), ios(10.0), tvos(10.0), watchos(3.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1
+void
+dispatch_assert_queue_not(dispatch_queue_t queue)
+ DISPATCH_ALIAS_V2(dispatch_assert_queue_not);
+
+#ifdef NDEBUG
+#define dispatch_assert_queue_debug(q) ((void)(0 && (q)))
+#define dispatch_assert_queue_barrier_debug(q) ((void)(0 && (q)))
+#define dispatch_assert_queue_not_debug(q) ((void)(0 && (q)))
+#else
+#define dispatch_assert_queue_debug(q) dispatch_assert_queue(q)
+#define dispatch_assert_queue_barrier_debug(q) dispatch_assert_queue_barrier(q)
+#define dispatch_assert_queue_not_debug(q) dispatch_assert_queue_not(q)
+#endif
+
+__END_DECLS
+
+DISPATCH_ASSUME_NONNULL_END
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/dispatch/semaphore.h b/lib/libc/include/aarch64-macos-gnu/dispatch/semaphore.h
new file mode 100644
index 0000000000..225fe41563
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/dispatch/semaphore.h
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2008-2013 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DISPATCH_SEMAPHORE__
+#define __DISPATCH_SEMAPHORE__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+DISPATCH_ASSUME_NONNULL_BEGIN
+
+/*!
+ * @typedef dispatch_semaphore_t
+ *
+ * @abstract
+ * A counting semaphore.
+ */
+DISPATCH_DECL(dispatch_semaphore);
+
+__BEGIN_DECLS
+
+/*!
+ * @function dispatch_semaphore_create
+ *
+ * @abstract
+ * Creates new counting semaphore with an initial value.
+ *
+ * @discussion
+ * Passing zero for the value is useful for when two threads need to reconcile
+ * the completion of a particular event. Passing a value greater than zero is
+ * useful for managing a finite pool of resources, where the pool size is equal
+ * to the value.
+ *
+ * @param value
+ * The starting value for the semaphore. Passing a value less than zero will
+ * cause NULL to be returned.
+ *
+ * @result
+ * The newly created semaphore, or NULL on failure.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_RETURNS_RETAINED DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+dispatch_semaphore_t
+dispatch_semaphore_create(intptr_t value);
+
+/*!
+ * @function dispatch_semaphore_wait
+ *
+ * @abstract
+ * Wait (decrement) for a semaphore.
+ *
+ * @discussion
+ * Decrement the counting semaphore. If the resulting value is less than zero,
+ * this function waits for a signal to occur before returning.
+ *
+ * @param dsema
+ * The semaphore. The result of passing NULL in this parameter is undefined.
+ *
+ * @param timeout
+ * When to timeout (see dispatch_time). As a convenience, there are the
+ * DISPATCH_TIME_NOW and DISPATCH_TIME_FOREVER constants.
+ *
+ * @result
+ * Returns zero on success, or non-zero if the timeout occurred.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+intptr_t
+dispatch_semaphore_wait(dispatch_semaphore_t dsema, dispatch_time_t timeout);
+
+/*!
+ * @function dispatch_semaphore_signal
+ *
+ * @abstract
+ * Signal (increment) a semaphore.
+ *
+ * @discussion
+ * Increment the counting semaphore. If the previous value was less than zero,
+ * this function wakes a waiting thread before returning.
+ *
+ * @param dsema The counting semaphore.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @result
+ * This function returns non-zero if a thread is woken. Otherwise, zero is
+ * returned.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+intptr_t
+dispatch_semaphore_signal(dispatch_semaphore_t dsema);
+
+__END_DECLS
+
+DISPATCH_ASSUME_NONNULL_END
+
+#endif /* __DISPATCH_SEMAPHORE__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/dispatch/source.h b/lib/libc/include/aarch64-macos-gnu/dispatch/source.h
new file mode 100644
index 0000000000..91b23badfd
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/dispatch/source.h
@@ -0,0 +1,780 @@
+/*
+ * Copyright (c) 2008-2013 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DISPATCH_SOURCE__
+#define __DISPATCH_SOURCE__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+#if TARGET_OS_MAC
+#include <mach/port.h>
+#include <mach/message.h>
+#endif
+
+#if !defined(_WIN32)
+#include <sys/signal.h>
+#endif
+
+DISPATCH_ASSUME_NONNULL_BEGIN
+
+/*!
+ * @header
+ * The dispatch framework provides a suite of interfaces for monitoring low-
+ * level system objects (file descriptors, Mach ports, signals, VFS nodes, etc.)
+ * for activity and automatically submitting event handler blocks to dispatch
+ * queues when such activity occurs.
+ *
+ * This suite of interfaces is known as the Dispatch Source API.
+ */
+
+/*!
+ * @typedef dispatch_source_t
+ *
+ * @abstract
+ * Dispatch sources are used to automatically submit event handler blocks to
+ * dispatch queues in response to external events.
+ */
+DISPATCH_SOURCE_DECL(dispatch_source);
+
+__BEGIN_DECLS
+
+/*!
+ * @typedef dispatch_source_type_t
+ *
+ * @abstract
+ * Constants of this type represent the class of low-level system object that
+ * is being monitored by the dispatch source. Constants of this type are
+ * passed as a parameter to dispatch_source_create() and determine how the
+ * handle argument is interpreted (i.e. as a file descriptor, mach port,
+ * signal number, process identifier, etc.), and how the mask argument is
+ * interpreted.
+ */
+typedef const struct dispatch_source_type_s *dispatch_source_type_t;
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_DATA_ADD
+ * @discussion A dispatch source that coalesces data obtained via calls to
+ * dispatch_source_merge_data(). An ADD is used to coalesce the data.
+ * The handle is unused (pass zero for now).
+ * The mask is unused (pass zero for now).
+ */
+#define DISPATCH_SOURCE_TYPE_DATA_ADD (&_dispatch_source_type_data_add)
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_SOURCE_TYPE_DECL(data_add);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_DATA_OR
+ * @discussion A dispatch source that coalesces data obtained via calls to
+ * dispatch_source_merge_data(). A bitwise OR is used to coalesce the data.
+ * The handle is unused (pass zero for now).
+ * The mask is unused (pass zero for now).
+ */
+#define DISPATCH_SOURCE_TYPE_DATA_OR (&_dispatch_source_type_data_or)
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_SOURCE_TYPE_DECL(data_or);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_DATA_REPLACE
+ * @discussion A dispatch source that tracks data obtained via calls to
+ * dispatch_source_merge_data(). Newly obtained data values replace existing
+ * data values not yet delivered to the source handler
+ *
+ * A data value of zero will cause the source handler to not be invoked.
+ *
+ * The handle is unused (pass zero for now).
+ * The mask is unused (pass zero for now).
+ */
+#define DISPATCH_SOURCE_TYPE_DATA_REPLACE (&_dispatch_source_type_data_replace)
+API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0))
+DISPATCH_SOURCE_TYPE_DECL(data_replace);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_MACH_SEND
+ * @discussion A dispatch source that monitors a Mach port for dead name
+ * notifications (send right no longer has any corresponding receive right).
+ * The handle is a Mach port with a send or send-once right (mach_port_t).
+ * The mask is a mask of desired events from dispatch_source_mach_send_flags_t.
+ */
+#define DISPATCH_SOURCE_TYPE_MACH_SEND (&_dispatch_source_type_mach_send)
+API_AVAILABLE(macos(10.6), ios(4.0)) DISPATCH_LINUX_UNAVAILABLE()
+DISPATCH_SOURCE_TYPE_DECL(mach_send);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_MACH_RECV
+ * @discussion A dispatch source that monitors a Mach port for pending messages.
+ * The handle is a Mach port with a receive right (mach_port_t).
+ * The mask is a mask of desired events from dispatch_source_mach_recv_flags_t,
+ * but no flags are currently defined (pass zero for now).
+ */
+#define DISPATCH_SOURCE_TYPE_MACH_RECV (&_dispatch_source_type_mach_recv)
+API_AVAILABLE(macos(10.6), ios(4.0)) DISPATCH_LINUX_UNAVAILABLE()
+DISPATCH_SOURCE_TYPE_DECL(mach_recv);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_MEMORYPRESSURE
+ * @discussion A dispatch source that monitors the system for changes in
+ * memory pressure condition.
+ * The handle is unused (pass zero for now).
+ * The mask is a mask of desired events from
+ * dispatch_source_memorypressure_flags_t.
+ */
+#define DISPATCH_SOURCE_TYPE_MEMORYPRESSURE \
+ (&_dispatch_source_type_memorypressure)
+API_AVAILABLE(macos(10.9), ios(8.0)) DISPATCH_LINUX_UNAVAILABLE()
+DISPATCH_SOURCE_TYPE_DECL(memorypressure);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_PROC
+ * @discussion A dispatch source that monitors an external process for events
+ * defined by dispatch_source_proc_flags_t.
+ * The handle is a process identifier (pid_t).
+ * The mask is a mask of desired events from dispatch_source_proc_flags_t.
+ */
+#define DISPATCH_SOURCE_TYPE_PROC (&_dispatch_source_type_proc)
+API_AVAILABLE(macos(10.6), ios(4.0)) DISPATCH_LINUX_UNAVAILABLE()
+DISPATCH_SOURCE_TYPE_DECL(proc);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_READ
+ * @discussion A dispatch source that monitors a file descriptor for pending
+ * bytes available to be read.
+ * The handle is a file descriptor (int).
+ * The mask is unused (pass zero for now).
+ */
+#define DISPATCH_SOURCE_TYPE_READ (&_dispatch_source_type_read)
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_SOURCE_TYPE_DECL(read);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_SIGNAL
+ * @discussion A dispatch source that monitors the current process for signals.
+ * The handle is a signal number (int).
+ * The mask is unused (pass zero for now).
+ */
+#define DISPATCH_SOURCE_TYPE_SIGNAL (&_dispatch_source_type_signal)
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_SOURCE_TYPE_DECL(signal);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_TIMER
+ * @discussion A dispatch source that submits the event handler block based
+ * on a timer.
+ * The handle is unused (pass zero for now).
+ * The mask specifies which flags from dispatch_source_timer_flags_t to apply.
+ */
+#define DISPATCH_SOURCE_TYPE_TIMER (&_dispatch_source_type_timer)
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_SOURCE_TYPE_DECL(timer);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_VNODE
+ * @discussion A dispatch source that monitors a file descriptor for events
+ * defined by dispatch_source_vnode_flags_t.
+ * The handle is a file descriptor (int).
+ * The mask is a mask of desired events from dispatch_source_vnode_flags_t.
+ */
+#define DISPATCH_SOURCE_TYPE_VNODE (&_dispatch_source_type_vnode)
+API_AVAILABLE(macos(10.6), ios(4.0)) DISPATCH_LINUX_UNAVAILABLE()
+DISPATCH_SOURCE_TYPE_DECL(vnode);
+
+/*!
+ * @const DISPATCH_SOURCE_TYPE_WRITE
+ * @discussion A dispatch source that monitors a file descriptor for available
+ * buffer space to write bytes.
+ * The handle is a file descriptor (int).
+ * The mask is unused (pass zero for now).
+ */
+#define DISPATCH_SOURCE_TYPE_WRITE (&_dispatch_source_type_write)
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_SOURCE_TYPE_DECL(write);
+
+/*!
+ * @typedef dispatch_source_mach_send_flags_t
+ * Type of dispatch_source_mach_send flags
+ *
+ * @constant DISPATCH_MACH_SEND_DEAD
+ * The receive right corresponding to the given send right was destroyed.
+ */
+#define DISPATCH_MACH_SEND_DEAD 0x1
+
+typedef unsigned long dispatch_source_mach_send_flags_t;
+
+/*!
+ * @typedef dispatch_source_mach_recv_flags_t
+ * Type of dispatch_source_mach_recv flags
+ */
+typedef unsigned long dispatch_source_mach_recv_flags_t;
+
+/*!
+ * @typedef dispatch_source_memorypressure_flags_t
+ * Type of dispatch_source_memorypressure flags
+ *
+ * @constant DISPATCH_MEMORYPRESSURE_NORMAL
+ * The system memory pressure condition has returned to normal.
+ *
+ * @constant DISPATCH_MEMORYPRESSURE_WARN
+ * The system memory pressure condition has changed to warning.
+ *
+ * @constant DISPATCH_MEMORYPRESSURE_CRITICAL
+ * The system memory pressure condition has changed to critical.
+ *
+ * @discussion
+ * Elevated memory pressure is a system-wide condition that applications
+ * registered for this source should react to by changing their future memory
+ * use behavior, e.g. by reducing cache sizes of newly initiated operations
+ * until memory pressure returns back to normal.
+ * NOTE: applications should NOT traverse and discard existing caches for past
+ * operations when the system memory pressure enters an elevated state, as that
+ * is likely to trigger VM operations that will further aggravate system memory
+ * pressure.
+ */
+
+#define DISPATCH_MEMORYPRESSURE_NORMAL 0x01
+#define DISPATCH_MEMORYPRESSURE_WARN 0x02
+#define DISPATCH_MEMORYPRESSURE_CRITICAL 0x04
+
+typedef unsigned long dispatch_source_memorypressure_flags_t;
+
+/*!
+ * @typedef dispatch_source_proc_flags_t
+ * Type of dispatch_source_proc flags
+ *
+ * @constant DISPATCH_PROC_EXIT
+ * The process has exited (perhaps cleanly, perhaps not).
+ *
+ * @constant DISPATCH_PROC_FORK
+ * The process has created one or more child processes.
+ *
+ * @constant DISPATCH_PROC_EXEC
+ * The process has become another executable image via
+ * exec*() or posix_spawn*().
+ *
+ * @constant DISPATCH_PROC_SIGNAL
+ * A Unix signal was delivered to the process.
+ */
+#define DISPATCH_PROC_EXIT 0x80000000
+#define DISPATCH_PROC_FORK 0x40000000
+#define DISPATCH_PROC_EXEC 0x20000000
+#define DISPATCH_PROC_SIGNAL 0x08000000
+
+typedef unsigned long dispatch_source_proc_flags_t;
+
+/*!
+ * @typedef dispatch_source_vnode_flags_t
+ * Type of dispatch_source_vnode flags
+ *
+ * @constant DISPATCH_VNODE_DELETE
+ * The filesystem object was deleted from the namespace.
+ *
+ * @constant DISPATCH_VNODE_WRITE
+ * The filesystem object data changed.
+ *
+ * @constant DISPATCH_VNODE_EXTEND
+ * The filesystem object changed in size.
+ *
+ * @constant DISPATCH_VNODE_ATTRIB
+ * The filesystem object metadata changed.
+ *
+ * @constant DISPATCH_VNODE_LINK
+ * The filesystem object link count changed.
+ *
+ * @constant DISPATCH_VNODE_RENAME
+ * The filesystem object was renamed in the namespace.
+ *
+ * @constant DISPATCH_VNODE_REVOKE
+ * The filesystem object was revoked.
+ *
+ * @constant DISPATCH_VNODE_FUNLOCK
+ * The filesystem object was unlocked.
+ */
+
+#define DISPATCH_VNODE_DELETE 0x1
+#define DISPATCH_VNODE_WRITE 0x2
+#define DISPATCH_VNODE_EXTEND 0x4
+#define DISPATCH_VNODE_ATTRIB 0x8
+#define DISPATCH_VNODE_LINK 0x10
+#define DISPATCH_VNODE_RENAME 0x20
+#define DISPATCH_VNODE_REVOKE 0x40
+#define DISPATCH_VNODE_FUNLOCK 0x100
+
+typedef unsigned long dispatch_source_vnode_flags_t;
+
+/*!
+ * @typedef dispatch_source_timer_flags_t
+ * Type of dispatch_source_timer flags
+ *
+ * @constant DISPATCH_TIMER_STRICT
+ * Specifies that the system should make a best effort to strictly observe the
+ * leeway value specified for the timer via dispatch_source_set_timer(), even
+ * if that value is smaller than the default leeway value that would be applied
+ * to the timer otherwise. A minimal amount of leeway will be applied to the
+ * timer even if this flag is specified.
+ *
+ * CAUTION: Use of this flag may override power-saving techniques employed by
+ * the system and cause higher power consumption, so it must be used with care
+ * and only when absolutely necessary.
+ */
+
+#define DISPATCH_TIMER_STRICT 0x1
+
+typedef unsigned long dispatch_source_timer_flags_t;
+
+/*!
+ * @function dispatch_source_create
+ *
+ * @abstract
+ * Creates a new dispatch source to monitor low-level system objects and auto-
+ * matically submit a handler block to a dispatch queue in response to events.
+ *
+ * @discussion
+ * Dispatch sources are not reentrant. Any events received while the dispatch
+ * source is suspended or while the event handler block is currently executing
+ * will be coalesced and delivered after the dispatch source is resumed or the
+ * event handler block has returned.
+ *
+ * Dispatch sources are created in an inactive state. After creating the
+ * source and setting any desired attributes (i.e. the handler, context, etc.),
+ * a call must be made to dispatch_activate() in order to begin event delivery.
+ *
+ * Calling dispatch_set_target_queue() on a source once it has been activated
+ * is not allowed (see dispatch_activate() and dispatch_set_target_queue()).
+ *
+ * For backward compatibility reasons, dispatch_resume() on an inactive,
+ * and not otherwise suspended source has the same effect as calling
+ * dispatch_activate(). For new code, using dispatch_activate() is preferred.
+ *
+ * @param type
+ * Declares the type of the dispatch source. Must be one of the defined
+ * dispatch_source_type_t constants.
+ *
+ * @param handle
+ * The underlying system handle to monitor. The interpretation of this argument
+ * is determined by the constant provided in the type parameter.
+ *
+ * @param mask
+ * A mask of flags specifying which events are desired. The interpretation of
+ * this argument is determined by the constant provided in the type parameter.
+ *
+ * @param queue
+ * The dispatch queue to which the event handler block will be submitted.
+ * If queue is DISPATCH_TARGET_QUEUE_DEFAULT, the source will submit the event
+ * handler block to the default priority global queue.
+ *
+ * @result
+ * The newly created dispatch source. Or NULL if invalid arguments are passed.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_RETURNS_RETAINED DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+dispatch_source_t
+dispatch_source_create(dispatch_source_type_t type,
+ uintptr_t handle,
+ uintptr_t mask,
+ dispatch_queue_t _Nullable queue);
+
+/*!
+ * @function dispatch_source_set_event_handler
+ *
+ * @abstract
+ * Sets the event handler block for the given dispatch source.
+ *
+ * @param source
+ * The dispatch source to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param handler
+ * The event handler block to submit to the source's target queue.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+void
+dispatch_source_set_event_handler(dispatch_source_t source,
+ dispatch_block_t _Nullable handler);
+#endif /* __BLOCKS__ */
+
+/*!
+ * @function dispatch_source_set_event_handler_f
+ *
+ * @abstract
+ * Sets the event handler function for the given dispatch source.
+ *
+ * @param source
+ * The dispatch source to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param handler
+ * The event handler function to submit to the source's target queue.
+ * The context parameter passed to the event handler function is the context of
+ * the dispatch source current at the time the event handler was set.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+void
+dispatch_source_set_event_handler_f(dispatch_source_t source,
+ dispatch_function_t _Nullable handler);
+
+/*!
+ * @function dispatch_source_set_cancel_handler
+ *
+ * @abstract
+ * Sets the cancellation handler block for the given dispatch source.
+ *
+ * @discussion
+ * The cancellation handler (if specified) will be submitted to the source's
+ * target queue in response to a call to dispatch_source_cancel() once the
+ * system has released all references to the source's underlying handle and
+ * the source's event handler block has returned.
+ *
+ * IMPORTANT:
+ * Source cancellation and a cancellation handler are required for file
+ * descriptor and mach port based sources in order to safely close the
+ * descriptor or destroy the port.
+ * Closing the descriptor or port before the cancellation handler is invoked may
+ * result in a race condition. If a new descriptor is allocated with the same
+ * value as the recently closed descriptor while the source's event handler is
+ * still running, the event handler may read/write data to the wrong descriptor.
+ *
+ * @param source
+ * The dispatch source to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param handler
+ * The cancellation handler block to submit to the source's target queue.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+void
+dispatch_source_set_cancel_handler(dispatch_source_t source,
+ dispatch_block_t _Nullable handler);
+#endif /* __BLOCKS__ */
+
+/*!
+ * @function dispatch_source_set_cancel_handler_f
+ *
+ * @abstract
+ * Sets the cancellation handler function for the given dispatch source.
+ *
+ * @discussion
+ * See dispatch_source_set_cancel_handler() for more details.
+ *
+ * @param source
+ * The dispatch source to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param handler
+ * The cancellation handler function to submit to the source's target queue.
+ * The context parameter passed to the event handler function is the current
+ * context of the dispatch source at the time the handler call is made.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+void
+dispatch_source_set_cancel_handler_f(dispatch_source_t source,
+ dispatch_function_t _Nullable handler);
+
+/*!
+ * @function dispatch_source_cancel
+ *
+ * @abstract
+ * Asynchronously cancel the dispatch source, preventing any further invocation
+ * of its event handler block.
+ *
+ * @discussion
+ * Cancellation prevents any further invocation of the event handler block for
+ * the specified dispatch source, but does not interrupt an event handler
+ * block that is already in progress.
+ *
+ * The cancellation handler is submitted to the source's target queue once the
+ * the source's event handler has finished, indicating it is now safe to close
+ * the source's handle (i.e. file descriptor or mach port).
+ *
+ * See dispatch_source_set_cancel_handler() for more information.
+ *
+ * @param source
+ * The dispatch source to be canceled.
+ * The result of passing NULL in this parameter is undefined.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_source_cancel(dispatch_source_t source);
+
+/*!
+ * @function dispatch_source_testcancel
+ *
+ * @abstract
+ * Tests whether the given dispatch source has been canceled.
+ *
+ * @param source
+ * The dispatch source to be tested.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @result
+ * Non-zero if canceled and zero if not canceled.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE
+DISPATCH_NOTHROW
+intptr_t
+dispatch_source_testcancel(dispatch_source_t source);
+
+/*!
+ * @function dispatch_source_get_handle
+ *
+ * @abstract
+ * Returns the underlying system handle associated with this dispatch source.
+ *
+ * @param source
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @result
+ * The return value should be interpreted according to the type of the dispatch
+ * source, and may be one of the following handles:
+ *
+ * DISPATCH_SOURCE_TYPE_DATA_ADD: n/a
+ * DISPATCH_SOURCE_TYPE_DATA_OR: n/a
+ * DISPATCH_SOURCE_TYPE_DATA_REPLACE: n/a
+ * DISPATCH_SOURCE_TYPE_MACH_SEND: mach port (mach_port_t)
+ * DISPATCH_SOURCE_TYPE_MACH_RECV: mach port (mach_port_t)
+ * DISPATCH_SOURCE_TYPE_MEMORYPRESSURE n/a
+ * DISPATCH_SOURCE_TYPE_PROC: process identifier (pid_t)
+ * DISPATCH_SOURCE_TYPE_READ: file descriptor (int)
+ * DISPATCH_SOURCE_TYPE_SIGNAL: signal number (int)
+ * DISPATCH_SOURCE_TYPE_TIMER: n/a
+ * DISPATCH_SOURCE_TYPE_VNODE: file descriptor (int)
+ * DISPATCH_SOURCE_TYPE_WRITE: file descriptor (int)
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE
+DISPATCH_NOTHROW
+uintptr_t
+dispatch_source_get_handle(dispatch_source_t source);
+
+/*!
+ * @function dispatch_source_get_mask
+ *
+ * @abstract
+ * Returns the mask of events monitored by the dispatch source.
+ *
+ * @param source
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @result
+ * The return value should be interpreted according to the type of the dispatch
+ * source, and may be one of the following flag sets:
+ *
+ * DISPATCH_SOURCE_TYPE_DATA_ADD: n/a
+ * DISPATCH_SOURCE_TYPE_DATA_OR: n/a
+ * DISPATCH_SOURCE_TYPE_DATA_REPLACE: n/a
+ * DISPATCH_SOURCE_TYPE_MACH_SEND: dispatch_source_mach_send_flags_t
+ * DISPATCH_SOURCE_TYPE_MACH_RECV: dispatch_source_mach_recv_flags_t
+ * DISPATCH_SOURCE_TYPE_MEMORYPRESSURE dispatch_source_memorypressure_flags_t
+ * DISPATCH_SOURCE_TYPE_PROC: dispatch_source_proc_flags_t
+ * DISPATCH_SOURCE_TYPE_READ: n/a
+ * DISPATCH_SOURCE_TYPE_SIGNAL: n/a
+ * DISPATCH_SOURCE_TYPE_TIMER: dispatch_source_timer_flags_t
+ * DISPATCH_SOURCE_TYPE_VNODE: dispatch_source_vnode_flags_t
+ * DISPATCH_SOURCE_TYPE_WRITE: n/a
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE
+DISPATCH_NOTHROW
+uintptr_t
+dispatch_source_get_mask(dispatch_source_t source);
+
+/*!
+ * @function dispatch_source_get_data
+ *
+ * @abstract
+ * Returns pending data for the dispatch source.
+ *
+ * @discussion
+ * This function is intended to be called from within the event handler block.
+ * The result of calling this function outside of the event handler callback is
+ * undefined.
+ *
+ * @param source
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @result
+ * The return value should be interpreted according to the type of the dispatch
+ * source, and may be one of the following:
+ *
+ * DISPATCH_SOURCE_TYPE_DATA_ADD: application defined data
+ * DISPATCH_SOURCE_TYPE_DATA_OR: application defined data
+ * DISPATCH_SOURCE_TYPE_DATA_REPLACE: application defined data
+ * DISPATCH_SOURCE_TYPE_MACH_SEND: dispatch_source_mach_send_flags_t
+ * DISPATCH_SOURCE_TYPE_MACH_RECV: dispatch_source_mach_recv_flags_t
+ * DISPATCH_SOURCE_TYPE_MEMORYPRESSURE dispatch_source_memorypressure_flags_t
+ * DISPATCH_SOURCE_TYPE_PROC: dispatch_source_proc_flags_t
+ * DISPATCH_SOURCE_TYPE_READ: estimated bytes available to read
+ * DISPATCH_SOURCE_TYPE_SIGNAL: number of signals delivered since
+ * the last handler invocation
+ * DISPATCH_SOURCE_TYPE_TIMER: number of times the timer has fired
+ * since the last handler invocation
+ * DISPATCH_SOURCE_TYPE_VNODE: dispatch_source_vnode_flags_t
+ * DISPATCH_SOURCE_TYPE_WRITE: estimated buffer space available
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_WARN_RESULT DISPATCH_PURE
+DISPATCH_NOTHROW
+uintptr_t
+dispatch_source_get_data(dispatch_source_t source);
+
+/*!
+ * @function dispatch_source_merge_data
+ *
+ * @abstract
+ * Merges data into a dispatch source of type DISPATCH_SOURCE_TYPE_DATA_ADD,
+ * DISPATCH_SOURCE_TYPE_DATA_OR or DISPATCH_SOURCE_TYPE_DATA_REPLACE,
+ * and submits its event handler block to its target queue.
+ *
+ * @param source
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param value
+ * The value to coalesce with the pending data using a logical OR or an ADD
+ * as specified by the dispatch source type. A value of zero has no effect
+ * and will not result in the submission of the event handler block.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_source_merge_data(dispatch_source_t source, uintptr_t value);
+
+/*!
+ * @function dispatch_source_set_timer
+ *
+ * @abstract
+ * Sets a start time, interval, and leeway value for a timer source.
+ *
+ * @discussion
+ * Once this function returns, any pending source data accumulated for the
+ * previous timer values has been cleared; the next fire of the timer will
+ * occur at 'start', and every 'interval' nanoseconds thereafter until the
+ * timer source is canceled.
+ *
+ * Any fire of the timer may be delayed by the system in order to improve power
+ * consumption and system performance. The upper limit to the allowable delay
+ * may be configured with the 'leeway' argument, the lower limit is under the
+ * control of the system.
+ *
+ * For the initial timer fire at 'start', the upper limit to the allowable
+ * delay is set to 'leeway' nanoseconds. For the subsequent timer fires at
+ * 'start' + N * 'interval', the upper limit is MIN('leeway','interval'/2).
+ *
+ * The lower limit to the allowable delay may vary with process state such as
+ * visibility of application UI. If the specified timer source was created with
+ * a mask of DISPATCH_TIMER_STRICT, the system will make a best effort to
+ * strictly observe the provided 'leeway' value even if it is smaller than the
+ * current lower limit. Note that a minimal amount of delay is to be expected
+ * even if this flag is specified.
+ *
+ * The 'start' argument also determines which clock will be used for the timer:
+ * If 'start' is DISPATCH_TIME_NOW or was created with dispatch_time(3), the
+ * timer is based on up time (which is obtained from mach_absolute_time() on
+ * Apple platforms). If 'start' was created with dispatch_walltime(3), the
+ * timer is based on gettimeofday(3).
+ *
+ * Calling this function has no effect if the timer source has already been
+ * canceled.
+ *
+ * @param start
+ * The start time of the timer. See dispatch_time() and dispatch_walltime()
+ * for more information.
+ *
+ * @param interval
+ * The nanosecond interval for the timer. Use DISPATCH_TIME_FOREVER for a
+ * one-shot timer.
+ *
+ * @param leeway
+ * The nanosecond leeway for the timer.
+ */
+API_AVAILABLE(macos(10.6), ios(4.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_source_set_timer(dispatch_source_t source,
+ dispatch_time_t start,
+ uint64_t interval,
+ uint64_t leeway);
+
+/*!
+ * @function dispatch_source_set_registration_handler
+ *
+ * @abstract
+ * Sets the registration handler block for the given dispatch source.
+ *
+ * @discussion
+ * The registration handler (if specified) will be submitted to the source's
+ * target queue once the corresponding kevent() has been registered with the
+ * system, following the initial dispatch_resume() of the source.
+ *
+ * If a source is already registered when the registration handler is set, the
+ * registration handler will be invoked immediately.
+ *
+ * @param source
+ * The dispatch source to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param handler
+ * The registration handler block to submit to the source's target queue.
+ */
+#ifdef __BLOCKS__
+API_AVAILABLE(macos(10.7), ios(4.3))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+void
+dispatch_source_set_registration_handler(dispatch_source_t source,
+ dispatch_block_t _Nullable handler);
+#endif /* __BLOCKS__ */
+
+/*!
+ * @function dispatch_source_set_registration_handler_f
+ *
+ * @abstract
+ * Sets the registration handler function for the given dispatch source.
+ *
+ * @discussion
+ * See dispatch_source_set_registration_handler() for more details.
+ *
+ * @param source
+ * The dispatch source to modify.
+ * The result of passing NULL in this parameter is undefined.
+ *
+ * @param handler
+ * The registration handler function to submit to the source's target queue.
+ * The context parameter passed to the registration handler function is the
+ * current context of the dispatch source at the time the handler call is made.
+ */
+API_AVAILABLE(macos(10.7), ios(4.3))
+DISPATCH_EXPORT DISPATCH_NONNULL1 DISPATCH_NOTHROW
+void
+dispatch_source_set_registration_handler_f(dispatch_source_t source,
+ dispatch_function_t _Nullable handler);
+
+__END_DECLS
+
+DISPATCH_ASSUME_NONNULL_END
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/dispatch/workloop.h b/lib/libc/include/aarch64-macos-gnu/dispatch/workloop.h
new file mode 100644
index 0000000000..7d27b1f207
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/dispatch/workloop.h
@@ -0,0 +1,163 @@
+/*
+ * Copyright (c) 2017-2019 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __DISPATCH_WORKLOOP__
+#define __DISPATCH_WORKLOOP__
+
+#ifndef __DISPATCH_INDIRECT__
+#error "Please #include <dispatch/dispatch.h> instead of this file directly."
+#include <dispatch/base.h> // for HeaderDoc
+#endif
+
+DISPATCH_ASSUME_NONNULL_BEGIN
+
+__BEGIN_DECLS
+
+/*!
+ * @typedef dispatch_workloop_t
+ *
+ * @abstract
+ * Dispatch workloops invoke workitems submitted to them in priority order.
+ *
+ * @discussion
+ * A dispatch workloop is a flavor of dispatch_queue_t that is a priority
+ * ordered queue (using the QOS class of the submitted workitems as the
+ * ordering).
+ *
+ * Between each workitem invocation, the workloop will evaluate whether higher
+ * priority workitems have since been submitted, either directly to the
+ * workloop or to any queues that target the workloop, and execute these first.
+ *
+ * Serial queues targeting a workloop maintain FIFO execution of their
+ * workitems. However, the workloop may reorder workitems submitted to
+ * independent serial queues targeting it with respect to each other,
+ * based on their priorities, while preserving FIFO execution with respect to
+ * each serial queue.
+ *
+ * A dispatch workloop is a "subclass" of dispatch_queue_t which can be passed
+ * to all APIs accepting a dispatch queue, except for functions from the
+ * dispatch_sync() family. dispatch_async_and_wait() must be used for workloop
+ * objects. Functions from the dispatch_sync() family on queues targeting
+ * a workloop are still permitted but discouraged for performance reasons.
+ */
+DISPATCH_DECL_SUBCLASS(dispatch_workloop, dispatch_queue);
+
+/*!
+ * @function dispatch_workloop_create
+ *
+ * @abstract
+ * Creates a new dispatch workloop to which workitems may be submitted.
+ *
+ * @param label
+ * A string label to attach to the workloop.
+ *
+ * @result
+ * The newly created dispatch workloop.
+ */
+API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_RETURNS_RETAINED DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+dispatch_workloop_t
+dispatch_workloop_create(const char *_Nullable label);
+
+/*!
+ * @function dispatch_workloop_create_inactive
+ *
+ * @abstract
+ * Creates a new inactive dispatch workloop that can be setup and then
+ * activated.
+ *
+ * @discussion
+ * Creating an inactive workloop allows for it to receive further configuration
+ * before it is activated, and workitems can be submitted to it.
+ *
+ * Submitting workitems to an inactive workloop is undefined and will cause the
+ * process to be terminated.
+ *
+ * @param label
+ * A string label to attach to the workloop.
+ *
+ * @result
+ * The newly created dispatch workloop.
+ */
+API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+DISPATCH_EXPORT DISPATCH_MALLOC DISPATCH_RETURNS_RETAINED DISPATCH_WARN_RESULT
+DISPATCH_NOTHROW
+dispatch_workloop_t
+dispatch_workloop_create_inactive(const char *_Nullable label);
+
+/*!
+ * @function dispatch_workloop_set_autorelease_frequency
+ *
+ * @abstract
+ * Sets the autorelease frequency of the workloop.
+ *
+ * @discussion
+ * See dispatch_queue_attr_make_with_autorelease_frequency().
+ * The default policy for a workloop is
+ * DISPATCH_AUTORELEASE_FREQUENCY_WORK_ITEM.
+ *
+ * @param workloop
+ * The dispatch workloop to modify.
+ *
+ * This workloop must be inactive, passing an activated object is undefined
+ * and will cause the process to be terminated.
+ *
+ * @param frequency
+ * The requested autorelease frequency.
+ */
+API_AVAILABLE(macos(10.14), ios(12.0), tvos(12.0), watchos(5.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_workloop_set_autorelease_frequency(dispatch_workloop_t workloop,
+ dispatch_autorelease_frequency_t frequency);
+
+/*!
+ * @function dispatch_workloop_set_os_workgroup
+ *
+ * @abstract
+ * Associates an os_workgroup_t with the specified dispatch workloop.
+ *
+ * The worker thread will be a member of the specified os_workgroup_t while executing
+ * work items submitted to the workloop.
+ *
+ * @param workloop
+ * The dispatch workloop to modify.
+ *
+ * This workloop must be inactive, passing an activated object is undefined
+ * and will cause the process to be terminated.
+ *
+ * @param workgroup
+ * The workgroup to associate with this workloop.
+ *
+ * The workgroup specified is retained and the previously associated workgroup
+ * (if any) is released.
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+DISPATCH_EXPORT DISPATCH_NONNULL_ALL DISPATCH_NOTHROW
+void
+dispatch_workloop_set_os_workgroup(dispatch_workloop_t workloop,
+ os_workgroup_t workgroup);
+
+__END_DECLS
+
+DISPATCH_ASSUME_NONNULL_END
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/libkern/OSAtomicDeprecated.h b/lib/libc/include/aarch64-macos-gnu/libkern/OSAtomicDeprecated.h
new file mode 100644
index 0000000000..6dc880b0d4
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/libkern/OSAtomicDeprecated.h
@@ -0,0 +1,1266 @@
+/*
+ * Copyright (c) 2004-2016 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _OSATOMIC_DEPRECATED_H_
+#define _OSATOMIC_DEPRECATED_H_
+
+/*! @header
+ * These are deprecated legacy interfaces for atomic operations.
+ * The C11 interfaces in <stdatomic.h> resp. C++11 interfaces in <atomic>
+ * should be used instead.
+ *
+ * Define OSATOMIC_USE_INLINED=1 to get inline implementations of these
+ * interfaces in terms of the <stdatomic.h> resp. <atomic> primitives.
+ * This is intended as a transition convenience, direct use of those primitives
+ * is preferred.
+ */
+
+#include <Availability.h>
+
+#if !(defined(OSATOMIC_USE_INLINED) && OSATOMIC_USE_INLINED)
+
+#include <sys/cdefs.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#ifndef OSATOMIC_DEPRECATED
+#define OSATOMIC_DEPRECATED 1
+#ifndef __cplusplus
+#define OSATOMIC_BARRIER_DEPRECATED_MSG(_r) \
+ "Use " #_r "() from <stdatomic.h> instead"
+#define OSATOMIC_DEPRECATED_MSG(_r) \
+ "Use " #_r "_explicit(memory_order_relaxed) from <stdatomic.h> instead"
+#else
+#define OSATOMIC_BARRIER_DEPRECATED_MSG(_r) \
+ "Use std::" #_r "() from <atomic> instead"
+#define OSATOMIC_DEPRECATED_MSG(_r) \
+ "Use std::" #_r "_explicit(std::memory_order_relaxed) from <atomic> instead"
+#endif
+#define OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(_r) \
+ __OS_AVAILABILITY_MSG(macosx, deprecated=10.12, OSATOMIC_BARRIER_DEPRECATED_MSG(_r)) \
+ __OS_AVAILABILITY_MSG(ios, deprecated=10.0, OSATOMIC_BARRIER_DEPRECATED_MSG(_r)) \
+ __OS_AVAILABILITY_MSG(tvos, deprecated=10.0, OSATOMIC_BARRIER_DEPRECATED_MSG(_r)) \
+ __OS_AVAILABILITY_MSG(watchos, deprecated=3.0, OSATOMIC_BARRIER_DEPRECATED_MSG(_r))
+#define OSATOMIC_DEPRECATED_REPLACE_WITH(_r) \
+ __OS_AVAILABILITY_MSG(macosx, deprecated=10.12, OSATOMIC_DEPRECATED_MSG(_r)) \
+ __OS_AVAILABILITY_MSG(ios, deprecated=10.0, OSATOMIC_DEPRECATED_MSG(_r)) \
+ __OS_AVAILABILITY_MSG(tvos, deprecated=10.0, OSATOMIC_DEPRECATED_MSG(_r)) \
+ __OS_AVAILABILITY_MSG(watchos, deprecated=3.0, OSATOMIC_DEPRECATED_MSG(_r))
+#else
+#undef OSATOMIC_DEPRECATED
+#define OSATOMIC_DEPRECATED 0
+#define OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(_r)
+#define OSATOMIC_DEPRECATED_REPLACE_WITH(_r)
+#endif
+
+/*
+ * WARNING: all addresses passed to these functions must be "naturally aligned",
+ * i.e. <code>int32_t</code> pointers must be 32-bit aligned (low 2 bits of
+ * address are zeroes), and <code>int64_t</code> pointers must be 64-bit
+ * aligned (low 3 bits of address are zeroes.).
+ * Note that this is not the default alignment of the <code>int64_t</code> type
+ * in the iOS ARMv7 ABI, see
+ * {@link //apple_ref/doc/uid/TP40009021-SW8 iPhoneOSABIReference}
+ *
+ * Note that some versions of the atomic functions incorporate memory barriers
+ * and some do not. Barriers strictly order memory access on weakly-ordered
+ * architectures such as ARM. All loads and stores that appear (in sequential
+ * program order) before the barrier are guaranteed to complete before any
+ * load or store that appears after the barrier.
+ *
+ * The barrier operation is typically a no-op on uniprocessor systems and
+ * fully enabled on multiprocessor systems. On some platforms, such as ARM,
+ * the barrier can be quite expensive.
+ *
+ * Most code should use the barrier functions to ensure that memory shared
+ * between threads is properly synchronized. For example, if you want to
+ * initialize a shared data structure and then atomically increment a variable
+ * to indicate that the initialization is complete, you must use
+ * {@link OSAtomicIncrement32Barrier} to ensure that the stores to your data
+ * structure complete before the atomic increment.
+ *
+ * Likewise, the consumer of that data structure must use
+ * {@link OSAtomicDecrement32Barrier},
+ * in order to ensure that their loads of the structure are not executed before
+ * the atomic decrement. On the other hand, if you are simply incrementing a
+ * global counter, then it is safe and potentially faster to use
+ * {@link OSAtomicIncrement32}.
+ *
+ * If you are unsure which version to use, prefer the barrier variants as they
+ * are safer.
+ *
+ * For the kernel-space version of this header, see
+ * {@link //apple_ref/doc/header/OSAtomic.h OSAtomic.h (Kernel Framework)}
+ *
+ * @apiuid //apple_ref/doc/header/user_space_OSAtomic.h
+ */
+
+__BEGIN_DECLS
+
+/*! @typedef OSAtomic_int64_aligned64_t
+ * 64-bit aligned <code>int64_t</code> type.
+ * Use for variables whose addresses are passed to OSAtomic*64() functions to
+ * get the compiler to generate the required alignment.
+ */
+
+#if __has_attribute(aligned)
+typedef int64_t __attribute__((__aligned__((sizeof(int64_t)))))
+ OSAtomic_int64_aligned64_t;
+#else
+typedef int64_t OSAtomic_int64_aligned64_t;
+#endif
+
+/*! @group Arithmetic functions
+ All functions in this group return the new value.
+ */
+
+/*! @abstract Atomically adds two 32-bit values.
+ @discussion
+ This function adds the value given by <code>__theAmount</code> to the
+ value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_add)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int32_t OSAtomicAdd32( int32_t __theAmount, volatile int32_t *__theValue );
+
+
+/*! @abstract Atomically adds two 32-bit values.
+ @discussion
+ This function adds the value given by <code>__theAmount</code> to the
+ value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicAdd32}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_add)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int32_t OSAtomicAdd32Barrier( int32_t __theAmount, volatile int32_t *__theValue );
+
+
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10 || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_1 || TARGET_OS_DRIVERKIT
+
+/*! @abstract Atomically increments a 32-bit value.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_add)
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_7_1)
+int32_t OSAtomicIncrement32( volatile int32_t *__theValue );
+
+
+/*! @abstract Atomically increments a 32-bit value with a barrier.
+ @discussion
+ This function is equivalent to {@link OSAtomicIncrement32}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_add)
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_7_1)
+int32_t OSAtomicIncrement32Barrier( volatile int32_t *__theValue );
+
+
+/*! @abstract Atomically decrements a 32-bit value.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_sub)
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_7_1)
+int32_t OSAtomicDecrement32( volatile int32_t *__theValue );
+
+
+/*! @abstract Atomically decrements a 32-bit value with a barrier.
+ @discussion
+ This function is equivalent to {@link OSAtomicDecrement32}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_sub)
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_7_1)
+int32_t OSAtomicDecrement32Barrier( volatile int32_t *__theValue );
+
+#else
+__inline static
+int32_t OSAtomicIncrement32( volatile int32_t *__theValue )
+ { return OSAtomicAdd32( 1, __theValue); }
+
+__inline static
+int32_t OSAtomicIncrement32Barrier( volatile int32_t *__theValue )
+ { return OSAtomicAdd32Barrier( 1, __theValue); }
+
+__inline static
+int32_t OSAtomicDecrement32( volatile int32_t *__theValue )
+ { return OSAtomicAdd32( -1, __theValue); }
+
+__inline static
+int32_t OSAtomicDecrement32Barrier( volatile int32_t *__theValue )
+ { return OSAtomicAdd32Barrier( -1, __theValue); }
+#endif
+
+
+/*! @abstract Atomically adds two 64-bit values.
+ @discussion
+ This function adds the value given by <code>__theAmount</code> to the
+ value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_add)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int64_t OSAtomicAdd64( int64_t __theAmount,
+ volatile OSAtomic_int64_aligned64_t *__theValue );
+
+
+/*! @abstract Atomically adds two 64-bit values with a barrier.
+ @discussion
+ This function adds the value given by <code>__theAmount</code> to the
+ value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicAdd64}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_add)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_3_2)
+int64_t OSAtomicAdd64Barrier( int64_t __theAmount,
+ volatile OSAtomic_int64_aligned64_t *__theValue );
+
+
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_10 || __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_1 || TARGET_OS_DRIVERKIT
+
+/*! @abstract Atomically increments a 64-bit value.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_add)
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_7_1)
+int64_t OSAtomicIncrement64( volatile OSAtomic_int64_aligned64_t *__theValue );
+
+
+/*! @abstract Atomically increments a 64-bit value with a barrier.
+ @discussion
+ This function is equivalent to {@link OSAtomicIncrement64}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_add)
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_7_1)
+int64_t OSAtomicIncrement64Barrier( volatile OSAtomic_int64_aligned64_t *__theValue );
+
+
+/*! @abstract Atomically decrements a 64-bit value.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_sub)
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_7_1)
+int64_t OSAtomicDecrement64( volatile OSAtomic_int64_aligned64_t *__theValue );
+
+
+/*! @abstract Atomically decrements a 64-bit value with a barrier.
+ @discussion
+ This function is equivalent to {@link OSAtomicDecrement64}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_sub)
+__OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_7_1)
+int64_t OSAtomicDecrement64Barrier( volatile OSAtomic_int64_aligned64_t *__theValue );
+
+#else
+__inline static
+int64_t OSAtomicIncrement64( volatile OSAtomic_int64_aligned64_t *__theValue )
+ { return OSAtomicAdd64( 1, __theValue); }
+
+__inline static
+int64_t OSAtomicIncrement64Barrier( volatile OSAtomic_int64_aligned64_t *__theValue )
+ { return OSAtomicAdd64Barrier( 1, __theValue); }
+
+__inline static
+int64_t OSAtomicDecrement64( volatile OSAtomic_int64_aligned64_t *__theValue )
+ { return OSAtomicAdd64( -1, __theValue); }
+
+__inline static
+int64_t OSAtomicDecrement64Barrier( volatile OSAtomic_int64_aligned64_t *__theValue )
+ { return OSAtomicAdd64Barrier( -1, __theValue); }
+#endif
+
+
+/*! @group Boolean functions (AND, OR, XOR)
+ *
+ * @discussion Functions in this group come in four variants for each operation:
+ * with and without barriers, and functions that return the original value or
+ * the result value of the operation.
+ *
+ * The "Orig" versions return the original value, (before the operation); the non-Orig
+ * versions return the value after the operation. All are layered on top of
+ * {@link OSAtomicCompareAndSwap32} and similar.
+ */
+
+/*! @abstract Atomic bitwise OR of two 32-bit values.
+ @discussion
+ This function performs the bitwise OR of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_or)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int32_t OSAtomicOr32( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise OR of two 32-bit values with barrier.
+ @discussion
+ This function performs the bitwise OR of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicOr32}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_or)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int32_t OSAtomicOr32Barrier( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise OR of two 32-bit values returning original.
+ @discussion
+ This function performs the bitwise OR of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+ @result Returns the original value referenced by <code>__theValue</code>.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_or)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_2)
+int32_t OSAtomicOr32Orig( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise OR of two 32-bit values returning original with barrier.
+ @discussion
+ This function performs the bitwise OR of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicOr32Orig}
+ except that it also introduces a barrier.
+ @result Returns the original value referenced by <code>__theValue</code>.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_or)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_2)
+int32_t OSAtomicOr32OrigBarrier( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+
+
+/*! @abstract Atomic bitwise AND of two 32-bit values.
+ @discussion
+ This function performs the bitwise AND of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_and)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int32_t OSAtomicAnd32( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise AND of two 32-bit values with barrier.
+ @discussion
+ This function performs the bitwise AND of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicAnd32}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_and)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int32_t OSAtomicAnd32Barrier( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise AND of two 32-bit values returning original.
+ @discussion
+ This function performs the bitwise AND of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+ @result Returns the original value referenced by <code>__theValue</code>.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_and)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_2)
+int32_t OSAtomicAnd32Orig( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise AND of two 32-bit values returning original with barrier.
+ @discussion
+ This function performs the bitwise AND of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicAnd32Orig}
+ except that it also introduces a barrier.
+ @result Returns the original value referenced by <code>__theValue</code>.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_and)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_2)
+int32_t OSAtomicAnd32OrigBarrier( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+
+
+/*! @abstract Atomic bitwise XOR of two 32-bit values.
+ @discussion
+ This function performs the bitwise XOR of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+ @result Returns the new value.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_xor)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int32_t OSAtomicXor32( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise XOR of two 32-bit values with barrier.
+ @discussion
+ This function performs the bitwise XOR of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicXor32}
+ except that it also introduces a barrier.
+ @result Returns the new value.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_xor)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+int32_t OSAtomicXor32Barrier( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise XOR of two 32-bit values returning original.
+ @discussion
+ This function performs the bitwise XOR of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+ @result Returns the original value referenced by <code>__theValue</code>.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_xor)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_2)
+int32_t OSAtomicXor32Orig( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @abstract Atomic bitwise XOR of two 32-bit values returning original with barrier.
+ @discussion
+ This function performs the bitwise XOR of the value given by <code>__theMask</code>
+ with the value in the memory location referenced by <code>__theValue</code>,
+ storing the result back to that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicXor32Orig}
+ except that it also introduces a barrier.
+ @result Returns the original value referenced by <code>__theValue</code>.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_xor)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_2)
+int32_t OSAtomicXor32OrigBarrier( uint32_t __theMask, volatile uint32_t *__theValue );
+
+
+/*! @group Compare and swap
+ * Functions in this group return true if the swap occured. There are several versions,
+ * depending on data type and on whether or not a barrier is used.
+ */
+
+
+/*! @abstract Compare and swap for 32-bit values.
+ @discussion
+ This function compares the value in <code>__oldValue</code> to the value
+ in the memory location referenced by <code>__theValue</code>. If the values
+ match, this function stores the value from <code>__newValue</code> into
+ that memory location atomically.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+bool OSAtomicCompareAndSwap32( int32_t __oldValue, int32_t __newValue, volatile int32_t *__theValue );
+
+
+/*! @abstract Compare and swap for 32-bit values with barrier.
+ @discussion
+ This function compares the value in <code>__oldValue</code> to the value
+ in the memory location referenced by <code>__theValue</code>. If the values
+ match, this function stores the value from <code>__newValue</code> into
+ that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwap32}
+ except that it also introduces a barrier.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+bool OSAtomicCompareAndSwap32Barrier( int32_t __oldValue, int32_t __newValue, volatile int32_t *__theValue );
+
+
+/*! @abstract Compare and swap pointers.
+ @discussion
+ This function compares the pointer stored in <code>__oldValue</code> to the pointer
+ in the memory location referenced by <code>__theValue</code>. If the pointers
+ match, this function stores the pointer from <code>__newValue</code> into
+ that memory location atomically.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0)
+bool OSAtomicCompareAndSwapPtr( void *__oldValue, void *__newValue, void * volatile *__theValue );
+
+
+/*! @abstract Compare and swap pointers with barrier.
+ @discussion
+ This function compares the pointer stored in <code>__oldValue</code> to the pointer
+ in the memory location referenced by <code>__theValue</code>. If the pointers
+ match, this function stores the pointer from <code>__newValue</code> into
+ that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwapPtr}
+ except that it also introduces a barrier.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0)
+bool OSAtomicCompareAndSwapPtrBarrier( void *__oldValue, void *__newValue, void * volatile *__theValue );
+
+
+/*! @abstract Compare and swap for <code>int</code> values.
+ @discussion
+ This function compares the value in <code>__oldValue</code> to the value
+ in the memory location referenced by <code>__theValue</code>. If the values
+ match, this function stores the value from <code>__newValue</code> into
+ that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwap32}.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0)
+bool OSAtomicCompareAndSwapInt( int __oldValue, int __newValue, volatile int *__theValue );
+
+
+/*! @abstract Compare and swap for <code>int</code> values.
+ @discussion
+ This function compares the value in <code>__oldValue</code> to the value
+ in the memory location referenced by <code>__theValue</code>. If the values
+ match, this function stores the value from <code>__newValue</code> into
+ that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwapInt}
+ except that it also introduces a barrier.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwap32Barrier}.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0)
+bool OSAtomicCompareAndSwapIntBarrier( int __oldValue, int __newValue, volatile int *__theValue );
+
+
+/*! @abstract Compare and swap for <code>long</code> values.
+ @discussion
+ This function compares the value in <code>__oldValue</code> to the value
+ in the memory location referenced by <code>__theValue</code>. If the values
+ match, this function stores the value from <code>__newValue</code> into
+ that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwap32} on 32-bit architectures,
+ or {@link OSAtomicCompareAndSwap64} on 64-bit architectures.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0)
+bool OSAtomicCompareAndSwapLong( long __oldValue, long __newValue, volatile long *__theValue );
+
+
+/*! @abstract Compare and swap for <code>long</code> values.
+ @discussion
+ This function compares the value in <code>__oldValue</code> to the value
+ in the memory location referenced by <code>__theValue</code>. If the values
+ match, this function stores the value from <code>__newValue</code> into
+ that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwapLong}
+ except that it also introduces a barrier.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwap32} on 32-bit architectures,
+ or {@link OSAtomicCompareAndSwap64} on 64-bit architectures.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0)
+bool OSAtomicCompareAndSwapLongBarrier( long __oldValue, long __newValue, volatile long *__theValue );
+
+
+/*! @abstract Compare and swap for <code>uint64_t</code> values.
+ @discussion
+ This function compares the value in <code>__oldValue</code> to the value
+ in the memory location referenced by <code>__theValue</code>. If the values
+ match, this function stores the value from <code>__newValue</code> into
+ that memory location atomically.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+bool OSAtomicCompareAndSwap64( int64_t __oldValue, int64_t __newValue,
+ volatile OSAtomic_int64_aligned64_t *__theValue );
+
+
+/*! @abstract Compare and swap for <code>uint64_t</code> values.
+ @discussion
+ This function compares the value in <code>__oldValue</code> to the value
+ in the memory location referenced by <code>__theValue</code>. If the values
+ match, this function stores the value from <code>__newValue</code> into
+ that memory location atomically.
+
+ This function is equivalent to {@link OSAtomicCompareAndSwap64}
+ except that it also introduces a barrier.
+ @result Returns TRUE on a match, FALSE otherwise.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_compare_exchange_strong)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_3_2)
+bool OSAtomicCompareAndSwap64Barrier( int64_t __oldValue, int64_t __newValue,
+ volatile OSAtomic_int64_aligned64_t *__theValue );
+
+
+/* Test and set.
+ * They return the original value of the bit, and operate on bit (0x80>>(n&7))
+ * in byte ((char*)theAddress + (n>>3)).
+ */
+/*! @abstract Atomic test and set
+ @discussion
+ This function tests a bit in the value referenced by
+ <code>__theAddress</code> and if it is not set, sets it.
+
+ The bit is chosen by the value of <code>__n</code> such that the
+ operation will be performed on bit <code>(0x80 >> (__n & 7))</code>
+ of byte <code>((char *)__theAddress + (n >> 3))</code>.
+
+ For example, if <code>__theAddress</code> points to a 64-bit value,
+ to compare the value of the most significant bit, you would specify
+ <code>56</code> for <code>__n</code>.
+ @result
+ Returns the original value of the bit being tested.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_or)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+bool OSAtomicTestAndSet( uint32_t __n, volatile void *__theAddress );
+
+
+/*! @abstract Atomic test and set with barrier
+ @discussion
+ This function tests a bit in the value referenced by <code>__theAddress</code>
+ and if it is not set, sets it.
+
+ The bit is chosen by the value of <code>__n</code> such that the
+ operation will be performed on bit <code>(0x80 >> (__n & 7))</code>
+ of byte <code>((char *)__theAddress + (n >> 3))</code>.
+
+ For example, if <code>__theAddress</code> points to a 64-bit value,
+ to compare the value of the most significant bit, you would specify
+ <code>56</code> for <code>__n</code>.
+
+ This function is equivalent to {@link OSAtomicTestAndSet}
+ except that it also introduces a barrier.
+ @result
+ Returns the original value of the bit being tested.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_or)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+bool OSAtomicTestAndSetBarrier( uint32_t __n, volatile void *__theAddress );
+
+
+
+/*! @abstract Atomic test and clear
+ @discussion
+ This function tests a bit in the value referenced by <code>__theAddress</code>
+ and if it is not cleared, clears it.
+
+ The bit is chosen by the value of <code>__n</code> such that the
+ operation will be performed on bit <code>(0x80 >> (__n & 7))</code>
+ of byte <code>((char *)__theAddress + (n >> 3))</code>.
+
+ For example, if <code>__theAddress</code> points to a 64-bit value,
+ to compare the value of the most significant bit, you would specify
+ <code>56</code> for <code>__n</code>.
+
+ @result
+ Returns the original value of the bit being tested.
+ */
+OSATOMIC_DEPRECATED_REPLACE_WITH(atomic_fetch_and)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+bool OSAtomicTestAndClear( uint32_t __n, volatile void *__theAddress );
+
+
+/*! @abstract Atomic test and clear
+ @discussion
+ This function tests a bit in the value referenced by <code>__theAddress</code>
+ and if it is not cleared, clears it.
+
+ The bit is chosen by the value of <code>__n</code> such that the
+ operation will be performed on bit <code>(0x80 >> (__n & 7))</code>
+ of byte <code>((char *)__theAddress + (n >> 3))</code>.
+
+ For example, if <code>__theAddress</code> points to a 64-bit value,
+ to compare the value of the most significant bit, you would specify
+ <code>56</code> for <code>__n</code>.
+
+ This function is equivalent to {@link OSAtomicTestAndSet}
+ except that it also introduces a barrier.
+ @result
+ Returns the original value of the bit being tested.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_fetch_and)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+bool OSAtomicTestAndClearBarrier( uint32_t __n, volatile void *__theAddress );
+
+
+/*! @group Memory barriers */
+
+/*! @abstract Memory barrier.
+ @discussion
+ This function serves as both a read and write barrier.
+ */
+OSATOMIC_BARRIER_DEPRECATED_REPLACE_WITH(atomic_thread_fence)
+__OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_2_0)
+void OSMemoryBarrier( void );
+
+__END_DECLS
+
+#else // defined(OSATOMIC_USE_INLINED) && OSATOMIC_USE_INLINED
+
+/*
+ * Inline implementations of the legacy OSAtomic interfaces in terms of
+ * C11 <stdatomic.h> resp. C++11 <atomic> primitives.
+ * Direct use of those primitives is preferred.
+ */
+
+#include <sys/cdefs.h>
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C++" {
+#if !(__has_include(<atomic>) && __has_extension(cxx_atomic))
+#error Cannot use inlined OSAtomic without <atomic> and C++11 atomics
+#endif
+#include <atomic>
+typedef std::atomic<uint8_t> _OSAtomic_uint8_t;
+typedef std::atomic<int32_t> _OSAtomic_int32_t;
+typedef std::atomic<uint32_t> _OSAtomic_uint32_t;
+typedef std::atomic<int64_t> _OSAtomic_int64_t;
+typedef std::atomic<void*> _OSAtomic_void_ptr_t;
+#define OSATOMIC_STD(_a) std::_a
+__BEGIN_DECLS
+#else
+#if !(__has_include(<stdatomic.h>) && __has_extension(c_atomic))
+#error Cannot use inlined OSAtomic without <stdatomic.h> and C11 atomics
+#endif
+#include <stdatomic.h>
+typedef _Atomic(uint8_t) _OSAtomic_uint8_t;
+typedef _Atomic(int32_t) _OSAtomic_int32_t;
+typedef _Atomic(uint32_t) _OSAtomic_uint32_t;
+typedef _Atomic(int64_t) _OSAtomic_int64_t;
+typedef _Atomic(void*) _OSAtomic_void_ptr_t;
+#define OSATOMIC_STD(_a) _a
+#endif
+
+#if __has_extension(c_alignof) && __has_attribute(aligned)
+typedef int64_t __attribute__((__aligned__(_Alignof(_OSAtomic_int64_t))))
+ OSAtomic_int64_aligned64_t;
+#elif __has_attribute(aligned)
+typedef int64_t __attribute__((__aligned__((sizeof(_OSAtomic_int64_t)))))
+ OSAtomic_int64_aligned64_t;
+#else
+typedef int64_t OSAtomic_int64_aligned64_t;
+#endif
+
+#if __has_attribute(always_inline)
+#define OSATOMIC_INLINE static __inline __attribute__((__always_inline__))
+#else
+#define OSATOMIC_INLINE static __inline
+#endif
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicAdd32(int32_t __theAmount, volatile int32_t *__theValue)
+{
+ return (OSATOMIC_STD(atomic_fetch_add_explicit)(
+ (volatile _OSAtomic_int32_t*) __theValue, __theAmount,
+ OSATOMIC_STD(memory_order_relaxed)) + __theAmount);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicAdd32Barrier(int32_t __theAmount, volatile int32_t *__theValue)
+{
+ return (OSATOMIC_STD(atomic_fetch_add_explicit)(
+ (volatile _OSAtomic_int32_t*) __theValue, __theAmount,
+ OSATOMIC_STD(memory_order_seq_cst)) + __theAmount);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicIncrement32(volatile int32_t *__theValue)
+{
+ return OSAtomicAdd32(1, __theValue);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicIncrement32Barrier(volatile int32_t *__theValue)
+{
+ return OSAtomicAdd32Barrier(1, __theValue);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicDecrement32(volatile int32_t *__theValue)
+{
+ return OSAtomicAdd32(-1, __theValue);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicDecrement32Barrier(volatile int32_t *__theValue)
+{
+ return OSAtomicAdd32Barrier(-1, __theValue);
+}
+
+OSATOMIC_INLINE
+int64_t
+OSAtomicAdd64(int64_t __theAmount,
+ volatile OSAtomic_int64_aligned64_t *__theValue)
+{
+ return (OSATOMIC_STD(atomic_fetch_add_explicit)(
+ (volatile _OSAtomic_int64_t*) __theValue, __theAmount,
+ OSATOMIC_STD(memory_order_relaxed)) + __theAmount);
+}
+
+OSATOMIC_INLINE
+int64_t
+OSAtomicAdd64Barrier(int64_t __theAmount,
+ volatile OSAtomic_int64_aligned64_t *__theValue)
+{
+ return (OSATOMIC_STD(atomic_fetch_add_explicit)(
+ (volatile _OSAtomic_int64_t*) __theValue, __theAmount,
+ OSATOMIC_STD(memory_order_seq_cst)) + __theAmount);
+}
+
+OSATOMIC_INLINE
+int64_t
+OSAtomicIncrement64(volatile OSAtomic_int64_aligned64_t *__theValue)
+{
+ return OSAtomicAdd64(1, __theValue);
+}
+
+OSATOMIC_INLINE
+int64_t
+OSAtomicIncrement64Barrier(volatile OSAtomic_int64_aligned64_t *__theValue)
+{
+ return OSAtomicAdd64Barrier(1, __theValue);
+}
+
+OSATOMIC_INLINE
+int64_t
+OSAtomicDecrement64(volatile OSAtomic_int64_aligned64_t *__theValue)
+{
+ return OSAtomicAdd64(-1, __theValue);
+}
+
+OSATOMIC_INLINE
+int64_t
+OSAtomicDecrement64Barrier(volatile OSAtomic_int64_aligned64_t *__theValue)
+{
+ return OSAtomicAdd64Barrier(-1, __theValue);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicOr32(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_or_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_relaxed)) | __theMask);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicOr32Barrier(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_or_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_seq_cst)) | __theMask);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicOr32Orig(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_or_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicOr32OrigBarrier(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_or_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_seq_cst)));
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicAnd32(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_and_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_relaxed)) & __theMask);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicAnd32Barrier(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_and_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_seq_cst)) & __theMask);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicAnd32Orig(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_and_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicAnd32OrigBarrier(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_and_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_seq_cst)));
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicXor32(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_xor_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_relaxed)) ^ __theMask);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicXor32Barrier(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_xor_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_seq_cst)) ^ __theMask);
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicXor32Orig(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_xor_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+int32_t
+OSAtomicXor32OrigBarrier(uint32_t __theMask, volatile uint32_t *__theValue)
+{
+ return (int32_t)(OSATOMIC_STD(atomic_fetch_xor_explicit)(
+ (volatile _OSAtomic_uint32_t*)__theValue, __theMask,
+ OSATOMIC_STD(memory_order_seq_cst)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwap32(int32_t __oldValue, int32_t __newValue,
+ volatile int32_t *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile _OSAtomic_int32_t*)__theValue, &__oldValue, __newValue,
+ OSATOMIC_STD(memory_order_relaxed),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwap32Barrier(int32_t __oldValue, int32_t __newValue,
+ volatile int32_t *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile _OSAtomic_int32_t*)__theValue, &__oldValue, __newValue,
+ OSATOMIC_STD(memory_order_seq_cst),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwapPtr(void *__oldValue, void *__newValue,
+ void * volatile *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile _OSAtomic_void_ptr_t*)__theValue, &__oldValue, __newValue,
+ OSATOMIC_STD(memory_order_relaxed),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwapPtrBarrier(void *__oldValue, void *__newValue,
+ void * volatile *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile _OSAtomic_void_ptr_t*)__theValue, &__oldValue, __newValue,
+ OSATOMIC_STD(memory_order_seq_cst),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwapInt(int __oldValue, int __newValue,
+ volatile int *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile OSATOMIC_STD(atomic_int)*)__theValue, &__oldValue,
+ __newValue, OSATOMIC_STD(memory_order_relaxed),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwapIntBarrier(int __oldValue, int __newValue,
+ volatile int *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile OSATOMIC_STD(atomic_int)*)__theValue, &__oldValue,
+ __newValue, OSATOMIC_STD(memory_order_seq_cst),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwapLong(long __oldValue, long __newValue,
+ volatile long *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile OSATOMIC_STD(atomic_long)*)__theValue, &__oldValue,
+ __newValue, OSATOMIC_STD(memory_order_relaxed),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwapLongBarrier(long __oldValue, long __newValue,
+ volatile long *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile OSATOMIC_STD(atomic_long)*)__theValue, &__oldValue,
+ __newValue, OSATOMIC_STD(memory_order_seq_cst),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwap64(int64_t __oldValue, int64_t __newValue,
+ volatile OSAtomic_int64_aligned64_t *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile _OSAtomic_int64_t*)__theValue, &__oldValue, __newValue,
+ OSATOMIC_STD(memory_order_relaxed),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicCompareAndSwap64Barrier(int64_t __oldValue, int64_t __newValue,
+ volatile OSAtomic_int64_aligned64_t *__theValue)
+{
+ return (OSATOMIC_STD(atomic_compare_exchange_strong_explicit)(
+ (volatile _OSAtomic_int64_t*)__theValue, &__oldValue, __newValue,
+ OSATOMIC_STD(memory_order_seq_cst),
+ OSATOMIC_STD(memory_order_relaxed)));
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicTestAndSet(uint32_t __n, volatile void *__theAddress)
+{
+ uintptr_t a = (uintptr_t)__theAddress + (__n >> 3);
+ uint8_t v = (0x80u >> (__n & 7));
+ return (OSATOMIC_STD(atomic_fetch_or_explicit)((_OSAtomic_uint8_t*)a, v,
+ OSATOMIC_STD(memory_order_relaxed)) & v);
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicTestAndSetBarrier(uint32_t __n, volatile void *__theAddress)
+{
+ uintptr_t a = (uintptr_t)__theAddress + (__n >> 3);
+ uint8_t v = (0x80u >> (__n & 7));
+ return (OSATOMIC_STD(atomic_fetch_or_explicit)((_OSAtomic_uint8_t*)a, v,
+ OSATOMIC_STD(memory_order_seq_cst)) & v);
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicTestAndClear(uint32_t __n, volatile void *__theAddress)
+{
+ uintptr_t a = (uintptr_t)__theAddress + (__n >> 3);
+ uint8_t v = (0x80u >> (__n & 7));
+ return (OSATOMIC_STD(atomic_fetch_and_explicit)((_OSAtomic_uint8_t*)a,
+ (uint8_t)~v, OSATOMIC_STD(memory_order_relaxed)) & v);
+}
+
+OSATOMIC_INLINE
+bool
+OSAtomicTestAndClearBarrier(uint32_t __n, volatile void *__theAddress)
+{
+ uintptr_t a = (uintptr_t)__theAddress + (__n >> 3);
+ uint8_t v = (0x80u >> (__n & 7));
+ return (OSATOMIC_STD(atomic_fetch_and_explicit)((_OSAtomic_uint8_t*)a,
+ (uint8_t)~v, OSATOMIC_STD(memory_order_seq_cst)) & v);
+}
+
+OSATOMIC_INLINE
+void
+OSMemoryBarrier(void)
+{
+ OSATOMIC_STD(atomic_thread_fence)(OSATOMIC_STD(memory_order_seq_cst));
+}
+
+#undef OSATOMIC_INLINE
+#undef OSATOMIC_STD
+#ifdef __cplusplus
+__END_DECLS
+} // extern "C++"
+#endif
+
+#endif // defined(OSATOMIC_USE_INLINED) && OSATOMIC_USE_INLINED
+
+#if TARGET_OS_OSX || TARGET_OS_DRIVERKIT
+
+__BEGIN_DECLS
+
+/*! @group Lockless atomic fifo enqueue and dequeue
+ * These routines manipulate singly-linked FIFO lists.
+ *
+ * This API is deprecated and no longer recommended
+ */
+
+/*! @abstract The data structure for a fifo queue head.
+ @discussion
+ You should always initialize a fifo queue head structure with the
+ initialization vector {@link OS_ATOMIC_FIFO_QUEUE_INIT} before use.
+ */
+#if defined(__LP64__)
+
+typedef volatile struct {
+ void *opaque1;
+ void *opaque2;
+ int opaque3;
+} __attribute__ ((aligned (16))) OSFifoQueueHead;
+
+#else
+
+typedef volatile struct {
+ void *opaque1;
+ void *opaque2;
+ int opaque3;
+} OSFifoQueueHead;
+
+#endif
+/*! @abstract The initialization vector for a fifo queue head. */
+#define OS_ATOMIC_FIFO_QUEUE_INIT { NULL, NULL, 0 }
+
+/*! @abstract Enqueue an element onto a list.
+ @discussion
+ Memory barriers are incorporated as needed to permit thread-safe access
+ to the queue element.
+ @param __list
+ The list on which you want to enqueue the element.
+ @param __new
+ The element to add.
+ @param __offset
+ The "offset" parameter is the offset (in bytes) of the link field
+ from the beginning of the data structure being queued (<code>__new</code>).
+ The link field should be a pointer type.
+ The <code>__offset</code> value needs to be same for all enqueuing and
+ dequeuing operations on the same list, even if different structure types
+ are enqueued on that list. The use of <code>offsetset()</code>, defined in
+ <code>stddef.h</code> is the common way to specify the <code>__offset</code>
+ value.
+
+ @note
+ This API is deprecated and no longer recommended
+ */
+__API_DEPRECATED("No longer supported", macos(10.7, 11.0))
+void OSAtomicFifoEnqueue( OSFifoQueueHead *__list, void *__new, size_t __offset);
+
+/*! @abstract Dequeue an element from a list.
+ @discussion
+ Memory barriers are incorporated as needed to permit thread-safe access
+ to the queue element.
+ @param __list
+ The list from which you want to dequeue an element.
+ @param __offset
+ The "offset" parameter is the offset (in bytes) of the link field
+ from the beginning of the data structure being dequeued (<code>__new</code>).
+ The link field should be a pointer type.
+ The <code>__offset</code> value needs to be same for all enqueuing and
+ dequeuing operations on the same list, even if different structure types
+ are enqueued on that list. The use of <code>offsetset()</code>, defined in
+ <code>stddef.h</code> is the common way to specify the <code>__offset</code>
+ value.
+ @result
+ Returns the oldest enqueued element, or <code>NULL</code> if the
+ list is empty.
+
+ @note
+ This API is deprecated and no longer recommended
+ */
+__API_DEPRECATED("No longer supported", macos(10.7, 11.0))
+void* OSAtomicFifoDequeue( OSFifoQueueHead *__list, size_t __offset);
+
+__END_DECLS
+
+#endif /* TARGET_OS_OSX || TARGET_OS_DRIVERKIT */
+
+#endif /* _OSATOMIC_DEPRECATED_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/libkern/OSAtomicQueue.h b/lib/libc/include/aarch64-macos-gnu/libkern/OSAtomicQueue.h
new file mode 100644
index 0000000000..66033fc834
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/libkern/OSAtomicQueue.h
@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) 2004-2016 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _OSATOMICQUEUE_H_
+#define _OSATOMICQUEUE_H_
+
+#include <stddef.h>
+#include <sys/cdefs.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include "OSAtomicDeprecated.h"
+
+#include <Availability.h>
+
+/*! @header Lockless atomic enqueue and dequeue
+ * These routines manipulate singly-linked LIFO lists.
+ */
+
+__BEGIN_DECLS
+
+/*! @abstract The data structure for a queue head.
+ @discussion
+ You should always initialize a queue head structure with the
+ initialization vector {@link OS_ATOMIC_QUEUE_INIT} before use.
+ */
+#if defined(__LP64__)
+
+typedef volatile struct {
+ void *opaque1;
+ long opaque2;
+} __attribute__ ((aligned (16))) OSQueueHead;
+
+#else
+
+typedef volatile struct {
+ void *opaque1;
+ long opaque2;
+} OSQueueHead;
+
+#endif
+
+/*! @abstract The initialization vector for a queue head. */
+#define OS_ATOMIC_QUEUE_INIT { NULL, 0 }
+
+/*! @abstract Enqueue an element onto a list.
+ @discussion
+ Memory barriers are incorporated as needed to permit thread-safe access
+ to the queue element.
+ @param __list
+ The list on which you want to enqueue the element.
+ @param __new
+ The element to add.
+ @param __offset
+ The "offset" parameter is the offset (in bytes) of the link field
+ from the beginning of the data structure being queued (<code>__new</code>).
+ The link field should be a pointer type.
+ The <code>__offset</code> value needs to be same for all enqueuing and
+ dequeuing operations on the same list, even if different structure types
+ are enqueued on that list. The use of <code>offsetset()</code>, defined in
+ <code>stddef.h</code> is the common way to specify the <code>__offset</code>
+ value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_4_0)
+void OSAtomicEnqueue( OSQueueHead *__list, void *__new, size_t __offset);
+
+
+/*! @abstract Dequeue an element from a list.
+ @discussion
+ Memory barriers are incorporated as needed to permit thread-safe access
+ to the queue element.
+ @param __list
+ The list from which you want to dequeue an element.
+ @param __offset
+ The "offset" parameter is the offset (in bytes) of the link field
+ from the beginning of the data structure being dequeued (<code>__new</code>).
+ The link field should be a pointer type.
+ The <code>__offset</code> value needs to be same for all enqueuing and
+ dequeuing operations on the same list, even if different structure types
+ are enqueued on that list. The use of <code>offsetset()</code>, defined in
+ <code>stddef.h</code> is the common way to specify the <code>__offset</code>
+ value.
+ IMPORTANT: the memory backing the link field of a queue element must not be
+ unmapped after OSAtomicDequeue() returns until all concurrent calls to
+ OSAtomicDequeue() for the same list on other threads have also returned,
+ as they may still be accessing that memory location.
+ @result
+ Returns the most recently enqueued element, or <code>NULL</code> if the
+ list is empty.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_4_0)
+void* OSAtomicDequeue( OSQueueHead *__list, size_t __offset);
+
+__END_DECLS
+
+#endif /* _OSATOMICQUEUE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/libkern/OSByteOrder.h b/lib/libc/include/aarch64-macos-gnu/libkern/OSByteOrder.h
new file mode 100644
index 0000000000..3d1e742b31
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/libkern/OSByteOrder.h
@@ -0,0 +1,317 @@
+/*
+ * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _OS_OSBYTEORDER_H
+#define _OS_OSBYTEORDER_H
+
+#include <stdint.h>
+#include <libkern/_OSByteOrder.h>
+
+/* Macros for swapping constant values in the preprocessing stage. */
+#define OSSwapConstInt16(x) __DARWIN_OSSwapConstInt16(x)
+#define OSSwapConstInt32(x) __DARWIN_OSSwapConstInt32(x)
+#define OSSwapConstInt64(x) __DARWIN_OSSwapConstInt64(x)
+
+#if !defined(__DARWIN_OS_INLINE)
+# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+# define __DARWIN_OS_INLINE static inline
+# elif defined(__MWERKS__) || defined(__cplusplus)
+# define __DARWIN_OS_INLINE static inline
+# else
+# define __DARWIN_OS_INLINE static __inline__
+# endif
+#endif
+
+#if defined(__GNUC__)
+
+#if (defined(__i386__) || defined(__x86_64__))
+#include <libkern/i386/OSByteOrder.h>
+#elif defined (__arm__) || defined(__arm64__)
+#include <libkern/arm/OSByteOrder.h>
+#else
+#include <libkern/machine/OSByteOrder.h>
+#endif
+
+#else /* ! __GNUC__ */
+
+#include <libkern/machine/OSByteOrder.h>
+
+#endif /* __GNUC__ */
+
+#define OSSwapInt16(x) __DARWIN_OSSwapInt16(x)
+#define OSSwapInt32(x) __DARWIN_OSSwapInt32(x)
+#define OSSwapInt64(x) __DARWIN_OSSwapInt64(x)
+
+enum {
+ OSUnknownByteOrder,
+ OSLittleEndian,
+ OSBigEndian
+};
+
+__DARWIN_OS_INLINE
+int32_t
+OSHostByteOrder(void)
+{
+#if defined(__LITTLE_ENDIAN__)
+ return OSLittleEndian;
+#elif defined(__BIG_ENDIAN__)
+ return OSBigEndian;
+#else
+ return OSUnknownByteOrder;
+#endif
+}
+
+#define OSReadBigInt(x, y) OSReadBigInt32(x, y)
+#define OSWriteBigInt(x, y, z) OSWriteBigInt32(x, y, z)
+#define OSSwapBigToHostInt(x) OSSwapBigToHostInt32(x)
+#define OSSwapHostToBigInt(x) OSSwapHostToBigInt32(x)
+#define OSReadLittleInt(x, y) OSReadLittleInt32(x, y)
+#define OSWriteLittleInt(x, y, z) OSWriteLittleInt32(x, y, z)
+#define OSSwapHostToLittleInt(x) OSSwapHostToLittleInt32(x)
+#define OSSwapLittleToHostInt(x) OSSwapLittleToHostInt32(x)
+
+/* Functions for loading native endian values. */
+
+__DARWIN_OS_INLINE
+uint16_t
+_OSReadInt16(
+ const volatile void * base,
+ uintptr_t byteOffset
+ )
+{
+ return *(volatile uint16_t *)((uintptr_t)base + byteOffset);
+}
+
+__DARWIN_OS_INLINE
+uint32_t
+_OSReadInt32(
+ const volatile void * base,
+ uintptr_t byteOffset
+ )
+{
+ return *(volatile uint32_t *)((uintptr_t)base + byteOffset);
+}
+
+__DARWIN_OS_INLINE
+uint64_t
+_OSReadInt64(
+ const volatile void * base,
+ uintptr_t byteOffset
+ )
+{
+ return *(volatile uint64_t *)((uintptr_t)base + byteOffset);
+}
+
+/* Functions for storing native endian values. */
+
+__DARWIN_OS_INLINE
+void
+_OSWriteInt16(
+ volatile void * base,
+ uintptr_t byteOffset,
+ uint16_t data
+ )
+{
+ *(volatile uint16_t *)((uintptr_t)base + byteOffset) = data;
+}
+
+__DARWIN_OS_INLINE
+void
+_OSWriteInt32(
+ volatile void * base,
+ uintptr_t byteOffset,
+ uint32_t data
+ )
+{
+ *(volatile uint32_t *)((uintptr_t)base + byteOffset) = data;
+}
+
+__DARWIN_OS_INLINE
+void
+_OSWriteInt64(
+ volatile void * base,
+ uintptr_t byteOffset,
+ uint64_t data
+ )
+{
+ *(volatile uint64_t *)((uintptr_t)base + byteOffset) = data;
+}
+
+#if defined(__BIG_ENDIAN__)
+
+/* Functions for loading big endian to host endianess. */
+
+#define OSReadBigInt16(base, byteOffset) _OSReadInt16(base, byteOffset)
+#define OSReadBigInt32(base, byteOffset) _OSReadInt32(base, byteOffset)
+#define OSReadBigInt64(base, byteOffset) _OSReadInt64(base, byteOffset)
+
+/* Functions for storing host endianess to big endian. */
+
+#define OSWriteBigInt16(base, byteOffset, data) _OSWriteInt16(base, byteOffset, data)
+#define OSWriteBigInt32(base, byteOffset, data) _OSWriteInt32(base, byteOffset, data)
+#define OSWriteBigInt64(base, byteOffset, data) _OSWriteInt64(base, byteOffset, data)
+
+/* Functions for loading little endian to host endianess. */
+
+#define OSReadLittleInt16(base, byteOffset) OSReadSwapInt16(base, byteOffset)
+#define OSReadLittleInt32(base, byteOffset) OSReadSwapInt32(base, byteOffset)
+#define OSReadLittleInt64(base, byteOffset) OSReadSwapInt64(base, byteOffset)
+
+/* Functions for storing host endianess to little endian. */
+
+#define OSWriteLittleInt16(base, byteOffset, data) OSWriteSwapInt16(base, byteOffset, data)
+#define OSWriteLittleInt32(base, byteOffset, data) OSWriteSwapInt32(base, byteOffset, data)
+#define OSWriteLittleInt64(base, byteOffset, data) OSWriteSwapInt64(base, byteOffset, data)
+
+/* Host endianess to big endian byte swapping macros for constants. */
+
+#define OSSwapHostToBigConstInt16(x) ((uint16_t)(x))
+#define OSSwapHostToBigConstInt32(x) ((uint32_t)(x))
+#define OSSwapHostToBigConstInt64(x) ((uint64_t)(x))
+
+/* Generic host endianess to big endian byte swapping functions. */
+
+#define OSSwapHostToBigInt16(x) ((uint16_t)(x))
+#define OSSwapHostToBigInt32(x) ((uint32_t)(x))
+#define OSSwapHostToBigInt64(x) ((uint64_t)(x))
+
+/* Host endianess to little endian byte swapping macros for constants. */
+
+#define OSSwapHostToLittleConstInt16(x) OSSwapConstInt16(x)
+#define OSSwapHostToLittleConstInt32(x) OSSwapConstInt32(x)
+#define OSSwapHostToLittleConstInt64(x) OSSwapConstInt64(x)
+
+/* Generic host endianess to little endian byte swapping functions. */
+
+#define OSSwapHostToLittleInt16(x) OSSwapInt16(x)
+#define OSSwapHostToLittleInt32(x) OSSwapInt32(x)
+#define OSSwapHostToLittleInt64(x) OSSwapInt64(x)
+
+/* Big endian to host endianess byte swapping macros for constants. */
+
+#define OSSwapBigToHostConstInt16(x) ((uint16_t)(x))
+#define OSSwapBigToHostConstInt32(x) ((uint32_t)(x))
+#define OSSwapBigToHostConstInt64(x) ((uint64_t)(x))
+
+/* Generic big endian to host endianess byte swapping functions. */
+
+#define OSSwapBigToHostInt16(x) ((uint16_t)(x))
+#define OSSwapBigToHostInt32(x) ((uint32_t)(x))
+#define OSSwapBigToHostInt64(x) ((uint64_t)(x))
+
+/* Little endian to host endianess byte swapping macros for constants. */
+
+#define OSSwapLittleToHostConstInt16(x) OSSwapConstInt16(x)
+#define OSSwapLittleToHostConstInt32(x) OSSwapConstInt32(x)
+#define OSSwapLittleToHostConstInt64(x) OSSwapConstInt64(x)
+
+/* Generic little endian to host endianess byte swapping functions. */
+
+#define OSSwapLittleToHostInt16(x) OSSwapInt16(x)
+#define OSSwapLittleToHostInt32(x) OSSwapInt32(x)
+#define OSSwapLittleToHostInt64(x) OSSwapInt64(x)
+
+#elif defined(__LITTLE_ENDIAN__)
+
+/* Functions for loading big endian to host endianess. */
+
+#define OSReadBigInt16(base, byteOffset) OSReadSwapInt16(base, byteOffset)
+#define OSReadBigInt32(base, byteOffset) OSReadSwapInt32(base, byteOffset)
+#define OSReadBigInt64(base, byteOffset) OSReadSwapInt64(base, byteOffset)
+
+/* Functions for storing host endianess to big endian. */
+
+#define OSWriteBigInt16(base, byteOffset, data) OSWriteSwapInt16(base, byteOffset, data)
+#define OSWriteBigInt32(base, byteOffset, data) OSWriteSwapInt32(base, byteOffset, data)
+#define OSWriteBigInt64(base, byteOffset, data) OSWriteSwapInt64(base, byteOffset, data)
+
+/* Functions for loading little endian to host endianess. */
+
+#define OSReadLittleInt16(base, byteOffset) _OSReadInt16(base, byteOffset)
+#define OSReadLittleInt32(base, byteOffset) _OSReadInt32(base, byteOffset)
+#define OSReadLittleInt64(base, byteOffset) _OSReadInt64(base, byteOffset)
+
+/* Functions for storing host endianess to little endian. */
+
+#define OSWriteLittleInt16(base, byteOffset, data) _OSWriteInt16(base, byteOffset, data)
+#define OSWriteLittleInt32(base, byteOffset, data) _OSWriteInt32(base, byteOffset, data)
+#define OSWriteLittleInt64(base, byteOffset, data) _OSWriteInt64(base, byteOffset, data)
+
+/* Host endianess to big endian byte swapping macros for constants. */
+
+#define OSSwapHostToBigConstInt16(x) OSSwapConstInt16(x)
+#define OSSwapHostToBigConstInt32(x) OSSwapConstInt32(x)
+#define OSSwapHostToBigConstInt64(x) OSSwapConstInt64(x)
+
+/* Generic host endianess to big endian byte swapping functions. */
+
+#define OSSwapHostToBigInt16(x) OSSwapInt16(x)
+#define OSSwapHostToBigInt32(x) OSSwapInt32(x)
+#define OSSwapHostToBigInt64(x) OSSwapInt64(x)
+
+/* Host endianess to little endian byte swapping macros for constants. */
+
+#define OSSwapHostToLittleConstInt16(x) ((uint16_t)(x))
+#define OSSwapHostToLittleConstInt32(x) ((uint32_t)(x))
+#define OSSwapHostToLittleConstInt64(x) ((uint64_t)(x))
+
+/* Generic host endianess to little endian byte swapping functions. */
+
+#define OSSwapHostToLittleInt16(x) ((uint16_t)(x))
+#define OSSwapHostToLittleInt32(x) ((uint32_t)(x))
+#define OSSwapHostToLittleInt64(x) ((uint64_t)(x))
+
+/* Big endian to host endianess byte swapping macros for constants. */
+
+#define OSSwapBigToHostConstInt16(x) OSSwapConstInt16(x)
+#define OSSwapBigToHostConstInt32(x) OSSwapConstInt32(x)
+#define OSSwapBigToHostConstInt64(x) OSSwapConstInt64(x)
+
+/* Generic big endian to host endianess byte swapping functions. */
+
+#define OSSwapBigToHostInt16(x) OSSwapInt16(x)
+#define OSSwapBigToHostInt32(x) OSSwapInt32(x)
+#define OSSwapBigToHostInt64(x) OSSwapInt64(x)
+
+/* Little endian to host endianess byte swapping macros for constants. */
+
+#define OSSwapLittleToHostConstInt16(x) ((uint16_t)(x))
+#define OSSwapLittleToHostConstInt32(x) ((uint32_t)(x))
+#define OSSwapLittleToHostConstInt64(x) ((uint64_t)(x))
+
+/* Generic little endian to host endianess byte swapping functions. */
+
+#define OSSwapLittleToHostInt16(x) ((uint16_t)(x))
+#define OSSwapLittleToHostInt32(x) ((uint32_t)(x))
+#define OSSwapLittleToHostInt64(x) ((uint64_t)(x))
+
+#else
+#error Unknown endianess.
+#endif
+
+#endif /* ! _OS_OSBYTEORDER_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/libkern/_OSByteOrder.h b/lib/libc/include/aarch64-macos-gnu/libkern/_OSByteOrder.h
new file mode 100644
index 0000000000..4d5a9301ef
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/libkern/_OSByteOrder.h
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _OS__OSBYTEORDER_H
+#define _OS__OSBYTEORDER_H
+
+/*
+ * This header is normally included from <libkern/OSByteOrder.h>. However,
+ * <sys/_endian.h> also includes this in the case of little-endian
+ * architectures, so that we can map OSByteOrder routines to the hton* and ntoh*
+ * macros. This results in the asymmetry below; we only include
+ * <libkern/arch/_OSByteOrder.h> for little-endian architectures.
+ */
+
+#include <sys/_types.h>
+
+/* Macros for swapping constant values in the preprocessing stage. */
+#define __DARWIN_OSSwapConstInt16(x) \
+ ((__uint16_t)((((__uint16_t)(x) & 0xff00U) >> 8) | \
+ (((__uint16_t)(x) & 0x00ffU) << 8)))
+
+#define __DARWIN_OSSwapConstInt32(x) \
+ ((__uint32_t)((((__uint32_t)(x) & 0xff000000U) >> 24) | \
+ (((__uint32_t)(x) & 0x00ff0000U) >> 8) | \
+ (((__uint32_t)(x) & 0x0000ff00U) << 8) | \
+ (((__uint32_t)(x) & 0x000000ffU) << 24)))
+
+#define __DARWIN_OSSwapConstInt64(x) \
+ ((__uint64_t)((((__uint64_t)(x) & 0xff00000000000000ULL) >> 56) | \
+ (((__uint64_t)(x) & 0x00ff000000000000ULL) >> 40) | \
+ (((__uint64_t)(x) & 0x0000ff0000000000ULL) >> 24) | \
+ (((__uint64_t)(x) & 0x000000ff00000000ULL) >> 8) | \
+ (((__uint64_t)(x) & 0x00000000ff000000ULL) << 8) | \
+ (((__uint64_t)(x) & 0x0000000000ff0000ULL) << 24) | \
+ (((__uint64_t)(x) & 0x000000000000ff00ULL) << 40) | \
+ (((__uint64_t)(x) & 0x00000000000000ffULL) << 56)))
+
+#if defined(__GNUC__)
+
+#if !defined(__DARWIN_OS_INLINE)
+# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+# define __DARWIN_OS_INLINE static inline
+# elif defined(__MWERKS__) || defined(__cplusplus)
+# define __DARWIN_OS_INLINE static inline
+# else
+# define __DARWIN_OS_INLINE static __inline__
+# endif
+#endif
+
+#if defined(__i386__) || defined(__x86_64__)
+#include <libkern/i386/_OSByteOrder.h>
+#endif
+
+#if defined (__arm__) || defined(__arm64__)
+#include <libkern/arm/OSByteOrder.h>
+#endif
+
+
+#define __DARWIN_OSSwapInt16(x) \
+ ((__uint16_t)(__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt16(x) : _OSSwapInt16(x)))
+
+#define __DARWIN_OSSwapInt32(x) \
+ (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt32(x) : _OSSwapInt32(x))
+
+#define __DARWIN_OSSwapInt64(x) \
+ (__builtin_constant_p(x) ? __DARWIN_OSSwapConstInt64(x) : _OSSwapInt64(x))
+
+#else /* ! __GNUC__ */
+
+#if defined(__i386__) || defined(__x86_64__)
+
+__DARWIN_OS_INLINE
+uint16_t
+_OSSwapInt16(
+ uint16_t data
+ )
+{
+ return __DARWIN_OSSwapConstInt16(data);
+}
+
+__DARWIN_OS_INLINE
+uint32_t
+_OSSwapInt32(
+ uint32_t data
+ )
+{
+ return __DARWIN_OSSwapConstInt32(data);
+}
+
+__DARWIN_OS_INLINE
+uint64_t
+_OSSwapInt64(
+ uint64_t data
+ )
+{
+ return __DARWIN_OSSwapConstInt64(data);
+}
+#endif
+
+#define __DARWIN_OSSwapInt16(x) _OSSwapInt16(x)
+
+#define __DARWIN_OSSwapInt32(x) _OSSwapInt32(x)
+
+#define __DARWIN_OSSwapInt64(x) _OSSwapInt64(x)
+
+#endif /* __GNUC__ */
+
+#endif /* ! _OS__OSBYTEORDER_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/libkern/arm/OSByteOrder.h b/lib/libc/include/aarch64-macos-gnu/libkern/arm/OSByteOrder.h
new file mode 100644
index 0000000000..f89a24b53f
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/libkern/arm/OSByteOrder.h
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc. All rights reserved.
+ */
+
+#ifndef _OS_OSBYTEORDERARM_H
+#define _OS_OSBYTEORDERARM_H
+
+#include <stdint.h>
+#include <arm/arch.h> /* for _ARM_ARCH_6 */
+
+/* Generic byte swapping functions. */
+
+__DARWIN_OS_INLINE
+uint16_t
+_OSSwapInt16(
+ uint16_t _data
+ )
+{
+ /* Reduces to 'rev16' with clang */
+ return (uint16_t)(_data << 8 | _data >> 8);
+}
+
+__DARWIN_OS_INLINE
+uint32_t
+_OSSwapInt32(
+ uint32_t _data
+ )
+{
+#if defined(__llvm__)
+ _data = __builtin_bswap32(_data);
+#else
+ /* This actually generates the best code */
+ _data = (((_data ^ (_data >> 16 | (_data << 16))) & 0xFF00FFFF) >> 8) ^ (_data >> 8 | _data << 24);
+#endif
+
+ return _data;
+}
+
+__DARWIN_OS_INLINE
+uint64_t
+_OSSwapInt64(
+ uint64_t _data
+ )
+{
+#if defined(__llvm__)
+ return __builtin_bswap64(_data);
+#else
+ union {
+ uint64_t _ull;
+ uint32_t _ul[2];
+ } _u;
+
+ /* This actually generates the best code */
+ _u._ul[0] = (uint32_t)(_data >> 32);
+ _u._ul[1] = (uint32_t)(_data & 0xffffffff);
+ _u._ul[0] = _OSSwapInt32(_u._ul[0]);
+ _u._ul[1] = _OSSwapInt32(_u._ul[1]);
+ return _u._ull;
+#endif
+}
+
+/* Functions for byte reversed loads. */
+
+struct _OSUnalignedU16 {
+ volatile uint16_t __val;
+} __attribute__((__packed__));
+
+struct _OSUnalignedU32 {
+ volatile uint32_t __val;
+} __attribute__((__packed__));
+
+struct _OSUnalignedU64 {
+ volatile uint64_t __val;
+} __attribute__((__packed__));
+
+#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
+__DARWIN_OS_INLINE
+uint16_t
+_OSReadSwapInt16(
+ const volatile void * _base,
+ uintptr_t _offset
+ )
+{
+ return _OSSwapInt16(((struct _OSUnalignedU16 *)((uintptr_t)_base + _offset))->__val);
+}
+#else
+__DARWIN_OS_INLINE
+uint16_t
+OSReadSwapInt16(
+ const volatile void * _base,
+ uintptr_t _offset
+ )
+{
+ return _OSSwapInt16(((struct _OSUnalignedU16 *)((uintptr_t)_base + _offset))->__val);
+}
+#endif
+
+#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
+__DARWIN_OS_INLINE
+uint32_t
+_OSReadSwapInt32(
+ const volatile void * _base,
+ uintptr_t _offset
+ )
+{
+ return _OSSwapInt32(((struct _OSUnalignedU32 *)((uintptr_t)_base + _offset))->__val);
+}
+#else
+__DARWIN_OS_INLINE
+uint32_t
+OSReadSwapInt32(
+ const volatile void * _base,
+ uintptr_t _offset
+ )
+{
+ return _OSSwapInt32(((struct _OSUnalignedU32 *)((uintptr_t)_base + _offset))->__val);
+}
+#endif
+
+#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
+__DARWIN_OS_INLINE
+uint64_t
+_OSReadSwapInt64(
+ const volatile void * _base,
+ uintptr_t _offset
+ )
+{
+ return _OSSwapInt64(((struct _OSUnalignedU64 *)((uintptr_t)_base + _offset))->__val);
+}
+#else
+__DARWIN_OS_INLINE
+uint64_t
+OSReadSwapInt64(
+ const volatile void * _base,
+ uintptr_t _offset
+ )
+{
+ return _OSSwapInt64(((struct _OSUnalignedU64 *)((uintptr_t)_base + _offset))->__val);
+}
+#endif
+
+/* Functions for byte reversed stores. */
+
+#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
+__DARWIN_OS_INLINE
+void
+_OSWriteSwapInt16(
+ volatile void * _base,
+ uintptr_t _offset,
+ uint16_t _data
+ )
+{
+ ((struct _OSUnalignedU16 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt16(_data);
+}
+#else
+__DARWIN_OS_INLINE
+void
+OSWriteSwapInt16(
+ volatile void * _base,
+ uintptr_t _offset,
+ uint16_t _data
+ )
+{
+ ((struct _OSUnalignedU16 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt16(_data);
+}
+#endif
+
+#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
+__DARWIN_OS_INLINE
+void
+_OSWriteSwapInt32(
+ volatile void * _base,
+ uintptr_t _offset,
+ uint32_t _data
+ )
+{
+ ((struct _OSUnalignedU32 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt32(_data);
+}
+#else
+__DARWIN_OS_INLINE
+void
+OSWriteSwapInt32(
+ volatile void * _base,
+ uintptr_t _offset,
+ uint32_t _data
+ )
+{
+ ((struct _OSUnalignedU32 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt32(_data);
+}
+#endif
+
+#if defined(_POSIX_C_SOURCE) || defined(_XOPEN_SOURCE)
+__DARWIN_OS_INLINE
+void
+_OSWriteSwapInt64(
+ volatile void * _base,
+ uintptr_t _offset,
+ uint64_t _data
+ )
+{
+ ((struct _OSUnalignedU64 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt64(_data);
+}
+#else
+__DARWIN_OS_INLINE
+void
+OSWriteSwapInt64(
+ volatile void * _base,
+ uintptr_t _offset,
+ uint64_t _data
+ )
+{
+ ((struct _OSUnalignedU64 *)((uintptr_t)_base + _offset))->__val = _OSSwapInt64(_data);
+}
+#endif
+
+#endif /* ! _OS_OSBYTEORDERARM_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach-o/dyld.h b/lib/libc/include/aarch64-macos-gnu/mach-o/dyld.h
new file mode 100644
index 0000000000..63058bbbd9
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach-o/dyld.h
@@ -0,0 +1,272 @@
+/*
+ * Copyright (c) 1999-2008 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+#ifndef _MACH_O_DYLD_H_
+#define _MACH_O_DYLD_H_
+
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <mach-o/loader.h>
+#include <Availability.h>
+
+#if __cplusplus
+extern "C" {
+#endif
+
+#ifdef __DRIVERKIT_19_0
+ #define DYLD_DRIVERKIT_UNAVAILABLE __API_UNAVAILABLE(driverkit)
+#else
+ #define DYLD_DRIVERKIT_UNAVAILABLE
+#endif
+
+/*
+ * The following functions allow you to iterate through all loaded images.
+ * This is not a thread safe operation. Another thread can add or remove
+ * an image during the iteration.
+ *
+ * Many uses of these routines can be replace by a call to dladdr() which
+ * will return the mach_header and name of an image, given an address in
+ * the image. dladdr() is thread safe.
+ */
+extern uint32_t _dyld_image_count(void) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
+extern const struct mach_header* _dyld_get_image_header(uint32_t image_index) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
+extern intptr_t _dyld_get_image_vmaddr_slide(uint32_t image_index) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
+extern const char* _dyld_get_image_name(uint32_t image_index) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
+
+
+/*
+ * The following functions allow you to install callbacks which will be called
+ * by dyld whenever an image is loaded or unloaded. During a call to _dyld_register_func_for_add_image()
+ * the callback func is called for every existing image. Later, it is called as each new image
+ * is loaded and bound (but initializers not yet run). The callback registered with
+ * _dyld_register_func_for_remove_image() is called after any terminators in an image are run
+ * and before the image is un-memory-mapped.
+ */
+extern void _dyld_register_func_for_add_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide)) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
+extern void _dyld_register_func_for_remove_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide)) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
+
+
+/*
+ * NSVersionOfRunTimeLibrary() returns the current_version number of the currently dylib
+ * specifed by the libraryName. The libraryName parameter would be "bar" for /path/libbar.3.dylib and
+ * "Foo" for /path/Foo.framework/Versions/A/Foo. It returns -1 if no such library is loaded.
+ */
+extern int32_t NSVersionOfRunTimeLibrary(const char* libraryName) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
+
+
+/*
+ * NSVersionOfLinkTimeLibrary() returns the current_version number that the main executable was linked
+ * against at build time. The libraryName parameter would be "bar" for /path/libbar.3.dylib and
+ * "Foo" for /path/Foo.framework/Versions/A/Foo. It returns -1 if the main executable did not link
+ * against the specified library.
+ */
+extern int32_t NSVersionOfLinkTimeLibrary(const char* libraryName) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
+
+
+/*
+ * _NSGetExecutablePath() copies the path of the main executable into the buffer. The bufsize parameter
+ * should initially be the size of the buffer. The function returns 0 if the path was successfully copied,
+ * and *bufsize is left unchanged. It returns -1 if the buffer is not large enough, and *bufsize is set
+ * to the size required.
+ *
+ * Note that _NSGetExecutablePath will return "a path" to the executable not a "real path" to the executable.
+ * That is the path may be a symbolic link and not the real file. With deep directories the total bufsize
+ * needed could be more than MAXPATHLEN.
+ */
+extern int _NSGetExecutablePath(char* buf, uint32_t* bufsize) __OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0);
+
+
+
+/*
+ * Registers a function to be called when the current thread terminates.
+ * Called by c++ compiler to implement destructors on thread_local object variables.
+ */
+extern void _tlv_atexit(void (*termFunc)(void* objAddr), void* objAddr) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+
+
+/*
+ * Never called. On-disk thread local variables contain a pointer to this. Once
+ * the thread local is prepared, the pointer changes to a real handler such as tlv_get_addr.
+ */
+extern void _tlv_bootstrap(void) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0) DYLD_DRIVERKIT_UNAVAILABLE ;
+
+
+/*
+ * Dylibs that are incorporated into the dyld cache are removed from disk. That means code
+ * cannot stat() the file to see if it "exists". This function is like a stat() call that checks if a
+ * path is to a dylib that was removed from disk and is incorporated into the active dyld cache.
+ */
+extern bool _dyld_shared_cache_contains_path(const char* path) __API_AVAILABLE(macos(11.0), ios(14.0), watchos(7.0), tvos(14.0)) DYLD_DRIVERKIT_UNAVAILABLE;
+
+
+/*
+ * The following dyld API's are deprecated as of Mac OS X 10.5. They are either
+ * no longer necessary or are superceeded by dlopen and friends in <dlfcn.h>.
+ * dlopen/dlsym/dlclose have been available since Mac OS X 10.3 and work with
+ * dylibs and bundles.
+ *
+ * NSAddImage -> dlopen
+ * NSLookupSymbolInImage -> dlsym
+ * NSCreateObjectFileImageFromFile -> dlopen
+ * NSDestroyObjectFileImage -> dlclose
+ * NSLinkModule -> not needed when dlopen used
+ * NSUnLinkModule -> not needed when dlclose used
+ * NSLookupSymbolInModule -> dlsym
+ * _dyld_image_containing_address -> dladdr
+ * NSLinkEditError -> dlerror
+ *
+ */
+
+#ifndef ENUM_DYLD_BOOL
+#define ENUM_DYLD_BOOL
+ #undef FALSE
+ #undef TRUE
+ enum DYLD_BOOL { FALSE, TRUE };
+#endif /* ENUM_DYLD_BOOL */
+
+
+/* Object file image API */
+typedef enum {
+ NSObjectFileImageFailure, /* for this a message is printed on stderr */
+ NSObjectFileImageSuccess,
+ NSObjectFileImageInappropriateFile,
+ NSObjectFileImageArch,
+ NSObjectFileImageFormat, /* for this a message is printed on stderr */
+ NSObjectFileImageAccess
+} NSObjectFileImageReturnCode;
+
+typedef struct __NSObjectFileImage* NSObjectFileImage;
+
+
+
+/* NSObjectFileImage can only be used with MH_BUNDLE files */
+extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromFile(const char* pathName, NSObjectFileImage *objectFileImage) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlopen()");
+extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromMemory(const void *address, size_t size, NSObjectFileImage *objectFileImage) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+extern bool NSDestroyObjectFileImage(NSObjectFileImage objectFileImage) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlclose()");
+
+extern uint32_t NSSymbolDefinitionCountInObjectFileImage(NSObjectFileImage objectFileImage) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+extern const char* NSSymbolDefinitionNameInObjectFileImage(NSObjectFileImage objectFileImage, uint32_t ordinal) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+extern uint32_t NSSymbolReferenceCountInObjectFileImage(NSObjectFileImage objectFileImage) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+extern const char* NSSymbolReferenceNameInObjectFileImage(NSObjectFileImage objectFileImage, uint32_t ordinal, bool *tentative_definition) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+extern bool NSIsSymbolDefinedInObjectFileImage(NSObjectFileImage objectFileImage, const char* symbolName) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlsym()");
+extern void* NSGetSectionDataInObjectFileImage(NSObjectFileImage objectFileImage, const char* segmentName, const char* sectionName, size_t *size) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "getsectiondata()");
+
+typedef struct __NSModule* NSModule;
+extern const char* NSNameOfModule(NSModule m) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+extern const char* NSLibraryNameForModule(NSModule m) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+
+extern NSModule NSLinkModule(NSObjectFileImage objectFileImage, const char* moduleName, uint32_t options) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlopen()");
+#define NSLINKMODULE_OPTION_NONE 0x0
+#define NSLINKMODULE_OPTION_BINDNOW 0x1
+#define NSLINKMODULE_OPTION_PRIVATE 0x2
+#define NSLINKMODULE_OPTION_RETURN_ON_ERROR 0x4
+#define NSLINKMODULE_OPTION_DONT_CALL_MOD_INIT_ROUTINES 0x8
+#define NSLINKMODULE_OPTION_TRAILING_PHYS_NAME 0x10
+
+extern bool NSUnLinkModule(NSModule module, uint32_t options) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+#define NSUNLINKMODULE_OPTION_NONE 0x0
+#define NSUNLINKMODULE_OPTION_KEEP_MEMORY_MAPPED 0x1
+#define NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES 0x2
+
+/* symbol API */
+typedef struct __NSSymbol* NSSymbol;
+extern bool NSIsSymbolNameDefined(const char* symbolName) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlsym()");
+extern bool NSIsSymbolNameDefinedWithHint(const char* symbolName, const char* libraryNameHint) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlsym()");
+extern bool NSIsSymbolNameDefinedInImage(const struct mach_header* image, const char* symbolName) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlsym()");
+extern NSSymbol NSLookupAndBindSymbol(const char* symbolName) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlsym()");
+extern NSSymbol NSLookupAndBindSymbolWithHint(const char* symbolName, const char* libraryNameHint) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlsym()");
+extern NSSymbol NSLookupSymbolInModule(NSModule module, const char* symbolName) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlsym()");
+extern NSSymbol NSLookupSymbolInImage(const struct mach_header* image, const char* symbolName, uint32_t options) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlsym()");
+#define NSLOOKUPSYMBOLINIMAGE_OPTION_BIND 0x0
+#define NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW 0x1
+#define NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_FULLY 0x2
+#define NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR 0x4
+extern const char* NSNameOfSymbol(NSSymbol symbol) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+extern void * NSAddressOfSymbol(NSSymbol symbol) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlsym()");
+extern NSModule NSModuleForSymbol(NSSymbol symbol) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dladdr()");
+
+/* error handling API */
+typedef enum {
+ NSLinkEditFileAccessError,
+ NSLinkEditFileFormatError,
+ NSLinkEditMachResourceError,
+ NSLinkEditUnixResourceError,
+ NSLinkEditOtherError,
+ NSLinkEditWarningError,
+ NSLinkEditMultiplyDefinedError,
+ NSLinkEditUndefinedError
+} NSLinkEditErrors;
+
+/*
+ * For the NSLinkEditErrors value NSLinkEditOtherError these are the values
+ * passed to the link edit error handler as the errorNumber (what would be an
+ * errno value for NSLinkEditUnixResourceError or a kern_return_t value for
+ * NSLinkEditMachResourceError).
+ */
+typedef enum {
+ NSOtherErrorRelocation,
+ NSOtherErrorLazyBind,
+ NSOtherErrorIndrLoop,
+ NSOtherErrorLazyInit,
+ NSOtherErrorInvalidArgs
+} NSOtherErrorNumbers;
+
+extern void NSLinkEditError(NSLinkEditErrors *c, int *errorNumber, const char** fileName, const char** errorString) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlerror()");
+
+typedef struct {
+ void (*undefined)(const char* symbolName);
+ NSModule (*multiple)(NSSymbol s, NSModule oldModule, NSModule newModule);
+ void (*linkEdit)(NSLinkEditErrors errorClass, int errorNumber,
+ const char* fileName, const char* errorString);
+} NSLinkEditErrorHandlers;
+
+extern void NSInstallLinkEditErrorHandlers(const NSLinkEditErrorHandlers *handlers) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "");
+
+extern bool NSAddLibrary(const char* pathName) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlopen()");
+extern bool NSAddLibraryWithSearching(const char* pathName) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlopen()");
+extern const struct mach_header* NSAddImage(const char* image_name, uint32_t options) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlopen()");
+#define NSADDIMAGE_OPTION_NONE 0x0
+#define NSADDIMAGE_OPTION_RETURN_ON_ERROR 0x1
+#define NSADDIMAGE_OPTION_WITH_SEARCHING 0x2
+#define NSADDIMAGE_OPTION_RETURN_ONLY_IF_LOADED 0x4
+#define NSADDIMAGE_OPTION_MATCH_FILENAME_BY_INSTALLNAME 0x8
+
+extern bool _dyld_present(void) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "always true");
+extern bool _dyld_launched_prebound(void) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "moot");
+extern bool _dyld_all_twolevel_modules_prebound(void) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.3, 10.5, "moot");
+extern bool _dyld_bind_fully_image_containing_address(const void* address) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlopen(RTLD_NOW)");
+extern bool _dyld_image_containing_address(const void* address) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.3, 10.5, "dladdr()");
+extern void _dyld_lookup_and_bind(const char* symbol_name, void **address, NSModule* module) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlsym()");
+extern void _dyld_lookup_and_bind_with_hint(const char* symbol_name, const char* library_name_hint, void** address, NSModule* module) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.4, "dlsym()");
+extern void _dyld_lookup_and_bind_fully(const char* symbol_name, void** address, NSModule* module) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.1, 10.5, "dlsym()");
+
+extern const struct mach_header* _dyld_get_image_header_containing_address(const void* address) __API_UNAVAILABLE(ios, tvos, watchos) DYLD_DRIVERKIT_UNAVAILABLE __OSX_DEPRECATED(10.3, 10.5, "dladdr()");
+
+
+#if __cplusplus
+}
+#endif
+
+#endif /* _MACH_O_DYLD_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach-o/loader.h b/lib/libc/include/aarch64-macos-gnu/mach-o/loader.h
new file mode 100644
index 0000000000..d1520d52cb
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach-o/loader.h
@@ -0,0 +1,1601 @@
+/*
+ * Copyright (c) 1999-2010 Apple Inc. All Rights Reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+#ifndef _MACHO_LOADER_H_
+#define _MACHO_LOADER_H_
+
+/*
+ * This file describes the format of mach object files.
+ */
+#include <stdint.h>
+
+/*
+ * <mach/machine.h> is needed here for the cpu_type_t and cpu_subtype_t types
+ * and contains the constants for the possible values of these types.
+ */
+#include <mach/machine.h>
+
+/*
+ * <mach/vm_prot.h> is needed here for the vm_prot_t type and contains the
+ * constants that are or'ed together for the possible values of this type.
+ */
+#include <mach/vm_prot.h>
+
+/*
+ * <machine/thread_status.h> is expected to define the flavors of the thread
+ * states and the structures of those flavors for each machine.
+ */
+#include <mach/machine/thread_status.h>
+#include <architecture/byte_order.h>
+
+/*
+ * The 32-bit mach header appears at the very beginning of the object file for
+ * 32-bit architectures.
+ */
+struct mach_header {
+ uint32_t magic; /* mach magic number identifier */
+ cpu_type_t cputype; /* cpu specifier */
+ cpu_subtype_t cpusubtype; /* machine specifier */
+ uint32_t filetype; /* type of file */
+ uint32_t ncmds; /* number of load commands */
+ uint32_t sizeofcmds; /* the size of all the load commands */
+ uint32_t flags; /* flags */
+};
+
+/* Constant for the magic field of the mach_header (32-bit architectures) */
+#define MH_MAGIC 0xfeedface /* the mach magic number */
+#define MH_CIGAM 0xcefaedfe /* NXSwapInt(MH_MAGIC) */
+
+/*
+ * The 64-bit mach header appears at the very beginning of object files for
+ * 64-bit architectures.
+ */
+struct mach_header_64 {
+ uint32_t magic; /* mach magic number identifier */
+ cpu_type_t cputype; /* cpu specifier */
+ cpu_subtype_t cpusubtype; /* machine specifier */
+ uint32_t filetype; /* type of file */
+ uint32_t ncmds; /* number of load commands */
+ uint32_t sizeofcmds; /* the size of all the load commands */
+ uint32_t flags; /* flags */
+ uint32_t reserved; /* reserved */
+};
+
+/* Constant for the magic field of the mach_header_64 (64-bit architectures) */
+#define MH_MAGIC_64 0xfeedfacf /* the 64-bit mach magic number */
+#define MH_CIGAM_64 0xcffaedfe /* NXSwapInt(MH_MAGIC_64) */
+
+/*
+ * The layout of the file depends on the filetype. For all but the MH_OBJECT
+ * file type the segments are padded out and aligned on a segment alignment
+ * boundary for efficient demand pageing. The MH_EXECUTE, MH_FVMLIB, MH_DYLIB,
+ * MH_DYLINKER and MH_BUNDLE file types also have the headers included as part
+ * of their first segment.
+ *
+ * The file type MH_OBJECT is a compact format intended as output of the
+ * assembler and input (and possibly output) of the link editor (the .o
+ * format). All sections are in one unnamed segment with no segment padding.
+ * This format is used as an executable format when the file is so small the
+ * segment padding greatly increases its size.
+ *
+ * The file type MH_PRELOAD is an executable format intended for things that
+ * are not executed under the kernel (proms, stand alones, kernels, etc). The
+ * format can be executed under the kernel but may demand paged it and not
+ * preload it before execution.
+ *
+ * A core file is in MH_CORE format and can be any in an arbritray legal
+ * Mach-O file.
+ *
+ * Constants for the filetype field of the mach_header
+ */
+#define MH_OBJECT 0x1 /* relocatable object file */
+#define MH_EXECUTE 0x2 /* demand paged executable file */
+#define MH_FVMLIB 0x3 /* fixed VM shared library file */
+#define MH_CORE 0x4 /* core file */
+#define MH_PRELOAD 0x5 /* preloaded executable file */
+#define MH_DYLIB 0x6 /* dynamically bound shared library */
+#define MH_DYLINKER 0x7 /* dynamic link editor */
+#define MH_BUNDLE 0x8 /* dynamically bound bundle file */
+#define MH_DYLIB_STUB 0x9 /* shared library stub for static
+ linking only, no section contents */
+#define MH_DSYM 0xa /* companion file with only debug
+ sections */
+#define MH_KEXT_BUNDLE 0xb /* x86_64 kexts */
+#define MH_FILESET 0xc /* a file composed of other Mach-Os to
+ be run in the same userspace sharing
+ a single linkedit. */
+
+/* Constants for the flags field of the mach_header */
+#define MH_NOUNDEFS 0x1 /* the object file has no undefined
+ references */
+#define MH_INCRLINK 0x2 /* the object file is the output of an
+ incremental link against a base file
+ and can't be link edited again */
+#define MH_DYLDLINK 0x4 /* the object file is input for the
+ dynamic linker and can't be staticly
+ link edited again */
+#define MH_BINDATLOAD 0x8 /* the object file's undefined
+ references are bound by the dynamic
+ linker when loaded. */
+#define MH_PREBOUND 0x10 /* the file has its dynamic undefined
+ references prebound. */
+#define MH_SPLIT_SEGS 0x20 /* the file has its read-only and
+ read-write segments split */
+#define MH_LAZY_INIT 0x40 /* the shared library init routine is
+ to be run lazily via catching memory
+ faults to its writeable segments
+ (obsolete) */
+#define MH_TWOLEVEL 0x80 /* the image is using two-level name
+ space bindings */
+#define MH_FORCE_FLAT 0x100 /* the executable is forcing all images
+ to use flat name space bindings */
+#define MH_NOMULTIDEFS 0x200 /* this umbrella guarantees no multiple
+ defintions of symbols in its
+ sub-images so the two-level namespace
+ hints can always be used. */
+#define MH_NOFIXPREBINDING 0x400 /* do not have dyld notify the
+ prebinding agent about this
+ executable */
+#define MH_PREBINDABLE 0x800 /* the binary is not prebound but can
+ have its prebinding redone. only used
+ when MH_PREBOUND is not set. */
+#define MH_ALLMODSBOUND 0x1000 /* indicates that this binary binds to
+ all two-level namespace modules of
+ its dependent libraries. only used
+ when MH_PREBINDABLE and MH_TWOLEVEL
+ are both set. */
+#define MH_SUBSECTIONS_VIA_SYMBOLS 0x2000/* safe to divide up the sections into
+ sub-sections via symbols for dead
+ code stripping */
+#define MH_CANONICAL 0x4000 /* the binary has been canonicalized
+ via the unprebind operation */
+#define MH_WEAK_DEFINES 0x8000 /* the final linked image contains
+ external weak symbols */
+#define MH_BINDS_TO_WEAK 0x10000 /* the final linked image uses
+ weak symbols */
+
+#define MH_ALLOW_STACK_EXECUTION 0x20000/* When this bit is set, all stacks
+ in the task will be given stack
+ execution privilege. Only used in
+ MH_EXECUTE filetypes. */
+#define MH_ROOT_SAFE 0x40000 /* When this bit is set, the binary
+ declares it is safe for use in
+ processes with uid zero */
+
+#define MH_SETUID_SAFE 0x80000 /* When this bit is set, the binary
+ declares it is safe for use in
+ processes when issetugid() is true */
+
+#define MH_NO_REEXPORTED_DYLIBS 0x100000 /* When this bit is set on a dylib,
+ the static linker does not need to
+ examine dependent dylibs to see
+ if any are re-exported */
+#define MH_PIE 0x200000 /* When this bit is set, the OS will
+ load the main executable at a
+ random address. Only used in
+ MH_EXECUTE filetypes. */
+#define MH_DEAD_STRIPPABLE_DYLIB 0x400000 /* Only for use on dylibs. When
+ linking against a dylib that
+ has this bit set, the static linker
+ will automatically not create a
+ LC_LOAD_DYLIB load command to the
+ dylib if no symbols are being
+ referenced from the dylib. */
+#define MH_HAS_TLV_DESCRIPTORS 0x800000 /* Contains a section of type
+ S_THREAD_LOCAL_VARIABLES */
+
+#define MH_NO_HEAP_EXECUTION 0x1000000 /* When this bit is set, the OS will
+ run the main executable with
+ a non-executable heap even on
+ platforms (e.g. i386) that don't
+ require it. Only used in MH_EXECUTE
+ filetypes. */
+
+#define MH_APP_EXTENSION_SAFE 0x02000000 /* The code was linked for use in an
+ application extension. */
+
+#define MH_NLIST_OUTOFSYNC_WITH_DYLDINFO 0x04000000 /* The external symbols
+ listed in the nlist symbol table do
+ not include all the symbols listed in
+ the dyld info. */
+
+#define MH_SIM_SUPPORT 0x08000000 /* Allow LC_MIN_VERSION_MACOS and
+ LC_BUILD_VERSION load commands with
+ the platforms macOS, macCatalyst,
+ iOSSimulator, tvOSSimulator and
+ watchOSSimulator. */
+
+#define MH_DYLIB_IN_CACHE 0x80000000 /* Only for use on dylibs. When this bit
+ is set, the dylib is part of the dyld
+ shared cache, rather than loose in
+ the filesystem. */
+
+/*
+ * The load commands directly follow the mach_header. The total size of all
+ * of the commands is given by the sizeofcmds field in the mach_header. All
+ * load commands must have as their first two fields cmd and cmdsize. The cmd
+ * field is filled in with a constant for that command type. Each command type
+ * has a structure specifically for it. The cmdsize field is the size in bytes
+ * of the particular load command structure plus anything that follows it that
+ * is a part of the load command (i.e. section structures, strings, etc.). To
+ * advance to the next load command the cmdsize can be added to the offset or
+ * pointer of the current load command. The cmdsize for 32-bit architectures
+ * MUST be a multiple of 4 bytes and for 64-bit architectures MUST be a multiple
+ * of 8 bytes (these are forever the maximum alignment of any load commands).
+ * The padded bytes must be zero. All tables in the object file must also
+ * follow these rules so the file can be memory mapped. Otherwise the pointers
+ * to these tables will not work well or at all on some machines. With all
+ * padding zeroed like objects will compare byte for byte.
+ */
+struct load_command {
+ uint32_t cmd; /* type of load command */
+ uint32_t cmdsize; /* total size of command in bytes */
+};
+
+/*
+ * After MacOS X 10.1 when a new load command is added that is required to be
+ * understood by the dynamic linker for the image to execute properly the
+ * LC_REQ_DYLD bit will be or'ed into the load command constant. If the dynamic
+ * linker sees such a load command it it does not understand will issue a
+ * "unknown load command required for execution" error and refuse to use the
+ * image. Other load commands without this bit that are not understood will
+ * simply be ignored.
+ */
+#define LC_REQ_DYLD 0x80000000
+
+/* Constants for the cmd field of all load commands, the type */
+#define LC_SEGMENT 0x1 /* segment of this file to be mapped */
+#define LC_SYMTAB 0x2 /* link-edit stab symbol table info */
+#define LC_SYMSEG 0x3 /* link-edit gdb symbol table info (obsolete) */
+#define LC_THREAD 0x4 /* thread */
+#define LC_UNIXTHREAD 0x5 /* unix thread (includes a stack) */
+#define LC_LOADFVMLIB 0x6 /* load a specified fixed VM shared library */
+#define LC_IDFVMLIB 0x7 /* fixed VM shared library identification */
+#define LC_IDENT 0x8 /* object identification info (obsolete) */
+#define LC_FVMFILE 0x9 /* fixed VM file inclusion (internal use) */
+#define LC_PREPAGE 0xa /* prepage command (internal use) */
+#define LC_DYSYMTAB 0xb /* dynamic link-edit symbol table info */
+#define LC_LOAD_DYLIB 0xc /* load a dynamically linked shared library */
+#define LC_ID_DYLIB 0xd /* dynamically linked shared lib ident */
+#define LC_LOAD_DYLINKER 0xe /* load a dynamic linker */
+#define LC_ID_DYLINKER 0xf /* dynamic linker identification */
+#define LC_PREBOUND_DYLIB 0x10 /* modules prebound for a dynamically */
+ /* linked shared library */
+#define LC_ROUTINES 0x11 /* image routines */
+#define LC_SUB_FRAMEWORK 0x12 /* sub framework */
+#define LC_SUB_UMBRELLA 0x13 /* sub umbrella */
+#define LC_SUB_CLIENT 0x14 /* sub client */
+#define LC_SUB_LIBRARY 0x15 /* sub library */
+#define LC_TWOLEVEL_HINTS 0x16 /* two-level namespace lookup hints */
+#define LC_PREBIND_CKSUM 0x17 /* prebind checksum */
+
+/*
+ * load a dynamically linked shared library that is allowed to be missing
+ * (all symbols are weak imported).
+ */
+#define LC_LOAD_WEAK_DYLIB (0x18 | LC_REQ_DYLD)
+
+#define LC_SEGMENT_64 0x19 /* 64-bit segment of this file to be
+ mapped */
+#define LC_ROUTINES_64 0x1a /* 64-bit image routines */
+#define LC_UUID 0x1b /* the uuid */
+#define LC_RPATH (0x1c | LC_REQ_DYLD) /* runpath additions */
+#define LC_CODE_SIGNATURE 0x1d /* local of code signature */
+#define LC_SEGMENT_SPLIT_INFO 0x1e /* local of info to split segments */
+#define LC_REEXPORT_DYLIB (0x1f | LC_REQ_DYLD) /* load and re-export dylib */
+#define LC_LAZY_LOAD_DYLIB 0x20 /* delay load of dylib until first use */
+#define LC_ENCRYPTION_INFO 0x21 /* encrypted segment information */
+#define LC_DYLD_INFO 0x22 /* compressed dyld information */
+#define LC_DYLD_INFO_ONLY (0x22|LC_REQ_DYLD) /* compressed dyld information only */
+#define LC_LOAD_UPWARD_DYLIB (0x23 | LC_REQ_DYLD) /* load upward dylib */
+#define LC_VERSION_MIN_MACOSX 0x24 /* build for MacOSX min OS version */
+#define LC_VERSION_MIN_IPHONEOS 0x25 /* build for iPhoneOS min OS version */
+#define LC_FUNCTION_STARTS 0x26 /* compressed table of function start addresses */
+#define LC_DYLD_ENVIRONMENT 0x27 /* string for dyld to treat
+ like environment variable */
+#define LC_MAIN (0x28|LC_REQ_DYLD) /* replacement for LC_UNIXTHREAD */
+#define LC_DATA_IN_CODE 0x29 /* table of non-instructions in __text */
+#define LC_SOURCE_VERSION 0x2A /* source version used to build binary */
+#define LC_DYLIB_CODE_SIGN_DRS 0x2B /* Code signing DRs copied from linked dylibs */
+#define LC_ENCRYPTION_INFO_64 0x2C /* 64-bit encrypted segment information */
+#define LC_LINKER_OPTION 0x2D /* linker options in MH_OBJECT files */
+#define LC_LINKER_OPTIMIZATION_HINT 0x2E /* optimization hints in MH_OBJECT files */
+#define LC_VERSION_MIN_TVOS 0x2F /* build for AppleTV min OS version */
+#define LC_VERSION_MIN_WATCHOS 0x30 /* build for Watch min OS version */
+#define LC_NOTE 0x31 /* arbitrary data included within a Mach-O file */
+#define LC_BUILD_VERSION 0x32 /* build for platform min OS version */
+#define LC_DYLD_EXPORTS_TRIE (0x33 | LC_REQ_DYLD) /* used with linkedit_data_command, payload is trie */
+#define LC_DYLD_CHAINED_FIXUPS (0x34 | LC_REQ_DYLD) /* used with linkedit_data_command */
+#define LC_FILESET_ENTRY (0x35 | LC_REQ_DYLD) /* used with fileset_entry_command */
+
+/*
+ * A variable length string in a load command is represented by an lc_str
+ * union. The strings are stored just after the load command structure and
+ * the offset is from the start of the load command structure. The size
+ * of the string is reflected in the cmdsize field of the load command.
+ * Once again any padded bytes to bring the cmdsize field to a multiple
+ * of 4 bytes must be zero.
+ */
+union lc_str {
+ uint32_t offset; /* offset to the string */
+#ifndef __LP64__
+ char *ptr; /* pointer to the string */
+#endif
+};
+
+/*
+ * The segment load command indicates that a part of this file is to be
+ * mapped into the task's address space. The size of this segment in memory,
+ * vmsize, maybe equal to or larger than the amount to map from this file,
+ * filesize. The file is mapped starting at fileoff to the beginning of
+ * the segment in memory, vmaddr. The rest of the memory of the segment,
+ * if any, is allocated zero fill on demand. The segment's maximum virtual
+ * memory protection and initial virtual memory protection are specified
+ * by the maxprot and initprot fields. If the segment has sections then the
+ * section structures directly follow the segment command and their size is
+ * reflected in cmdsize.
+ */
+struct segment_command { /* for 32-bit architectures */
+ uint32_t cmd; /* LC_SEGMENT */
+ uint32_t cmdsize; /* includes sizeof section structs */
+ char segname[16]; /* segment name */
+ uint32_t vmaddr; /* memory address of this segment */
+ uint32_t vmsize; /* memory size of this segment */
+ uint32_t fileoff; /* file offset of this segment */
+ uint32_t filesize; /* amount to map from the file */
+ vm_prot_t maxprot; /* maximum VM protection */
+ vm_prot_t initprot; /* initial VM protection */
+ uint32_t nsects; /* number of sections in segment */
+ uint32_t flags; /* flags */
+};
+
+/*
+ * The 64-bit segment load command indicates that a part of this file is to be
+ * mapped into a 64-bit task's address space. If the 64-bit segment has
+ * sections then section_64 structures directly follow the 64-bit segment
+ * command and their size is reflected in cmdsize.
+ */
+struct segment_command_64 { /* for 64-bit architectures */
+ uint32_t cmd; /* LC_SEGMENT_64 */
+ uint32_t cmdsize; /* includes sizeof section_64 structs */
+ char segname[16]; /* segment name */
+ uint64_t vmaddr; /* memory address of this segment */
+ uint64_t vmsize; /* memory size of this segment */
+ uint64_t fileoff; /* file offset of this segment */
+ uint64_t filesize; /* amount to map from the file */
+ vm_prot_t maxprot; /* maximum VM protection */
+ vm_prot_t initprot; /* initial VM protection */
+ uint32_t nsects; /* number of sections in segment */
+ uint32_t flags; /* flags */
+};
+
+/* Constants for the flags field of the segment_command */
+#define SG_HIGHVM 0x1 /* the file contents for this segment is for
+ the high part of the VM space, the low part
+ is zero filled (for stacks in core files) */
+#define SG_FVMLIB 0x2 /* this segment is the VM that is allocated by
+ a fixed VM library, for overlap checking in
+ the link editor */
+#define SG_NORELOC 0x4 /* this segment has nothing that was relocated
+ in it and nothing relocated to it, that is
+ it maybe safely replaced without relocation*/
+#define SG_PROTECTED_VERSION_1 0x8 /* This segment is protected. If the
+ segment starts at file offset 0, the
+ first page of the segment is not
+ protected. All other pages of the
+ segment are protected. */
+#define SG_READ_ONLY 0x10 /* This segment is made read-only after fixups */
+
+
+
+/*
+ * A segment is made up of zero or more sections. Non-MH_OBJECT files have
+ * all of their segments with the proper sections in each, and padded to the
+ * specified segment alignment when produced by the link editor. The first
+ * segment of a MH_EXECUTE and MH_FVMLIB format file contains the mach_header
+ * and load commands of the object file before its first section. The zero
+ * fill sections are always last in their segment (in all formats). This
+ * allows the zeroed segment padding to be mapped into memory where zero fill
+ * sections might be. The gigabyte zero fill sections, those with the section
+ * type S_GB_ZEROFILL, can only be in a segment with sections of this type.
+ * These segments are then placed after all other segments.
+ *
+ * The MH_OBJECT format has all of its sections in one segment for
+ * compactness. There is no padding to a specified segment boundary and the
+ * mach_header and load commands are not part of the segment.
+ *
+ * Sections with the same section name, sectname, going into the same segment,
+ * segname, are combined by the link editor. The resulting section is aligned
+ * to the maximum alignment of the combined sections and is the new section's
+ * alignment. The combined sections are aligned to their original alignment in
+ * the combined section. Any padded bytes to get the specified alignment are
+ * zeroed.
+ *
+ * The format of the relocation entries referenced by the reloff and nreloc
+ * fields of the section structure for mach object files is described in the
+ * header file <reloc.h>.
+ */
+struct section { /* for 32-bit architectures */
+ char sectname[16]; /* name of this section */
+ char segname[16]; /* segment this section goes in */
+ uint32_t addr; /* memory address of this section */
+ uint32_t size; /* size in bytes of this section */
+ uint32_t offset; /* file offset of this section */
+ uint32_t align; /* section alignment (power of 2) */
+ uint32_t reloff; /* file offset of relocation entries */
+ uint32_t nreloc; /* number of relocation entries */
+ uint32_t flags; /* flags (section type and attributes)*/
+ uint32_t reserved1; /* reserved (for offset or index) */
+ uint32_t reserved2; /* reserved (for count or sizeof) */
+};
+
+struct section_64 { /* for 64-bit architectures */
+ char sectname[16]; /* name of this section */
+ char segname[16]; /* segment this section goes in */
+ uint64_t addr; /* memory address of this section */
+ uint64_t size; /* size in bytes of this section */
+ uint32_t offset; /* file offset of this section */
+ uint32_t align; /* section alignment (power of 2) */
+ uint32_t reloff; /* file offset of relocation entries */
+ uint32_t nreloc; /* number of relocation entries */
+ uint32_t flags; /* flags (section type and attributes)*/
+ uint32_t reserved1; /* reserved (for offset or index) */
+ uint32_t reserved2; /* reserved (for count or sizeof) */
+ uint32_t reserved3; /* reserved */
+};
+
+/*
+ * The flags field of a section structure is separated into two parts a section
+ * type and section attributes. The section types are mutually exclusive (it
+ * can only have one type) but the section attributes are not (it may have more
+ * than one attribute).
+ */
+#define SECTION_TYPE 0x000000ff /* 256 section types */
+#define SECTION_ATTRIBUTES 0xffffff00 /* 24 section attributes */
+
+/* Constants for the type of a section */
+#define S_REGULAR 0x0 /* regular section */
+#define S_ZEROFILL 0x1 /* zero fill on demand section */
+#define S_CSTRING_LITERALS 0x2 /* section with only literal C strings*/
+#define S_4BYTE_LITERALS 0x3 /* section with only 4 byte literals */
+#define S_8BYTE_LITERALS 0x4 /* section with only 8 byte literals */
+#define S_LITERAL_POINTERS 0x5 /* section with only pointers to */
+ /* literals */
+/*
+ * For the two types of symbol pointers sections and the symbol stubs section
+ * they have indirect symbol table entries. For each of the entries in the
+ * section the indirect symbol table entries, in corresponding order in the
+ * indirect symbol table, start at the index stored in the reserved1 field
+ * of the section structure. Since the indirect symbol table entries
+ * correspond to the entries in the section the number of indirect symbol table
+ * entries is inferred from the size of the section divided by the size of the
+ * entries in the section. For symbol pointers sections the size of the entries
+ * in the section is 4 bytes and for symbol stubs sections the byte size of the
+ * stubs is stored in the reserved2 field of the section structure.
+ */
+#define S_NON_LAZY_SYMBOL_POINTERS 0x6 /* section with only non-lazy
+ symbol pointers */
+#define S_LAZY_SYMBOL_POINTERS 0x7 /* section with only lazy symbol
+ pointers */
+#define S_SYMBOL_STUBS 0x8 /* section with only symbol
+ stubs, byte size of stub in
+ the reserved2 field */
+#define S_MOD_INIT_FUNC_POINTERS 0x9 /* section with only function
+ pointers for initialization*/
+#define S_MOD_TERM_FUNC_POINTERS 0xa /* section with only function
+ pointers for termination */
+#define S_COALESCED 0xb /* section contains symbols that
+ are to be coalesced */
+#define S_GB_ZEROFILL 0xc /* zero fill on demand section
+ (that can be larger than 4
+ gigabytes) */
+#define S_INTERPOSING 0xd /* section with only pairs of
+ function pointers for
+ interposing */
+#define S_16BYTE_LITERALS 0xe /* section with only 16 byte
+ literals */
+#define S_DTRACE_DOF 0xf /* section contains
+ DTrace Object Format */
+#define S_LAZY_DYLIB_SYMBOL_POINTERS 0x10 /* section with only lazy
+ symbol pointers to lazy
+ loaded dylibs */
+/*
+ * Section types to support thread local variables
+ */
+#define S_THREAD_LOCAL_REGULAR 0x11 /* template of initial
+ values for TLVs */
+#define S_THREAD_LOCAL_ZEROFILL 0x12 /* template of initial
+ values for TLVs */
+#define S_THREAD_LOCAL_VARIABLES 0x13 /* TLV descriptors */
+#define S_THREAD_LOCAL_VARIABLE_POINTERS 0x14 /* pointers to TLV
+ descriptors */
+#define S_THREAD_LOCAL_INIT_FUNCTION_POINTERS 0x15 /* functions to call
+ to initialize TLV
+ values */
+#define S_INIT_FUNC_OFFSETS 0x16 /* 32-bit offsets to
+ initializers */
+
+/*
+ * Constants for the section attributes part of the flags field of a section
+ * structure.
+ */
+#define SECTION_ATTRIBUTES_USR 0xff000000 /* User setable attributes */
+#define S_ATTR_PURE_INSTRUCTIONS 0x80000000 /* section contains only true
+ machine instructions */
+#define S_ATTR_NO_TOC 0x40000000 /* section contains coalesced
+ symbols that are not to be
+ in a ranlib table of
+ contents */
+#define S_ATTR_STRIP_STATIC_SYMS 0x20000000 /* ok to strip static symbols
+ in this section in files
+ with the MH_DYLDLINK flag */
+#define S_ATTR_NO_DEAD_STRIP 0x10000000 /* no dead stripping */
+#define S_ATTR_LIVE_SUPPORT 0x08000000 /* blocks are live if they
+ reference live blocks */
+#define S_ATTR_SELF_MODIFYING_CODE 0x04000000 /* Used with i386 code stubs
+ written on by dyld */
+/*
+ * If a segment contains any sections marked with S_ATTR_DEBUG then all
+ * sections in that segment must have this attribute. No section other than
+ * a section marked with this attribute may reference the contents of this
+ * section. A section with this attribute may contain no symbols and must have
+ * a section type S_REGULAR. The static linker will not copy section contents
+ * from sections with this attribute into its output file. These sections
+ * generally contain DWARF debugging info.
+ */
+#define S_ATTR_DEBUG 0x02000000 /* a debug section */
+#define SECTION_ATTRIBUTES_SYS 0x00ffff00 /* system setable attributes */
+#define S_ATTR_SOME_INSTRUCTIONS 0x00000400 /* section contains some
+ machine instructions */
+#define S_ATTR_EXT_RELOC 0x00000200 /* section has external
+ relocation entries */
+#define S_ATTR_LOC_RELOC 0x00000100 /* section has local
+ relocation entries */
+
+
+/*
+ * The names of segments and sections in them are mostly meaningless to the
+ * link-editor. But there are few things to support traditional UNIX
+ * executables that require the link-editor and assembler to use some names
+ * agreed upon by convention.
+ *
+ * The initial protection of the "__TEXT" segment has write protection turned
+ * off (not writeable).
+ *
+ * The link-editor will allocate common symbols at the end of the "__common"
+ * section in the "__DATA" segment. It will create the section and segment
+ * if needed.
+ */
+
+/* The currently known segment names and the section names in those segments */
+
+#define SEG_PAGEZERO "__PAGEZERO" /* the pagezero segment which has no */
+ /* protections and catches NULL */
+ /* references for MH_EXECUTE files */
+
+
+#define SEG_TEXT "__TEXT" /* the tradition UNIX text segment */
+#define SECT_TEXT "__text" /* the real text part of the text */
+ /* section no headers, and no padding */
+#define SECT_FVMLIB_INIT0 "__fvmlib_init0" /* the fvmlib initialization */
+ /* section */
+#define SECT_FVMLIB_INIT1 "__fvmlib_init1" /* the section following the */
+ /* fvmlib initialization */
+ /* section */
+
+#define SEG_DATA "__DATA" /* the tradition UNIX data segment */
+#define SECT_DATA "__data" /* the real initialized data section */
+ /* no padding, no bss overlap */
+#define SECT_BSS "__bss" /* the real uninitialized data section*/
+ /* no padding */
+#define SECT_COMMON "__common" /* the section common symbols are */
+ /* allocated in by the link editor */
+
+#define SEG_OBJC "__OBJC" /* objective-C runtime segment */
+#define SECT_OBJC_SYMBOLS "__symbol_table" /* symbol table */
+#define SECT_OBJC_MODULES "__module_info" /* module information */
+#define SECT_OBJC_STRINGS "__selector_strs" /* string table */
+#define SECT_OBJC_REFS "__selector_refs" /* string table */
+
+#define SEG_ICON "__ICON" /* the icon segment */
+#define SECT_ICON_HEADER "__header" /* the icon headers */
+#define SECT_ICON_TIFF "__tiff" /* the icons in tiff format */
+
+#define SEG_LINKEDIT "__LINKEDIT" /* the segment containing all structs */
+ /* created and maintained by the link */
+ /* editor. Created with -seglinkedit */
+ /* option to ld(1) for MH_EXECUTE and */
+ /* FVMLIB file types only */
+
+#define SEG_UNIXSTACK "__UNIXSTACK" /* the unix stack segment */
+
+#define SEG_IMPORT "__IMPORT" /* the segment for the self (dyld) */
+ /* modifing code stubs that has read, */
+ /* write and execute permissions */
+
+/*
+ * Fixed virtual memory shared libraries are identified by two things. The
+ * target pathname (the name of the library as found for execution), and the
+ * minor version number. The address of where the headers are loaded is in
+ * header_addr. (THIS IS OBSOLETE and no longer supported).
+ */
+struct fvmlib {
+ union lc_str name; /* library's target pathname */
+ uint32_t minor_version; /* library's minor version number */
+ uint32_t header_addr; /* library's header address */
+};
+
+/*
+ * A fixed virtual shared library (filetype == MH_FVMLIB in the mach header)
+ * contains a fvmlib_command (cmd == LC_IDFVMLIB) to identify the library.
+ * An object that uses a fixed virtual shared library also contains a
+ * fvmlib_command (cmd == LC_LOADFVMLIB) for each library it uses.
+ * (THIS IS OBSOLETE and no longer supported).
+ */
+struct fvmlib_command {
+ uint32_t cmd; /* LC_IDFVMLIB or LC_LOADFVMLIB */
+ uint32_t cmdsize; /* includes pathname string */
+ struct fvmlib fvmlib; /* the library identification */
+};
+
+/*
+ * Dynamicly linked shared libraries are identified by two things. The
+ * pathname (the name of the library as found for execution), and the
+ * compatibility version number. The pathname must match and the compatibility
+ * number in the user of the library must be greater than or equal to the
+ * library being used. The time stamp is used to record the time a library was
+ * built and copied into user so it can be use to determined if the library used
+ * at runtime is exactly the same as used to built the program.
+ */
+struct dylib {
+ union lc_str name; /* library's path name */
+ uint32_t timestamp; /* library's build time stamp */
+ uint32_t current_version; /* library's current version number */
+ uint32_t compatibility_version; /* library's compatibility vers number*/
+};
+
+/*
+ * A dynamically linked shared library (filetype == MH_DYLIB in the mach header)
+ * contains a dylib_command (cmd == LC_ID_DYLIB) to identify the library.
+ * An object that uses a dynamically linked shared library also contains a
+ * dylib_command (cmd == LC_LOAD_DYLIB, LC_LOAD_WEAK_DYLIB, or
+ * LC_REEXPORT_DYLIB) for each library it uses.
+ */
+struct dylib_command {
+ uint32_t cmd; /* LC_ID_DYLIB, LC_LOAD_{,WEAK_}DYLIB,
+ LC_REEXPORT_DYLIB */
+ uint32_t cmdsize; /* includes pathname string */
+ struct dylib dylib; /* the library identification */
+};
+
+/*
+ * A dynamically linked shared library may be a subframework of an umbrella
+ * framework. If so it will be linked with "-umbrella umbrella_name" where
+ * Where "umbrella_name" is the name of the umbrella framework. A subframework
+ * can only be linked against by its umbrella framework or other subframeworks
+ * that are part of the same umbrella framework. Otherwise the static link
+ * editor produces an error and states to link against the umbrella framework.
+ * The name of the umbrella framework for subframeworks is recorded in the
+ * following structure.
+ */
+struct sub_framework_command {
+ uint32_t cmd; /* LC_SUB_FRAMEWORK */
+ uint32_t cmdsize; /* includes umbrella string */
+ union lc_str umbrella; /* the umbrella framework name */
+};
+
+/*
+ * For dynamically linked shared libraries that are subframework of an umbrella
+ * framework they can allow clients other than the umbrella framework or other
+ * subframeworks in the same umbrella framework. To do this the subframework
+ * is built with "-allowable_client client_name" and an LC_SUB_CLIENT load
+ * command is created for each -allowable_client flag. The client_name is
+ * usually a framework name. It can also be a name used for bundles clients
+ * where the bundle is built with "-client_name client_name".
+ */
+struct sub_client_command {
+ uint32_t cmd; /* LC_SUB_CLIENT */
+ uint32_t cmdsize; /* includes client string */
+ union lc_str client; /* the client name */
+};
+
+/*
+ * A dynamically linked shared library may be a sub_umbrella of an umbrella
+ * framework. If so it will be linked with "-sub_umbrella umbrella_name" where
+ * Where "umbrella_name" is the name of the sub_umbrella framework. When
+ * staticly linking when -twolevel_namespace is in effect a twolevel namespace
+ * umbrella framework will only cause its subframeworks and those frameworks
+ * listed as sub_umbrella frameworks to be implicited linked in. Any other
+ * dependent dynamic libraries will not be linked it when -twolevel_namespace
+ * is in effect. The primary library recorded by the static linker when
+ * resolving a symbol in these libraries will be the umbrella framework.
+ * Zero or more sub_umbrella frameworks may be use by an umbrella framework.
+ * The name of a sub_umbrella framework is recorded in the following structure.
+ */
+struct sub_umbrella_command {
+ uint32_t cmd; /* LC_SUB_UMBRELLA */
+ uint32_t cmdsize; /* includes sub_umbrella string */
+ union lc_str sub_umbrella; /* the sub_umbrella framework name */
+};
+
+/*
+ * A dynamically linked shared library may be a sub_library of another shared
+ * library. If so it will be linked with "-sub_library library_name" where
+ * Where "library_name" is the name of the sub_library shared library. When
+ * staticly linking when -twolevel_namespace is in effect a twolevel namespace
+ * shared library will only cause its subframeworks and those frameworks
+ * listed as sub_umbrella frameworks and libraries listed as sub_libraries to
+ * be implicited linked in. Any other dependent dynamic libraries will not be
+ * linked it when -twolevel_namespace is in effect. The primary library
+ * recorded by the static linker when resolving a symbol in these libraries
+ * will be the umbrella framework (or dynamic library). Zero or more sub_library
+ * shared libraries may be use by an umbrella framework or (or dynamic library).
+ * The name of a sub_library framework is recorded in the following structure.
+ * For example /usr/lib/libobjc_profile.A.dylib would be recorded as "libobjc".
+ */
+struct sub_library_command {
+ uint32_t cmd; /* LC_SUB_LIBRARY */
+ uint32_t cmdsize; /* includes sub_library string */
+ union lc_str sub_library; /* the sub_library name */
+};
+
+/*
+ * A program (filetype == MH_EXECUTE) that is
+ * prebound to its dynamic libraries has one of these for each library that
+ * the static linker used in prebinding. It contains a bit vector for the
+ * modules in the library. The bits indicate which modules are bound (1) and
+ * which are not (0) from the library. The bit for module 0 is the low bit
+ * of the first byte. So the bit for the Nth module is:
+ * (linked_modules[N/8] >> N%8) & 1
+ */
+struct prebound_dylib_command {
+ uint32_t cmd; /* LC_PREBOUND_DYLIB */
+ uint32_t cmdsize; /* includes strings */
+ union lc_str name; /* library's path name */
+ uint32_t nmodules; /* number of modules in library */
+ union lc_str linked_modules; /* bit vector of linked modules */
+};
+
+/*
+ * A program that uses a dynamic linker contains a dylinker_command to identify
+ * the name of the dynamic linker (LC_LOAD_DYLINKER). And a dynamic linker
+ * contains a dylinker_command to identify the dynamic linker (LC_ID_DYLINKER).
+ * A file can have at most one of these.
+ * This struct is also used for the LC_DYLD_ENVIRONMENT load command and
+ * contains string for dyld to treat like environment variable.
+ */
+struct dylinker_command {
+ uint32_t cmd; /* LC_ID_DYLINKER, LC_LOAD_DYLINKER or
+ LC_DYLD_ENVIRONMENT */
+ uint32_t cmdsize; /* includes pathname string */
+ union lc_str name; /* dynamic linker's path name */
+};
+
+/*
+ * Thread commands contain machine-specific data structures suitable for
+ * use in the thread state primitives. The machine specific data structures
+ * follow the struct thread_command as follows.
+ * Each flavor of machine specific data structure is preceded by an uint32_t
+ * constant for the flavor of that data structure, an uint32_t that is the
+ * count of uint32_t's of the size of the state data structure and then
+ * the state data structure follows. This triple may be repeated for many
+ * flavors. The constants for the flavors, counts and state data structure
+ * definitions are expected to be in the header file <machine/thread_status.h>.
+ * These machine specific data structures sizes must be multiples of
+ * 4 bytes. The cmdsize reflects the total size of the thread_command
+ * and all of the sizes of the constants for the flavors, counts and state
+ * data structures.
+ *
+ * For executable objects that are unix processes there will be one
+ * thread_command (cmd == LC_UNIXTHREAD) created for it by the link-editor.
+ * This is the same as a LC_THREAD, except that a stack is automatically
+ * created (based on the shell's limit for the stack size). Command arguments
+ * and environment variables are copied onto that stack.
+ */
+struct thread_command {
+ uint32_t cmd; /* LC_THREAD or LC_UNIXTHREAD */
+ uint32_t cmdsize; /* total size of this command */
+ /* uint32_t flavor flavor of thread state */
+ /* uint32_t count count of uint32_t's in thread state */
+ /* struct XXX_thread_state state thread state for this flavor */
+ /* ... */
+};
+
+/*
+ * The routines command contains the address of the dynamic shared library
+ * initialization routine and an index into the module table for the module
+ * that defines the routine. Before any modules are used from the library the
+ * dynamic linker fully binds the module that defines the initialization routine
+ * and then calls it. This gets called before any module initialization
+ * routines (used for C++ static constructors) in the library.
+ */
+struct routines_command { /* for 32-bit architectures */
+ uint32_t cmd; /* LC_ROUTINES */
+ uint32_t cmdsize; /* total size of this command */
+ uint32_t init_address; /* address of initialization routine */
+ uint32_t init_module; /* index into the module table that */
+ /* the init routine is defined in */
+ uint32_t reserved1;
+ uint32_t reserved2;
+ uint32_t reserved3;
+ uint32_t reserved4;
+ uint32_t reserved5;
+ uint32_t reserved6;
+};
+
+/*
+ * The 64-bit routines command. Same use as above.
+ */
+struct routines_command_64 { /* for 64-bit architectures */
+ uint32_t cmd; /* LC_ROUTINES_64 */
+ uint32_t cmdsize; /* total size of this command */
+ uint64_t init_address; /* address of initialization routine */
+ uint64_t init_module; /* index into the module table that */
+ /* the init routine is defined in */
+ uint64_t reserved1;
+ uint64_t reserved2;
+ uint64_t reserved3;
+ uint64_t reserved4;
+ uint64_t reserved5;
+ uint64_t reserved6;
+};
+
+/*
+ * The symtab_command contains the offsets and sizes of the link-edit 4.3BSD
+ * "stab" style symbol table information as described in the header files
+ * <nlist.h> and <stab.h>.
+ */
+struct symtab_command {
+ uint32_t cmd; /* LC_SYMTAB */
+ uint32_t cmdsize; /* sizeof(struct symtab_command) */
+ uint32_t symoff; /* symbol table offset */
+ uint32_t nsyms; /* number of symbol table entries */
+ uint32_t stroff; /* string table offset */
+ uint32_t strsize; /* string table size in bytes */
+};
+
+/*
+ * This is the second set of the symbolic information which is used to support
+ * the data structures for the dynamically link editor.
+ *
+ * The original set of symbolic information in the symtab_command which contains
+ * the symbol and string tables must also be present when this load command is
+ * present. When this load command is present the symbol table is organized
+ * into three groups of symbols:
+ * local symbols (static and debugging symbols) - grouped by module
+ * defined external symbols - grouped by module (sorted by name if not lib)
+ * undefined external symbols (sorted by name if MH_BINDATLOAD is not set,
+ * and in order the were seen by the static
+ * linker if MH_BINDATLOAD is set)
+ * In this load command there are offsets and counts to each of the three groups
+ * of symbols.
+ *
+ * This load command contains a the offsets and sizes of the following new
+ * symbolic information tables:
+ * table of contents
+ * module table
+ * reference symbol table
+ * indirect symbol table
+ * The first three tables above (the table of contents, module table and
+ * reference symbol table) are only present if the file is a dynamically linked
+ * shared library. For executable and object modules, which are files
+ * containing only one module, the information that would be in these three
+ * tables is determined as follows:
+ * table of contents - the defined external symbols are sorted by name
+ * module table - the file contains only one module so everything in the
+ * file is part of the module.
+ * reference symbol table - is the defined and undefined external symbols
+ *
+ * For dynamically linked shared library files this load command also contains
+ * offsets and sizes to the pool of relocation entries for all sections
+ * separated into two groups:
+ * external relocation entries
+ * local relocation entries
+ * For executable and object modules the relocation entries continue to hang
+ * off the section structures.
+ */
+struct dysymtab_command {
+ uint32_t cmd; /* LC_DYSYMTAB */
+ uint32_t cmdsize; /* sizeof(struct dysymtab_command) */
+
+ /*
+ * The symbols indicated by symoff and nsyms of the LC_SYMTAB load command
+ * are grouped into the following three groups:
+ * local symbols (further grouped by the module they are from)
+ * defined external symbols (further grouped by the module they are from)
+ * undefined symbols
+ *
+ * The local symbols are used only for debugging. The dynamic binding
+ * process may have to use them to indicate to the debugger the local
+ * symbols for a module that is being bound.
+ *
+ * The last two groups are used by the dynamic binding process to do the
+ * binding (indirectly through the module table and the reference symbol
+ * table when this is a dynamically linked shared library file).
+ */
+ uint32_t ilocalsym; /* index to local symbols */
+ uint32_t nlocalsym; /* number of local symbols */
+
+ uint32_t iextdefsym;/* index to externally defined symbols */
+ uint32_t nextdefsym;/* number of externally defined symbols */
+
+ uint32_t iundefsym; /* index to undefined symbols */
+ uint32_t nundefsym; /* number of undefined symbols */
+
+ /*
+ * For the for the dynamic binding process to find which module a symbol
+ * is defined in the table of contents is used (analogous to the ranlib
+ * structure in an archive) which maps defined external symbols to modules
+ * they are defined in. This exists only in a dynamically linked shared
+ * library file. For executable and object modules the defined external
+ * symbols are sorted by name and is use as the table of contents.
+ */
+ uint32_t tocoff; /* file offset to table of contents */
+ uint32_t ntoc; /* number of entries in table of contents */
+
+ /*
+ * To support dynamic binding of "modules" (whole object files) the symbol
+ * table must reflect the modules that the file was created from. This is
+ * done by having a module table that has indexes and counts into the merged
+ * tables for each module. The module structure that these two entries
+ * refer to is described below. This exists only in a dynamically linked
+ * shared library file. For executable and object modules the file only
+ * contains one module so everything in the file belongs to the module.
+ */
+ uint32_t modtaboff; /* file offset to module table */
+ uint32_t nmodtab; /* number of module table entries */
+
+ /*
+ * To support dynamic module binding the module structure for each module
+ * indicates the external references (defined and undefined) each module
+ * makes. For each module there is an offset and a count into the
+ * reference symbol table for the symbols that the module references.
+ * This exists only in a dynamically linked shared library file. For
+ * executable and object modules the defined external symbols and the
+ * undefined external symbols indicates the external references.
+ */
+ uint32_t extrefsymoff; /* offset to referenced symbol table */
+ uint32_t nextrefsyms; /* number of referenced symbol table entries */
+
+ /*
+ * The sections that contain "symbol pointers" and "routine stubs" have
+ * indexes and (implied counts based on the size of the section and fixed
+ * size of the entry) into the "indirect symbol" table for each pointer
+ * and stub. For every section of these two types the index into the
+ * indirect symbol table is stored in the section header in the field
+ * reserved1. An indirect symbol table entry is simply a 32bit index into
+ * the symbol table to the symbol that the pointer or stub is referring to.
+ * The indirect symbol table is ordered to match the entries in the section.
+ */
+ uint32_t indirectsymoff; /* file offset to the indirect symbol table */
+ uint32_t nindirectsyms; /* number of indirect symbol table entries */
+
+ /*
+ * To support relocating an individual module in a library file quickly the
+ * external relocation entries for each module in the library need to be
+ * accessed efficiently. Since the relocation entries can't be accessed
+ * through the section headers for a library file they are separated into
+ * groups of local and external entries further grouped by module. In this
+ * case the presents of this load command who's extreloff, nextrel,
+ * locreloff and nlocrel fields are non-zero indicates that the relocation
+ * entries of non-merged sections are not referenced through the section
+ * structures (and the reloff and nreloc fields in the section headers are
+ * set to zero).
+ *
+ * Since the relocation entries are not accessed through the section headers
+ * this requires the r_address field to be something other than a section
+ * offset to identify the item to be relocated. In this case r_address is
+ * set to the offset from the vmaddr of the first LC_SEGMENT command.
+ * For MH_SPLIT_SEGS images r_address is set to the the offset from the
+ * vmaddr of the first read-write LC_SEGMENT command.
+ *
+ * The relocation entries are grouped by module and the module table
+ * entries have indexes and counts into them for the group of external
+ * relocation entries for that the module.
+ *
+ * For sections that are merged across modules there must not be any
+ * remaining external relocation entries for them (for merged sections
+ * remaining relocation entries must be local).
+ */
+ uint32_t extreloff; /* offset to external relocation entries */
+ uint32_t nextrel; /* number of external relocation entries */
+
+ /*
+ * All the local relocation entries are grouped together (they are not
+ * grouped by their module since they are only used if the object is moved
+ * from it staticly link edited address).
+ */
+ uint32_t locreloff; /* offset to local relocation entries */
+ uint32_t nlocrel; /* number of local relocation entries */
+
+};
+
+/*
+ * An indirect symbol table entry is simply a 32bit index into the symbol table
+ * to the symbol that the pointer or stub is refering to. Unless it is for a
+ * non-lazy symbol pointer section for a defined symbol which strip(1) as
+ * removed. In which case it has the value INDIRECT_SYMBOL_LOCAL. If the
+ * symbol was also absolute INDIRECT_SYMBOL_ABS is or'ed with that.
+ */
+#define INDIRECT_SYMBOL_LOCAL 0x80000000
+#define INDIRECT_SYMBOL_ABS 0x40000000
+
+
+/* a table of contents entry */
+struct dylib_table_of_contents {
+ uint32_t symbol_index; /* the defined external symbol
+ (index into the symbol table) */
+ uint32_t module_index; /* index into the module table this symbol
+ is defined in */
+};
+
+/* a module table entry */
+struct dylib_module {
+ uint32_t module_name; /* the module name (index into string table) */
+
+ uint32_t iextdefsym; /* index into externally defined symbols */
+ uint32_t nextdefsym; /* number of externally defined symbols */
+ uint32_t irefsym; /* index into reference symbol table */
+ uint32_t nrefsym; /* number of reference symbol table entries */
+ uint32_t ilocalsym; /* index into symbols for local symbols */
+ uint32_t nlocalsym; /* number of local symbols */
+
+ uint32_t iextrel; /* index into external relocation entries */
+ uint32_t nextrel; /* number of external relocation entries */
+
+ uint32_t iinit_iterm; /* low 16 bits are the index into the init
+ section, high 16 bits are the index into
+ the term section */
+ uint32_t ninit_nterm; /* low 16 bits are the number of init section
+ entries, high 16 bits are the number of
+ term section entries */
+
+ uint32_t /* for this module address of the start of */
+ objc_module_info_addr; /* the (__OBJC,__module_info) section */
+ uint32_t /* for this module size of */
+ objc_module_info_size; /* the (__OBJC,__module_info) section */
+};
+
+/* a 64-bit module table entry */
+struct dylib_module_64 {
+ uint32_t module_name; /* the module name (index into string table) */
+
+ uint32_t iextdefsym; /* index into externally defined symbols */
+ uint32_t nextdefsym; /* number of externally defined symbols */
+ uint32_t irefsym; /* index into reference symbol table */
+ uint32_t nrefsym; /* number of reference symbol table entries */
+ uint32_t ilocalsym; /* index into symbols for local symbols */
+ uint32_t nlocalsym; /* number of local symbols */
+
+ uint32_t iextrel; /* index into external relocation entries */
+ uint32_t nextrel; /* number of external relocation entries */
+
+ uint32_t iinit_iterm; /* low 16 bits are the index into the init
+ section, high 16 bits are the index into
+ the term section */
+ uint32_t ninit_nterm; /* low 16 bits are the number of init section
+ entries, high 16 bits are the number of
+ term section entries */
+
+ uint32_t /* for this module size of */
+ objc_module_info_size; /* the (__OBJC,__module_info) section */
+ uint64_t /* for this module address of the start of */
+ objc_module_info_addr; /* the (__OBJC,__module_info) section */
+};
+
+/*
+ * The entries in the reference symbol table are used when loading the module
+ * (both by the static and dynamic link editors) and if the module is unloaded
+ * or replaced. Therefore all external symbols (defined and undefined) are
+ * listed in the module's reference table. The flags describe the type of
+ * reference that is being made. The constants for the flags are defined in
+ * <mach-o/nlist.h> as they are also used for symbol table entries.
+ */
+struct dylib_reference {
+ uint32_t isym:24, /* index into the symbol table */
+ flags:8; /* flags to indicate the type of reference */
+};
+
+/*
+ * The twolevel_hints_command contains the offset and number of hints in the
+ * two-level namespace lookup hints table.
+ */
+struct twolevel_hints_command {
+ uint32_t cmd; /* LC_TWOLEVEL_HINTS */
+ uint32_t cmdsize; /* sizeof(struct twolevel_hints_command) */
+ uint32_t offset; /* offset to the hint table */
+ uint32_t nhints; /* number of hints in the hint table */
+};
+
+/*
+ * The entries in the two-level namespace lookup hints table are twolevel_hint
+ * structs. These provide hints to the dynamic link editor where to start
+ * looking for an undefined symbol in a two-level namespace image. The
+ * isub_image field is an index into the sub-images (sub-frameworks and
+ * sub-umbrellas list) that made up the two-level image that the undefined
+ * symbol was found in when it was built by the static link editor. If
+ * isub-image is 0 the the symbol is expected to be defined in library and not
+ * in the sub-images. If isub-image is non-zero it is an index into the array
+ * of sub-images for the umbrella with the first index in the sub-images being
+ * 1. The array of sub-images is the ordered list of sub-images of the umbrella
+ * that would be searched for a symbol that has the umbrella recorded as its
+ * primary library. The table of contents index is an index into the
+ * library's table of contents. This is used as the starting point of the
+ * binary search or a directed linear search.
+ */
+struct twolevel_hint {
+ uint32_t
+ isub_image:8, /* index into the sub images */
+ itoc:24; /* index into the table of contents */
+};
+
+/*
+ * The prebind_cksum_command contains the value of the original check sum for
+ * prebound files or zero. When a prebound file is first created or modified
+ * for other than updating its prebinding information the value of the check sum
+ * is set to zero. When the file has it prebinding re-done and if the value of
+ * the check sum is zero the original check sum is calculated and stored in
+ * cksum field of this load command in the output file. If when the prebinding
+ * is re-done and the cksum field is non-zero it is left unchanged from the
+ * input file.
+ */
+struct prebind_cksum_command {
+ uint32_t cmd; /* LC_PREBIND_CKSUM */
+ uint32_t cmdsize; /* sizeof(struct prebind_cksum_command) */
+ uint32_t cksum; /* the check sum or zero */
+};
+
+/*
+ * The uuid load command contains a single 128-bit unique random number that
+ * identifies an object produced by the static link editor.
+ */
+struct uuid_command {
+ uint32_t cmd; /* LC_UUID */
+ uint32_t cmdsize; /* sizeof(struct uuid_command) */
+ uint8_t uuid[16]; /* the 128-bit uuid */
+};
+
+/*
+ * The rpath_command contains a path which at runtime should be added to
+ * the current run path used to find @rpath prefixed dylibs.
+ */
+struct rpath_command {
+ uint32_t cmd; /* LC_RPATH */
+ uint32_t cmdsize; /* includes string */
+ union lc_str path; /* path to add to run path */
+};
+
+/*
+ * The linkedit_data_command contains the offsets and sizes of a blob
+ * of data in the __LINKEDIT segment.
+ */
+struct linkedit_data_command {
+ uint32_t cmd; /* LC_CODE_SIGNATURE, LC_SEGMENT_SPLIT_INFO,
+ LC_FUNCTION_STARTS, LC_DATA_IN_CODE,
+ LC_DYLIB_CODE_SIGN_DRS,
+ LC_LINKER_OPTIMIZATION_HINT,
+ LC_DYLD_EXPORTS_TRIE, or
+ LC_DYLD_CHAINED_FIXUPS. */
+ uint32_t cmdsize; /* sizeof(struct linkedit_data_command) */
+ uint32_t dataoff; /* file offset of data in __LINKEDIT segment */
+ uint32_t datasize; /* file size of data in __LINKEDIT segment */
+};
+
+/*
+ * The encryption_info_command contains the file offset and size of an
+ * of an encrypted segment.
+ */
+struct encryption_info_command {
+ uint32_t cmd; /* LC_ENCRYPTION_INFO */
+ uint32_t cmdsize; /* sizeof(struct encryption_info_command) */
+ uint32_t cryptoff; /* file offset of encrypted range */
+ uint32_t cryptsize; /* file size of encrypted range */
+ uint32_t cryptid; /* which enryption system,
+ 0 means not-encrypted yet */
+};
+
+/*
+ * The encryption_info_command_64 contains the file offset and size of an
+ * of an encrypted segment (for use in x86_64 targets).
+ */
+struct encryption_info_command_64 {
+ uint32_t cmd; /* LC_ENCRYPTION_INFO_64 */
+ uint32_t cmdsize; /* sizeof(struct encryption_info_command_64) */
+ uint32_t cryptoff; /* file offset of encrypted range */
+ uint32_t cryptsize; /* file size of encrypted range */
+ uint32_t cryptid; /* which enryption system,
+ 0 means not-encrypted yet */
+ uint32_t pad; /* padding to make this struct's size a multiple
+ of 8 bytes */
+};
+
+/*
+ * The version_min_command contains the min OS version on which this
+ * binary was built to run.
+ */
+struct version_min_command {
+ uint32_t cmd; /* LC_VERSION_MIN_MACOSX or
+ LC_VERSION_MIN_IPHONEOS or
+ LC_VERSION_MIN_WATCHOS or
+ LC_VERSION_MIN_TVOS */
+ uint32_t cmdsize; /* sizeof(struct min_version_command) */
+ uint32_t version; /* X.Y.Z is encoded in nibbles xxxx.yy.zz */
+ uint32_t sdk; /* X.Y.Z is encoded in nibbles xxxx.yy.zz */
+};
+
+/*
+ * The build_version_command contains the min OS version on which this
+ * binary was built to run for its platform. The list of known platforms and
+ * tool values following it.
+ */
+struct build_version_command {
+ uint32_t cmd; /* LC_BUILD_VERSION */
+ uint32_t cmdsize; /* sizeof(struct build_version_command) plus */
+ /* ntools * sizeof(struct build_tool_version) */
+ uint32_t platform; /* platform */
+ uint32_t minos; /* X.Y.Z is encoded in nibbles xxxx.yy.zz */
+ uint32_t sdk; /* X.Y.Z is encoded in nibbles xxxx.yy.zz */
+ uint32_t ntools; /* number of tool entries following this */
+};
+
+struct build_tool_version {
+ uint32_t tool; /* enum for the tool */
+ uint32_t version; /* version number of the tool */
+};
+
+/* Known values for the platform field above. */
+#define PLATFORM_MACOS 1
+#define PLATFORM_IOS 2
+#define PLATFORM_TVOS 3
+#define PLATFORM_WATCHOS 4
+#define PLATFORM_BRIDGEOS 5
+#define PLATFORM_MACCATALYST 6
+#define PLATFORM_IOSSIMULATOR 7
+#define PLATFORM_TVOSSIMULATOR 8
+#define PLATFORM_WATCHOSSIMULATOR 9
+#define PLATFORM_DRIVERKIT 10
+
+/* Known values for the tool field above. */
+#define TOOL_CLANG 1
+#define TOOL_SWIFT 2
+#define TOOL_LD 3
+
+/*
+ * The dyld_info_command contains the file offsets and sizes of
+ * the new compressed form of the information dyld needs to
+ * load the image. This information is used by dyld on Mac OS X
+ * 10.6 and later. All information pointed to by this command
+ * is encoded using byte streams, so no endian swapping is needed
+ * to interpret it.
+ */
+struct dyld_info_command {
+ uint32_t cmd; /* LC_DYLD_INFO or LC_DYLD_INFO_ONLY */
+ uint32_t cmdsize; /* sizeof(struct dyld_info_command) */
+
+ /*
+ * Dyld rebases an image whenever dyld loads it at an address different
+ * from its preferred address. The rebase information is a stream
+ * of byte sized opcodes whose symbolic names start with REBASE_OPCODE_.
+ * Conceptually the rebase information is a table of tuples:
+ * <seg-index, seg-offset, type>
+ * The opcodes are a compressed way to encode the table by only
+ * encoding when a column changes. In addition simple patterns
+ * like "every n'th offset for m times" can be encoded in a few
+ * bytes.
+ */
+ uint32_t rebase_off; /* file offset to rebase info */
+ uint32_t rebase_size; /* size of rebase info */
+
+ /*
+ * Dyld binds an image during the loading process, if the image
+ * requires any pointers to be initialized to symbols in other images.
+ * The bind information is a stream of byte sized
+ * opcodes whose symbolic names start with BIND_OPCODE_.
+ * Conceptually the bind information is a table of tuples:
+ * <seg-index, seg-offset, type, symbol-library-ordinal, symbol-name, addend>
+ * The opcodes are a compressed way to encode the table by only
+ * encoding when a column changes. In addition simple patterns
+ * like for runs of pointers initialzed to the same value can be
+ * encoded in a few bytes.
+ */
+ uint32_t bind_off; /* file offset to binding info */
+ uint32_t bind_size; /* size of binding info */
+
+ /*
+ * Some C++ programs require dyld to unique symbols so that all
+ * images in the process use the same copy of some code/data.
+ * This step is done after binding. The content of the weak_bind
+ * info is an opcode stream like the bind_info. But it is sorted
+ * alphabetically by symbol name. This enable dyld to walk
+ * all images with weak binding information in order and look
+ * for collisions. If there are no collisions, dyld does
+ * no updating. That means that some fixups are also encoded
+ * in the bind_info. For instance, all calls to "operator new"
+ * are first bound to libstdc++.dylib using the information
+ * in bind_info. Then if some image overrides operator new
+ * that is detected when the weak_bind information is processed
+ * and the call to operator new is then rebound.
+ */
+ uint32_t weak_bind_off; /* file offset to weak binding info */
+ uint32_t weak_bind_size; /* size of weak binding info */
+
+ /*
+ * Some uses of external symbols do not need to be bound immediately.
+ * Instead they can be lazily bound on first use. The lazy_bind
+ * are contains a stream of BIND opcodes to bind all lazy symbols.
+ * Normal use is that dyld ignores the lazy_bind section when
+ * loading an image. Instead the static linker arranged for the
+ * lazy pointer to initially point to a helper function which
+ * pushes the offset into the lazy_bind area for the symbol
+ * needing to be bound, then jumps to dyld which simply adds
+ * the offset to lazy_bind_off to get the information on what
+ * to bind.
+ */
+ uint32_t lazy_bind_off; /* file offset to lazy binding info */
+ uint32_t lazy_bind_size; /* size of lazy binding infs */
+
+ /*
+ * The symbols exported by a dylib are encoded in a trie. This
+ * is a compact representation that factors out common prefixes.
+ * It also reduces LINKEDIT pages in RAM because it encodes all
+ * information (name, address, flags) in one small, contiguous range.
+ * The export area is a stream of nodes. The first node sequentially
+ * is the start node for the trie.
+ *
+ * Nodes for a symbol start with a uleb128 that is the length of
+ * the exported symbol information for the string so far.
+ * If there is no exported symbol, the node starts with a zero byte.
+ * If there is exported info, it follows the length.
+ *
+ * First is a uleb128 containing flags. Normally, it is followed by
+ * a uleb128 encoded offset which is location of the content named
+ * by the symbol from the mach_header for the image. If the flags
+ * is EXPORT_SYMBOL_FLAGS_REEXPORT, then following the flags is
+ * a uleb128 encoded library ordinal, then a zero terminated
+ * UTF8 string. If the string is zero length, then the symbol
+ * is re-export from the specified dylib with the same name.
+ * If the flags is EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER, then following
+ * the flags is two uleb128s: the stub offset and the resolver offset.
+ * The stub is used by non-lazy pointers. The resolver is used
+ * by lazy pointers and must be called to get the actual address to use.
+ *
+ * After the optional exported symbol information is a byte of
+ * how many edges (0-255) that this node has leaving it,
+ * followed by each edge.
+ * Each edge is a zero terminated UTF8 of the addition chars
+ * in the symbol, followed by a uleb128 offset for the node that
+ * edge points to.
+ *
+ */
+ uint32_t export_off; /* file offset to lazy binding info */
+ uint32_t export_size; /* size of lazy binding infs */
+};
+
+/*
+ * The following are used to encode rebasing information
+ */
+#define REBASE_TYPE_POINTER 1
+#define REBASE_TYPE_TEXT_ABSOLUTE32 2
+#define REBASE_TYPE_TEXT_PCREL32 3
+
+#define REBASE_OPCODE_MASK 0xF0
+#define REBASE_IMMEDIATE_MASK 0x0F
+#define REBASE_OPCODE_DONE 0x00
+#define REBASE_OPCODE_SET_TYPE_IMM 0x10
+#define REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB 0x20
+#define REBASE_OPCODE_ADD_ADDR_ULEB 0x30
+#define REBASE_OPCODE_ADD_ADDR_IMM_SCALED 0x40
+#define REBASE_OPCODE_DO_REBASE_IMM_TIMES 0x50
+#define REBASE_OPCODE_DO_REBASE_ULEB_TIMES 0x60
+#define REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB 0x70
+#define REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB 0x80
+
+
+/*
+ * The following are used to encode binding information
+ */
+#define BIND_TYPE_POINTER 1
+#define BIND_TYPE_TEXT_ABSOLUTE32 2
+#define BIND_TYPE_TEXT_PCREL32 3
+
+#define BIND_SPECIAL_DYLIB_SELF 0
+#define BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE -1
+#define BIND_SPECIAL_DYLIB_FLAT_LOOKUP -2
+#define BIND_SPECIAL_DYLIB_WEAK_LOOKUP -3
+
+#define BIND_SYMBOL_FLAGS_WEAK_IMPORT 0x1
+#define BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION 0x8
+
+#define BIND_OPCODE_MASK 0xF0
+#define BIND_IMMEDIATE_MASK 0x0F
+#define BIND_OPCODE_DONE 0x00
+#define BIND_OPCODE_SET_DYLIB_ORDINAL_IMM 0x10
+#define BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB 0x20
+#define BIND_OPCODE_SET_DYLIB_SPECIAL_IMM 0x30
+#define BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM 0x40
+#define BIND_OPCODE_SET_TYPE_IMM 0x50
+#define BIND_OPCODE_SET_ADDEND_SLEB 0x60
+#define BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB 0x70
+#define BIND_OPCODE_ADD_ADDR_ULEB 0x80
+#define BIND_OPCODE_DO_BIND 0x90
+#define BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB 0xA0
+#define BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED 0xB0
+#define BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB 0xC0
+#define BIND_OPCODE_THREADED 0xD0
+#define BIND_SUBOPCODE_THREADED_SET_BIND_ORDINAL_TABLE_SIZE_ULEB 0x00
+#define BIND_SUBOPCODE_THREADED_APPLY 0x01
+
+
+/*
+ * The following are used on the flags byte of a terminal node
+ * in the export information.
+ */
+#define EXPORT_SYMBOL_FLAGS_KIND_MASK 0x03
+#define EXPORT_SYMBOL_FLAGS_KIND_REGULAR 0x00
+#define EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL 0x01
+#define EXPORT_SYMBOL_FLAGS_KIND_ABSOLUTE 0x02
+#define EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION 0x04
+#define EXPORT_SYMBOL_FLAGS_REEXPORT 0x08
+#define EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER 0x10
+
+/*
+ * The linker_option_command contains linker options embedded in object files.
+ */
+struct linker_option_command {
+ uint32_t cmd; /* LC_LINKER_OPTION only used in MH_OBJECT filetypes */
+ uint32_t cmdsize;
+ uint32_t count; /* number of strings */
+ /* concatenation of zero terminated UTF8 strings.
+ Zero filled at end to align */
+};
+
+/*
+ * The symseg_command contains the offset and size of the GNU style
+ * symbol table information as described in the header file <symseg.h>.
+ * The symbol roots of the symbol segments must also be aligned properly
+ * in the file. So the requirement of keeping the offsets aligned to a
+ * multiple of a 4 bytes translates to the length field of the symbol
+ * roots also being a multiple of a long. Also the padding must again be
+ * zeroed. (THIS IS OBSOLETE and no longer supported).
+ */
+struct symseg_command {
+ uint32_t cmd; /* LC_SYMSEG */
+ uint32_t cmdsize; /* sizeof(struct symseg_command) */
+ uint32_t offset; /* symbol segment offset */
+ uint32_t size; /* symbol segment size in bytes */
+};
+
+/*
+ * The ident_command contains a free format string table following the
+ * ident_command structure. The strings are null terminated and the size of
+ * the command is padded out with zero bytes to a multiple of 4 bytes/
+ * (THIS IS OBSOLETE and no longer supported).
+ */
+struct ident_command {
+ uint32_t cmd; /* LC_IDENT */
+ uint32_t cmdsize; /* strings that follow this command */
+};
+
+/*
+ * The fvmfile_command contains a reference to a file to be loaded at the
+ * specified virtual address. (Presently, this command is reserved for
+ * internal use. The kernel ignores this command when loading a program into
+ * memory).
+ */
+struct fvmfile_command {
+ uint32_t cmd; /* LC_FVMFILE */
+ uint32_t cmdsize; /* includes pathname string */
+ union lc_str name; /* files pathname */
+ uint32_t header_addr; /* files virtual address */
+};
+
+
+/*
+ * The entry_point_command is a replacement for thread_command.
+ * It is used for main executables to specify the location (file offset)
+ * of main(). If -stack_size was used at link time, the stacksize
+ * field will contain the stack size need for the main thread.
+ */
+struct entry_point_command {
+ uint32_t cmd; /* LC_MAIN only used in MH_EXECUTE filetypes */
+ uint32_t cmdsize; /* 24 */
+ uint64_t entryoff; /* file (__TEXT) offset of main() */
+ uint64_t stacksize;/* if not zero, initial stack size */
+};
+
+
+/*
+ * The source_version_command is an optional load command containing
+ * the version of the sources used to build the binary.
+ */
+struct source_version_command {
+ uint32_t cmd; /* LC_SOURCE_VERSION */
+ uint32_t cmdsize; /* 16 */
+ uint64_t version; /* A.B.C.D.E packed as a24.b10.c10.d10.e10 */
+};
+
+
+/*
+ * The LC_DATA_IN_CODE load commands uses a linkedit_data_command
+ * to point to an array of data_in_code_entry entries. Each entry
+ * describes a range of data in a code section.
+ */
+struct data_in_code_entry {
+ uint32_t offset; /* from mach_header to start of data range*/
+ uint16_t length; /* number of bytes in data range */
+ uint16_t kind; /* a DICE_KIND_* value */
+};
+#define DICE_KIND_DATA 0x0001
+#define DICE_KIND_JUMP_TABLE8 0x0002
+#define DICE_KIND_JUMP_TABLE16 0x0003
+#define DICE_KIND_JUMP_TABLE32 0x0004
+#define DICE_KIND_ABS_JUMP_TABLE32 0x0005
+
+
+
+/*
+ * Sections of type S_THREAD_LOCAL_VARIABLES contain an array
+ * of tlv_descriptor structures.
+ */
+struct tlv_descriptor
+{
+ void* (*thunk)(struct tlv_descriptor*);
+ unsigned long key;
+ unsigned long offset;
+};
+
+/*
+ * LC_NOTE commands describe a region of arbitrary data included in a Mach-O
+ * file. Its initial use is to record extra data in MH_CORE files.
+ */
+struct note_command {
+ uint32_t cmd; /* LC_NOTE */
+ uint32_t cmdsize; /* sizeof(struct note_command) */
+ char data_owner[16]; /* owner name for this LC_NOTE */
+ uint64_t offset; /* file offset of this data */
+ uint64_t size; /* length of data region */
+};
+
+/*
+ * LC_FILESET_ENTRY commands describe constituent Mach-O files that are part
+ * of a fileset. In one implementation, entries are dylibs with individual
+ * mach headers and repositionable text and data segments. Each entry is
+ * further described by its own mach header.
+ */
+struct fileset_entry_command {
+ uint32_t cmd; /* LC_FILESET_ENTRY */
+ uint32_t cmdsize; /* includes entry_id string */
+ uint64_t vmaddr; /* memory address of the entry */
+ uint64_t fileoff; /* file offset of the entry */
+ union lc_str entry_id; /* contained entry id */
+ uint32_t reserved; /* reserved */
+};
+
+/*
+ * These deprecated values may still be used within Apple but are mechanically
+ * removed from public API. The mechanical process may produce unusual results.
+ */
+#if (!defined(PLATFORM_MACCATALYST))
+#define PLATFORM_MACCATALYST PLATFORM_MACCATALYST
+#endif
+
+#endif /* _MACHO_LOADER_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/_structs.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/_structs.h
new file mode 100644
index 0000000000..ddee2f7341
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/_structs.h
@@ -0,0 +1,645 @@
+/*
+ * Copyright (c) 2004-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+#ifndef _MACH_ARM__STRUCTS_H_
+#define _MACH_ARM__STRUCTS_H_
+
+#include <sys/cdefs.h> /* __DARWIN_UNIX03 */
+#include <machine/types.h> /* __uint32_t */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_EXCEPTION_STATE struct __darwin_arm_exception_state
+_STRUCT_ARM_EXCEPTION_STATE
+{
+ __uint32_t __exception; /* number of arm exception taken */
+ __uint32_t __fsr; /* Fault status */
+ __uint32_t __far; /* Virtual Fault Address */
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_EXCEPTION_STATE struct arm_exception_state
+_STRUCT_ARM_EXCEPTION_STATE
+{
+ __uint32_t exception; /* number of arm exception taken */
+ __uint32_t fsr; /* Fault status */
+ __uint32_t far; /* Virtual Fault Address */
+};
+#endif /* __DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_EXCEPTION_STATE64 struct __darwin_arm_exception_state64
+_STRUCT_ARM_EXCEPTION_STATE64
+{
+ __uint64_t __far; /* Virtual Fault Address */
+ __uint32_t __esr; /* Exception syndrome */
+ __uint32_t __exception; /* number of arm exception taken */
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_EXCEPTION_STATE64 struct arm_exception_state64
+_STRUCT_ARM_EXCEPTION_STATE64
+{
+ __uint64_t far; /* Virtual Fault Address */
+ __uint32_t esr; /* Exception syndrome */
+ __uint32_t exception; /* number of arm exception taken */
+};
+#endif /* __DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_THREAD_STATE struct __darwin_arm_thread_state
+_STRUCT_ARM_THREAD_STATE
+{
+ __uint32_t __r[13]; /* General purpose register r0-r12 */
+ __uint32_t __sp; /* Stack pointer r13 */
+ __uint32_t __lr; /* Link register r14 */
+ __uint32_t __pc; /* Program counter r15 */
+ __uint32_t __cpsr; /* Current program status register */
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_THREAD_STATE struct arm_thread_state
+_STRUCT_ARM_THREAD_STATE
+{
+ __uint32_t r[13]; /* General purpose register r0-r12 */
+ __uint32_t sp; /* Stack pointer r13 */
+ __uint32_t lr; /* Link register r14 */
+ __uint32_t pc; /* Program counter r15 */
+ __uint32_t cpsr; /* Current program status register */
+};
+#endif /* __DARWIN_UNIX03 */
+
+
+/*
+ * By default, the pointer fields in the arm_thread_state64_t structure are
+ * opaque on the arm64e architecture and require the use of accessor macros.
+ * This mode can also be enabled on the arm64 architecture by building with
+ * -D__DARWIN_OPAQUE_ARM_THREAD_STATE64=1.
+ */
+#if defined(__arm64__) && defined(__LP64__)
+
+#if __has_feature(ptrauth_calls)
+#define __DARWIN_OPAQUE_ARM_THREAD_STATE64 1
+#define __DARWIN_PTRAUTH_ARM_THREAD_STATE64 1
+#endif /* __has_feature(ptrauth_calls) */
+
+#ifndef __DARWIN_OPAQUE_ARM_THREAD_STATE64
+#define __DARWIN_OPAQUE_ARM_THREAD_STATE64 0
+#endif
+
+#else /* defined(__arm64__) && defined(__LP64__) */
+
+#undef __DARWIN_OPAQUE_ARM_THREAD_STATE64
+#define __DARWIN_OPAQUE_ARM_THREAD_STATE64 0
+
+#endif /* defined(__arm64__) && defined(__LP64__) */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_THREAD_STATE64 struct __darwin_arm_thread_state64
+#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
+_STRUCT_ARM_THREAD_STATE64
+{
+ __uint64_t __x[29]; /* General purpose registers x0-x28 */
+ void* __opaque_fp; /* Frame pointer x29 */
+ void* __opaque_lr; /* Link register x30 */
+ void* __opaque_sp; /* Stack pointer x31 */
+ void* __opaque_pc; /* Program counter */
+ __uint32_t __cpsr; /* Current program status register */
+ __uint32_t __opaque_flags; /* Flags describing structure format */
+};
+#else /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
+_STRUCT_ARM_THREAD_STATE64
+{
+ __uint64_t __x[29]; /* General purpose registers x0-x28 */
+ __uint64_t __fp; /* Frame pointer x29 */
+ __uint64_t __lr; /* Link register x30 */
+ __uint64_t __sp; /* Stack pointer x31 */
+ __uint64_t __pc; /* Program counter */
+ __uint32_t __cpsr; /* Current program status register */
+ __uint32_t __pad; /* Same size for 32-bit or 64-bit clients */
+};
+#endif /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_THREAD_STATE64 struct arm_thread_state64
+#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
+_STRUCT_ARM_THREAD_STATE64
+{
+ __uint64_t x[29]; /* General purpose registers x0-x28 */
+ void* __opaque_fp; /* Frame pointer x29 */
+ void* __opaque_lr; /* Link register x30 */
+ void* __opaque_sp; /* Stack pointer x31 */
+ void* __opaque_pc; /* Program counter */
+ __uint32_t cpsr; /* Current program status register */
+ __uint32_t __opaque_flags; /* Flags describing structure format */
+};
+#else /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
+_STRUCT_ARM_THREAD_STATE64
+{
+ __uint64_t x[29]; /* General purpose registers x0-x28 */
+ __uint64_t fp; /* Frame pointer x29 */
+ __uint64_t lr; /* Link register x30 */
+ __uint64_t sp; /* Stack pointer x31 */
+ __uint64_t pc; /* Program counter */
+ __uint32_t cpsr; /* Current program status register */
+ __uint32_t __pad; /* Same size for 32-bit or 64-bit clients */
+};
+#endif /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
+#endif /* __DARWIN_UNIX03 */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL && defined(__arm64__)
+
+/* Accessor macros for arm_thread_state64_t pointer fields */
+
+#if __has_feature(ptrauth_calls) && defined(__LP64__)
+#include <ptrauth.h>
+
+#if !__DARWIN_OPAQUE_ARM_THREAD_STATE64 || !__DARWIN_PTRAUTH_ARM_THREAD_STATE64
+#error "Invalid configuration"
+#endif
+
+#define __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH 0x1
+#define __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR 0x2
+
+/* Return pc field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_pc(ts) \
+ __extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ (uintptr_t)(__tsp->__opaque_pc && !(__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? \
+ ptrauth_auth_data(__tsp->__opaque_pc, \
+ ptrauth_key_process_independent_code, \
+ ptrauth_string_discriminator("pc")) : __tsp->__opaque_pc); })
+/* Return pc field of arm_thread_state64_t as a function pointer. May return
+ * NULL if a valid function pointer cannot be constructed, the caller should
+ * fall back to the __darwin_arm_thread_state64_get_pc() macro in that case. */
+#define __darwin_arm_thread_state64_get_pc_fptr(ts) \
+ __extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ (__tsp->__opaque_pc && !(__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? \
+ ptrauth_auth_function(__tsp->__opaque_pc, \
+ ptrauth_key_process_independent_code, \
+ ptrauth_string_discriminator("pc")) : NULL); })
+/* Set pc field of arm_thread_state64_t to a function pointer */
+#define __darwin_arm_thread_state64_set_pc_fptr(ts, fptr) \
+ __extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ __typeof__(fptr) __f = (fptr); __tsp->__opaque_pc = \
+ (__f ? (!(__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? \
+ ptrauth_auth_and_resign(__f, ptrauth_key_function_pointer, 0, \
+ ptrauth_key_process_independent_code, \
+ ptrauth_string_discriminator("pc")) : ptrauth_auth_data(__f, \
+ ptrauth_key_function_pointer, 0)) : __f); })
+/* Return lr field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_lr(ts) \
+ __extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ (uintptr_t)(__tsp->__opaque_lr && !(__tsp->__opaque_flags & ( \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH | \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR)) ? \
+ ptrauth_auth_data(__tsp->__opaque_lr, \
+ ptrauth_key_process_independent_code, \
+ ptrauth_string_discriminator("lr")) : __tsp->__opaque_lr); })
+/* Return lr field of arm_thread_state64_t as a function pointer. May return
+ * NULL if a valid function pointer cannot be constructed, the caller should
+ * fall back to the __darwin_arm_thread_state64_get_lr() macro in that case. */
+#define __darwin_arm_thread_state64_get_lr_fptr(ts) \
+ __extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ (__tsp->__opaque_lr && !(__tsp->__opaque_flags & ( \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH | \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR)) ? \
+ ptrauth_auth_function(__tsp->__opaque_lr, \
+ ptrauth_key_process_independent_code, \
+ ptrauth_string_discriminator("lr")) : NULL); })
+/* Set lr field of arm_thread_state64_t to a function pointer */
+#define __darwin_arm_thread_state64_set_lr_fptr(ts, fptr) \
+ __extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ __typeof__(fptr) __f = (fptr); __tsp->__opaque_lr = \
+ (__f ? (!(__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? (__tsp->__opaque_flags \
+ &= ~__DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR , \
+ ptrauth_auth_and_resign(__f, ptrauth_key_function_pointer, 0, \
+ ptrauth_key_process_independent_code, \
+ ptrauth_string_discriminator("lr"))) : ptrauth_auth_data(__f, \
+ ptrauth_key_function_pointer, 0)) : __f); })
+/* Return sp field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_sp(ts) \
+ __extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ (uintptr_t)(__tsp->__opaque_sp && !(__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? \
+ ptrauth_auth_data(__tsp->__opaque_sp, \
+ ptrauth_key_process_independent_data, \
+ ptrauth_string_discriminator("sp")) : __tsp->__opaque_sp); })
+/* Set sp field of arm_thread_state64_t to a data pointer value */
+#define __darwin_arm_thread_state64_set_sp(ts, ptr) \
+ __extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ void *__p = (void*)(uintptr_t)(ptr); __tsp->__opaque_sp = \
+ (__p && !(__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? \
+ ptrauth_sign_unauthenticated(__p, \
+ ptrauth_key_process_independent_data, \
+ ptrauth_string_discriminator("sp")) : __p); })
+/* Return fp field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_fp(ts) \
+ __extension__ ({ const _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ (uintptr_t)(__tsp->__opaque_fp && !(__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? \
+ ptrauth_auth_data(__tsp->__opaque_fp, \
+ ptrauth_key_process_independent_data, \
+ ptrauth_string_discriminator("fp")) : __tsp->__opaque_fp); })
+/* Set fp field of arm_thread_state64_t to a data pointer value */
+#define __darwin_arm_thread_state64_set_fp(ts, ptr) \
+ __extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ void *__p = (void*)(uintptr_t)(ptr); __tsp->__opaque_fp = \
+ (__p && !(__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? \
+ ptrauth_sign_unauthenticated(__p, \
+ ptrauth_key_process_independent_data, \
+ ptrauth_string_discriminator("fp")) : __p); })
+
+/* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
+#define __darwin_arm_thread_state64_ptrauth_strip(ts) \
+ __extension__ ({ _STRUCT_ARM_THREAD_STATE64 *__tsp = &(ts); \
+ __tsp->__opaque_pc = ((__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? __tsp->__opaque_pc : \
+ ptrauth_strip(__tsp->__opaque_pc, ptrauth_key_process_independent_code)); \
+ __tsp->__opaque_lr = ((__tsp->__opaque_flags & \
+ (__DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH | \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_IB_SIGNED_LR)) ? __tsp->__opaque_lr : \
+ ptrauth_strip(__tsp->__opaque_lr, ptrauth_key_process_independent_code)); \
+ __tsp->__opaque_sp = ((__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? __tsp->__opaque_sp : \
+ ptrauth_strip(__tsp->__opaque_sp, ptrauth_key_process_independent_data)); \
+ __tsp->__opaque_fp = ((__tsp->__opaque_flags & \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH) ? __tsp->__opaque_fp : \
+ ptrauth_strip(__tsp->__opaque_fp, ptrauth_key_process_independent_data)); \
+ __tsp->__opaque_flags |= \
+ __DARWIN_ARM_THREAD_STATE64_FLAGS_NO_PTRAUTH; })
+
+#else /* __has_feature(ptrauth_calls) && defined(__LP64__) */
+
+#if __DARWIN_OPAQUE_ARM_THREAD_STATE64
+
+#ifndef __LP64__
+#error "Invalid configuration"
+#endif
+
+/* Return pc field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_pc(ts) \
+ ((uintptr_t)((ts).__opaque_pc))
+/* Return pc field of arm_thread_state64_t as a function pointer */
+#define __darwin_arm_thread_state64_get_pc_fptr(ts) \
+ ((ts).__opaque_pc)
+/* Set pc field of arm_thread_state64_t to a function pointer */
+#define __darwin_arm_thread_state64_set_pc_fptr(ts, fptr) \
+ ((ts).__opaque_pc = (fptr))
+/* Return lr field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_lr(ts) \
+ ((uintptr_t)((ts).__opaque_lr))
+/* Return lr field of arm_thread_state64_t as a function pointer */
+#define __darwin_arm_thread_state64_get_lr_fptr(ts) \
+ ((ts).__opaque_lr)
+/* Set lr field of arm_thread_state64_t to a function pointer */
+#define __darwin_arm_thread_state64_set_lr_fptr(ts, fptr) \
+ ((ts).__opaque_lr = (fptr))
+/* Return sp field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_sp(ts) \
+ ((uintptr_t)((ts).__opaque_sp))
+/* Set sp field of arm_thread_state64_t to a data pointer value */
+#define __darwin_arm_thread_state64_set_sp(ts, ptr) \
+ ((ts).__opaque_sp = (void*)(uintptr_t)(ptr))
+/* Return fp field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_fp(ts) \
+ ((uintptr_t)((ts).__opaque_fp))
+/* Set fp field of arm_thread_state64_t to a data pointer value */
+#define __darwin_arm_thread_state64_set_fp(ts, ptr) \
+ ((ts).__opaque_fp = (void*)(uintptr_t)(ptr))
+/* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
+#define __darwin_arm_thread_state64_ptrauth_strip(ts) \
+ (void)(ts)
+
+#else /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
+#if __DARWIN_UNIX03
+
+/* Return pc field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_pc(ts) \
+ ((ts).__pc)
+/* Return pc field of arm_thread_state64_t as a function pointer */
+#define __darwin_arm_thread_state64_get_pc_fptr(ts) \
+ ((void*)(uintptr_t)((ts).__pc))
+/* Set pc field of arm_thread_state64_t to a function pointer */
+#define __darwin_arm_thread_state64_set_pc_fptr(ts, fptr) \
+ ((ts).__pc = (uintptr_t)(fptr))
+/* Return lr field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_lr(ts) \
+ ((ts).__lr)
+/* Return lr field of arm_thread_state64_t as a function pointer */
+#define __darwin_arm_thread_state64_get_lr_fptr(ts) \
+ ((void*)(uintptr_t)((ts).__lr))
+/* Set lr field of arm_thread_state64_t to a function pointer */
+#define __darwin_arm_thread_state64_set_lr_fptr(ts, fptr) \
+ ((ts).__lr = (uintptr_t)(fptr))
+/* Return sp field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_sp(ts) \
+ ((ts).__sp)
+/* Set sp field of arm_thread_state64_t to a data pointer value */
+#define __darwin_arm_thread_state64_set_sp(ts, ptr) \
+ ((ts).__sp = (uintptr_t)(ptr))
+/* Return fp field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_fp(ts) \
+ ((ts).__fp)
+/* Set fp field of arm_thread_state64_t to a data pointer value */
+#define __darwin_arm_thread_state64_set_fp(ts, ptr) \
+ ((ts).__fp = (uintptr_t)(ptr))
+/* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
+#define __darwin_arm_thread_state64_ptrauth_strip(ts) \
+ (void)(ts)
+
+#else /* __DARWIN_UNIX03 */
+
+/* Return pc field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_pc(ts) \
+ ((ts).pc)
+/* Return pc field of arm_thread_state64_t as a function pointer */
+#define __darwin_arm_thread_state64_get_pc_fptr(ts) \
+ ((void*)(uintptr_t)((ts).pc))
+/* Set pc field of arm_thread_state64_t to a function pointer */
+#define __darwin_arm_thread_state64_set_pc_fptr(ts, fptr) \
+ ((ts).pc = (uintptr_t)(fptr))
+/* Return lr field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_lr(ts) \
+ ((ts).lr)
+/* Return lr field of arm_thread_state64_t as a function pointer */
+#define __darwin_arm_thread_state64_get_lr_fptr(ts) \
+ ((void*)(uintptr_t)((ts).lr))
+/* Set lr field of arm_thread_state64_t to a function pointer */
+#define __darwin_arm_thread_state64_set_lr_fptr(ts, fptr) \
+ ((ts).lr = (uintptr_t)(fptr))
+/* Return sp field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_sp(ts) \
+ ((ts).sp)
+/* Set sp field of arm_thread_state64_t to a data pointer value */
+#define __darwin_arm_thread_state64_set_sp(ts, ptr) \
+ ((ts).sp = (uintptr_t)(ptr))
+/* Return fp field of arm_thread_state64_t as a data pointer value */
+#define __darwin_arm_thread_state64_get_fp(ts) \
+ ((ts).fp)
+/* Set fp field of arm_thread_state64_t to a data pointer value */
+#define __darwin_arm_thread_state64_set_fp(ts, ptr) \
+ ((ts).fp = (uintptr_t)(ptr))
+/* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
+#define __darwin_arm_thread_state64_ptrauth_strip(ts) \
+ (void)(ts)
+
+#endif /* __DARWIN_UNIX03 */
+#endif /* __DARWIN_OPAQUE_ARM_THREAD_STATE64 */
+
+#endif /* __has_feature(ptrauth_calls) && defined(__LP64__) */
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL && defined(__arm64__) */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_VFP_STATE struct __darwin_arm_vfp_state
+_STRUCT_ARM_VFP_STATE
+{
+ __uint32_t __r[64];
+ __uint32_t __fpscr;
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_VFP_STATE struct arm_vfp_state
+_STRUCT_ARM_VFP_STATE
+{
+ __uint32_t r[64];
+ __uint32_t fpscr;
+};
+#endif /* __DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_NEON_STATE64 struct __darwin_arm_neon_state64
+#define _STRUCT_ARM_NEON_STATE struct __darwin_arm_neon_state
+
+#if defined(__arm64__)
+_STRUCT_ARM_NEON_STATE64
+{
+ __uint128_t __v[32];
+ __uint32_t __fpsr;
+ __uint32_t __fpcr;
+};
+
+_STRUCT_ARM_NEON_STATE
+{
+ __uint128_t __v[16];
+ __uint32_t __fpsr;
+ __uint32_t __fpcr;
+};
+#elif defined(__arm__)
+/*
+ * No 128-bit intrinsic for ARM; leave it opaque for now.
+ */
+_STRUCT_ARM_NEON_STATE64
+{
+ char opaque[(32 * 16) + (2 * sizeof(__uint32_t))];
+} __attribute__((aligned(16)));
+
+_STRUCT_ARM_NEON_STATE
+{
+ char opaque[(16 * 16) + (2 * sizeof(__uint32_t))];
+} __attribute__((aligned(16)));
+
+#else
+#error Unknown architecture.
+#endif
+
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_NEON_STATE64 struct arm_neon_state64
+#define _STRUCT_ARM_NEON_STATE struct arm_neon_state
+
+#if defined(__arm64__)
+_STRUCT_ARM_NEON_STATE64
+{
+ __uint128_t q[32];
+ uint32_t fpsr;
+ uint32_t fpcr;
+};
+
+_STRUCT_ARM_NEON_STATE
+{
+ __uint128_t q[16];
+ uint32_t fpsr;
+ uint32_t fpcr;
+};
+#elif defined(__arm__)
+/*
+ * No 128-bit intrinsic for ARM; leave it opaque for now.
+ */
+_STRUCT_ARM_NEON_STATE64
+{
+ char opaque[(32 * 16) + (2 * sizeof(__uint32_t))];
+} __attribute__((aligned(16)));
+
+_STRUCT_ARM_NEON_STATE
+{
+ char opaque[(16 * 16) + (2 * sizeof(__uint32_t))];
+} __attribute__((aligned(16)));
+
+#else
+#error Unknown architecture.
+#endif
+
+#endif /* __DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_AMX_STATE_V1 struct __darwin_arm_amx_state_v1
+_STRUCT_ARM_AMX_STATE_V1
+{
+ __uint8_t __x[8][64]; /* 8 64-byte registers */
+ __uint8_t __y[8][64]; /* 8 64-byte registers */
+ __uint8_t __z[64][64]; /* 64 64-byte registers in an M-by-N matrix */
+ __uint64_t __amx_state_t_el1; /* AMX_STATE_T_EL1 value */
+} __attribute__((aligned(64)));
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_AMX_STATE_V1 struct arm_amx_state_v1
+_STRUCT_ARM_AMX_STATE_V1
+{
+ __uint8_t x[8][64]; /* 8 64-byte registers */
+ __uint8_t y[8][64]; /* 8 64-byte registers */
+ __uint8_t z[64][64]; /* 64 64-byte registers in an M-by-N matrix */
+ __uint64_t amx_state_t_el1; /* AMX_STATE_T_EL1 value. */
+} __attribute__((aligned(64)));
+#endif /* __DARWIN_UNIX03 */
+
+#define _STRUCT_ARM_PAGEIN_STATE struct __arm_pagein_state
+_STRUCT_ARM_PAGEIN_STATE
+{
+ int __pagein_error;
+};
+
+/*
+ * Debug State
+ */
+#if defined(__arm__)
+/* Old-fashioned debug state is only for ARM */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_DEBUG_STATE struct __darwin_arm_debug_state
+_STRUCT_ARM_DEBUG_STATE
+{
+ __uint32_t __bvr[16];
+ __uint32_t __bcr[16];
+ __uint32_t __wvr[16];
+ __uint32_t __wcr[16];
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_DEBUG_STATE struct arm_debug_state
+_STRUCT_ARM_DEBUG_STATE
+{
+ __uint32_t bvr[16];
+ __uint32_t bcr[16];
+ __uint32_t wvr[16];
+ __uint32_t wcr[16];
+};
+#endif /* __DARWIN_UNIX03 */
+
+#elif defined(__arm64__)
+
+/* ARM's arm_debug_state is ARM64's arm_legacy_debug_state */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_LEGACY_DEBUG_STATE struct __arm_legacy_debug_state
+_STRUCT_ARM_LEGACY_DEBUG_STATE
+{
+ __uint32_t __bvr[16];
+ __uint32_t __bcr[16];
+ __uint32_t __wvr[16];
+ __uint32_t __wcr[16];
+};
+#else /* __DARWIN_UNIX03 */
+#define _STRUCT_ARM_LEGACY_DEBUG_STATE struct arm_legacy_debug_state
+_STRUCT_ARM_LEGACY_DEBUG_STATE
+{
+ __uint32_t bvr[16];
+ __uint32_t bcr[16];
+ __uint32_t wvr[16];
+ __uint32_t wcr[16];
+};
+#endif /* __DARWIN_UNIX03 */
+#else
+#error unknown architecture
+#endif
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_DEBUG_STATE32 struct __darwin_arm_debug_state32
+_STRUCT_ARM_DEBUG_STATE32
+{
+ __uint32_t __bvr[16];
+ __uint32_t __bcr[16];
+ __uint32_t __wvr[16];
+ __uint32_t __wcr[16];
+ __uint64_t __mdscr_el1; /* Bit 0 is SS (Hardware Single Step) */
+};
+
+#define _STRUCT_ARM_DEBUG_STATE64 struct __darwin_arm_debug_state64
+_STRUCT_ARM_DEBUG_STATE64
+{
+ __uint64_t __bvr[16];
+ __uint64_t __bcr[16];
+ __uint64_t __wvr[16];
+ __uint64_t __wcr[16];
+ __uint64_t __mdscr_el1; /* Bit 0 is SS (Hardware Single Step) */
+};
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_ARM_DEBUG_STATE32 struct arm_debug_state32
+_STRUCT_ARM_DEBUG_STATE32
+{
+ __uint32_t bvr[16];
+ __uint32_t bcr[16];
+ __uint32_t wvr[16];
+ __uint32_t wcr[16];
+ __uint64_t mdscr_el1; /* Bit 0 is SS (Hardware Single Step) */
+};
+
+#define _STRUCT_ARM_DEBUG_STATE64 struct arm_debug_state64
+_STRUCT_ARM_DEBUG_STATE64
+{
+ __uint64_t bvr[16];
+ __uint64_t bcr[16];
+ __uint64_t wvr[16];
+ __uint64_t wcr[16];
+ __uint64_t mdscr_el1; /* Bit 0 is SS (Hardware Single Step) */
+};
+#endif /* __DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_ARM_CPMU_STATE64 struct __darwin_arm_cpmu_state64
+_STRUCT_ARM_CPMU_STATE64
+{
+ __uint64_t __ctrs[16];
+};
+#else /* __DARWIN_UNIX03 */
+#define _STRUCT_ARM_CPMU_STATE64 struct arm_cpmu_state64
+_STRUCT_ARM_CPMU_STATE64
+{
+ __uint64_t ctrs[16];
+};
+#endif /* !__DARWIN_UNIX03 */
+
+#endif /* _MACH_ARM__STRUCTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/boolean.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/boolean.h
new file mode 100644
index 0000000000..703153e4e6
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/boolean.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+
+/*
+ * File: boolean.h
+ *
+ * Boolean type, for ARM.
+ */
+
+#ifndef _MACH_ARM_BOOLEAN_H_
+#define _MACH_ARM_BOOLEAN_H_
+
+typedef int boolean_t;
+
+#endif /* _MACH_ARM_BOOLEAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/exception.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/exception.h
new file mode 100644
index 0000000000..cf804261a9
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/exception.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_ARM_EXCEPTION_H_
+#define _MACH_ARM_EXCEPTION_H_
+
+#define EXC_TYPES_COUNT 14 /* incl. illegal exception 0 */
+
+#define EXC_MASK_MACHINE 0
+
+#define EXCEPTION_CODE_MAX 2 /* code and subcode */
+
+
+/*
+ * Trap numbers as defined by the hardware exception vectors.
+ */
+
+/*
+ * EXC_BAD_INSTRUCTION
+ */
+
+#define EXC_ARM_UNDEFINED 1 /* Undefined */
+
+/*
+ * EXC_ARITHMETIC
+ */
+
+#define EXC_ARM_FP_UNDEFINED 0 /* Undefined Floating Point Exception */
+#define EXC_ARM_FP_IO 1 /* Invalid Floating Point Operation */
+#define EXC_ARM_FP_DZ 2 /* Floating Point Divide by Zero */
+#define EXC_ARM_FP_OF 3 /* Floating Point Overflow */
+#define EXC_ARM_FP_UF 4 /* Floating Point Underflow */
+#define EXC_ARM_FP_IX 5 /* Inexact Floating Point Result */
+#define EXC_ARM_FP_ID 6 /* Floating Point Denormal Input */
+
+/*
+ * EXC_BAD_ACCESS
+ * Note: do not conflict with kern_return_t values returned by vm_fault
+ */
+
+#define EXC_ARM_DA_ALIGN 0x101 /* Alignment Fault */
+#define EXC_ARM_DA_DEBUG 0x102 /* Debug (watch/break) Fault */
+#define EXC_ARM_SP_ALIGN 0x103 /* SP Alignment Fault */
+#define EXC_ARM_SWP 0x104 /* SWP instruction */
+#define EXC_ARM_PAC_FAIL 0x105 /* PAC authentication failure */
+
+/*
+ * EXC_BREAKPOINT
+ */
+
+#define EXC_ARM_BREAKPOINT 1 /* breakpoint trap */
+
+
+#endif /* _MACH_ARM_EXCEPTION_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/kern_return.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/kern_return.h
new file mode 100644
index 0000000000..0c23b0f973
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/kern_return.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+
+/*
+ * File: kern_return.h
+ * Author: Avadis Tevanian, Jr., Michael Wayne Young
+ * Date: 1985
+ *
+ * Machine-dependent kernel return definitions.
+ */
+
+#ifndef _MACH_ARM_KERN_RETURN_H_
+#define _MACH_ARM_KERN_RETURN_H_
+
+#ifndef ASSEMBLER
+typedef int kern_return_t;
+#endif /* ASSEMBLER */
+
+#endif /* _MACH_ARM_KERN_RETURN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/processor_info.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/processor_info.h
new file mode 100644
index 0000000000..cc2cfadeb4
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/processor_info.h
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2007-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_ARM_PROCESSOR_INFO_H_
+#define _MACH_ARM_PROCESSOR_INFO_H_
+
+#define PROCESSOR_CPU_STAT 0x10000003 /* Low-level CPU statistics */
+#define PROCESSOR_CPU_STAT64 0x10000004 /* Low-level CPU statistics, in full 64-bit */
+
+#include <stdint.h> /* uint32_t, uint64_t */
+
+struct processor_cpu_stat {
+ uint32_t irq_ex_cnt;
+ uint32_t ipi_cnt;
+ uint32_t timer_cnt;
+ uint32_t undef_ex_cnt;
+ uint32_t unaligned_cnt;
+ uint32_t vfp_cnt;
+ uint32_t vfp_shortv_cnt;
+ uint32_t data_ex_cnt;
+ uint32_t instr_ex_cnt;
+};
+
+typedef struct processor_cpu_stat processor_cpu_stat_data_t;
+typedef struct processor_cpu_stat *processor_cpu_stat_t;
+#define PROCESSOR_CPU_STAT_COUNT ((mach_msg_type_number_t) \
+ (sizeof(processor_cpu_stat_data_t) / sizeof(natural_t)))
+
+struct processor_cpu_stat64 {
+ uint64_t irq_ex_cnt;
+ uint64_t ipi_cnt;
+ uint64_t timer_cnt;
+ uint64_t undef_ex_cnt;
+ uint64_t unaligned_cnt;
+ uint64_t vfp_cnt;
+ uint64_t vfp_shortv_cnt;
+ uint64_t data_ex_cnt;
+ uint64_t instr_ex_cnt;
+ uint64_t pmi_cnt;
+} __attribute__((packed, aligned(4)));
+
+typedef struct processor_cpu_stat64 processor_cpu_stat64_data_t;
+typedef struct processor_cpu_stat64 *processor_cpu_stat64_t;
+#define PROCESSOR_CPU_STAT64_COUNT ((mach_msg_type_number_t) \
+ (sizeof(processor_cpu_stat64_data_t) / sizeof(integer_t)))
+
+#endif /* _MACH_ARM_PROCESSOR_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/rpc.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/rpc.h
new file mode 100644
index 0000000000..3543cdf1ad
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/rpc.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+
+#ifndef _MACH_ARM_RPC_H_
+#define _MACH_ARM_RPC_H_
+
+#endif /* _MACH_ARM_RPC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/thread_state.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/thread_state.h
new file mode 100644
index 0000000000..75c28e6692
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/thread_state.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+
+#ifndef _MACH_ARM_THREAD_STATE_H_
+#define _MACH_ARM_THREAD_STATE_H_
+
+/* Size of maximum exported thread state in words */
+#define ARM_THREAD_STATE_MAX (1296) /* Size of biggest state possible */
+
+#if defined (__arm__) || defined(__arm64__)
+#define THREAD_STATE_MAX ARM_THREAD_STATE_MAX
+#else
+#error Unsupported arch
+#endif
+
+#endif /* _MACH_ARM_THREAD_STATE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/thread_status.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/thread_status.h
new file mode 100644
index 0000000000..f8d0ccb037
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/thread_status.h
@@ -0,0 +1,249 @@
+/*
+ * Copyright (c) 2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * FILE_ID: thread_status.h
+ */
+
+
+#ifndef _ARM_THREAD_STATUS_H_
+#define _ARM_THREAD_STATUS_H_
+
+#include <mach/machine/_structs.h>
+#include <mach/message.h>
+#include <mach/vm_types.h>
+#include <mach/arm/thread_state.h>
+
+/*
+ * Support for determining the state of a thread
+ */
+
+
+/*
+ * Flavors
+ */
+
+#define ARM_THREAD_STATE 1
+#define ARM_UNIFIED_THREAD_STATE ARM_THREAD_STATE
+#define ARM_VFP_STATE 2
+#define ARM_EXCEPTION_STATE 3
+#define ARM_DEBUG_STATE 4 /* pre-armv8 */
+#define THREAD_STATE_NONE 5
+#define ARM_THREAD_STATE64 6
+#define ARM_EXCEPTION_STATE64 7
+// ARM_THREAD_STATE_LAST 8 /* legacy */
+#define ARM_THREAD_STATE32 9
+
+
+/* API */
+#define ARM_DEBUG_STATE32 14
+#define ARM_DEBUG_STATE64 15
+#define ARM_NEON_STATE 16
+#define ARM_NEON_STATE64 17
+#define ARM_CPMU_STATE64 18
+
+
+/* API */
+#define ARM_AMX_STATE 24
+#define ARM_AMX_STATE_V1 25
+#define ARM_STATE_FLAVOR_IS_OTHER_VALID(_flavor_) \
+ ((_flavor_) == ARM_AMX_STATE_V1)
+#define ARM_PAGEIN_STATE 27
+
+#define VALID_THREAD_STATE_FLAVOR(x) \
+ ((x == ARM_THREAD_STATE) || \
+ (x == ARM_VFP_STATE) || \
+ (x == ARM_EXCEPTION_STATE) || \
+ (x == ARM_DEBUG_STATE) || \
+ (x == THREAD_STATE_NONE) || \
+ (x == ARM_THREAD_STATE32) || \
+ (x == ARM_THREAD_STATE64) || \
+ (x == ARM_EXCEPTION_STATE64) || \
+ (x == ARM_NEON_STATE) || \
+ (x == ARM_NEON_STATE64) || \
+ (x == ARM_DEBUG_STATE32) || \
+ (x == ARM_DEBUG_STATE64) || \
+ (x == ARM_PAGEIN_STATE) || \
+ (ARM_STATE_FLAVOR_IS_OTHER_VALID(x)))
+
+struct arm_state_hdr {
+ uint32_t flavor;
+ uint32_t count;
+};
+typedef struct arm_state_hdr arm_state_hdr_t;
+
+typedef _STRUCT_ARM_THREAD_STATE arm_thread_state_t;
+typedef _STRUCT_ARM_THREAD_STATE arm_thread_state32_t;
+typedef _STRUCT_ARM_THREAD_STATE64 arm_thread_state64_t;
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL && defined(__arm64__)
+
+/* Accessor macros for arm_thread_state64_t pointer fields */
+
+/* Return pc field of arm_thread_state64_t as a data pointer value */
+#define arm_thread_state64_get_pc(ts) \
+ __darwin_arm_thread_state64_get_pc(ts)
+/* Return pc field of arm_thread_state64_t as a function pointer. May return
+ * NULL if a valid function pointer cannot be constructed, the caller should
+ * fall back to the arm_thread_state64_get_pc() macro in that case. */
+#define arm_thread_state64_get_pc_fptr(ts) \
+ __darwin_arm_thread_state64_get_pc_fptr(ts)
+/* Set pc field of arm_thread_state64_t to a function pointer */
+#define arm_thread_state64_set_pc_fptr(ts, fptr) \
+ __darwin_arm_thread_state64_set_pc_fptr(ts, fptr)
+/* Return lr field of arm_thread_state64_t as a data pointer value */
+#define arm_thread_state64_get_lr(ts) \
+ __darwin_arm_thread_state64_get_lr(ts)
+/* Return lr field of arm_thread_state64_t as a function pointer. May return
+ * NULL if a valid function pointer cannot be constructed, the caller should
+ * fall back to the arm_thread_state64_get_lr() macro in that case. */
+#define arm_thread_state64_get_lr_fptr(ts) \
+ __darwin_arm_thread_state64_get_lr_fptr(ts)
+/* Set lr field of arm_thread_state64_t to a function pointer */
+#define arm_thread_state64_set_lr_fptr(ts, fptr) \
+ __darwin_arm_thread_state64_set_lr_fptr(ts, fptr)
+/* Return sp field of arm_thread_state64_t as a data pointer value */
+#define arm_thread_state64_get_sp(ts) \
+ __darwin_arm_thread_state64_get_sp(ts)
+/* Set sp field of arm_thread_state64_t to a data pointer value */
+#define arm_thread_state64_set_sp(ts, ptr) \
+ __darwin_arm_thread_state64_set_sp(ts, ptr)
+/* Return fp field of arm_thread_state64_t as a data pointer value */
+#define arm_thread_state64_get_fp(ts) \
+ __darwin_arm_thread_state64_get_fp(ts)
+/* Set fp field of arm_thread_state64_t to a data pointer value */
+#define arm_thread_state64_set_fp(ts, ptr) \
+ __darwin_arm_thread_state64_set_fp(ts, ptr)
+/* Strip ptr auth bits from pc, lr, sp and fp field of arm_thread_state64_t */
+#define arm_thread_state64_ptrauth_strip(ts) \
+ __darwin_arm_thread_state64_ptrauth_strip(ts)
+
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL && defined(__arm64__) */
+
+struct arm_unified_thread_state {
+ arm_state_hdr_t ash;
+ union {
+ arm_thread_state32_t ts_32;
+ arm_thread_state64_t ts_64;
+ } uts;
+};
+#define ts_32 uts.ts_32
+#define ts_64 uts.ts_64
+typedef struct arm_unified_thread_state arm_unified_thread_state_t;
+
+#define ARM_THREAD_STATE_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_thread_state_t)/sizeof(uint32_t)))
+#define ARM_THREAD_STATE32_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_thread_state32_t)/sizeof(uint32_t)))
+#define ARM_THREAD_STATE64_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_thread_state64_t)/sizeof(uint32_t)))
+#define ARM_UNIFIED_THREAD_STATE_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_unified_thread_state_t)/sizeof(uint32_t)))
+
+
+typedef _STRUCT_ARM_VFP_STATE arm_vfp_state_t;
+typedef _STRUCT_ARM_NEON_STATE arm_neon_state_t;
+typedef _STRUCT_ARM_NEON_STATE arm_neon_state32_t;
+typedef _STRUCT_ARM_NEON_STATE64 arm_neon_state64_t;
+
+typedef _STRUCT_ARM_AMX_STATE_V1 arm_amx_state_v1_t;
+
+typedef _STRUCT_ARM_EXCEPTION_STATE arm_exception_state_t;
+typedef _STRUCT_ARM_EXCEPTION_STATE arm_exception_state32_t;
+typedef _STRUCT_ARM_EXCEPTION_STATE64 arm_exception_state64_t;
+
+typedef _STRUCT_ARM_DEBUG_STATE32 arm_debug_state32_t;
+typedef _STRUCT_ARM_DEBUG_STATE64 arm_debug_state64_t;
+
+typedef _STRUCT_ARM_PAGEIN_STATE arm_pagein_state_t;
+
+/*
+ * Otherwise not ARM64 kernel and we must preserve legacy ARM definitions of
+ * arm_debug_state for binary compatability of userland consumers of this file.
+ */
+#if defined(__arm__)
+typedef _STRUCT_ARM_DEBUG_STATE arm_debug_state_t;
+#elif defined(__arm64__)
+typedef _STRUCT_ARM_LEGACY_DEBUG_STATE arm_debug_state_t;
+#else /* defined(__arm__) */
+#error Undefined architecture
+#endif /* defined(__arm__) */
+
+#define ARM_VFP_STATE_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_vfp_state_t)/sizeof(uint32_t)))
+
+#define ARM_EXCEPTION_STATE_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_exception_state_t)/sizeof(uint32_t)))
+
+#define ARM_EXCEPTION_STATE64_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_exception_state64_t)/sizeof(uint32_t)))
+
+#define ARM_DEBUG_STATE_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_debug_state_t)/sizeof(uint32_t)))
+
+#define ARM_DEBUG_STATE32_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_debug_state32_t)/sizeof(uint32_t)))
+
+#define ARM_PAGEIN_STATE_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_pagein_state_t)/sizeof(uint32_t)))
+
+#define ARM_DEBUG_STATE64_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_debug_state64_t)/sizeof(uint32_t)))
+
+#define ARM_NEON_STATE_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_neon_state_t)/sizeof(uint32_t)))
+
+#define ARM_NEON_STATE64_COUNT ((mach_msg_type_number_t) \
+ (sizeof (arm_neon_state64_t)/sizeof(uint32_t)))
+
+#define MACHINE_THREAD_STATE ARM_THREAD_STATE
+#define MACHINE_THREAD_STATE_COUNT ARM_UNIFIED_THREAD_STATE_COUNT
+
+
+struct arm_amx_state {
+ arm_state_hdr_t ash;
+ union {
+ arm_amx_state_v1_t as_v1;
+ } uas;
+};
+#define as_v1 uas.as_v1
+typedef struct arm_amx_state arm_amx_state_t;
+
+#define ARM_AMX_STATE_V1_COUNT ((mach_msg_type_number_t) \
+ (sizeof(arm_amx_state_v1_t)/sizeof(unsigned int)))
+
+#define ARM_AMX_STATE_COUNT ((mach_msg_type_number_t) \
+ (sizeof(arm_amx_state_t)/sizeof(unsigned int)))
+
+
+/*
+ * Largest state on this machine:
+ */
+#define THREAD_MACHINE_STATE_MAX THREAD_STATE_MAX
+
+
+#endif /* _ARM_THREAD_STATUS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/vm_param.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/vm_param.h
new file mode 100644
index 0000000000..75db0423d4
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/vm_param.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * FILE_ID: vm_param.h
+ */
+
+/*
+ * ARM machine dependent virtual memory parameters.
+ */
+
+#ifndef _MACH_ARM_VM_PARAM_H_
+#define _MACH_ARM_VM_PARAM_H_
+
+
+#if !defined (KERNEL) && !defined (__ASSEMBLER__)
+#include <mach/vm_page_size.h>
+#endif
+
+#define BYTE_SIZE 8 /* byte size in bits */
+
+
+#define PAGE_SHIFT vm_page_shift
+#define PAGE_SIZE vm_page_size
+#define PAGE_MASK vm_page_mask
+
+#define VM_PAGE_SIZE vm_page_size
+
+#define machine_ptob(x) ((x) << PAGE_SHIFT)
+
+
+#define PAGE_MAX_SHIFT 14
+#define PAGE_MAX_SIZE (1 << PAGE_MAX_SHIFT)
+#define PAGE_MAX_MASK (PAGE_MAX_SIZE-1)
+
+#define PAGE_MIN_SHIFT 12
+#define PAGE_MIN_SIZE (1 << PAGE_MIN_SHIFT)
+#define PAGE_MIN_MASK (PAGE_MIN_SIZE-1)
+
+#define VM_MAX_PAGE_ADDRESS MACH_VM_MAX_ADDRESS
+
+#ifndef __ASSEMBLER__
+
+
+#if defined (__arm__)
+
+#define VM_MIN_ADDRESS ((vm_address_t) 0x00000000)
+#define VM_MAX_ADDRESS ((vm_address_t) 0x80000000)
+
+/* system-wide values */
+#define MACH_VM_MIN_ADDRESS ((mach_vm_offset_t) 0)
+#define MACH_VM_MAX_ADDRESS ((mach_vm_offset_t) VM_MAX_ADDRESS)
+
+#elif defined (__arm64__)
+
+#define VM_MIN_ADDRESS ((vm_address_t) 0x0000000000000000ULL)
+#define VM_MAX_ADDRESS ((vm_address_t) 0x0000000080000000ULL)
+
+/* system-wide values */
+#define MACH_VM_MIN_ADDRESS_RAW 0x0ULL
+#define MACH_VM_MAX_ADDRESS_RAW 0x00007FFFFE000000ULL
+
+#define MACH_VM_MIN_ADDRESS ((mach_vm_offset_t) MACH_VM_MIN_ADDRESS_RAW)
+#define MACH_VM_MAX_ADDRESS ((mach_vm_offset_t) MACH_VM_MAX_ADDRESS_RAW)
+
+
+#else /* defined(__arm64__) */
+#error architecture not supported
+#endif
+
+#define VM_MAP_MIN_ADDRESS VM_MIN_ADDRESS
+#define VM_MAP_MAX_ADDRESS VM_MAX_ADDRESS
+
+
+#endif /* !__ASSEMBLER__ */
+
+#define SWI_SYSCALL 0x80
+
+#endif /* _MACH_ARM_VM_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/arm/vm_types.h b/lib/libc/include/aarch64-macos-gnu/mach/arm/vm_types.h
new file mode 100644
index 0000000000..6fcf262c24
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/arm/vm_types.h
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+
+/*
+ * File: vm_types.h
+ * Author: Avadis Tevanian, Jr.
+ * Date: 1985
+ *
+ * Header file for VM data types. ARM version.
+ */
+
+#ifndef _MACH_ARM_VM_TYPES_H_
+#define _MACH_ARM_VM_TYPES_H_
+
+#ifndef ASSEMBLER
+
+#include <arm/_types.h>
+#include <stdint.h>
+#include <Availability.h>
+
+/*
+ * natural_t and integer_t are Mach's legacy types for machine-
+ * independent integer types (unsigned, and signed, respectively).
+ * Their original purpose was to define other types in a machine/
+ * compiler independent way.
+ *
+ * They also had an implicit "same size as pointer" characteristic
+ * to them (i.e. Mach's traditional types are very ILP32 or ILP64
+ * centric). We will likely support x86 ABIs that do not follow
+ * either ofthese models (specifically LP64). Therefore, we had to
+ * make a choice between making these types scale with pointers or stay
+ * tied to integers. Because their use is predominantly tied to
+ * to the size of an integer, we are keeping that association and
+ * breaking free from pointer size guarantees.
+ *
+ * New use of these types is discouraged.
+ */
+typedef __darwin_natural_t natural_t;
+typedef int integer_t;
+
+/*
+ * A vm_offset_t is a type-neutral pointer,
+ * e.g. an offset into a virtual memory space.
+ */
+#ifdef __LP64__
+typedef uintptr_t vm_offset_t;
+typedef uintptr_t vm_size_t;
+
+typedef uint64_t mach_vm_address_t;
+typedef uint64_t mach_vm_offset_t;
+typedef uint64_t mach_vm_size_t;
+
+typedef uint64_t vm_map_offset_t;
+typedef uint64_t vm_map_address_t;
+typedef uint64_t vm_map_size_t;
+#else
+typedef natural_t vm_offset_t;
+/*
+ * A vm_size_t is the proper type for e.g.
+ * expressing the difference between two
+ * vm_offset_t entities.
+ */
+typedef natural_t vm_size_t;
+
+/*
+ * This new type is independent of a particular vm map's
+ * implementation size - and represents appropriate types
+ * for all possible maps. This is used for interfaces
+ * where the size of the map is not known - or we don't
+ * want to have to distinguish.
+ */
+#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0)
+typedef uint32_t mach_vm_address_t;
+typedef uint32_t mach_vm_offset_t;
+typedef uint32_t mach_vm_size_t;
+#else
+typedef uint64_t mach_vm_address_t;
+typedef uint64_t mach_vm_offset_t;
+typedef uint64_t mach_vm_size_t;
+#endif
+
+typedef uint32_t vm_map_offset_t;
+typedef uint32_t vm_map_address_t;
+typedef uint32_t vm_map_size_t;
+#endif /* __LP64__ */
+
+
+typedef uint32_t vm32_offset_t;
+typedef uint32_t vm32_address_t;
+typedef uint32_t vm32_size_t;
+
+typedef vm_offset_t mach_port_context_t;
+
+
+#endif /* ASSEMBLER */
+
+/*
+ * If composing messages by hand (please do not)
+ */
+#define MACH_MSG_TYPE_INTEGER_T MACH_MSG_TYPE_INTEGER_32
+
+#endif /* _MACH_ARM_VM_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/kern_return.h b/lib/libc/include/aarch64-macos-gnu/mach/kern_return.h
new file mode 100644
index 0000000000..3ab2af7a7a
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/kern_return.h
@@ -0,0 +1,334 @@
+/*
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+/*
+ * File: h/kern_return.h
+ * Author: Avadis Tevanian, Jr.
+ * Date: 1985
+ *
+ * Kernel return codes.
+ *
+ */
+
+#ifndef _MACH_KERN_RETURN_H_
+#define _MACH_KERN_RETURN_H_
+
+#include <mach/machine/kern_return.h>
+
+#define KERN_SUCCESS 0
+
+#define KERN_INVALID_ADDRESS 1
+/* Specified address is not currently valid.
+ */
+
+#define KERN_PROTECTION_FAILURE 2
+/* Specified memory is valid, but does not permit the
+ * required forms of access.
+ */
+
+#define KERN_NO_SPACE 3
+/* The address range specified is already in use, or
+ * no address range of the size specified could be
+ * found.
+ */
+
+#define KERN_INVALID_ARGUMENT 4
+/* The function requested was not applicable to this
+ * type of argument, or an argument is invalid
+ */
+
+#define KERN_FAILURE 5
+/* The function could not be performed. A catch-all.
+ */
+
+#define KERN_RESOURCE_SHORTAGE 6
+/* A system resource could not be allocated to fulfill
+ * this request. This failure may not be permanent.
+ */
+
+#define KERN_NOT_RECEIVER 7
+/* The task in question does not hold receive rights
+ * for the port argument.
+ */
+
+#define KERN_NO_ACCESS 8
+/* Bogus access restriction.
+ */
+
+#define KERN_MEMORY_FAILURE 9
+/* During a page fault, the target address refers to a
+ * memory object that has been destroyed. This
+ * failure is permanent.
+ */
+
+#define KERN_MEMORY_ERROR 10
+/* During a page fault, the memory object indicated
+ * that the data could not be returned. This failure
+ * may be temporary; future attempts to access this
+ * same data may succeed, as defined by the memory
+ * object.
+ */
+
+#define KERN_ALREADY_IN_SET 11
+/* The receive right is already a member of the portset.
+ */
+
+#define KERN_NOT_IN_SET 12
+/* The receive right is not a member of a port set.
+ */
+
+#define KERN_NAME_EXISTS 13
+/* The name already denotes a right in the task.
+ */
+
+#define KERN_ABORTED 14
+/* The operation was aborted. Ipc code will
+ * catch this and reflect it as a message error.
+ */
+
+#define KERN_INVALID_NAME 15
+/* The name doesn't denote a right in the task.
+ */
+
+#define KERN_INVALID_TASK 16
+/* Target task isn't an active task.
+ */
+
+#define KERN_INVALID_RIGHT 17
+/* The name denotes a right, but not an appropriate right.
+ */
+
+#define KERN_INVALID_VALUE 18
+/* A blatant range error.
+ */
+
+#define KERN_UREFS_OVERFLOW 19
+/* Operation would overflow limit on user-references.
+ */
+
+#define KERN_INVALID_CAPABILITY 20
+/* The supplied (port) capability is improper.
+ */
+
+#define KERN_RIGHT_EXISTS 21
+/* The task already has send or receive rights
+ * for the port under another name.
+ */
+
+#define KERN_INVALID_HOST 22
+/* Target host isn't actually a host.
+ */
+
+#define KERN_MEMORY_PRESENT 23
+/* An attempt was made to supply "precious" data
+ * for memory that is already present in a
+ * memory object.
+ */
+
+#define KERN_MEMORY_DATA_MOVED 24
+/* A page was requested of a memory manager via
+ * memory_object_data_request for an object using
+ * a MEMORY_OBJECT_COPY_CALL strategy, with the
+ * VM_PROT_WANTS_COPY flag being used to specify
+ * that the page desired is for a copy of the
+ * object, and the memory manager has detected
+ * the page was pushed into a copy of the object
+ * while the kernel was walking the shadow chain
+ * from the copy to the object. This error code
+ * is delivered via memory_object_data_error
+ * and is handled by the kernel (it forces the
+ * kernel to restart the fault). It will not be
+ * seen by users.
+ */
+
+#define KERN_MEMORY_RESTART_COPY 25
+/* A strategic copy was attempted of an object
+ * upon which a quicker copy is now possible.
+ * The caller should retry the copy using
+ * vm_object_copy_quickly. This error code
+ * is seen only by the kernel.
+ */
+
+#define KERN_INVALID_PROCESSOR_SET 26
+/* An argument applied to assert processor set privilege
+ * was not a processor set control port.
+ */
+
+#define KERN_POLICY_LIMIT 27
+/* The specified scheduling attributes exceed the thread's
+ * limits.
+ */
+
+#define KERN_INVALID_POLICY 28
+/* The specified scheduling policy is not currently
+ * enabled for the processor set.
+ */
+
+#define KERN_INVALID_OBJECT 29
+/* The external memory manager failed to initialize the
+ * memory object.
+ */
+
+#define KERN_ALREADY_WAITING 30
+/* A thread is attempting to wait for an event for which
+ * there is already a waiting thread.
+ */
+
+#define KERN_DEFAULT_SET 31
+/* An attempt was made to destroy the default processor
+ * set.
+ */
+
+#define KERN_EXCEPTION_PROTECTED 32
+/* An attempt was made to fetch an exception port that is
+ * protected, or to abort a thread while processing a
+ * protected exception.
+ */
+
+#define KERN_INVALID_LEDGER 33
+/* A ledger was required but not supplied.
+ */
+
+#define KERN_INVALID_MEMORY_CONTROL 34
+/* The port was not a memory cache control port.
+ */
+
+#define KERN_INVALID_SECURITY 35
+/* An argument supplied to assert security privilege
+ * was not a host security port.
+ */
+
+#define KERN_NOT_DEPRESSED 36
+/* thread_depress_abort was called on a thread which
+ * was not currently depressed.
+ */
+
+#define KERN_TERMINATED 37
+/* Object has been terminated and is no longer available
+ */
+
+#define KERN_LOCK_SET_DESTROYED 38
+/* Lock set has been destroyed and is no longer available.
+ */
+
+#define KERN_LOCK_UNSTABLE 39
+/* The thread holding the lock terminated before releasing
+ * the lock
+ */
+
+#define KERN_LOCK_OWNED 40
+/* The lock is already owned by another thread
+ */
+
+#define KERN_LOCK_OWNED_SELF 41
+/* The lock is already owned by the calling thread
+ */
+
+#define KERN_SEMAPHORE_DESTROYED 42
+/* Semaphore has been destroyed and is no longer available.
+ */
+
+#define KERN_RPC_SERVER_TERMINATED 43
+/* Return from RPC indicating the target server was
+ * terminated before it successfully replied
+ */
+
+#define KERN_RPC_TERMINATE_ORPHAN 44
+/* Terminate an orphaned activation.
+ */
+
+#define KERN_RPC_CONTINUE_ORPHAN 45
+/* Allow an orphaned activation to continue executing.
+ */
+
+#define KERN_NOT_SUPPORTED 46
+/* Empty thread activation (No thread linked to it)
+ */
+
+#define KERN_NODE_DOWN 47
+/* Remote node down or inaccessible.
+ */
+
+#define KERN_NOT_WAITING 48
+/* A signalled thread was not actually waiting. */
+
+#define KERN_OPERATION_TIMED_OUT 49
+/* Some thread-oriented operation (semaphore_wait) timed out
+ */
+
+#define KERN_CODESIGN_ERROR 50
+/* During a page fault, indicates that the page was rejected
+ * as a result of a signature check.
+ */
+
+#define KERN_POLICY_STATIC 51
+/* The requested property cannot be changed at this time.
+ */
+
+#define KERN_INSUFFICIENT_BUFFER_SIZE 52
+/* The provided buffer is of insufficient size for the requested data.
+ */
+
+#define KERN_DENIED 53
+/* Denied by security policy
+ */
+
+#define KERN_RETURN_MAX 0x100
+/* Maximum return value allowable
+ */
+
+#endif /* _MACH_KERN_RETURN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/mach_port.h b/lib/libc/include/aarch64-macos-gnu/mach/mach_port.h
new file mode 100644
index 0000000000..c0b2526016
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/mach_port.h
@@ -0,0 +1,1808 @@
+#ifndef _mach_port_user_
+#define _mach_port_user_
+
+/* Module mach_port */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef mach_port_MSG_COUNT
+#define mach_port_MSG_COUNT 40
+#endif /* mach_port_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+#include <mach_debug/mach_debug_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine mach_port_names */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_names
+(
+ ipc_space_t task,
+ mach_port_name_array_t *names,
+ mach_msg_type_number_t *namesCnt,
+ mach_port_type_array_t *types,
+ mach_msg_type_number_t *typesCnt
+);
+
+/* Routine mach_port_type */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_type
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_type_t *ptype
+);
+
+/* Routine mach_port_rename */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_rename
+(
+ ipc_space_t task,
+ mach_port_name_t old_name,
+ mach_port_name_t new_name
+);
+
+/* Routine mach_port_allocate_name */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t mach_port_allocate_name
+(
+ ipc_space_t task,
+ mach_port_right_t right,
+ mach_port_name_t name
+);
+
+/* Routine mach_port_allocate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_allocate
+(
+ ipc_space_t task,
+ mach_port_right_t right,
+ mach_port_name_t *name
+);
+
+/* Routine mach_port_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_destroy
+(
+ ipc_space_t task,
+ mach_port_name_t name
+);
+
+/* Routine mach_port_deallocate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_deallocate
+(
+ ipc_space_t task,
+ mach_port_name_t name
+);
+
+/* Routine mach_port_get_refs */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_refs
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_right_t right,
+ mach_port_urefs_t *refs
+);
+
+/* Routine mach_port_mod_refs */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_mod_refs
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_right_t right,
+ mach_port_delta_t delta
+);
+
+/* Routine mach_port_peek */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_peek
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_msg_trailer_type_t trailer_type,
+ mach_port_seqno_t *request_seqnop,
+ mach_msg_size_t *msg_sizep,
+ mach_msg_id_t *msg_idp,
+ mach_msg_trailer_info_t trailer_infop,
+ mach_msg_type_number_t *trailer_infopCnt
+);
+
+/* Routine mach_port_set_mscount */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_set_mscount
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_mscount_t mscount
+);
+
+/* Routine mach_port_get_set_status */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_set_status
+(
+ ipc_space_read_t task,
+ mach_port_name_t name,
+ mach_port_name_array_t *members,
+ mach_msg_type_number_t *membersCnt
+);
+
+/* Routine mach_port_move_member */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_move_member
+(
+ ipc_space_t task,
+ mach_port_name_t member,
+ mach_port_name_t after
+);
+
+/* Routine mach_port_request_notification */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_request_notification
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_msg_id_t msgid,
+ mach_port_mscount_t sync,
+ mach_port_t notify,
+ mach_msg_type_name_t notifyPoly,
+ mach_port_t *previous
+);
+
+/* Routine mach_port_insert_right */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_insert_right
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_t poly,
+ mach_msg_type_name_t polyPoly
+);
+
+/* Routine mach_port_extract_right */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_extract_right
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_msg_type_name_t msgt_name,
+ mach_port_t *poly,
+ mach_msg_type_name_t *polyPoly
+);
+
+/* Routine mach_port_set_seqno */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_set_seqno
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_seqno_t seqno
+);
+
+/* Routine mach_port_get_attributes */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_attributes
+(
+ ipc_space_read_t task,
+ mach_port_name_t name,
+ mach_port_flavor_t flavor,
+ mach_port_info_t port_info_out,
+ mach_msg_type_number_t *port_info_outCnt
+);
+
+/* Routine mach_port_set_attributes */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_set_attributes
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_flavor_t flavor,
+ mach_port_info_t port_info,
+ mach_msg_type_number_t port_infoCnt
+);
+
+/* Routine mach_port_allocate_qos */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_allocate_qos
+(
+ ipc_space_t task,
+ mach_port_right_t right,
+ mach_port_qos_t *qos,
+ mach_port_name_t *name
+);
+
+/* Routine mach_port_allocate_full */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_allocate_full
+(
+ ipc_space_t task,
+ mach_port_right_t right,
+ mach_port_t proto,
+ mach_port_qos_t *qos,
+ mach_port_name_t *name
+);
+
+/* Routine task_set_port_space */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_port_space
+(
+ ipc_space_t task,
+ int table_entries
+);
+
+/* Routine mach_port_get_srights */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_srights
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_rights_t *srights
+);
+
+/* Routine mach_port_space_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_space_info
+(
+ ipc_space_read_t space,
+ ipc_info_space_t *space_info,
+ ipc_info_name_array_t *table_info,
+ mach_msg_type_number_t *table_infoCnt,
+ ipc_info_tree_name_array_t *tree_info,
+ mach_msg_type_number_t *tree_infoCnt
+);
+
+/* Routine mach_port_dnrequest_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_dnrequest_info
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ unsigned *dnr_total,
+ unsigned *dnr_used
+);
+
+/* Routine mach_port_kernel_object */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_kernel_object
+(
+ ipc_space_read_t task,
+ mach_port_name_t name,
+ unsigned *object_type,
+ unsigned *object_addr
+);
+
+/* Routine mach_port_insert_member */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_insert_member
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_name_t pset
+);
+
+/* Routine mach_port_extract_member */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_extract_member
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_name_t pset
+);
+
+/* Routine mach_port_get_context */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_get_context
+(
+ ipc_space_read_t task,
+ mach_port_name_t name,
+ mach_port_context_t *context
+);
+
+/* Routine mach_port_set_context */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_set_context
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t context
+);
+
+/* Routine mach_port_kobject */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_kobject
+(
+ ipc_space_read_t task,
+ mach_port_name_t name,
+ natural_t *object_type,
+ mach_vm_address_t *object_addr
+);
+
+/* Routine mach_port_construct */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_construct
+(
+ ipc_space_t task,
+ mach_port_options_ptr_t options,
+ mach_port_context_t context,
+ mach_port_name_t *name
+);
+
+/* Routine mach_port_destruct */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_destruct
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_delta_t srdelta,
+ mach_port_context_t guard
+);
+
+/* Routine mach_port_guard */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_guard
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t guard,
+ boolean_t strict
+);
+
+/* Routine mach_port_unguard */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_unguard
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t guard
+);
+
+/* Routine mach_port_space_basic_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_space_basic_info
+(
+ ipc_space_inspect_t task,
+ ipc_info_space_basic_t *basic_info
+);
+
+/* Routine mach_port_guard_with_flags */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_guard_with_flags
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t guard,
+ uint64_t flags
+);
+
+/* Routine mach_port_swap_guard */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_swap_guard
+(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_context_t old_guard,
+ mach_port_context_t new_guard
+);
+
+/* Routine mach_port_kobject_description */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t mach_port_kobject_description
+(
+ ipc_space_read_t task,
+ mach_port_name_t name,
+ natural_t *object_type,
+ mach_vm_address_t *object_addr,
+ kobject_description_t description
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__mach_port_subsystem__defined
+#define __Request__mach_port_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_port_names_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_type_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t old_name;
+ mach_port_name_t new_name;
+ } __Request__mach_port_rename_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_right_t right;
+ mach_port_name_t name;
+ } __Request__mach_port_allocate_name_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_right_t right;
+ } __Request__mach_port_allocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_deallocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_right_t right;
+ } __Request__mach_port_get_refs_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_right_t right;
+ mach_port_delta_t delta;
+ } __Request__mach_port_mod_refs_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_msg_trailer_type_t trailer_type;
+ mach_port_seqno_t request_seqnop;
+ mach_msg_type_number_t trailer_infopCnt;
+ } __Request__mach_port_peek_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_mscount_t mscount;
+ } __Request__mach_port_set_mscount_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_get_set_status_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t member;
+ mach_port_name_t after;
+ } __Request__mach_port_move_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t notify;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_msg_id_t msgid;
+ mach_port_mscount_t sync;
+ } __Request__mach_port_request_notification_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t poly;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_insert_right_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_msg_type_name_t msgt_name;
+ } __Request__mach_port_extract_right_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_seqno_t seqno;
+ } __Request__mach_port_set_seqno_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_flavor_t flavor;
+ mach_msg_type_number_t port_info_outCnt;
+ } __Request__mach_port_get_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_flavor_t flavor;
+ mach_msg_type_number_t port_infoCnt;
+ integer_t port_info[17];
+ } __Request__mach_port_set_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_right_t right;
+ mach_port_qos_t qos;
+ } __Request__mach_port_allocate_qos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t proto;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_port_right_t right;
+ mach_port_qos_t qos;
+ mach_port_name_t name;
+ } __Request__mach_port_allocate_full_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int table_entries;
+ } __Request__task_set_port_space_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_get_srights_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_port_space_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_dnrequest_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_kernel_object_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_name_t pset;
+ } __Request__mach_port_insert_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_name_t pset;
+ } __Request__mach_port_extract_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_get_context_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t context;
+ } __Request__mach_port_set_context_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_kobject_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t options;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_port_context_t context;
+ } __Request__mach_port_construct_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_delta_t srdelta;
+ mach_port_context_t guard;
+ } __Request__mach_port_destruct_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t guard;
+ boolean_t strict;
+ } __Request__mach_port_guard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t guard;
+ } __Request__mach_port_unguard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_port_space_basic_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t guard;
+ uint64_t flags;
+ } __Request__mach_port_guard_with_flags_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_port_context_t old_guard;
+ mach_port_context_t new_guard;
+ } __Request__mach_port_swap_guard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ } __Request__mach_port_kobject_description_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__mach_port_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__mach_port_subsystem__defined
+#define __RequestUnion__mach_port_subsystem__defined
+union __RequestUnion__mach_port_subsystem {
+ __Request__mach_port_names_t Request_mach_port_names;
+ __Request__mach_port_type_t Request_mach_port_type;
+ __Request__mach_port_rename_t Request_mach_port_rename;
+ __Request__mach_port_allocate_name_t Request_mach_port_allocate_name;
+ __Request__mach_port_allocate_t Request_mach_port_allocate;
+ __Request__mach_port_destroy_t Request_mach_port_destroy;
+ __Request__mach_port_deallocate_t Request_mach_port_deallocate;
+ __Request__mach_port_get_refs_t Request_mach_port_get_refs;
+ __Request__mach_port_mod_refs_t Request_mach_port_mod_refs;
+ __Request__mach_port_peek_t Request_mach_port_peek;
+ __Request__mach_port_set_mscount_t Request_mach_port_set_mscount;
+ __Request__mach_port_get_set_status_t Request_mach_port_get_set_status;
+ __Request__mach_port_move_member_t Request_mach_port_move_member;
+ __Request__mach_port_request_notification_t Request_mach_port_request_notification;
+ __Request__mach_port_insert_right_t Request_mach_port_insert_right;
+ __Request__mach_port_extract_right_t Request_mach_port_extract_right;
+ __Request__mach_port_set_seqno_t Request_mach_port_set_seqno;
+ __Request__mach_port_get_attributes_t Request_mach_port_get_attributes;
+ __Request__mach_port_set_attributes_t Request_mach_port_set_attributes;
+ __Request__mach_port_allocate_qos_t Request_mach_port_allocate_qos;
+ __Request__mach_port_allocate_full_t Request_mach_port_allocate_full;
+ __Request__task_set_port_space_t Request_task_set_port_space;
+ __Request__mach_port_get_srights_t Request_mach_port_get_srights;
+ __Request__mach_port_space_info_t Request_mach_port_space_info;
+ __Request__mach_port_dnrequest_info_t Request_mach_port_dnrequest_info;
+ __Request__mach_port_kernel_object_t Request_mach_port_kernel_object;
+ __Request__mach_port_insert_member_t Request_mach_port_insert_member;
+ __Request__mach_port_extract_member_t Request_mach_port_extract_member;
+ __Request__mach_port_get_context_t Request_mach_port_get_context;
+ __Request__mach_port_set_context_t Request_mach_port_set_context;
+ __Request__mach_port_kobject_t Request_mach_port_kobject;
+ __Request__mach_port_construct_t Request_mach_port_construct;
+ __Request__mach_port_destruct_t Request_mach_port_destruct;
+ __Request__mach_port_guard_t Request_mach_port_guard;
+ __Request__mach_port_unguard_t Request_mach_port_unguard;
+ __Request__mach_port_space_basic_info_t Request_mach_port_space_basic_info;
+ __Request__mach_port_guard_with_flags_t Request_mach_port_guard_with_flags;
+ __Request__mach_port_swap_guard_t Request_mach_port_swap_guard;
+ __Request__mach_port_kobject_description_t Request_mach_port_kobject_description;
+};
+#endif /* !__RequestUnion__mach_port_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__mach_port_subsystem__defined
+#define __Reply__mach_port_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t names;
+ mach_msg_ool_descriptor_t types;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t namesCnt;
+ mach_msg_type_number_t typesCnt;
+ } __Reply__mach_port_names_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_type_t ptype;
+ } __Reply__mach_port_type_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_rename_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_allocate_name_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_name_t name;
+ } __Reply__mach_port_allocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_deallocate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_urefs_t refs;
+ } __Reply__mach_port_get_refs_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_mod_refs_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_seqno_t request_seqnop;
+ mach_msg_size_t msg_sizep;
+ mach_msg_id_t msg_idp;
+ mach_msg_type_number_t trailer_infopCnt;
+ char trailer_infop[68];
+ } __Reply__mach_port_peek_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_set_mscount_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t members;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t membersCnt;
+ } __Reply__mach_port_get_set_status_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_move_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t previous;
+ /* end of the kernel processed data */
+ } __Reply__mach_port_request_notification_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_insert_right_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t poly;
+ /* end of the kernel processed data */
+ } __Reply__mach_port_extract_right_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_set_seqno_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t port_info_outCnt;
+ integer_t port_info_out[17];
+ } __Reply__mach_port_get_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_set_attributes_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_qos_t qos;
+ mach_port_name_t name;
+ } __Reply__mach_port_allocate_qos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_qos_t qos;
+ mach_port_name_t name;
+ } __Reply__mach_port_allocate_full_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_port_space_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_rights_t srights;
+ } __Reply__mach_port_get_srights_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t table_info;
+ mach_msg_ool_descriptor_t tree_info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ ipc_info_space_t space_info;
+ mach_msg_type_number_t table_infoCnt;
+ mach_msg_type_number_t tree_infoCnt;
+ } __Reply__mach_port_space_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ unsigned dnr_total;
+ unsigned dnr_used;
+ } __Reply__mach_port_dnrequest_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ unsigned object_type;
+ unsigned object_addr;
+ } __Reply__mach_port_kernel_object_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_insert_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_extract_member_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_context_t context;
+ } __Reply__mach_port_get_context_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_set_context_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ natural_t object_type;
+ mach_vm_address_t object_addr;
+ } __Reply__mach_port_kobject_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_port_name_t name;
+ } __Reply__mach_port_construct_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_destruct_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_guard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_unguard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ ipc_info_space_basic_t basic_info;
+ } __Reply__mach_port_space_basic_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_guard_with_flags_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_port_swap_guard_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ natural_t object_type;
+ mach_vm_address_t object_addr;
+ mach_msg_type_number_t descriptionOffset; /* MiG doesn't use it */
+ mach_msg_type_number_t descriptionCnt;
+ char description[512];
+ } __Reply__mach_port_kobject_description_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__mach_port_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__mach_port_subsystem__defined
+#define __ReplyUnion__mach_port_subsystem__defined
+union __ReplyUnion__mach_port_subsystem {
+ __Reply__mach_port_names_t Reply_mach_port_names;
+ __Reply__mach_port_type_t Reply_mach_port_type;
+ __Reply__mach_port_rename_t Reply_mach_port_rename;
+ __Reply__mach_port_allocate_name_t Reply_mach_port_allocate_name;
+ __Reply__mach_port_allocate_t Reply_mach_port_allocate;
+ __Reply__mach_port_destroy_t Reply_mach_port_destroy;
+ __Reply__mach_port_deallocate_t Reply_mach_port_deallocate;
+ __Reply__mach_port_get_refs_t Reply_mach_port_get_refs;
+ __Reply__mach_port_mod_refs_t Reply_mach_port_mod_refs;
+ __Reply__mach_port_peek_t Reply_mach_port_peek;
+ __Reply__mach_port_set_mscount_t Reply_mach_port_set_mscount;
+ __Reply__mach_port_get_set_status_t Reply_mach_port_get_set_status;
+ __Reply__mach_port_move_member_t Reply_mach_port_move_member;
+ __Reply__mach_port_request_notification_t Reply_mach_port_request_notification;
+ __Reply__mach_port_insert_right_t Reply_mach_port_insert_right;
+ __Reply__mach_port_extract_right_t Reply_mach_port_extract_right;
+ __Reply__mach_port_set_seqno_t Reply_mach_port_set_seqno;
+ __Reply__mach_port_get_attributes_t Reply_mach_port_get_attributes;
+ __Reply__mach_port_set_attributes_t Reply_mach_port_set_attributes;
+ __Reply__mach_port_allocate_qos_t Reply_mach_port_allocate_qos;
+ __Reply__mach_port_allocate_full_t Reply_mach_port_allocate_full;
+ __Reply__task_set_port_space_t Reply_task_set_port_space;
+ __Reply__mach_port_get_srights_t Reply_mach_port_get_srights;
+ __Reply__mach_port_space_info_t Reply_mach_port_space_info;
+ __Reply__mach_port_dnrequest_info_t Reply_mach_port_dnrequest_info;
+ __Reply__mach_port_kernel_object_t Reply_mach_port_kernel_object;
+ __Reply__mach_port_insert_member_t Reply_mach_port_insert_member;
+ __Reply__mach_port_extract_member_t Reply_mach_port_extract_member;
+ __Reply__mach_port_get_context_t Reply_mach_port_get_context;
+ __Reply__mach_port_set_context_t Reply_mach_port_set_context;
+ __Reply__mach_port_kobject_t Reply_mach_port_kobject;
+ __Reply__mach_port_construct_t Reply_mach_port_construct;
+ __Reply__mach_port_destruct_t Reply_mach_port_destruct;
+ __Reply__mach_port_guard_t Reply_mach_port_guard;
+ __Reply__mach_port_unguard_t Reply_mach_port_unguard;
+ __Reply__mach_port_space_basic_info_t Reply_mach_port_space_basic_info;
+ __Reply__mach_port_guard_with_flags_t Reply_mach_port_guard_with_flags;
+ __Reply__mach_port_swap_guard_t Reply_mach_port_swap_guard;
+ __Reply__mach_port_kobject_description_t Reply_mach_port_kobject_description;
+};
+#endif /* !__RequestUnion__mach_port_subsystem__defined */
+
+#ifndef subsystem_to_name_map_mach_port
+#define subsystem_to_name_map_mach_port \
+ { "mach_port_names", 3200 },\
+ { "mach_port_type", 3201 },\
+ { "mach_port_rename", 3202 },\
+ { "mach_port_allocate_name", 3203 },\
+ { "mach_port_allocate", 3204 },\
+ { "mach_port_destroy", 3205 },\
+ { "mach_port_deallocate", 3206 },\
+ { "mach_port_get_refs", 3207 },\
+ { "mach_port_mod_refs", 3208 },\
+ { "mach_port_peek", 3209 },\
+ { "mach_port_set_mscount", 3210 },\
+ { "mach_port_get_set_status", 3211 },\
+ { "mach_port_move_member", 3212 },\
+ { "mach_port_request_notification", 3213 },\
+ { "mach_port_insert_right", 3214 },\
+ { "mach_port_extract_right", 3215 },\
+ { "mach_port_set_seqno", 3216 },\
+ { "mach_port_get_attributes", 3217 },\
+ { "mach_port_set_attributes", 3218 },\
+ { "mach_port_allocate_qos", 3219 },\
+ { "mach_port_allocate_full", 3220 },\
+ { "task_set_port_space", 3221 },\
+ { "mach_port_get_srights", 3222 },\
+ { "mach_port_space_info", 3223 },\
+ { "mach_port_dnrequest_info", 3224 },\
+ { "mach_port_kernel_object", 3225 },\
+ { "mach_port_insert_member", 3226 },\
+ { "mach_port_extract_member", 3227 },\
+ { "mach_port_get_context", 3228 },\
+ { "mach_port_set_context", 3229 },\
+ { "mach_port_kobject", 3230 },\
+ { "mach_port_construct", 3231 },\
+ { "mach_port_destruct", 3232 },\
+ { "mach_port_guard", 3233 },\
+ { "mach_port_unguard", 3234 },\
+ { "mach_port_space_basic_info", 3235 },\
+ { "mach_port_guard_with_flags", 3237 },\
+ { "mach_port_swap_guard", 3238 },\
+ { "mach_port_kobject_description", 3239 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _mach_port_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/mach_traps.h b/lib/libc/include/aarch64-macos-gnu/mach/mach_traps.h
new file mode 100644
index 0000000000..cf1df240b7
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/mach_traps.h
@@ -0,0 +1,297 @@
+/*
+ * Copyright (c) 2000-2019 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+/*
+ * Definitions of general Mach system traps.
+ *
+ * These are the definitions as seen from user-space.
+ * The kernel definitions are in <mach/syscall_sw.h>.
+ * Kernel RPC functions are defined in <mach/mach_interface.h>.
+ */
+
+#ifndef _MACH_MACH_TRAPS_H_
+#define _MACH_MACH_TRAPS_H_
+
+#include <stdint.h>
+
+#include <mach/std_types.h>
+#include <mach/mach_types.h>
+#include <mach/kern_return.h>
+#include <mach/port.h>
+#include <mach/vm_types.h>
+#include <mach/clock_types.h>
+
+#include <machine/endian.h>
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+
+
+extern kern_return_t clock_sleep_trap(
+ mach_port_name_t clock_name,
+ sleep_type_t sleep_type,
+ int sleep_sec,
+ int sleep_nsec,
+ mach_timespec_t *wakeup_time);
+
+extern kern_return_t _kernelrpc_mach_vm_allocate_trap(
+ mach_port_name_t target,
+ mach_vm_offset_t *addr,
+ mach_vm_size_t size,
+ int flags);
+
+extern kern_return_t _kernelrpc_mach_vm_deallocate_trap(
+ mach_port_name_t target,
+ mach_vm_address_t address,
+ mach_vm_size_t size
+ );
+
+extern kern_return_t _kernelrpc_mach_vm_protect_trap(
+ mach_port_name_t target,
+ mach_vm_address_t address,
+ mach_vm_size_t size,
+ boolean_t set_maximum,
+ vm_prot_t new_protection
+ );
+
+extern kern_return_t _kernelrpc_mach_vm_map_trap(
+ mach_port_name_t target,
+ mach_vm_offset_t *address,
+ mach_vm_size_t size,
+ mach_vm_offset_t mask,
+ int flags,
+ vm_prot_t cur_protection
+ );
+
+extern kern_return_t _kernelrpc_mach_vm_purgable_control_trap(
+ mach_port_name_t target,
+ mach_vm_offset_t address,
+ vm_purgable_t control,
+ int *state);
+
+extern kern_return_t _kernelrpc_mach_port_allocate_trap(
+ mach_port_name_t target,
+ mach_port_right_t right,
+ mach_port_name_t *name
+ );
+
+extern kern_return_t _kernelrpc_mach_port_deallocate_trap(
+ mach_port_name_t target,
+ mach_port_name_t name
+ );
+
+extern kern_return_t _kernelrpc_mach_port_mod_refs_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_right_t right,
+ mach_port_delta_t delta
+ );
+
+extern kern_return_t _kernelrpc_mach_port_move_member_trap(
+ mach_port_name_t target,
+ mach_port_name_t member,
+ mach_port_name_t after
+ );
+
+extern kern_return_t _kernelrpc_mach_port_insert_right_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_name_t poly,
+ mach_msg_type_name_t polyPoly
+ );
+
+extern kern_return_t _kernelrpc_mach_port_get_attributes_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_flavor_t flavor,
+ mach_port_info_t port_info_out,
+ mach_msg_type_number_t *port_info_outCnt
+ );
+
+extern kern_return_t _kernelrpc_mach_port_insert_member_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_name_t pset
+ );
+
+extern kern_return_t _kernelrpc_mach_port_extract_member_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_name_t pset
+ );
+
+extern kern_return_t _kernelrpc_mach_port_construct_trap(
+ mach_port_name_t target,
+ mach_port_options_t *options,
+ uint64_t context,
+ mach_port_name_t *name
+ );
+
+extern kern_return_t _kernelrpc_mach_port_destruct_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ mach_port_delta_t srdelta,
+ uint64_t guard
+ );
+
+extern kern_return_t _kernelrpc_mach_port_guard_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ uint64_t guard,
+ boolean_t strict
+ );
+
+extern kern_return_t _kernelrpc_mach_port_unguard_trap(
+ mach_port_name_t target,
+ mach_port_name_t name,
+ uint64_t guard
+ );
+
+extern kern_return_t mach_generate_activity_id(
+ mach_port_name_t target,
+ int count,
+ uint64_t *activity_id
+ );
+
+extern kern_return_t macx_swapon(
+ uint64_t filename,
+ int flags,
+ int size,
+ int priority);
+
+extern kern_return_t macx_swapoff(
+ uint64_t filename,
+ int flags);
+
+extern kern_return_t macx_triggers(
+ int hi_water,
+ int low_water,
+ int flags,
+ mach_port_t alert_port);
+
+extern kern_return_t macx_backing_store_suspend(
+ boolean_t suspend);
+
+extern kern_return_t macx_backing_store_recovery(
+ int pid);
+
+extern boolean_t swtch_pri(int pri);
+
+extern boolean_t swtch(void);
+
+extern kern_return_t thread_switch(
+ mach_port_name_t thread_name,
+ int option,
+ mach_msg_timeout_t option_time);
+
+extern mach_port_name_t task_self_trap(void);
+
+extern kern_return_t host_create_mach_voucher_trap(
+ mach_port_name_t host,
+ mach_voucher_attr_raw_recipe_array_t recipes,
+ int recipes_size,
+ mach_port_name_t *voucher);
+
+extern kern_return_t mach_voucher_extract_attr_recipe_trap(
+ mach_port_name_t voucher_name,
+ mach_voucher_attr_key_t key,
+ mach_voucher_attr_raw_recipe_t recipe,
+ mach_msg_type_number_t *recipe_size);
+
+extern kern_return_t _kernelrpc_mach_port_type_trap(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_port_type_t *ptype);
+
+extern kern_return_t _kernelrpc_mach_port_request_notification_trap(
+ ipc_space_t task,
+ mach_port_name_t name,
+ mach_msg_id_t msgid,
+ mach_port_mscount_t sync,
+ mach_port_name_t notify,
+ mach_msg_type_name_t notifyPoly,
+ mach_port_name_t *previous);
+
+/*
+ * Obsolete interfaces.
+ */
+
+extern kern_return_t task_for_pid(
+ mach_port_name_t target_tport,
+ int pid,
+ mach_port_name_t *t);
+
+extern kern_return_t task_name_for_pid(
+ mach_port_name_t target_tport,
+ int pid,
+ mach_port_name_t *tn);
+
+extern kern_return_t pid_for_task(
+ mach_port_name_t t,
+ int *x);
+
+extern kern_return_t debug_control_port_for_pid(
+ mach_port_name_t target_tport,
+ int pid,
+ mach_port_name_t *t);
+
+
+__END_DECLS
+
+#endif /* _MACH_MACH_TRAPS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/mach_types.h b/lib/libc/include/aarch64-macos-gnu/mach/mach_types.h
new file mode 100644
index 0000000000..5832587263
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/mach_types.h
@@ -0,0 +1,283 @@
+/*
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+/*
+ * NOTICE: This file was modified by SPARTA, Inc. in 2005 to introduce
+ * support for mandatory and extensible security protections. This notice
+ * is included in support of clause 2.2 (b) of the Apple Public License,
+ * Version 2.0.
+ */
+/*
+ * File: mach/mach_types.h
+ * Author: Avadis Tevanian, Jr., Michael Wayne Young
+ * Date: 1986
+ *
+ * Mach external interface definitions.
+ *
+ */
+
+#ifndef _MACH_MACH_TYPES_H_
+#define _MACH_MACH_TYPES_H_
+
+#include <stdint.h>
+
+#include <sys/cdefs.h>
+
+#include <mach/host_info.h>
+#include <mach/host_notify.h>
+#include <mach/host_special_ports.h>
+#include <mach/machine.h>
+#include <mach/machine/vm_types.h>
+#include <mach/memory_object_types.h>
+#include <mach/message.h>
+#include <mach/exception_types.h>
+#include <mach/port.h>
+#include <mach/mach_voucher_types.h>
+#include <mach/processor_info.h>
+#include <mach/task_info.h>
+#include <mach/task_inspect.h>
+#include <mach/task_policy.h>
+#include <mach/task_special_ports.h>
+#include <mach/thread_info.h>
+#include <mach/thread_policy.h>
+#include <mach/thread_special_ports.h>
+#include <mach/thread_status.h>
+#include <mach/time_value.h>
+#include <mach/clock_types.h>
+#include <mach/vm_attributes.h>
+#include <mach/vm_inherit.h>
+#include <mach/vm_purgable.h>
+#include <mach/vm_behavior.h>
+#include <mach/vm_prot.h>
+#include <mach/vm_statistics.h>
+#include <mach/vm_sync.h>
+#include <mach/vm_types.h>
+#include <mach/vm_region.h>
+#include <mach/kmod.h>
+#include <mach/dyld_kernel.h>
+
+
+/*
+ * If we are not in the kernel, then these will all be represented by
+ * ports at user-space.
+ */
+typedef mach_port_t task_t;
+typedef mach_port_t task_name_t;
+typedef mach_port_t task_policy_set_t;
+typedef mach_port_t task_policy_get_t;
+typedef mach_port_t task_inspect_t;
+typedef mach_port_t task_read_t;
+typedef mach_port_t task_suspension_token_t;
+typedef mach_port_t thread_t;
+typedef mach_port_t thread_act_t;
+typedef mach_port_t thread_inspect_t;
+typedef mach_port_t thread_read_t;
+typedef mach_port_t ipc_space_t;
+typedef mach_port_t ipc_space_read_t;
+typedef mach_port_t ipc_space_inspect_t;
+typedef mach_port_t coalition_t;
+typedef mach_port_t host_t;
+typedef mach_port_t host_priv_t;
+typedef mach_port_t host_security_t;
+typedef mach_port_t processor_t;
+typedef mach_port_t processor_set_t;
+typedef mach_port_t processor_set_control_t;
+typedef mach_port_t semaphore_t;
+typedef mach_port_t lock_set_t;
+typedef mach_port_t ledger_t;
+typedef mach_port_t alarm_t;
+typedef mach_port_t clock_serv_t;
+typedef mach_port_t clock_ctrl_t;
+typedef mach_port_t arcade_register_t;
+typedef mach_port_t ipc_eventlink_t;
+typedef mach_port_t eventlink_port_pair_t[2];
+typedef mach_port_t suid_cred_t;
+
+
+/*
+ * These aren't really unique types. They are just called
+ * out as unique types at one point in history. So we list
+ * them here for compatibility.
+ */
+typedef processor_set_t processor_set_name_t;
+
+/*
+ * These types are just hard-coded as ports
+ */
+typedef mach_port_t clock_reply_t;
+typedef mach_port_t bootstrap_t;
+typedef mach_port_t mem_entry_name_port_t;
+typedef mach_port_t exception_handler_t;
+typedef exception_handler_t *exception_handler_array_t;
+typedef mach_port_t vm_task_entry_t;
+typedef mach_port_t io_master_t;
+typedef mach_port_t UNDServerRef;
+typedef mach_port_t mach_eventlink_t;
+
+/*
+ * Mig doesn't translate the components of an array.
+ * For example, Mig won't use the thread_t translations
+ * to translate a thread_array_t argument. So, these definitions
+ * are not completely accurate at the moment for other kernel
+ * components.
+ */
+typedef task_t *task_array_t;
+typedef thread_t *thread_array_t;
+typedef processor_set_t *processor_set_array_t;
+typedef processor_set_t *processor_set_name_array_t;
+typedef processor_t *processor_array_t;
+typedef thread_act_t *thread_act_array_t;
+typedef ledger_t *ledger_array_t;
+
+/*
+ * However the real mach_types got declared, we also have to declare
+ * types with "port" in the name for compatability with the way OSF
+ * had declared the user interfaces at one point. Someday these should
+ * go away.
+ */
+typedef task_t task_port_t;
+typedef task_array_t task_port_array_t;
+typedef thread_t thread_port_t;
+typedef thread_array_t thread_port_array_t;
+typedef ipc_space_t ipc_space_port_t;
+typedef host_t host_name_t;
+typedef host_t host_name_port_t;
+typedef processor_set_t processor_set_port_t;
+typedef processor_set_t processor_set_name_port_t;
+typedef processor_set_array_t processor_set_name_port_array_t;
+typedef processor_set_t processor_set_control_port_t;
+typedef processor_t processor_port_t;
+typedef processor_array_t processor_port_array_t;
+typedef thread_act_t thread_act_port_t;
+typedef thread_act_array_t thread_act_port_array_t;
+typedef semaphore_t semaphore_port_t;
+typedef lock_set_t lock_set_port_t;
+typedef ledger_t ledger_port_t;
+typedef ledger_array_t ledger_port_array_t;
+typedef alarm_t alarm_port_t;
+typedef clock_serv_t clock_serv_port_t;
+typedef clock_ctrl_t clock_ctrl_port_t;
+typedef exception_handler_t exception_port_t;
+typedef exception_handler_array_t exception_port_arrary_t;
+typedef char vfs_path_t[4096];
+typedef char nspace_path_t[1024]; /* 1024 == PATH_MAX */
+typedef char suid_cred_path_t[1024];
+typedef uint32_t suid_cred_uid_t;
+
+#define TASK_NULL ((task_t) 0)
+#define TASK_NAME_NULL ((task_name_t) 0)
+#define TASK_INSPECT_NULL ((task_inspect_t) 0)
+#define TASK_READ_NULL ((task_read_t) 0)
+#define THREAD_NULL ((thread_t) 0)
+#define THREAD_INSPECT_NULL ((thread_inspect_t) 0)
+#define THREAD_READ_NULL ((thread_read_t) 0)
+#define TID_NULL ((uint64_t) 0)
+#define THR_ACT_NULL ((thread_act_t) 0)
+#define IPC_SPACE_NULL ((ipc_space_t) 0)
+#define IPC_SPACE_READ_NULL ((ipc_space_read_t) 0)
+#define IPC_SPACE_INSPECT_NULL ((ipc_space_inspect_t) 0)
+#define COALITION_NULL ((coalition_t) 0)
+#define HOST_NULL ((host_t) 0)
+#define HOST_PRIV_NULL ((host_priv_t) 0)
+#define HOST_SECURITY_NULL ((host_security_t) 0)
+#define PROCESSOR_SET_NULL ((processor_set_t) 0)
+#define PROCESSOR_NULL ((processor_t) 0)
+#define SEMAPHORE_NULL ((semaphore_t) 0)
+#define LOCK_SET_NULL ((lock_set_t) 0)
+#define LEDGER_NULL ((ledger_t) 0)
+#define ALARM_NULL ((alarm_t) 0)
+#define CLOCK_NULL ((clock_t) 0)
+#define UND_SERVER_NULL ((UNDServerRef) 0)
+#define ARCADE_REG_NULL ((arcade_register_t) 0)
+#define MACH_EVENTLINK_NULL ((mach_eventlink_t) 0)
+#define IPC_EVENTLINK_NULL ((ipc_eventlink_t) 0)
+#define SUID_CRED_NULL ((suid_cred_t) 0)
+
+/* capability strictly _DECREASING_.
+ * not ordered the other way around because we want TASK_FLAVOR_CONTROL
+ * to be closest to the itk_lock. see task.h.
+ */
+typedef unsigned int mach_task_flavor_t;
+#define TASK_FLAVOR_CONTROL 0 /* a task_t */
+#define TASK_FLAVOR_READ 1 /* a task_read_t */
+#define TASK_FLAVOR_INSPECT 2 /* a task_inspect_t */
+#define TASK_FLAVOR_NAME 3 /* a task_name_t */
+
+/* capability strictly _DECREASING_ */
+typedef unsigned int mach_thread_flavor_t;
+#define THREAD_FLAVOR_CONTROL 0 /* a thread_t */
+#define THREAD_FLAVOR_READ 1 /* a thread_read_t */
+#define THREAD_FLAVOR_INSPECT 2 /* a thread_inspect_t */
+
+/* DEPRECATED */
+typedef natural_t ledger_item_t;
+#define LEDGER_ITEM_INFINITY ((ledger_item_t) (~0))
+
+typedef int64_t ledger_amount_t;
+#define LEDGER_LIMIT_INFINITY ((ledger_amount_t)((1ULL << 63) - 1))
+
+typedef mach_vm_offset_t *emulation_vector_t;
+typedef char *user_subsystem_t;
+
+typedef char *labelstr_t;
+/*
+ * Backwards compatibility, for those programs written
+ * before mach/{std,mach}_types.{defs,h} were set up.
+ */
+#include <mach/std_types.h>
+
+#endif /* _MACH_MACH_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine.h b/lib/libc/include/aarch64-macos-gnu/mach/machine.h
new file mode 100644
index 0000000000..7bcc490914
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine.h
@@ -0,0 +1,411 @@
+/*
+ * Copyright (c) 2007-2016 Apple, Inc. All rights reserved.
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/* File: machine.h
+ * Author: Avadis Tevanian, Jr.
+ * Date: 1986
+ *
+ * Machine independent machine abstraction.
+ */
+
+#ifndef _MACH_MACHINE_H_
+#define _MACH_MACHINE_H_
+
+#ifndef __ASSEMBLER__
+
+#include <stdint.h>
+#include <mach/machine/vm_types.h>
+#include <mach/boolean.h>
+
+typedef integer_t cpu_type_t;
+typedef integer_t cpu_subtype_t;
+typedef integer_t cpu_threadtype_t;
+
+#define CPU_STATE_MAX 4
+
+#define CPU_STATE_USER 0
+#define CPU_STATE_SYSTEM 1
+#define CPU_STATE_IDLE 2
+#define CPU_STATE_NICE 3
+
+
+
+/*
+ * Capability bits used in the definition of cpu_type.
+ */
+#define CPU_ARCH_MASK 0xff000000 /* mask for architecture bits */
+#define CPU_ARCH_ABI64 0x01000000 /* 64 bit ABI */
+#define CPU_ARCH_ABI64_32 0x02000000 /* ABI for 64-bit hardware with 32-bit types; LP32 */
+
+/*
+ * Machine types known by all.
+ */
+
+#define CPU_TYPE_ANY ((cpu_type_t) -1)
+
+#define CPU_TYPE_VAX ((cpu_type_t) 1)
+/* skip ((cpu_type_t) 2) */
+/* skip ((cpu_type_t) 3) */
+/* skip ((cpu_type_t) 4) */
+/* skip ((cpu_type_t) 5) */
+#define CPU_TYPE_MC680x0 ((cpu_type_t) 6)
+#define CPU_TYPE_X86 ((cpu_type_t) 7)
+#define CPU_TYPE_I386 CPU_TYPE_X86 /* compatibility */
+#define CPU_TYPE_X86_64 (CPU_TYPE_X86 | CPU_ARCH_ABI64)
+
+/* skip CPU_TYPE_MIPS ((cpu_type_t) 8) */
+/* skip ((cpu_type_t) 9) */
+#define CPU_TYPE_MC98000 ((cpu_type_t) 10)
+#define CPU_TYPE_HPPA ((cpu_type_t) 11)
+#define CPU_TYPE_ARM ((cpu_type_t) 12)
+#define CPU_TYPE_ARM64 (CPU_TYPE_ARM | CPU_ARCH_ABI64)
+#define CPU_TYPE_ARM64_32 (CPU_TYPE_ARM | CPU_ARCH_ABI64_32)
+#define CPU_TYPE_MC88000 ((cpu_type_t) 13)
+#define CPU_TYPE_SPARC ((cpu_type_t) 14)
+#define CPU_TYPE_I860 ((cpu_type_t) 15)
+/* skip CPU_TYPE_ALPHA ((cpu_type_t) 16) */
+/* skip ((cpu_type_t) 17) */
+#define CPU_TYPE_POWERPC ((cpu_type_t) 18)
+#define CPU_TYPE_POWERPC64 (CPU_TYPE_POWERPC | CPU_ARCH_ABI64)
+/* skip ((cpu_type_t) 19) */
+/* skip ((cpu_type_t) 20 */
+/* skip ((cpu_type_t) 21 */
+/* skip ((cpu_type_t) 22 */
+
+/*
+ * Machine subtypes (these are defined here, instead of in a machine
+ * dependent directory, so that any program can get all definitions
+ * regardless of where is it compiled).
+ */
+
+/*
+ * Capability bits used in the definition of cpu_subtype.
+ */
+#define CPU_SUBTYPE_MASK 0xff000000 /* mask for feature flags */
+#define CPU_SUBTYPE_LIB64 0x80000000 /* 64 bit libraries */
+#define CPU_SUBTYPE_PTRAUTH_ABI 0x80000000 /* pointer authentication with versioned ABI */
+
+/*
+ * When selecting a slice, ANY will pick the slice with the best
+ * grading for the selected cpu_type_t, unlike the "ALL" subtypes,
+ * which are the slices that can run on any hardware for that cpu type.
+ */
+#define CPU_SUBTYPE_ANY ((cpu_subtype_t) -1)
+
+/*
+ * Object files that are hand-crafted to run on any
+ * implementation of an architecture are tagged with
+ * CPU_SUBTYPE_MULTIPLE. This functions essentially the same as
+ * the "ALL" subtype of an architecture except that it allows us
+ * to easily find object files that may need to be modified
+ * whenever a new implementation of an architecture comes out.
+ *
+ * It is the responsibility of the implementor to make sure the
+ * software handles unsupported implementations elegantly.
+ */
+#define CPU_SUBTYPE_MULTIPLE ((cpu_subtype_t) -1)
+#define CPU_SUBTYPE_LITTLE_ENDIAN ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_BIG_ENDIAN ((cpu_subtype_t) 1)
+
+/*
+ * Machine threadtypes.
+ * This is none - not defined - for most machine types/subtypes.
+ */
+#define CPU_THREADTYPE_NONE ((cpu_threadtype_t) 0)
+
+/*
+ * VAX subtypes (these do *not* necessary conform to the actual cpu
+ * ID assigned by DEC available via the SID register).
+ */
+
+#define CPU_SUBTYPE_VAX_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_VAX780 ((cpu_subtype_t) 1)
+#define CPU_SUBTYPE_VAX785 ((cpu_subtype_t) 2)
+#define CPU_SUBTYPE_VAX750 ((cpu_subtype_t) 3)
+#define CPU_SUBTYPE_VAX730 ((cpu_subtype_t) 4)
+#define CPU_SUBTYPE_UVAXI ((cpu_subtype_t) 5)
+#define CPU_SUBTYPE_UVAXII ((cpu_subtype_t) 6)
+#define CPU_SUBTYPE_VAX8200 ((cpu_subtype_t) 7)
+#define CPU_SUBTYPE_VAX8500 ((cpu_subtype_t) 8)
+#define CPU_SUBTYPE_VAX8600 ((cpu_subtype_t) 9)
+#define CPU_SUBTYPE_VAX8650 ((cpu_subtype_t) 10)
+#define CPU_SUBTYPE_VAX8800 ((cpu_subtype_t) 11)
+#define CPU_SUBTYPE_UVAXIII ((cpu_subtype_t) 12)
+
+/*
+ * 680x0 subtypes
+ *
+ * The subtype definitions here are unusual for historical reasons.
+ * NeXT used to consider 68030 code as generic 68000 code. For
+ * backwards compatability:
+ *
+ * CPU_SUBTYPE_MC68030 symbol has been preserved for source code
+ * compatability.
+ *
+ * CPU_SUBTYPE_MC680x0_ALL has been defined to be the same
+ * subtype as CPU_SUBTYPE_MC68030 for binary comatability.
+ *
+ * CPU_SUBTYPE_MC68030_ONLY has been added to allow new object
+ * files to be tagged as containing 68030-specific instructions.
+ */
+
+#define CPU_SUBTYPE_MC680x0_ALL ((cpu_subtype_t) 1)
+#define CPU_SUBTYPE_MC68030 ((cpu_subtype_t) 1) /* compat */
+#define CPU_SUBTYPE_MC68040 ((cpu_subtype_t) 2)
+#define CPU_SUBTYPE_MC68030_ONLY ((cpu_subtype_t) 3)
+
+/*
+ * I386 subtypes
+ */
+
+#define CPU_SUBTYPE_INTEL(f, m) ((cpu_subtype_t) (f) + ((m) << 4))
+
+#define CPU_SUBTYPE_I386_ALL CPU_SUBTYPE_INTEL(3, 0)
+#define CPU_SUBTYPE_386 CPU_SUBTYPE_INTEL(3, 0)
+#define CPU_SUBTYPE_486 CPU_SUBTYPE_INTEL(4, 0)
+#define CPU_SUBTYPE_486SX CPU_SUBTYPE_INTEL(4, 8) // 8 << 4 = 128
+#define CPU_SUBTYPE_586 CPU_SUBTYPE_INTEL(5, 0)
+#define CPU_SUBTYPE_PENT CPU_SUBTYPE_INTEL(5, 0)
+#define CPU_SUBTYPE_PENTPRO CPU_SUBTYPE_INTEL(6, 1)
+#define CPU_SUBTYPE_PENTII_M3 CPU_SUBTYPE_INTEL(6, 3)
+#define CPU_SUBTYPE_PENTII_M5 CPU_SUBTYPE_INTEL(6, 5)
+#define CPU_SUBTYPE_CELERON CPU_SUBTYPE_INTEL(7, 6)
+#define CPU_SUBTYPE_CELERON_MOBILE CPU_SUBTYPE_INTEL(7, 7)
+#define CPU_SUBTYPE_PENTIUM_3 CPU_SUBTYPE_INTEL(8, 0)
+#define CPU_SUBTYPE_PENTIUM_3_M CPU_SUBTYPE_INTEL(8, 1)
+#define CPU_SUBTYPE_PENTIUM_3_XEON CPU_SUBTYPE_INTEL(8, 2)
+#define CPU_SUBTYPE_PENTIUM_M CPU_SUBTYPE_INTEL(9, 0)
+#define CPU_SUBTYPE_PENTIUM_4 CPU_SUBTYPE_INTEL(10, 0)
+#define CPU_SUBTYPE_PENTIUM_4_M CPU_SUBTYPE_INTEL(10, 1)
+#define CPU_SUBTYPE_ITANIUM CPU_SUBTYPE_INTEL(11, 0)
+#define CPU_SUBTYPE_ITANIUM_2 CPU_SUBTYPE_INTEL(11, 1)
+#define CPU_SUBTYPE_XEON CPU_SUBTYPE_INTEL(12, 0)
+#define CPU_SUBTYPE_XEON_MP CPU_SUBTYPE_INTEL(12, 1)
+
+#define CPU_SUBTYPE_INTEL_FAMILY(x) ((x) & 15)
+#define CPU_SUBTYPE_INTEL_FAMILY_MAX 15
+
+#define CPU_SUBTYPE_INTEL_MODEL(x) ((x) >> 4)
+#define CPU_SUBTYPE_INTEL_MODEL_ALL 0
+
+/*
+ * X86 subtypes.
+ */
+
+#define CPU_SUBTYPE_X86_ALL ((cpu_subtype_t)3)
+#define CPU_SUBTYPE_X86_64_ALL ((cpu_subtype_t)3)
+#define CPU_SUBTYPE_X86_ARCH1 ((cpu_subtype_t)4)
+#define CPU_SUBTYPE_X86_64_H ((cpu_subtype_t)8) /* Haswell feature subset */
+
+
+#define CPU_THREADTYPE_INTEL_HTT ((cpu_threadtype_t) 1)
+
+/*
+ * Mips subtypes.
+ */
+
+#define CPU_SUBTYPE_MIPS_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_MIPS_R2300 ((cpu_subtype_t) 1)
+#define CPU_SUBTYPE_MIPS_R2600 ((cpu_subtype_t) 2)
+#define CPU_SUBTYPE_MIPS_R2800 ((cpu_subtype_t) 3)
+#define CPU_SUBTYPE_MIPS_R2000a ((cpu_subtype_t) 4) /* pmax */
+#define CPU_SUBTYPE_MIPS_R2000 ((cpu_subtype_t) 5)
+#define CPU_SUBTYPE_MIPS_R3000a ((cpu_subtype_t) 6) /* 3max */
+#define CPU_SUBTYPE_MIPS_R3000 ((cpu_subtype_t) 7)
+
+/*
+ * MC98000 (PowerPC) subtypes
+ */
+#define CPU_SUBTYPE_MC98000_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_MC98601 ((cpu_subtype_t) 1)
+
+/*
+ * HPPA subtypes for Hewlett-Packard HP-PA family of
+ * risc processors. Port by NeXT to 700 series.
+ */
+
+#define CPU_SUBTYPE_HPPA_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_HPPA_7100 ((cpu_subtype_t) 0) /* compat */
+#define CPU_SUBTYPE_HPPA_7100LC ((cpu_subtype_t) 1)
+
+/*
+ * MC88000 subtypes.
+ */
+#define CPU_SUBTYPE_MC88000_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_MC88100 ((cpu_subtype_t) 1)
+#define CPU_SUBTYPE_MC88110 ((cpu_subtype_t) 2)
+
+/*
+ * SPARC subtypes
+ */
+#define CPU_SUBTYPE_SPARC_ALL ((cpu_subtype_t) 0)
+
+/*
+ * I860 subtypes
+ */
+#define CPU_SUBTYPE_I860_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_I860_860 ((cpu_subtype_t) 1)
+
+/*
+ * PowerPC subtypes
+ */
+#define CPU_SUBTYPE_POWERPC_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_POWERPC_601 ((cpu_subtype_t) 1)
+#define CPU_SUBTYPE_POWERPC_602 ((cpu_subtype_t) 2)
+#define CPU_SUBTYPE_POWERPC_603 ((cpu_subtype_t) 3)
+#define CPU_SUBTYPE_POWERPC_603e ((cpu_subtype_t) 4)
+#define CPU_SUBTYPE_POWERPC_603ev ((cpu_subtype_t) 5)
+#define CPU_SUBTYPE_POWERPC_604 ((cpu_subtype_t) 6)
+#define CPU_SUBTYPE_POWERPC_604e ((cpu_subtype_t) 7)
+#define CPU_SUBTYPE_POWERPC_620 ((cpu_subtype_t) 8)
+#define CPU_SUBTYPE_POWERPC_750 ((cpu_subtype_t) 9)
+#define CPU_SUBTYPE_POWERPC_7400 ((cpu_subtype_t) 10)
+#define CPU_SUBTYPE_POWERPC_7450 ((cpu_subtype_t) 11)
+#define CPU_SUBTYPE_POWERPC_970 ((cpu_subtype_t) 100)
+
+/*
+ * ARM subtypes
+ */
+#define CPU_SUBTYPE_ARM_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_ARM_V4T ((cpu_subtype_t) 5)
+#define CPU_SUBTYPE_ARM_V6 ((cpu_subtype_t) 6)
+#define CPU_SUBTYPE_ARM_V5TEJ ((cpu_subtype_t) 7)
+#define CPU_SUBTYPE_ARM_XSCALE ((cpu_subtype_t) 8)
+#define CPU_SUBTYPE_ARM_V7 ((cpu_subtype_t) 9) /* ARMv7-A and ARMv7-R */
+#define CPU_SUBTYPE_ARM_V7F ((cpu_subtype_t) 10) /* Cortex A9 */
+#define CPU_SUBTYPE_ARM_V7S ((cpu_subtype_t) 11) /* Swift */
+#define CPU_SUBTYPE_ARM_V7K ((cpu_subtype_t) 12)
+#define CPU_SUBTYPE_ARM_V8 ((cpu_subtype_t) 13)
+#define CPU_SUBTYPE_ARM_V6M ((cpu_subtype_t) 14) /* Not meant to be run under xnu */
+#define CPU_SUBTYPE_ARM_V7M ((cpu_subtype_t) 15) /* Not meant to be run under xnu */
+#define CPU_SUBTYPE_ARM_V7EM ((cpu_subtype_t) 16) /* Not meant to be run under xnu */
+#define CPU_SUBTYPE_ARM_V8M ((cpu_subtype_t) 17) /* Not meant to be run under xnu */
+
+/*
+ * ARM64 subtypes
+ */
+#define CPU_SUBTYPE_ARM64_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_ARM64_V8 ((cpu_subtype_t) 1)
+#define CPU_SUBTYPE_ARM64E ((cpu_subtype_t) 2)
+
+/* CPU subtype feature flags for ptrauth on arm64e platforms */
+#define CPU_SUBTYPE_ARM64_PTR_AUTH_MASK 0x0f000000
+#define CPU_SUBTYPE_ARM64_PTR_AUTH_VERSION(x) (((x) & CPU_SUBTYPE_ARM64_PTR_AUTH_MASK) >> 24)
+
+/*
+ * ARM64_32 subtypes
+ */
+#define CPU_SUBTYPE_ARM64_32_ALL ((cpu_subtype_t) 0)
+#define CPU_SUBTYPE_ARM64_32_V8 ((cpu_subtype_t) 1)
+
+#endif /* !__ASSEMBLER__ */
+
+/*
+ * CPU families (sysctl hw.cpufamily)
+ *
+ * These are meant to identify the CPU's marketing name - an
+ * application can map these to (possibly) localized strings.
+ * NB: the encodings of the CPU families are intentionally arbitrary.
+ * There is no ordering, and you should never try to deduce whether
+ * or not some feature is available based on the family.
+ * Use feature flags (eg, hw.optional.altivec) to test for optional
+ * functionality.
+ */
+#define CPUFAMILY_UNKNOWN 0
+#define CPUFAMILY_POWERPC_G3 0xcee41549
+#define CPUFAMILY_POWERPC_G4 0x77c184ae
+#define CPUFAMILY_POWERPC_G5 0xed76d8aa
+#define CPUFAMILY_INTEL_6_13 0xaa33392b
+#define CPUFAMILY_INTEL_PENRYN 0x78ea4fbc
+#define CPUFAMILY_INTEL_NEHALEM 0x6b5a4cd2
+#define CPUFAMILY_INTEL_WESTMERE 0x573b5eec
+#define CPUFAMILY_INTEL_SANDYBRIDGE 0x5490b78c
+#define CPUFAMILY_INTEL_IVYBRIDGE 0x1f65e835
+#define CPUFAMILY_INTEL_HASWELL 0x10b282dc
+#define CPUFAMILY_INTEL_BROADWELL 0x582ed09c
+#define CPUFAMILY_INTEL_SKYLAKE 0x37fc219f
+#define CPUFAMILY_INTEL_KABYLAKE 0x0f817246
+#define CPUFAMILY_INTEL_ICELAKE 0x38435547
+#if !defined(RC_HIDE_XNU_COMETLAKE)
+#define CPUFAMILY_INTEL_COMETLAKE 0x1cf8a03e
+#endif /* not RC_HIDE_XNU_COMETLAKE */
+#define CPUFAMILY_ARM_9 0xe73283ae
+#define CPUFAMILY_ARM_11 0x8ff620d8
+#define CPUFAMILY_ARM_XSCALE 0x53b005f5
+#define CPUFAMILY_ARM_12 0xbd1b0ae9
+#define CPUFAMILY_ARM_13 0x0cc90e64
+#define CPUFAMILY_ARM_14 0x96077ef1
+#define CPUFAMILY_ARM_15 0xa8511bca
+#define CPUFAMILY_ARM_SWIFT 0x1e2d6381
+#define CPUFAMILY_ARM_CYCLONE 0x37a09642
+#define CPUFAMILY_ARM_TYPHOON 0x2c91a47e
+#define CPUFAMILY_ARM_TWISTER 0x92fb37c8
+#define CPUFAMILY_ARM_HURRICANE 0x67ceee93
+#define CPUFAMILY_ARM_MONSOON_MISTRAL 0xe81e7ef6
+#define CPUFAMILY_ARM_VORTEX_TEMPEST 0x07d34b9f
+#define CPUFAMILY_ARM_LIGHTNING_THUNDER 0x462504d2
+#define CPUFAMILY_ARM_FIRESTORM_ICESTORM 0x1b588bb3
+
+#define CPUSUBFAMILY_UNKNOWN 0
+#define CPUSUBFAMILY_ARM_HP 1
+#define CPUSUBFAMILY_ARM_HG 2
+#define CPUSUBFAMILY_ARM_M 3
+#define CPUSUBFAMILY_ARM_HS 4
+#define CPUSUBFAMILY_ARM_HC_HD 5
+
+/* The following synonyms are deprecated: */
+#define CPUFAMILY_INTEL_6_23 CPUFAMILY_INTEL_PENRYN
+#define CPUFAMILY_INTEL_6_26 CPUFAMILY_INTEL_NEHALEM
+
+
+#endif /* _MACH_MACHINE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/_structs.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/_structs.h
new file mode 100644
index 0000000000..915d652c83
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/_structs.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2017 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE__STRUCTS_H_
+#define _MACH_MACHINE__STRUCTS_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/_structs.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/_structs.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE__STRUCTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/boolean.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/boolean.h
new file mode 100644
index 0000000000..9d69543df9
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/boolean.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_BOOLEAN_H_
+#define _MACH_MACHINE_BOOLEAN_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/boolean.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/boolean.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_BOOLEAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/exception.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/exception.h
new file mode 100644
index 0000000000..20b4f63ae6
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/exception.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_EXCEPTION_H_
+#define _MACH_MACHINE_EXCEPTION_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/exception.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/exception.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_EXCEPTION_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/kern_return.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/kern_return.h
new file mode 100644
index 0000000000..67eac8ddf3
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/kern_return.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_KERN_RETURN_H_
+#define _MACH_MACHINE_KERN_RETURN_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/kern_return.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/kern_return.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_KERN_RETURN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/processor_info.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/processor_info.h
new file mode 100644
index 0000000000..e5a6a075ff
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/processor_info.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_PROCESSOR_INFO_H_
+#define _MACH_MACHINE_PROCESSOR_INFO_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/processor_info.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/processor_info.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_PROCESSOR_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/rpc.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/rpc.h
new file mode 100644
index 0000000000..b4ac238e1d
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/rpc.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_RPC_H_
+#define _MACH_MACHINE_RPC_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/rpc.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/rpc.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_RPC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/thread_state.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/thread_state.h
new file mode 100644
index 0000000000..167b263c82
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/thread_state.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_THREAD_STATE_H_
+#define _MACH_MACHINE_THREAD_STATE_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/thread_state.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/thread_state.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_THREAD_STATE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/thread_status.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/thread_status.h
new file mode 100644
index 0000000000..6b087b68b0
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/thread_status.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_THREAD_STATUS_H_
+#define _MACH_MACHINE_THREAD_STATUS_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/thread_status.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/thread_status.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_THREAD_STATUS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/vm_param.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/vm_param.h
new file mode 100644
index 0000000000..dee8f8b2ce
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/vm_param.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_VM_PARAM_H_
+#define _MACH_MACHINE_VM_PARAM_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/vm_param.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/vm_param.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_VM_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/machine/vm_types.h b/lib/libc/include/aarch64-macos-gnu/mach/machine/vm_types.h
new file mode 100644
index 0000000000..5613cd797c
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/machine/vm_types.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_MACHINE_VM_TYPES_H_
+#define _MACH_MACHINE_VM_TYPES_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "mach/i386/vm_types.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "mach/arm/vm_types.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _MACH_MACHINE_VM_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/message.h b/lib/libc/include/aarch64-macos-gnu/mach/message.h
new file mode 100644
index 0000000000..6cbd768500
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/message.h
@@ -0,0 +1,908 @@
+/*
+ * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ * NOTICE: This file was modified by McAfee Research in 2004 to introduce
+ * support for mandatory and extensible security protections. This notice
+ * is included in support of clause 2.2 (b) of the Apple Public License,
+ * Version 2.0.
+ * Copyright (c) 2005 SPARTA, Inc.
+ */
+/*
+ */
+/*
+ * File: mach/message.h
+ *
+ * Mach IPC message and primitive function definitions.
+ */
+
+#ifndef _MACH_MESSAGE_H_
+#define _MACH_MESSAGE_H_
+
+#include <stdint.h>
+#include <mach/port.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/machine/vm_types.h>
+
+#include <sys/cdefs.h>
+#include <sys/appleapiopts.h>
+#include <Availability.h>
+
+/*
+ * The timeout mechanism uses mach_msg_timeout_t values,
+ * passed by value. The timeout units are milliseconds.
+ * It is controlled with the MACH_SEND_TIMEOUT
+ * and MACH_RCV_TIMEOUT options.
+ */
+
+typedef natural_t mach_msg_timeout_t;
+
+/*
+ * The value to be used when there is no timeout.
+ * (No MACH_SEND_TIMEOUT/MACH_RCV_TIMEOUT option.)
+ */
+
+#define MACH_MSG_TIMEOUT_NONE ((mach_msg_timeout_t) 0)
+
+/*
+ * The kernel uses MACH_MSGH_BITS_COMPLEX as a hint. If it isn't on, it
+ * assumes the body of the message doesn't contain port rights or OOL
+ * data. The field is set in received messages. A user task must
+ * use caution in interpreting the body of a message if the bit isn't
+ * on, because the mach_msg_type's in the body might "lie" about the
+ * contents. If the bit isn't on, but the mach_msg_types
+ * in the body specify rights or OOL data, the behavior is undefined.
+ * (Ie, an error may or may not be produced.)
+ *
+ * The value of MACH_MSGH_BITS_REMOTE determines the interpretation
+ * of the msgh_remote_port field. It is handled like a msgt_name,
+ * but must result in a send or send-once type right.
+ *
+ * The value of MACH_MSGH_BITS_LOCAL determines the interpretation
+ * of the msgh_local_port field. It is handled like a msgt_name,
+ * and also must result in a send or send-once type right.
+ *
+ * The value of MACH_MSGH_BITS_VOUCHER determines the interpretation
+ * of the msgh_voucher_port field. It is handled like a msgt_name,
+ * but must result in a send right (and the msgh_voucher_port field
+ * must be the name of a send right to a Mach voucher kernel object.
+ *
+ * MACH_MSGH_BITS() combines two MACH_MSG_TYPE_* values, for the remote
+ * and local fields, into a single value suitable for msgh_bits.
+ *
+ * MACH_MSGH_BITS_CIRCULAR should be zero; is is used internally.
+ *
+ * The unused bits should be zero and are reserved for the kernel
+ * or for future interface expansion.
+ */
+
+#define MACH_MSGH_BITS_ZERO 0x00000000
+
+#define MACH_MSGH_BITS_REMOTE_MASK 0x0000001f
+#define MACH_MSGH_BITS_LOCAL_MASK 0x00001f00
+#define MACH_MSGH_BITS_VOUCHER_MASK 0x001f0000
+
+#define MACH_MSGH_BITS_PORTS_MASK \
+ (MACH_MSGH_BITS_REMOTE_MASK | \
+ MACH_MSGH_BITS_LOCAL_MASK | \
+ MACH_MSGH_BITS_VOUCHER_MASK)
+
+#define MACH_MSGH_BITS_COMPLEX 0x80000000U /* message is complex */
+
+#define MACH_MSGH_BITS_USER 0x801f1f1fU /* allowed bits user->kernel */
+
+#define MACH_MSGH_BITS_RAISEIMP 0x20000000U /* importance raised due to msg */
+#define MACH_MSGH_BITS_DENAP MACH_MSGH_BITS_RAISEIMP
+
+#define MACH_MSGH_BITS_IMPHOLDASRT 0x10000000U /* assertion help, userland private */
+#define MACH_MSGH_BITS_DENAPHOLDASRT MACH_MSGH_BITS_IMPHOLDASRT
+
+#define MACH_MSGH_BITS_CIRCULAR 0x10000000U /* message circular, kernel private */
+
+#define MACH_MSGH_BITS_USED 0xb01f1f1fU
+
+/* setter macros for the bits */
+#define MACH_MSGH_BITS(remote, local) /* legacy */ \
+ ((remote) | ((local) << 8))
+#define MACH_MSGH_BITS_SET_PORTS(remote, local, voucher) \
+ (((remote) & MACH_MSGH_BITS_REMOTE_MASK) | \
+ (((local) << 8) & MACH_MSGH_BITS_LOCAL_MASK) | \
+ (((voucher) << 16) & MACH_MSGH_BITS_VOUCHER_MASK))
+#define MACH_MSGH_BITS_SET(remote, local, voucher, other) \
+ (MACH_MSGH_BITS_SET_PORTS((remote), (local), (voucher)) \
+ | ((other) &~ MACH_MSGH_BITS_PORTS_MASK))
+
+/* getter macros for pulling values out of the bits field */
+#define MACH_MSGH_BITS_REMOTE(bits) \
+ ((bits) & MACH_MSGH_BITS_REMOTE_MASK)
+#define MACH_MSGH_BITS_LOCAL(bits) \
+ (((bits) & MACH_MSGH_BITS_LOCAL_MASK) >> 8)
+#define MACH_MSGH_BITS_VOUCHER(bits) \
+ (((bits) & MACH_MSGH_BITS_VOUCHER_MASK) >> 16)
+#define MACH_MSGH_BITS_PORTS(bits) \
+ ((bits) & MACH_MSGH_BITS_PORTS_MASK)
+#define MACH_MSGH_BITS_OTHER(bits) \
+ ((bits) &~ MACH_MSGH_BITS_PORTS_MASK)
+
+/* checking macros */
+#define MACH_MSGH_BITS_HAS_REMOTE(bits) \
+ (MACH_MSGH_BITS_REMOTE(bits) != MACH_MSGH_BITS_ZERO)
+#define MACH_MSGH_BITS_HAS_LOCAL(bits) \
+ (MACH_MSGH_BITS_LOCAL(bits) != MACH_MSGH_BITS_ZERO)
+#define MACH_MSGH_BITS_HAS_VOUCHER(bits) \
+ (MACH_MSGH_BITS_VOUCHER(bits) != MACH_MSGH_BITS_ZERO)
+#define MACH_MSGH_BITS_IS_COMPLEX(bits) \
+ (((bits) & MACH_MSGH_BITS_COMPLEX) != MACH_MSGH_BITS_ZERO)
+
+/* importance checking macros */
+#define MACH_MSGH_BITS_RAISED_IMPORTANCE(bits) \
+ (((bits) & MACH_MSGH_BITS_RAISEIMP) != MACH_MSGH_BITS_ZERO)
+#define MACH_MSGH_BITS_HOLDS_IMPORTANCE_ASSERTION(bits) \
+ (((bits) & MACH_MSGH_BITS_IMPHOLDASRT) != MACH_MSGH_BITS_ZERO)
+
+/*
+ * Every message starts with a message header.
+ * Following the message header, if the message is complex, are a count
+ * of type descriptors and the type descriptors themselves
+ * (mach_msg_descriptor_t). The size of the message must be specified in
+ * bytes, and includes the message header, descriptor count, descriptors,
+ * and inline data.
+ *
+ * The msgh_remote_port field specifies the destination of the message.
+ * It must specify a valid send or send-once right for a port.
+ *
+ * The msgh_local_port field specifies a "reply port". Normally,
+ * This field carries a send-once right that the receiver will use
+ * to reply to the message. It may carry the values MACH_PORT_NULL,
+ * MACH_PORT_DEAD, a send-once right, or a send right.
+ *
+ * The msgh_voucher_port field specifies a Mach voucher port. Only
+ * send rights to kernel-implemented Mach Voucher kernel objects in
+ * addition to MACH_PORT_NULL or MACH_PORT_DEAD may be passed.
+ *
+ * The msgh_id field is uninterpreted by the message primitives.
+ * It normally carries information specifying the format
+ * or meaning of the message.
+ */
+
+typedef unsigned int mach_msg_bits_t;
+typedef natural_t mach_msg_size_t;
+typedef integer_t mach_msg_id_t;
+
+#define MACH_MSG_SIZE_NULL (mach_msg_size_t *) 0
+
+typedef unsigned int mach_msg_priority_t;
+
+#define MACH_MSG_PRIORITY_UNSPECIFIED (mach_msg_priority_t) 0
+
+
+typedef unsigned int mach_msg_type_name_t;
+
+#define MACH_MSG_TYPE_MOVE_RECEIVE 16 /* Must hold receive right */
+#define MACH_MSG_TYPE_MOVE_SEND 17 /* Must hold send right(s) */
+#define MACH_MSG_TYPE_MOVE_SEND_ONCE 18 /* Must hold sendonce right */
+#define MACH_MSG_TYPE_COPY_SEND 19 /* Must hold send right(s) */
+#define MACH_MSG_TYPE_MAKE_SEND 20 /* Must hold receive right */
+#define MACH_MSG_TYPE_MAKE_SEND_ONCE 21 /* Must hold receive right */
+#define MACH_MSG_TYPE_COPY_RECEIVE 22 /* NOT VALID */
+#define MACH_MSG_TYPE_DISPOSE_RECEIVE 24 /* must hold receive right */
+#define MACH_MSG_TYPE_DISPOSE_SEND 25 /* must hold send right(s) */
+#define MACH_MSG_TYPE_DISPOSE_SEND_ONCE 26 /* must hold sendonce right */
+
+typedef unsigned int mach_msg_copy_options_t;
+
+#define MACH_MSG_PHYSICAL_COPY 0
+#define MACH_MSG_VIRTUAL_COPY 1
+#define MACH_MSG_ALLOCATE 2
+#define MACH_MSG_OVERWRITE 3 /* deprecated */
+#ifdef MACH_KERNEL
+#define MACH_MSG_KALLOC_COPY_T 4
+#endif /* MACH_KERNEL */
+
+#define MACH_MSG_GUARD_FLAGS_NONE 0x0000
+#define MACH_MSG_GUARD_FLAGS_IMMOVABLE_RECEIVE 0x0001 /* Move the receive right and mark it as immovable */
+#define MACH_MSG_GUARD_FLAGS_UNGUARDED_ON_SEND 0x0002 /* Verify that the port is unguarded */
+#define MACH_MSG_GUARD_FLAGS_MASK 0x0003 /* Valid flag bits */
+typedef unsigned int mach_msg_guard_flags_t;
+
+/*
+ * In a complex mach message, the mach_msg_header_t is followed by
+ * a descriptor count, then an array of that number of descriptors
+ * (mach_msg_*_descriptor_t). The type field of mach_msg_type_descriptor_t
+ * (which any descriptor can be cast to) indicates the flavor of the
+ * descriptor.
+ *
+ * Note that in LP64, the various types of descriptors are no longer all
+ * the same size as mach_msg_descriptor_t, so the array cannot be indexed
+ * as expected.
+ */
+
+typedef unsigned int mach_msg_descriptor_type_t;
+
+#define MACH_MSG_PORT_DESCRIPTOR 0
+#define MACH_MSG_OOL_DESCRIPTOR 1
+#define MACH_MSG_OOL_PORTS_DESCRIPTOR 2
+#define MACH_MSG_OOL_VOLATILE_DESCRIPTOR 3
+#define MACH_MSG_GUARDED_PORT_DESCRIPTOR 4
+
+#pragma pack(push, 4)
+
+typedef struct{
+ natural_t pad1;
+ mach_msg_size_t pad2;
+ unsigned int pad3 : 24;
+ mach_msg_descriptor_type_t type : 8;
+} mach_msg_type_descriptor_t;
+
+typedef struct{
+ mach_port_t name;
+// Pad to 8 bytes everywhere except the K64 kernel where mach_port_t is 8 bytes
+ mach_msg_size_t pad1;
+ unsigned int pad2 : 16;
+ mach_msg_type_name_t disposition : 8;
+ mach_msg_descriptor_type_t type : 8;
+} mach_msg_port_descriptor_t;
+
+typedef struct{
+ uint32_t address;
+ mach_msg_size_t size;
+ boolean_t deallocate: 8;
+ mach_msg_copy_options_t copy: 8;
+ unsigned int pad1: 8;
+ mach_msg_descriptor_type_t type: 8;
+} mach_msg_ool_descriptor32_t;
+
+typedef struct{
+ uint64_t address;
+ boolean_t deallocate: 8;
+ mach_msg_copy_options_t copy: 8;
+ unsigned int pad1: 8;
+ mach_msg_descriptor_type_t type: 8;
+ mach_msg_size_t size;
+} mach_msg_ool_descriptor64_t;
+
+typedef struct{
+ void* address;
+#if !defined(__LP64__)
+ mach_msg_size_t size;
+#endif
+ boolean_t deallocate: 8;
+ mach_msg_copy_options_t copy: 8;
+ unsigned int pad1: 8;
+ mach_msg_descriptor_type_t type: 8;
+#if defined(__LP64__)
+ mach_msg_size_t size;
+#endif
+} mach_msg_ool_descriptor_t;
+
+typedef struct{
+ uint32_t address;
+ mach_msg_size_t count;
+ boolean_t deallocate: 8;
+ mach_msg_copy_options_t copy: 8;
+ mach_msg_type_name_t disposition : 8;
+ mach_msg_descriptor_type_t type : 8;
+} mach_msg_ool_ports_descriptor32_t;
+
+typedef struct{
+ uint64_t address;
+ boolean_t deallocate: 8;
+ mach_msg_copy_options_t copy: 8;
+ mach_msg_type_name_t disposition : 8;
+ mach_msg_descriptor_type_t type : 8;
+ mach_msg_size_t count;
+} mach_msg_ool_ports_descriptor64_t;
+
+typedef struct{
+ void* address;
+#if !defined(__LP64__)
+ mach_msg_size_t count;
+#endif
+ boolean_t deallocate: 8;
+ mach_msg_copy_options_t copy: 8;
+ mach_msg_type_name_t disposition : 8;
+ mach_msg_descriptor_type_t type : 8;
+#if defined(__LP64__)
+ mach_msg_size_t count;
+#endif
+} mach_msg_ool_ports_descriptor_t;
+
+typedef struct{
+ uint32_t context;
+ mach_port_name_t name;
+ mach_msg_guard_flags_t flags : 16;
+ mach_msg_type_name_t disposition : 8;
+ mach_msg_descriptor_type_t type : 8;
+} mach_msg_guarded_port_descriptor32_t;
+
+typedef struct{
+ uint64_t context;
+ mach_msg_guard_flags_t flags : 16;
+ mach_msg_type_name_t disposition : 8;
+ mach_msg_descriptor_type_t type : 8;
+ mach_port_name_t name;
+} mach_msg_guarded_port_descriptor64_t;
+
+typedef struct{
+ mach_port_context_t context;
+#if !defined(__LP64__)
+ mach_port_name_t name;
+#endif
+ mach_msg_guard_flags_t flags : 16;
+ mach_msg_type_name_t disposition : 8;
+ mach_msg_descriptor_type_t type : 8;
+#if defined(__LP64__)
+ mach_port_name_t name;
+#endif /* defined(__LP64__) */
+} mach_msg_guarded_port_descriptor_t;
+
+/*
+ * LP64support - This union definition is not really
+ * appropriate in LP64 mode because not all descriptors
+ * are of the same size in that environment.
+ */
+typedef union{
+ mach_msg_port_descriptor_t port;
+ mach_msg_ool_descriptor_t out_of_line;
+ mach_msg_ool_ports_descriptor_t ool_ports;
+ mach_msg_type_descriptor_t type;
+ mach_msg_guarded_port_descriptor_t guarded_port;
+} mach_msg_descriptor_t;
+
+typedef struct{
+ mach_msg_size_t msgh_descriptor_count;
+} mach_msg_body_t;
+
+#define MACH_MSG_BODY_NULL (mach_msg_body_t *) 0
+#define MACH_MSG_DESCRIPTOR_NULL (mach_msg_descriptor_t *) 0
+
+typedef struct{
+ mach_msg_bits_t msgh_bits;
+ mach_msg_size_t msgh_size;
+ mach_port_t msgh_remote_port;
+ mach_port_t msgh_local_port;
+ mach_port_name_t msgh_voucher_port;
+ mach_msg_id_t msgh_id;
+} mach_msg_header_t;
+
+#define msgh_reserved msgh_voucher_port
+#define MACH_MSG_NULL (mach_msg_header_t *) 0
+
+typedef struct{
+ mach_msg_header_t header;
+ mach_msg_body_t body;
+} mach_msg_base_t;
+
+typedef unsigned int mach_msg_trailer_type_t;
+
+#define MACH_MSG_TRAILER_FORMAT_0 0
+
+typedef unsigned int mach_msg_trailer_size_t;
+typedef char *mach_msg_trailer_info_t;
+
+typedef struct{
+ mach_msg_trailer_type_t msgh_trailer_type;
+ mach_msg_trailer_size_t msgh_trailer_size;
+} mach_msg_trailer_t;
+
+/*
+ * The msgh_seqno field carries a sequence number
+ * associated with the received-from port. A port's
+ * sequence number is incremented every time a message
+ * is received from it and included in the received
+ * trailer to help put messages back in sequence if
+ * multiple threads receive and/or process received
+ * messages.
+ */
+typedef struct{
+ mach_msg_trailer_type_t msgh_trailer_type;
+ mach_msg_trailer_size_t msgh_trailer_size;
+ mach_port_seqno_t msgh_seqno;
+} mach_msg_seqno_trailer_t;
+
+typedef struct{
+ unsigned int val[2];
+} security_token_t;
+
+typedef struct{
+ mach_msg_trailer_type_t msgh_trailer_type;
+ mach_msg_trailer_size_t msgh_trailer_size;
+ mach_port_seqno_t msgh_seqno;
+ security_token_t msgh_sender;
+} mach_msg_security_trailer_t;
+
+/*
+ * The audit token is an opaque token which identifies
+ * Mach tasks and senders of Mach messages as subjects
+ * to the BSM audit system. Only the appropriate BSM
+ * library routines should be used to interpret the
+ * contents of the audit token as the representation
+ * of the subject identity within the token may change
+ * over time.
+ */
+typedef struct{
+ unsigned int val[8];
+} audit_token_t;
+
+typedef struct{
+ mach_msg_trailer_type_t msgh_trailer_type;
+ mach_msg_trailer_size_t msgh_trailer_size;
+ mach_port_seqno_t msgh_seqno;
+ security_token_t msgh_sender;
+ audit_token_t msgh_audit;
+} mach_msg_audit_trailer_t;
+
+typedef struct{
+ mach_msg_trailer_type_t msgh_trailer_type;
+ mach_msg_trailer_size_t msgh_trailer_size;
+ mach_port_seqno_t msgh_seqno;
+ security_token_t msgh_sender;
+ audit_token_t msgh_audit;
+ mach_port_context_t msgh_context;
+} mach_msg_context_trailer_t;
+
+
+
+typedef struct{
+ mach_port_name_t sender;
+} msg_labels_t;
+
+typedef int mach_msg_filter_id;
+#define MACH_MSG_FILTER_POLICY_ALLOW (mach_msg_filter_id)0
+
+/*
+ * Trailer type to pass MAC policy label info as a mach message trailer.
+ *
+ */
+
+typedef struct{
+ mach_msg_trailer_type_t msgh_trailer_type;
+ mach_msg_trailer_size_t msgh_trailer_size;
+ mach_port_seqno_t msgh_seqno;
+ security_token_t msgh_sender;
+ audit_token_t msgh_audit;
+ mach_port_context_t msgh_context;
+ mach_msg_filter_id msgh_ad;
+ msg_labels_t msgh_labels;
+} mach_msg_mac_trailer_t;
+
+
+#define MACH_MSG_TRAILER_MINIMUM_SIZE sizeof(mach_msg_trailer_t)
+
+/*
+ * These values can change from release to release - but clearly
+ * code cannot request additional trailer elements one was not
+ * compiled to understand. Therefore, it is safe to use this
+ * constant when the same module specified the receive options.
+ * Otherwise, you run the risk that the options requested by
+ * another module may exceed the local modules notion of
+ * MAX_TRAILER_SIZE.
+ */
+
+typedef mach_msg_mac_trailer_t mach_msg_max_trailer_t;
+#define MAX_TRAILER_SIZE ((mach_msg_size_t)sizeof(mach_msg_max_trailer_t))
+
+/*
+ * Legacy requirements keep us from ever updating these defines (even
+ * when the format_0 trailers gain new option data fields in the future).
+ * Therefore, they shouldn't be used going forward. Instead, the sizes
+ * should be compared against the specific element size requested using
+ * REQUESTED_TRAILER_SIZE.
+ */
+typedef mach_msg_security_trailer_t mach_msg_format_0_trailer_t;
+
+/*typedef mach_msg_mac_trailer_t mach_msg_format_0_trailer_t;
+ */
+
+#define MACH_MSG_TRAILER_FORMAT_0_SIZE sizeof(mach_msg_format_0_trailer_t)
+
+#define KERNEL_SECURITY_TOKEN_VALUE { {0, 1} }
+extern const security_token_t KERNEL_SECURITY_TOKEN;
+
+#define KERNEL_AUDIT_TOKEN_VALUE { {0, 0, 0, 0, 0, 0, 0, 0} }
+extern const audit_token_t KERNEL_AUDIT_TOKEN;
+
+typedef integer_t mach_msg_options_t;
+
+typedef struct{
+ mach_msg_header_t header;
+} mach_msg_empty_send_t;
+
+typedef struct{
+ mach_msg_header_t header;
+ mach_msg_trailer_t trailer;
+} mach_msg_empty_rcv_t;
+
+typedef union{
+ mach_msg_empty_send_t send;
+ mach_msg_empty_rcv_t rcv;
+} mach_msg_empty_t;
+
+#pragma pack(pop)
+
+/* utility to round the message size - will become machine dependent */
+#define round_msg(x) (((mach_msg_size_t)(x) + sizeof (natural_t) - 1) & \
+ ~(sizeof (natural_t) - 1))
+
+
+/*
+ * There is no fixed upper bound to the size of Mach messages.
+ */
+#define MACH_MSG_SIZE_MAX ((mach_msg_size_t) ~0)
+
+#if defined(__APPLE_API_PRIVATE)
+/*
+ * But architectural limits of a given implementation, or
+ * temporal conditions may cause unpredictable send failures
+ * for messages larger than MACH_MSG_SIZE_RELIABLE.
+ *
+ * In either case, waiting for memory is [currently] outside
+ * the scope of send timeout values provided to IPC.
+ */
+#define MACH_MSG_SIZE_RELIABLE ((mach_msg_size_t) 256 * 1024)
+#endif
+/*
+ * Compatibility definitions, for code written
+ * when there was a msgh_kind instead of msgh_seqno.
+ */
+#define MACH_MSGH_KIND_NORMAL 0x00000000
+#define MACH_MSGH_KIND_NOTIFICATION 0x00000001
+#define msgh_kind msgh_seqno
+#define mach_msg_kind_t mach_port_seqno_t
+
+typedef natural_t mach_msg_type_size_t;
+typedef natural_t mach_msg_type_number_t;
+
+/*
+ * Values received/carried in messages. Tells the receiver what
+ * sort of port right he now has.
+ *
+ * MACH_MSG_TYPE_PORT_NAME is used to transfer a port name
+ * which should remain uninterpreted by the kernel. (Port rights
+ * are not transferred, just the port name.)
+ */
+
+#define MACH_MSG_TYPE_PORT_NONE 0
+
+#define MACH_MSG_TYPE_PORT_NAME 15
+#define MACH_MSG_TYPE_PORT_RECEIVE MACH_MSG_TYPE_MOVE_RECEIVE
+#define MACH_MSG_TYPE_PORT_SEND MACH_MSG_TYPE_MOVE_SEND
+#define MACH_MSG_TYPE_PORT_SEND_ONCE MACH_MSG_TYPE_MOVE_SEND_ONCE
+
+#define MACH_MSG_TYPE_LAST 22 /* Last assigned */
+
+/*
+ * A dummy value. Mostly used to indicate that the actual value
+ * will be filled in later, dynamically.
+ */
+
+#define MACH_MSG_TYPE_POLYMORPHIC ((mach_msg_type_name_t) -1)
+
+/*
+ * Is a given item a port type?
+ */
+
+#define MACH_MSG_TYPE_PORT_ANY(x) \
+ (((x) >= MACH_MSG_TYPE_MOVE_RECEIVE) && \
+ ((x) <= MACH_MSG_TYPE_MAKE_SEND_ONCE))
+
+#define MACH_MSG_TYPE_PORT_ANY_SEND(x) \
+ (((x) >= MACH_MSG_TYPE_MOVE_SEND) && \
+ ((x) <= MACH_MSG_TYPE_MAKE_SEND_ONCE))
+
+#define MACH_MSG_TYPE_PORT_ANY_RIGHT(x) \
+ (((x) >= MACH_MSG_TYPE_MOVE_RECEIVE) && \
+ ((x) <= MACH_MSG_TYPE_MOVE_SEND_ONCE))
+
+typedef integer_t mach_msg_option_t;
+
+#define MACH_MSG_OPTION_NONE 0x00000000
+
+#define MACH_SEND_MSG 0x00000001
+#define MACH_RCV_MSG 0x00000002
+
+#define MACH_RCV_LARGE 0x00000004 /* report large message sizes */
+#define MACH_RCV_LARGE_IDENTITY 0x00000008 /* identify source of large messages */
+
+#define MACH_SEND_TIMEOUT 0x00000010 /* timeout value applies to send */
+#define MACH_SEND_OVERRIDE 0x00000020 /* priority override for send */
+#define MACH_SEND_INTERRUPT 0x00000040 /* don't restart interrupted sends */
+#define MACH_SEND_NOTIFY 0x00000080 /* arm send-possible notify */
+#define MACH_SEND_ALWAYS 0x00010000 /* ignore qlimits - kernel only */
+#define MACH_SEND_TRAILER 0x00020000 /* sender-provided trailer */
+#define MACH_SEND_NOIMPORTANCE 0x00040000 /* msg won't carry importance */
+#define MACH_SEND_NODENAP MACH_SEND_NOIMPORTANCE
+#define MACH_SEND_IMPORTANCE 0x00080000 /* msg carries importance - kernel only */
+#define MACH_SEND_SYNC_OVERRIDE 0x00100000 /* msg should do sync ipc override */
+#define MACH_SEND_PROPAGATE_QOS 0x00200000 /* IPC should propagate the caller's QoS */
+#define MACH_SEND_SYNC_USE_THRPRI MACH_SEND_PROPAGATE_QOS /* obsolete name */
+#define MACH_SEND_KERNEL 0x00400000 /* full send from kernel space - kernel only */
+#define MACH_SEND_SYNC_BOOTSTRAP_CHECKIN 0x00800000 /* special reply port should boost thread doing sync bootstrap checkin */
+
+#define MACH_RCV_TIMEOUT 0x00000100 /* timeout value applies to receive */
+#define MACH_RCV_NOTIFY 0x00000000 /* legacy name (value was: 0x00000200) */
+#define MACH_RCV_INTERRUPT 0x00000400 /* don't restart interrupted receive */
+#define MACH_RCV_VOUCHER 0x00000800 /* willing to receive voucher port */
+#define MACH_RCV_OVERWRITE 0x00000000 /* scatter receive (deprecated) */
+#define MACH_RCV_GUARDED_DESC 0x00001000 /* Can receive new guarded descriptor */
+#define MACH_RCV_SYNC_WAIT 0x00004000 /* sync waiter waiting for rcv */
+#define MACH_RCV_SYNC_PEEK 0x00008000 /* sync waiter waiting to peek */
+
+#define MACH_MSG_STRICT_REPLY 0x00000200 /* Enforce specific properties about the reply port, and
+ * the context in which a thread replies to a message.
+ * This flag must be passed on both the SEND and RCV */
+
+
+/*
+ * NOTE: a 0x00------ RCV mask implies to ask for
+ * a MACH_MSG_TRAILER_FORMAT_0 with 0 Elements,
+ * which is equivalent to a mach_msg_trailer_t.
+ *
+ * XXXMAC: unlike the rest of the MACH_RCV_* flags, MACH_RCV_TRAILER_LABELS
+ * needs its own private bit since we only calculate its fields when absolutely
+ * required.
+ */
+#define MACH_RCV_TRAILER_NULL 0
+#define MACH_RCV_TRAILER_SEQNO 1
+#define MACH_RCV_TRAILER_SENDER 2
+#define MACH_RCV_TRAILER_AUDIT 3
+#define MACH_RCV_TRAILER_CTX 4
+#define MACH_RCV_TRAILER_AV 7
+#define MACH_RCV_TRAILER_LABELS 8
+
+#define MACH_RCV_TRAILER_TYPE(x) (((x) & 0xf) << 28)
+#define MACH_RCV_TRAILER_ELEMENTS(x) (((x) & 0xf) << 24)
+#define MACH_RCV_TRAILER_MASK ((0xf << 24))
+
+#define GET_RCV_ELEMENTS(y) (((y) >> 24) & 0xf)
+
+
+/*
+ * XXXMAC: note that in the case of MACH_RCV_TRAILER_LABELS,
+ * we just fall through to mach_msg_max_trailer_t.
+ * This is correct behavior since mach_msg_max_trailer_t is defined as
+ * mac_msg_mac_trailer_t which is used for the LABELS trailer.
+ * It also makes things work properly if MACH_RCV_TRAILER_LABELS is ORed
+ * with one of the other options.
+ */
+
+#define REQUESTED_TRAILER_SIZE_NATIVE(y) \
+ ((mach_msg_trailer_size_t) \
+ ((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_NULL) ? \
+ sizeof(mach_msg_trailer_t) : \
+ ((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_SEQNO) ? \
+ sizeof(mach_msg_seqno_trailer_t) : \
+ ((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_SENDER) ? \
+ sizeof(mach_msg_security_trailer_t) : \
+ ((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_AUDIT) ? \
+ sizeof(mach_msg_audit_trailer_t) : \
+ ((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_CTX) ? \
+ sizeof(mach_msg_context_trailer_t) : \
+ ((GET_RCV_ELEMENTS(y) == MACH_RCV_TRAILER_AV) ? \
+ sizeof(mach_msg_mac_trailer_t) : \
+ sizeof(mach_msg_max_trailer_t))))))))
+
+
+#define REQUESTED_TRAILER_SIZE(y) REQUESTED_TRAILER_SIZE_NATIVE(y)
+
+/*
+ * Much code assumes that mach_msg_return_t == kern_return_t.
+ * This definition is useful for descriptive purposes.
+ *
+ * See <mach/error.h> for the format of error codes.
+ * IPC errors are system 4. Send errors are subsystem 0;
+ * receive errors are subsystem 1. The code field is always non-zero.
+ * The high bits of the code field communicate extra information
+ * for some error codes. MACH_MSG_MASK masks off these special bits.
+ */
+
+typedef kern_return_t mach_msg_return_t;
+
+#define MACH_MSG_SUCCESS 0x00000000
+
+
+#define MACH_MSG_MASK 0x00003e00
+/* All special error code bits defined below. */
+#define MACH_MSG_IPC_SPACE 0x00002000
+/* No room in IPC name space for another capability name. */
+#define MACH_MSG_VM_SPACE 0x00001000
+/* No room in VM address space for out-of-line memory. */
+#define MACH_MSG_IPC_KERNEL 0x00000800
+/* Kernel resource shortage handling an IPC capability. */
+#define MACH_MSG_VM_KERNEL 0x00000400
+/* Kernel resource shortage handling out-of-line memory. */
+
+#define MACH_SEND_IN_PROGRESS 0x10000001
+/* Thread is waiting to send. (Internal use only.) */
+#define MACH_SEND_INVALID_DATA 0x10000002
+/* Bogus in-line data. */
+#define MACH_SEND_INVALID_DEST 0x10000003
+/* Bogus destination port. */
+#define MACH_SEND_TIMED_OUT 0x10000004
+/* Message not sent before timeout expired. */
+#define MACH_SEND_INVALID_VOUCHER 0x10000005
+/* Bogus voucher port. */
+#define MACH_SEND_INTERRUPTED 0x10000007
+/* Software interrupt. */
+#define MACH_SEND_MSG_TOO_SMALL 0x10000008
+/* Data doesn't contain a complete message. */
+#define MACH_SEND_INVALID_REPLY 0x10000009
+/* Bogus reply port. */
+#define MACH_SEND_INVALID_RIGHT 0x1000000a
+/* Bogus port rights in the message body. */
+#define MACH_SEND_INVALID_NOTIFY 0x1000000b
+/* Bogus notify port argument. */
+#define MACH_SEND_INVALID_MEMORY 0x1000000c
+/* Invalid out-of-line memory pointer. */
+#define MACH_SEND_NO_BUFFER 0x1000000d
+/* No message buffer is available. */
+#define MACH_SEND_TOO_LARGE 0x1000000e
+/* Send is too large for port */
+#define MACH_SEND_INVALID_TYPE 0x1000000f
+/* Invalid msg-type specification. */
+#define MACH_SEND_INVALID_HEADER 0x10000010
+/* A field in the header had a bad value. */
+#define MACH_SEND_INVALID_TRAILER 0x10000011
+/* The trailer to be sent does not match kernel format. */
+#define MACH_SEND_INVALID_CONTEXT 0x10000012
+/* The sending thread context did not match the context on the dest port */
+#define MACH_SEND_INVALID_RT_OOL_SIZE 0x10000015
+/* compatibility: no longer a returned error */
+#define MACH_SEND_NO_GRANT_DEST 0x10000016
+/* The destination port doesn't accept ports in body */
+#define MACH_SEND_MSG_FILTERED 0x10000017
+/* Message send was rejected by message filter */
+
+#define MACH_RCV_IN_PROGRESS 0x10004001
+/* Thread is waiting for receive. (Internal use only.) */
+#define MACH_RCV_INVALID_NAME 0x10004002
+/* Bogus name for receive port/port-set. */
+#define MACH_RCV_TIMED_OUT 0x10004003
+/* Didn't get a message within the timeout value. */
+#define MACH_RCV_TOO_LARGE 0x10004004
+/* Message buffer is not large enough for inline data. */
+#define MACH_RCV_INTERRUPTED 0x10004005
+/* Software interrupt. */
+#define MACH_RCV_PORT_CHANGED 0x10004006
+/* compatibility: no longer a returned error */
+#define MACH_RCV_INVALID_NOTIFY 0x10004007
+/* Bogus notify port argument. */
+#define MACH_RCV_INVALID_DATA 0x10004008
+/* Bogus message buffer for inline data. */
+#define MACH_RCV_PORT_DIED 0x10004009
+/* Port/set was sent away/died during receive. */
+#define MACH_RCV_IN_SET 0x1000400a
+/* compatibility: no longer a returned error */
+#define MACH_RCV_HEADER_ERROR 0x1000400b
+/* Error receiving message header. See special bits. */
+#define MACH_RCV_BODY_ERROR 0x1000400c
+/* Error receiving message body. See special bits. */
+#define MACH_RCV_INVALID_TYPE 0x1000400d
+/* Invalid msg-type specification in scatter list. */
+#define MACH_RCV_SCATTER_SMALL 0x1000400e
+/* Out-of-line overwrite region is not large enough */
+#define MACH_RCV_INVALID_TRAILER 0x1000400f
+/* trailer type or number of trailer elements not supported */
+#define MACH_RCV_IN_PROGRESS_TIMED 0x10004011
+/* Waiting for receive with timeout. (Internal use only.) */
+#define MACH_RCV_INVALID_REPLY 0x10004012
+/* invalid reply port used in a STRICT_REPLY message */
+
+
+
+__BEGIN_DECLS
+
+/*
+ * Routine: mach_msg_overwrite
+ * Purpose:
+ * Send and/or receive a message. If the message operation
+ * is interrupted, and the user did not request an indication
+ * of that fact, then restart the appropriate parts of the
+ * operation silently (trap version does not restart).
+ *
+ * Distinct send and receive buffers may be specified. If
+ * no separate receive buffer is specified, the msg parameter
+ * will be used for both send and receive operations.
+ *
+ * In addition to a distinct receive buffer, that buffer may
+ * already contain scatter control information to direct the
+ * receiving of the message.
+ */
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern mach_msg_return_t mach_msg_overwrite(
+ mach_msg_header_t *msg,
+ mach_msg_option_t option,
+ mach_msg_size_t send_size,
+ mach_msg_size_t rcv_size,
+ mach_port_name_t rcv_name,
+ mach_msg_timeout_t timeout,
+ mach_port_name_t notify,
+ mach_msg_header_t *rcv_msg,
+ mach_msg_size_t rcv_limit);
+
+
+/*
+ * Routine: mach_msg
+ * Purpose:
+ * Send and/or receive a message. If the message operation
+ * is interrupted, and the user did not request an indication
+ * of that fact, then restart the appropriate parts of the
+ * operation silently (trap version does not restart).
+ */
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern mach_msg_return_t mach_msg(
+ mach_msg_header_t *msg,
+ mach_msg_option_t option,
+ mach_msg_size_t send_size,
+ mach_msg_size_t rcv_size,
+ mach_port_name_t rcv_name,
+ mach_msg_timeout_t timeout,
+ mach_port_name_t notify);
+
+/*
+ * Routine: mach_voucher_deallocate
+ * Purpose:
+ * Deallocate a mach voucher created or received in a message. Drops
+ * one (send right) reference to the voucher.
+ */
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+extern kern_return_t mach_voucher_deallocate(
+ mach_port_name_t voucher);
+
+
+__END_DECLS
+
+#endif /* _MACH_MESSAGE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/port.h b/lib/libc/include/aarch64-macos-gnu/mach/port.h
new file mode 100644
index 0000000000..f56d157f73
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/port.h
@@ -0,0 +1,429 @@
+/*
+ * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ * NOTICE: This file was modified by McAfee Research in 2004 to introduce
+ * support for mandatory and extensible security protections. This notice
+ * is included in support of clause 2.2 (b) of the Apple Public License,
+ * Version 2.0.
+ */
+/*
+ */
+/*
+ * File: mach/port.h
+ *
+ * Definition of a Mach port
+ *
+ * Mach ports are the endpoints to Mach-implemented communications
+ * channels (usually uni-directional message queues, but other types
+ * also exist).
+ *
+ * Unique collections of these endpoints are maintained for each
+ * Mach task. Each Mach port in the task's collection is given a
+ * [task-local] name to identify it - and the the various "rights"
+ * held by the task for that specific endpoint.
+ *
+ * This header defines the types used to identify these Mach ports
+ * and the various rights associated with them. For more info see:
+ *
+ * <mach/mach_port.h> - manipulation of port rights in a given space
+ * <mach/message.h> - message queue [and port right passing] mechanism
+ *
+ */
+
+#ifndef _MACH_PORT_H_
+#define _MACH_PORT_H_
+
+#include <sys/cdefs.h>
+#include <stdint.h>
+#include <mach/boolean.h>
+#include <mach/machine/vm_types.h>
+
+/*
+ * mach_port_name_t - the local identity for a Mach port
+ *
+ * The name is Mach port namespace specific. It is used to
+ * identify the rights held for that port by the task whose
+ * namespace is implied [or specifically provided].
+ *
+ * Use of this type usually implies just a name - no rights.
+ * See mach_port_t for a type that implies a "named right."
+ *
+ */
+
+typedef natural_t mach_port_name_t;
+typedef mach_port_name_t *mach_port_name_array_t;
+
+
+/*
+ * mach_port_t - a named port right
+ *
+ * In user-space, "rights" are represented by the name of the
+ * right in the Mach port namespace. Even so, this type is
+ * presented as a unique one to more clearly denote the presence
+ * of a right coming along with the name.
+ *
+ * Often, various rights for a port held in a single name space
+ * will coalesce and are, therefore, be identified by a single name
+ * [this is the case for send and receive rights]. But not
+ * always [send-once rights currently get a unique name for
+ * each right].
+ *
+ */
+
+#include <sys/_types.h>
+#include <sys/_types/_mach_port_t.h>
+
+
+typedef mach_port_t *mach_port_array_t;
+
+/*
+ * MACH_PORT_NULL is a legal value that can be carried in messages.
+ * It indicates the absence of any port or port rights. (A port
+ * argument keeps the message from being "simple", even if the
+ * value is MACH_PORT_NULL.) The value MACH_PORT_DEAD is also a legal
+ * value that can be carried in messages. It indicates
+ * that a port right was present, but it died.
+ */
+
+#define MACH_PORT_NULL 0 /* intentional loose typing */
+#define MACH_PORT_DEAD ((mach_port_name_t) ~0)
+#define MACH_PORT_VALID(name) \
+ (((name) != MACH_PORT_NULL) && \
+ ((name) != MACH_PORT_DEAD))
+
+
+/*
+ * For kernel-selected [assigned] port names, the name is
+ * comprised of two parts: a generation number and an index.
+ * This approach keeps the exact same name from being generated
+ * and reused too quickly [to catch right/reference counting bugs].
+ * The dividing line between the constituent parts is exposed so
+ * that efficient "mach_port_name_t to data structure pointer"
+ * conversion implementation can be made. But it is possible
+ * for user-level code to assign their own names to Mach ports.
+ * These are not required to participate in this algorithm. So
+ * care should be taken before "assuming" this model.
+ *
+ */
+
+#ifndef NO_PORT_GEN
+
+#define MACH_PORT_INDEX(name) ((name) >> 8)
+#define MACH_PORT_GEN(name) (((name) & 0xff) << 24)
+#define MACH_PORT_MAKE(index, gen) \
+ (((index) << 8) | (gen) >> 24)
+
+#else /* NO_PORT_GEN */
+
+#define MACH_PORT_INDEX(name) (name)
+#define MACH_PORT_GEN(name) (0)
+#define MACH_PORT_MAKE(index, gen) (index)
+
+#endif /* NO_PORT_GEN */
+
+
+/*
+ * These are the different rights a task may have for a port.
+ * The MACH_PORT_RIGHT_* definitions are used as arguments
+ * to mach_port_allocate, mach_port_get_refs, etc, to specify
+ * a particular right to act upon. The mach_port_names and
+ * mach_port_type calls return bitmasks using the MACH_PORT_TYPE_*
+ * definitions. This is because a single name may denote
+ * multiple rights.
+ */
+
+typedef natural_t mach_port_right_t;
+
+#define MACH_PORT_RIGHT_SEND ((mach_port_right_t) 0)
+#define MACH_PORT_RIGHT_RECEIVE ((mach_port_right_t) 1)
+#define MACH_PORT_RIGHT_SEND_ONCE ((mach_port_right_t) 2)
+#define MACH_PORT_RIGHT_PORT_SET ((mach_port_right_t) 3)
+#define MACH_PORT_RIGHT_DEAD_NAME ((mach_port_right_t) 4)
+#define MACH_PORT_RIGHT_LABELH ((mach_port_right_t) 5) /* obsolete right */
+#define MACH_PORT_RIGHT_NUMBER ((mach_port_right_t) 6) /* right not implemented */
+
+
+typedef natural_t mach_port_type_t;
+typedef mach_port_type_t *mach_port_type_array_t;
+
+#define MACH_PORT_TYPE(right) \
+ ((mach_port_type_t)(((mach_port_type_t) 1) \
+ << ((right) + ((mach_port_right_t) 16))))
+#define MACH_PORT_TYPE_NONE ((mach_port_type_t) 0L)
+#define MACH_PORT_TYPE_SEND MACH_PORT_TYPE(MACH_PORT_RIGHT_SEND)
+#define MACH_PORT_TYPE_RECEIVE MACH_PORT_TYPE(MACH_PORT_RIGHT_RECEIVE)
+#define MACH_PORT_TYPE_SEND_ONCE MACH_PORT_TYPE(MACH_PORT_RIGHT_SEND_ONCE)
+#define MACH_PORT_TYPE_PORT_SET MACH_PORT_TYPE(MACH_PORT_RIGHT_PORT_SET)
+#define MACH_PORT_TYPE_DEAD_NAME MACH_PORT_TYPE(MACH_PORT_RIGHT_DEAD_NAME)
+#define MACH_PORT_TYPE_LABELH MACH_PORT_TYPE(MACH_PORT_RIGHT_LABELH) /* obsolete */
+
+
+
+/* Convenient combinations. */
+
+#define MACH_PORT_TYPE_SEND_RECEIVE \
+ (MACH_PORT_TYPE_SEND|MACH_PORT_TYPE_RECEIVE)
+#define MACH_PORT_TYPE_SEND_RIGHTS \
+ (MACH_PORT_TYPE_SEND|MACH_PORT_TYPE_SEND_ONCE)
+#define MACH_PORT_TYPE_PORT_RIGHTS \
+ (MACH_PORT_TYPE_SEND_RIGHTS|MACH_PORT_TYPE_RECEIVE)
+#define MACH_PORT_TYPE_PORT_OR_DEAD \
+ (MACH_PORT_TYPE_PORT_RIGHTS|MACH_PORT_TYPE_DEAD_NAME)
+#define MACH_PORT_TYPE_ALL_RIGHTS \
+ (MACH_PORT_TYPE_PORT_OR_DEAD|MACH_PORT_TYPE_PORT_SET)
+
+/* Dummy type bits that mach_port_type/mach_port_names can return. */
+
+#define MACH_PORT_TYPE_DNREQUEST 0x80000000
+#define MACH_PORT_TYPE_SPREQUEST 0x40000000
+#define MACH_PORT_TYPE_SPREQUEST_DELAYED 0x20000000
+
+/* User-references for capabilities. */
+
+typedef natural_t mach_port_urefs_t;
+typedef integer_t mach_port_delta_t; /* change in urefs */
+
+/* Attributes of ports. (See mach_port_get_receive_status.) */
+
+typedef natural_t mach_port_seqno_t; /* sequence number */
+typedef natural_t mach_port_mscount_t; /* make-send count */
+typedef natural_t mach_port_msgcount_t; /* number of msgs */
+typedef natural_t mach_port_rights_t; /* number of rights */
+
+/*
+ * Are there outstanding send rights for a given port?
+ */
+#define MACH_PORT_SRIGHTS_NONE 0 /* no srights */
+#define MACH_PORT_SRIGHTS_PRESENT 1 /* srights */
+typedef unsigned int mach_port_srights_t; /* status of send rights */
+
+typedef struct mach_port_status {
+ mach_port_rights_t mps_pset; /* count of containing port sets */
+ mach_port_seqno_t mps_seqno; /* sequence number */
+ mach_port_mscount_t mps_mscount; /* make-send count */
+ mach_port_msgcount_t mps_qlimit; /* queue limit */
+ mach_port_msgcount_t mps_msgcount; /* number in the queue */
+ mach_port_rights_t mps_sorights; /* how many send-once rights */
+ boolean_t mps_srights; /* do send rights exist? */
+ boolean_t mps_pdrequest; /* port-deleted requested? */
+ boolean_t mps_nsrequest; /* no-senders requested? */
+ natural_t mps_flags; /* port flags */
+} mach_port_status_t;
+
+/* System-wide values for setting queue limits on a port */
+#define MACH_PORT_QLIMIT_ZERO (0)
+#define MACH_PORT_QLIMIT_BASIC (5)
+#define MACH_PORT_QLIMIT_SMALL (16)
+#define MACH_PORT_QLIMIT_LARGE (1024)
+#define MACH_PORT_QLIMIT_KERNEL (65534)
+#define MACH_PORT_QLIMIT_MIN MACH_PORT_QLIMIT_ZERO
+#define MACH_PORT_QLIMIT_DEFAULT MACH_PORT_QLIMIT_BASIC
+#define MACH_PORT_QLIMIT_MAX MACH_PORT_QLIMIT_LARGE
+
+typedef struct mach_port_limits {
+ mach_port_msgcount_t mpl_qlimit; /* number of msgs */
+} mach_port_limits_t;
+
+/* Possible values for mps_flags (part of mach_port_status_t) */
+#define MACH_PORT_STATUS_FLAG_TEMPOWNER 0x01
+#define MACH_PORT_STATUS_FLAG_GUARDED 0x02
+#define MACH_PORT_STATUS_FLAG_STRICT_GUARD 0x04
+#define MACH_PORT_STATUS_FLAG_IMP_DONATION 0x08
+#define MACH_PORT_STATUS_FLAG_REVIVE 0x10
+#define MACH_PORT_STATUS_FLAG_TASKPTR 0x20
+#define MACH_PORT_STATUS_FLAG_GUARD_IMMOVABLE_RECEIVE 0x40
+#define MACH_PORT_STATUS_FLAG_NO_GRANT 0x80
+
+typedef struct mach_port_info_ext {
+ mach_port_status_t mpie_status;
+ mach_port_msgcount_t mpie_boost_cnt;
+ uint32_t reserved[6];
+} mach_port_info_ext_t;
+
+typedef integer_t *mach_port_info_t; /* varying array of natural_t */
+
+/* Flavors for mach_port_get/set_attributes() */
+typedef int mach_port_flavor_t;
+#define MACH_PORT_LIMITS_INFO 1 /* uses mach_port_limits_t */
+#define MACH_PORT_RECEIVE_STATUS 2 /* uses mach_port_status_t */
+#define MACH_PORT_DNREQUESTS_SIZE 3 /* info is int */
+#define MACH_PORT_TEMPOWNER 4 /* indicates receive right will be reassigned to another task */
+#define MACH_PORT_IMPORTANCE_RECEIVER 5 /* indicates recieve right accepts priority donation */
+#define MACH_PORT_DENAP_RECEIVER 6 /* indicates receive right accepts de-nap donation */
+#define MACH_PORT_INFO_EXT 7 /* uses mach_port_info_ext_t */
+
+#define MACH_PORT_LIMITS_INFO_COUNT ((natural_t) \
+ (sizeof(mach_port_limits_t)/sizeof(natural_t)))
+#define MACH_PORT_RECEIVE_STATUS_COUNT ((natural_t) \
+ (sizeof(mach_port_status_t)/sizeof(natural_t)))
+#define MACH_PORT_DNREQUESTS_SIZE_COUNT 1
+#define MACH_PORT_INFO_EXT_COUNT ((natural_t) \
+ (sizeof(mach_port_info_ext_t)/sizeof(natural_t)))
+/*
+ * Structure used to pass information about port allocation requests.
+ * Must be padded to 64-bits total length.
+ */
+typedef struct mach_port_qos {
+ unsigned int name:1; /* name given */
+ unsigned int prealloc:1; /* prealloced message */
+ boolean_t pad1:30;
+ natural_t len;
+} mach_port_qos_t;
+
+/* Mach Port Guarding definitions */
+
+/*
+ * Flags for mach_port_options (used for
+ * invocation of mach_port_construct).
+ * Indicates attributes to be set for the newly
+ * allocated port.
+ */
+#define MPO_CONTEXT_AS_GUARD 0x01 /* Add guard to the port */
+#define MPO_QLIMIT 0x02 /* Set qlimit for the port msg queue */
+#define MPO_TEMPOWNER 0x04 /* Set the tempowner bit of the port */
+#define MPO_IMPORTANCE_RECEIVER 0x08 /* Mark the port as importance receiver */
+#define MPO_INSERT_SEND_RIGHT 0x10 /* Insert a send right for the port */
+#define MPO_STRICT 0x20 /* Apply strict guarding for port */
+#define MPO_DENAP_RECEIVER 0x40 /* Mark the port as App de-nap receiver */
+#define MPO_IMMOVABLE_RECEIVE 0x80 /* Mark the port as immovable; protected by the guard context */
+#define MPO_FILTER_MSG 0x100 /* Allow message filtering */
+#define MPO_TG_BLOCK_TRACKING 0x200 /* Track blocking relationship for thread group during sync IPC */
+
+/*
+ * Structure to define optional attributes for a newly
+ * constructed port.
+ */
+typedef struct mach_port_options {
+ uint32_t flags; /* Flags defining attributes for port */
+ mach_port_limits_t mpl; /* Message queue limit for port */
+ union {
+ uint64_t reserved[2]; /* Reserved */
+ mach_port_name_t work_interval_port; /* Work interval port */
+ };
+}mach_port_options_t;
+
+typedef mach_port_options_t *mach_port_options_ptr_t;
+
+/*
+ * EXC_GUARD represents a guard violation for both
+ * mach ports and file descriptors. GUARD_TYPE_ is used
+ * to differentiate among them.
+ */
+#define GUARD_TYPE_MACH_PORT 0x1
+
+/* Reasons for exception for a guarded mach port */
+enum mach_port_guard_exception_codes {
+ kGUARD_EXC_DESTROY = 1u << 0,
+ kGUARD_EXC_MOD_REFS = 1u << 1,
+ kGUARD_EXC_SET_CONTEXT = 1u << 2,
+ kGUARD_EXC_UNGUARDED = 1u << 3,
+ kGUARD_EXC_INCORRECT_GUARD = 1u << 4,
+ kGUARD_EXC_IMMOVABLE = 1u << 5,
+ kGUARD_EXC_STRICT_REPLY = 1u << 6,
+ kGUARD_EXC_MSG_FILTERED = 1u << 7,
+ /* start of [optionally] non-fatal guards */
+ kGUARD_EXC_INVALID_RIGHT = 1u << 8,
+ kGUARD_EXC_INVALID_NAME = 1u << 9,
+ kGUARD_EXC_INVALID_VALUE = 1u << 10,
+ kGUARD_EXC_INVALID_ARGUMENT = 1u << 11,
+ kGUARD_EXC_RIGHT_EXISTS = 1u << 12,
+ kGUARD_EXC_KERN_NO_SPACE = 1u << 13,
+ kGUARD_EXC_KERN_FAILURE = 1u << 14,
+ kGUARD_EXC_KERN_RESOURCE = 1u << 15,
+ kGUARD_EXC_SEND_INVALID_REPLY = 1u << 16,
+ kGUARD_EXC_SEND_INVALID_VOUCHER = 1u << 17,
+ kGUARD_EXC_SEND_INVALID_RIGHT = 1u << 18,
+ kGUARD_EXC_RCV_INVALID_NAME = 1u << 19,
+ kGUARD_EXC_RCV_GUARDED_DESC = 1u << 20, /* should never be fatal; for development only */
+};
+
+#define MAX_FATAL_kGUARD_EXC_CODE (1u << 6)
+
+/*
+ * These flags are used as bits in the subcode of kGUARD_EXC_STRICT_REPLY exceptions.
+ */
+#define MPG_FLAGS_STRICT_REPLY_INVALID_REPLY_DISP (0x01ull << 56)
+#define MPG_FLAGS_STRICT_REPLY_INVALID_REPLY_PORT (0x02ull << 56)
+#define MPG_FLAGS_STRICT_REPLY_INVALID_VOUCHER (0x04ull << 56)
+#define MPG_FLAGS_STRICT_REPLY_NO_BANK_ATTR (0x08ull << 56)
+#define MPG_FLAGS_STRICT_REPLY_MISMATCHED_PERSONA (0x10ull << 56)
+#define MPG_FLAGS_STRICT_REPLY_MASK (0xffull << 56)
+
+/*
+ * Flags for mach_port_guard_with_flags. These flags extend
+ * the attributes associated with a guarded port.
+ */
+#define MPG_STRICT 0x01 /* Apply strict guarding for a port */
+#define MPG_IMMOVABLE_RECEIVE 0x02 /* Receive right cannot be moved out of the space */
+
+#if !__DARWIN_UNIX03 && !defined(_NO_PORT_T_FROM_MACH)
+/*
+ * Mach 3.0 renamed everything to have mach_ in front of it.
+ * These types and macros are provided for backward compatibility
+ * but are deprecated.
+ */
+typedef mach_port_t port_t;
+typedef mach_port_name_t port_name_t;
+typedef mach_port_name_t *port_name_array_t;
+
+#define PORT_NULL ((port_t) 0)
+#define PORT_DEAD ((port_t) ~0)
+#define PORT_VALID(name) \
+ ((port_t)(name) != PORT_NULL && (port_t)(name) != PORT_DEAD)
+
+#endif /* !__DARWIN_UNIX03 && !_NO_PORT_T_FROM_MACH */
+
+#endif /* _MACH_PORT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/processor_set.h b/lib/libc/include/aarch64-macos-gnu/mach/processor_set.h
new file mode 100644
index 0000000000..9d748d01dc
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/processor_set.h
@@ -0,0 +1,585 @@
+#ifndef _processor_set_user_
+#define _processor_set_user_
+
+/* Module processor_set */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef processor_set_MSG_COUNT
+#define processor_set_MSG_COUNT 11
+#endif /* processor_set_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine processor_set_statistics */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_statistics
+(
+ processor_set_name_t pset,
+ processor_set_flavor_t flavor,
+ processor_set_info_t info_out,
+ mach_msg_type_number_t *info_outCnt
+);
+
+/* Routine processor_set_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_destroy
+(
+ processor_set_t set
+);
+
+/* Routine processor_set_max_priority */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_max_priority
+(
+ processor_set_t processor_set,
+ int max_priority,
+ boolean_t change_threads
+);
+
+/* Routine processor_set_policy_enable */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_policy_enable
+(
+ processor_set_t processor_set,
+ int policy
+);
+
+/* Routine processor_set_policy_disable */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_policy_disable
+(
+ processor_set_t processor_set,
+ int policy,
+ boolean_t change_threads
+);
+
+/* Routine processor_set_tasks */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_tasks
+(
+ processor_set_t processor_set,
+ task_array_t *task_list,
+ mach_msg_type_number_t *task_listCnt
+);
+
+/* Routine processor_set_threads */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_threads
+(
+ processor_set_t processor_set,
+ thread_act_array_t *thread_list,
+ mach_msg_type_number_t *thread_listCnt
+);
+
+/* Routine processor_set_policy_control */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_policy_control
+(
+ processor_set_t pset,
+ processor_set_flavor_t flavor,
+ processor_set_info_t policy_info,
+ mach_msg_type_number_t policy_infoCnt,
+ boolean_t change
+);
+
+/* Routine processor_set_stack_usage */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_stack_usage
+(
+ processor_set_t pset,
+ unsigned *ltotal,
+ vm_size_t *space,
+ vm_size_t *resident,
+ vm_size_t *maxusage,
+ vm_offset_t *maxstack
+);
+
+/* Routine processor_set_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_info
+(
+ processor_set_name_t set_name,
+ int flavor,
+ host_t *host,
+ processor_set_info_t info_out,
+ mach_msg_type_number_t *info_outCnt
+);
+
+/* Routine processor_set_tasks_with_flavor */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t processor_set_tasks_with_flavor
+(
+ processor_set_t processor_set,
+ mach_task_flavor_t flavor,
+ task_array_t *task_list,
+ mach_msg_type_number_t *task_listCnt
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__processor_set_subsystem__defined
+#define __Request__processor_set_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ processor_set_flavor_t flavor;
+ mach_msg_type_number_t info_outCnt;
+ } __Request__processor_set_statistics_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int max_priority;
+ boolean_t change_threads;
+ } __Request__processor_set_max_priority_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int policy;
+ } __Request__processor_set_policy_enable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int policy;
+ boolean_t change_threads;
+ } __Request__processor_set_policy_disable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_tasks_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_threads_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ processor_set_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[5];
+ boolean_t change;
+ } __Request__processor_set_policy_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__processor_set_stack_usage_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int flavor;
+ mach_msg_type_number_t info_outCnt;
+ } __Request__processor_set_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_task_flavor_t flavor;
+ } __Request__processor_set_tasks_with_flavor_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__processor_set_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__processor_set_subsystem__defined
+#define __RequestUnion__processor_set_subsystem__defined
+union __RequestUnion__processor_set_subsystem {
+ __Request__processor_set_statistics_t Request_processor_set_statistics;
+ __Request__processor_set_destroy_t Request_processor_set_destroy;
+ __Request__processor_set_max_priority_t Request_processor_set_max_priority;
+ __Request__processor_set_policy_enable_t Request_processor_set_policy_enable;
+ __Request__processor_set_policy_disable_t Request_processor_set_policy_disable;
+ __Request__processor_set_tasks_t Request_processor_set_tasks;
+ __Request__processor_set_threads_t Request_processor_set_threads;
+ __Request__processor_set_policy_control_t Request_processor_set_policy_control;
+ __Request__processor_set_stack_usage_t Request_processor_set_stack_usage;
+ __Request__processor_set_info_t Request_processor_set_info;
+ __Request__processor_set_tasks_with_flavor_t Request_processor_set_tasks_with_flavor;
+};
+#endif /* !__RequestUnion__processor_set_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__processor_set_subsystem__defined
+#define __Reply__processor_set_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t info_outCnt;
+ integer_t info_out[5];
+ } __Reply__processor_set_statistics_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_max_priority_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_policy_enable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_policy_disable_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t task_list;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t task_listCnt;
+ } __Reply__processor_set_tasks_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t thread_list;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t thread_listCnt;
+ } __Reply__processor_set_threads_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__processor_set_policy_control_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ unsigned ltotal;
+ vm_size_t space;
+ vm_size_t resident;
+ vm_size_t maxusage;
+ vm_offset_t maxstack;
+ } __Reply__processor_set_stack_usage_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t host;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t info_outCnt;
+ integer_t info_out[5];
+ } __Reply__processor_set_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t task_list;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t task_listCnt;
+ } __Reply__processor_set_tasks_with_flavor_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__processor_set_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__processor_set_subsystem__defined
+#define __ReplyUnion__processor_set_subsystem__defined
+union __ReplyUnion__processor_set_subsystem {
+ __Reply__processor_set_statistics_t Reply_processor_set_statistics;
+ __Reply__processor_set_destroy_t Reply_processor_set_destroy;
+ __Reply__processor_set_max_priority_t Reply_processor_set_max_priority;
+ __Reply__processor_set_policy_enable_t Reply_processor_set_policy_enable;
+ __Reply__processor_set_policy_disable_t Reply_processor_set_policy_disable;
+ __Reply__processor_set_tasks_t Reply_processor_set_tasks;
+ __Reply__processor_set_threads_t Reply_processor_set_threads;
+ __Reply__processor_set_policy_control_t Reply_processor_set_policy_control;
+ __Reply__processor_set_stack_usage_t Reply_processor_set_stack_usage;
+ __Reply__processor_set_info_t Reply_processor_set_info;
+ __Reply__processor_set_tasks_with_flavor_t Reply_processor_set_tasks_with_flavor;
+};
+#endif /* !__RequestUnion__processor_set_subsystem__defined */
+
+#ifndef subsystem_to_name_map_processor_set
+#define subsystem_to_name_map_processor_set \
+ { "processor_set_statistics", 4000 },\
+ { "processor_set_destroy", 4001 },\
+ { "processor_set_max_priority", 4002 },\
+ { "processor_set_policy_enable", 4003 },\
+ { "processor_set_policy_disable", 4004 },\
+ { "processor_set_tasks", 4005 },\
+ { "processor_set_threads", 4006 },\
+ { "processor_set_policy_control", 4007 },\
+ { "processor_set_stack_usage", 4008 },\
+ { "processor_set_info", 4009 },\
+ { "processor_set_tasks_with_flavor", 4010 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _processor_set_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/task.h b/lib/libc/include/aarch64-macos-gnu/mach/task.h
new file mode 100644
index 0000000000..a7d1c9565b
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/task.h
@@ -0,0 +1,2523 @@
+#ifndef _task_user_
+#define _task_user_
+
+/* Module task */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef task_MSG_COUNT
+#define task_MSG_COUNT 55
+#endif /* task_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+#include <mach_debug/mach_debug_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine task_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_create
+(
+ task_t target_task,
+ ledger_array_t ledgers,
+ mach_msg_type_number_t ledgersCnt,
+ boolean_t inherit_memory,
+ task_t *child_task
+);
+
+/* Routine task_terminate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_terminate
+(
+ task_t target_task
+);
+
+/* Routine task_threads */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_threads
+(
+ task_inspect_t target_task,
+ thread_act_array_t *act_list,
+ mach_msg_type_number_t *act_listCnt
+);
+
+/* Routine mach_ports_register */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t mach_ports_register
+(
+ task_t target_task,
+ mach_port_array_t init_port_set,
+ mach_msg_type_number_t init_port_setCnt
+);
+
+/* Routine mach_ports_lookup */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t mach_ports_lookup
+(
+ task_t target_task,
+ mach_port_array_t *init_port_set,
+ mach_msg_type_number_t *init_port_setCnt
+);
+
+/* Routine task_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_info
+(
+ task_name_t target_task,
+ task_flavor_t flavor,
+ task_info_t task_info_out,
+ mach_msg_type_number_t *task_info_outCnt
+);
+
+/* Routine task_set_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_info
+(
+ task_t target_task,
+ task_flavor_t flavor,
+ task_info_t task_info_in,
+ mach_msg_type_number_t task_info_inCnt
+);
+
+/* Routine task_suspend */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_suspend
+(
+ task_t target_task
+);
+
+/* Routine task_resume */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_resume
+(
+ task_t target_task
+);
+
+/* Routine task_get_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_get_special_port
+(
+ task_inspect_t task,
+ int which_port,
+ mach_port_t *special_port
+);
+
+/* Routine task_set_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_special_port
+(
+ task_t task,
+ int which_port,
+ mach_port_t special_port
+);
+
+/* Routine thread_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_create
+(
+ task_t parent_task,
+ thread_act_t *child_act
+);
+
+/* Routine thread_create_running */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_create_running
+(
+ task_t parent_task,
+ thread_state_flavor_t flavor,
+ thread_state_t new_state,
+ mach_msg_type_number_t new_stateCnt,
+ thread_act_t *child_act
+);
+
+/* Routine task_set_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_exception_ports
+(
+ task_t task,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor
+);
+
+/* Routine task_get_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_get_exception_ports
+(
+ task_t task,
+ exception_mask_t exception_mask,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlers,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine task_swap_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_swap_exception_ports
+(
+ task_t task,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlerss,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine lock_set_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_set_create
+(
+ task_t task,
+ lock_set_t *new_lock_set,
+ int n_ulocks,
+ int policy
+);
+
+/* Routine lock_set_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t lock_set_destroy
+(
+ task_t task,
+ lock_set_t lock_set
+);
+
+/* Routine semaphore_create */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t semaphore_create
+(
+ task_t task,
+ semaphore_t *semaphore,
+ int policy,
+ int value
+);
+
+/* Routine semaphore_destroy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t semaphore_destroy
+(
+ task_t task,
+ semaphore_t semaphore
+);
+
+/* Routine task_policy_set */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_policy_set
+(
+ task_policy_set_t task,
+ task_policy_flavor_t flavor,
+ task_policy_t policy_info,
+ mach_msg_type_number_t policy_infoCnt
+);
+
+/* Routine task_policy_get */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_policy_get
+(
+ task_policy_get_t task,
+ task_policy_flavor_t flavor,
+ task_policy_t policy_info,
+ mach_msg_type_number_t *policy_infoCnt,
+ boolean_t *get_default
+);
+
+/* Routine task_sample */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_sample
+(
+ task_t task,
+ mach_port_t reply
+);
+
+/* Routine task_policy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_policy
+(
+ task_t task,
+ policy_t policy,
+ policy_base_t base,
+ mach_msg_type_number_t baseCnt,
+ boolean_t set_limit,
+ boolean_t change
+);
+
+/* Routine task_set_emulation */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_emulation
+(
+ task_t target_port,
+ vm_address_t routine_entry_pt,
+ int routine_number
+);
+
+/* Routine task_get_emulation_vector */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_get_emulation_vector
+(
+ task_t task,
+ int *vector_start,
+ emulation_vector_t *emulation_vector,
+ mach_msg_type_number_t *emulation_vectorCnt
+);
+
+/* Routine task_set_emulation_vector */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_emulation_vector
+(
+ task_t task,
+ int vector_start,
+ emulation_vector_t emulation_vector,
+ mach_msg_type_number_t emulation_vectorCnt
+);
+
+/* Routine task_set_ras_pc */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_ras_pc
+(
+ task_t target_task,
+ vm_address_t basepc,
+ vm_address_t boundspc
+);
+
+/* Routine task_zone_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_zone_info
+(
+ task_inspect_t target_task,
+ mach_zone_name_array_t *names,
+ mach_msg_type_number_t *namesCnt,
+ task_zone_info_array_t *info,
+ mach_msg_type_number_t *infoCnt
+);
+
+/* Routine task_assign */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_assign
+(
+ task_t task,
+ processor_set_t new_set,
+ boolean_t assign_threads
+);
+
+/* Routine task_assign_default */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_assign_default
+(
+ task_t task,
+ boolean_t assign_threads
+);
+
+/* Routine task_get_assignment */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_get_assignment
+(
+ task_inspect_t task,
+ processor_set_name_t *assigned_set
+);
+
+/* Routine task_set_policy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_policy
+(
+ task_t task,
+ processor_set_t pset,
+ policy_t policy,
+ policy_base_t base,
+ mach_msg_type_number_t baseCnt,
+ policy_limit_t limit,
+ mach_msg_type_number_t limitCnt,
+ boolean_t change
+);
+
+/* Routine task_get_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_get_state
+(
+ task_read_t task,
+ thread_state_flavor_t flavor,
+ thread_state_t old_state,
+ mach_msg_type_number_t *old_stateCnt
+);
+
+/* Routine task_set_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_state
+(
+ task_t task,
+ thread_state_flavor_t flavor,
+ thread_state_t new_state,
+ mach_msg_type_number_t new_stateCnt
+);
+
+/* Routine task_set_phys_footprint_limit */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_phys_footprint_limit
+(
+ task_t task,
+ int new_limit,
+ int *old_limit
+);
+
+/* Routine task_suspend2 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_suspend2
+(
+ task_t target_task,
+ task_suspension_token_t *suspend_token
+);
+
+/* Routine task_resume2 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_resume2
+(
+ task_suspension_token_t suspend_token
+);
+
+/* Routine task_purgable_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_purgable_info
+(
+ task_inspect_t task,
+ task_purgable_info_t *stats
+);
+
+/* Routine task_get_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_get_mach_voucher
+(
+ task_read_t task,
+ mach_voucher_selector_t which,
+ ipc_voucher_t *voucher
+);
+
+/* Routine task_set_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_set_mach_voucher
+(
+ task_t task,
+ ipc_voucher_t voucher
+);
+
+/* Routine task_swap_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t task_swap_mach_voucher
+(
+ task_t task,
+ ipc_voucher_t new_voucher,
+ ipc_voucher_t *old_voucher
+);
+
+/* Routine task_generate_corpse */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_generate_corpse
+(
+ task_t task,
+ mach_port_t *corpse_task_port
+);
+
+/* Routine task_map_corpse_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_map_corpse_info
+(
+ task_t task,
+ task_read_t corspe_task,
+ vm_address_t *kcd_addr_begin,
+ uint32_t *kcd_size
+);
+
+/* Routine task_register_dyld_image_infos */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_register_dyld_image_infos
+(
+ task_t task,
+ dyld_kernel_image_info_array_t dyld_images,
+ mach_msg_type_number_t dyld_imagesCnt
+);
+
+/* Routine task_unregister_dyld_image_infos */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_unregister_dyld_image_infos
+(
+ task_t task,
+ dyld_kernel_image_info_array_t dyld_images,
+ mach_msg_type_number_t dyld_imagesCnt
+);
+
+/* Routine task_get_dyld_image_infos */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_get_dyld_image_infos
+(
+ task_read_t task,
+ dyld_kernel_image_info_array_t *dyld_images,
+ mach_msg_type_number_t *dyld_imagesCnt
+);
+
+/* Routine task_register_dyld_shared_cache_image_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_register_dyld_shared_cache_image_info
+(
+ task_t task,
+ dyld_kernel_image_info_t dyld_cache_image,
+ boolean_t no_cache,
+ boolean_t private_cache
+);
+
+/* Routine task_register_dyld_set_dyld_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_register_dyld_set_dyld_state
+(
+ task_t task,
+ uint8_t dyld_state
+);
+
+/* Routine task_register_dyld_get_process_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_register_dyld_get_process_state
+(
+ task_t task,
+ dyld_kernel_process_info_t *dyld_process_state
+);
+
+/* Routine task_map_corpse_info_64 */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_map_corpse_info_64
+(
+ task_t task,
+ task_read_t corspe_task,
+ mach_vm_address_t *kcd_addr_begin,
+ mach_vm_size_t *kcd_size
+);
+
+/* Routine task_inspect */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_inspect
+(
+ task_inspect_t task,
+ task_inspect_flavor_t flavor,
+ task_inspect_info_t info_out,
+ mach_msg_type_number_t *info_outCnt
+);
+
+/* Routine task_get_exc_guard_behavior */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_get_exc_guard_behavior
+(
+ task_inspect_t task,
+ task_exc_guard_behavior_t *behavior
+);
+
+/* Routine task_set_exc_guard_behavior */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_set_exc_guard_behavior
+(
+ task_t task,
+ task_exc_guard_behavior_t behavior
+);
+
+/* Routine task_create_suid_cred */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t task_create_suid_cred
+(
+ task_t task,
+ suid_cred_path_t path,
+ suid_cred_uid_t uid,
+ suid_cred_t *delegation
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__task_subsystem__defined
+#define __Request__task_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t ledgers;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t ledgersCnt;
+ boolean_t inherit_memory;
+ } __Request__task_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_terminate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_threads_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t init_port_set;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t init_port_setCnt;
+ } __Request__mach_ports_register_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__mach_ports_lookup_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_flavor_t flavor;
+ mach_msg_type_number_t task_info_outCnt;
+ } __Request__task_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_flavor_t flavor;
+ mach_msg_type_number_t task_info_inCnt;
+ integer_t task_info_in[87];
+ } __Request__task_set_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_suspend_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_resume_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int which_port;
+ } __Request__task_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t special_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int which_port;
+ } __Request__task_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t new_stateCnt;
+ natural_t new_state[1296];
+ } __Request__thread_create_running_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__task_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ } __Request__task_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__task_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int n_ulocks;
+ int policy;
+ } __Request__lock_set_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t lock_set;
+ /* end of the kernel processed data */
+ } __Request__lock_set_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int policy;
+ int value;
+ } __Request__semaphore_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t semaphore;
+ /* end of the kernel processed data */
+ } __Request__semaphore_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_policy_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[16];
+ } __Request__task_policy_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_policy_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ boolean_t get_default;
+ } __Request__task_policy_get_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t reply;
+ /* end of the kernel processed data */
+ } __Request__task_sample_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ policy_t policy;
+ mach_msg_type_number_t baseCnt;
+ integer_t base[5];
+ boolean_t set_limit;
+ boolean_t change;
+ } __Request__task_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t routine_entry_pt;
+ int routine_number;
+ } __Request__task_set_emulation_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_get_emulation_vector_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t emulation_vector;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int vector_start;
+ mach_msg_type_number_t emulation_vectorCnt;
+ } __Request__task_set_emulation_vector_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ vm_address_t basepc;
+ vm_address_t boundspc;
+ } __Request__task_set_ras_pc_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_zone_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_set;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ boolean_t assign_threads;
+ } __Request__task_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ boolean_t assign_threads;
+ } __Request__task_assign_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t pset;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ policy_t policy;
+ mach_msg_type_number_t baseCnt;
+ integer_t base[5];
+ mach_msg_type_number_t limitCnt;
+ integer_t limit[1];
+ boolean_t change;
+ } __Request__task_set_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t old_stateCnt;
+ } __Request__task_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t new_stateCnt;
+ natural_t new_state[1296];
+ } __Request__task_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int new_limit;
+ } __Request__task_set_phys_footprint_limit_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_suspend2_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_resume2_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_purgable_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_voucher_selector_t which;
+ } __Request__task_get_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Request__task_set_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_voucher;
+ mach_msg_port_descriptor_t old_voucher;
+ /* end of the kernel processed data */
+ } __Request__task_swap_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_generate_corpse_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t corspe_task;
+ /* end of the kernel processed data */
+ } __Request__task_map_corpse_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t dyld_images;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t dyld_imagesCnt;
+ } __Request__task_register_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t dyld_images;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t dyld_imagesCnt;
+ } __Request__task_unregister_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_get_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ dyld_kernel_image_info_t dyld_cache_image;
+ boolean_t no_cache;
+ boolean_t private_cache;
+ } __Request__task_register_dyld_shared_cache_image_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ uint8_t dyld_state;
+ char dyld_statePad[3];
+ } __Request__task_register_dyld_set_dyld_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_register_dyld_get_process_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t corspe_task;
+ /* end of the kernel processed data */
+ } __Request__task_map_corpse_info_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_inspect_flavor_t flavor;
+ mach_msg_type_number_t info_outCnt;
+ } __Request__task_inspect_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__task_get_exc_guard_behavior_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ task_exc_guard_behavior_t behavior;
+ } __Request__task_set_exc_guard_behavior_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_msg_type_number_t pathOffset; /* MiG doesn't use it */
+ mach_msg_type_number_t pathCnt;
+ char path[1024];
+ suid_cred_uid_t uid;
+ } __Request__task_create_suid_cred_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__task_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__task_subsystem__defined
+#define __RequestUnion__task_subsystem__defined
+union __RequestUnion__task_subsystem {
+ __Request__task_create_t Request_task_create;
+ __Request__task_terminate_t Request_task_terminate;
+ __Request__task_threads_t Request_task_threads;
+ __Request__mach_ports_register_t Request_mach_ports_register;
+ __Request__mach_ports_lookup_t Request_mach_ports_lookup;
+ __Request__task_info_t Request_task_info;
+ __Request__task_set_info_t Request_task_set_info;
+ __Request__task_suspend_t Request_task_suspend;
+ __Request__task_resume_t Request_task_resume;
+ __Request__task_get_special_port_t Request_task_get_special_port;
+ __Request__task_set_special_port_t Request_task_set_special_port;
+ __Request__thread_create_t Request_thread_create;
+ __Request__thread_create_running_t Request_thread_create_running;
+ __Request__task_set_exception_ports_t Request_task_set_exception_ports;
+ __Request__task_get_exception_ports_t Request_task_get_exception_ports;
+ __Request__task_swap_exception_ports_t Request_task_swap_exception_ports;
+ __Request__lock_set_create_t Request_lock_set_create;
+ __Request__lock_set_destroy_t Request_lock_set_destroy;
+ __Request__semaphore_create_t Request_semaphore_create;
+ __Request__semaphore_destroy_t Request_semaphore_destroy;
+ __Request__task_policy_set_t Request_task_policy_set;
+ __Request__task_policy_get_t Request_task_policy_get;
+ __Request__task_sample_t Request_task_sample;
+ __Request__task_policy_t Request_task_policy;
+ __Request__task_set_emulation_t Request_task_set_emulation;
+ __Request__task_get_emulation_vector_t Request_task_get_emulation_vector;
+ __Request__task_set_emulation_vector_t Request_task_set_emulation_vector;
+ __Request__task_set_ras_pc_t Request_task_set_ras_pc;
+ __Request__task_zone_info_t Request_task_zone_info;
+ __Request__task_assign_t Request_task_assign;
+ __Request__task_assign_default_t Request_task_assign_default;
+ __Request__task_get_assignment_t Request_task_get_assignment;
+ __Request__task_set_policy_t Request_task_set_policy;
+ __Request__task_get_state_t Request_task_get_state;
+ __Request__task_set_state_t Request_task_set_state;
+ __Request__task_set_phys_footprint_limit_t Request_task_set_phys_footprint_limit;
+ __Request__task_suspend2_t Request_task_suspend2;
+ __Request__task_resume2_t Request_task_resume2;
+ __Request__task_purgable_info_t Request_task_purgable_info;
+ __Request__task_get_mach_voucher_t Request_task_get_mach_voucher;
+ __Request__task_set_mach_voucher_t Request_task_set_mach_voucher;
+ __Request__task_swap_mach_voucher_t Request_task_swap_mach_voucher;
+ __Request__task_generate_corpse_t Request_task_generate_corpse;
+ __Request__task_map_corpse_info_t Request_task_map_corpse_info;
+ __Request__task_register_dyld_image_infos_t Request_task_register_dyld_image_infos;
+ __Request__task_unregister_dyld_image_infos_t Request_task_unregister_dyld_image_infos;
+ __Request__task_get_dyld_image_infos_t Request_task_get_dyld_image_infos;
+ __Request__task_register_dyld_shared_cache_image_info_t Request_task_register_dyld_shared_cache_image_info;
+ __Request__task_register_dyld_set_dyld_state_t Request_task_register_dyld_set_dyld_state;
+ __Request__task_register_dyld_get_process_state_t Request_task_register_dyld_get_process_state;
+ __Request__task_map_corpse_info_64_t Request_task_map_corpse_info_64;
+ __Request__task_inspect_t Request_task_inspect;
+ __Request__task_get_exc_guard_behavior_t Request_task_get_exc_guard_behavior;
+ __Request__task_set_exc_guard_behavior_t Request_task_set_exc_guard_behavior;
+ __Request__task_create_suid_cred_t Request_task_create_suid_cred;
+};
+#endif /* !__RequestUnion__task_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__task_subsystem__defined
+#define __Reply__task_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t child_task;
+ /* end of the kernel processed data */
+ } __Reply__task_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_terminate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t act_list;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t act_listCnt;
+ } __Reply__task_threads_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__mach_ports_register_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_ports_descriptor_t init_port_set;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t init_port_setCnt;
+ } __Reply__mach_ports_lookup_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t task_info_outCnt;
+ integer_t task_info_out[87];
+ } __Reply__task_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_suspend_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_resume_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t special_port;
+ /* end of the kernel processed data */
+ } __Reply__task_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t child_act;
+ /* end of the kernel processed data */
+ } __Reply__thread_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t child_act;
+ /* end of the kernel processed data */
+ } __Reply__thread_create_running_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlers[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__task_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlerss[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__task_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_lock_set;
+ /* end of the kernel processed data */
+ } __Reply__lock_set_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__lock_set_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t semaphore;
+ /* end of the kernel processed data */
+ } __Reply__semaphore_create_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__semaphore_destroy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_policy_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[16];
+ boolean_t get_default;
+ } __Reply__task_policy_get_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_sample_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_emulation_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t emulation_vector;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int vector_start;
+ mach_msg_type_number_t emulation_vectorCnt;
+ } __Reply__task_get_emulation_vector_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_emulation_vector_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_ras_pc_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t names;
+ mach_msg_ool_descriptor_t info;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t namesCnt;
+ mach_msg_type_number_t infoCnt;
+ } __Reply__task_zone_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_assign_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t assigned_set;
+ /* end of the kernel processed data */
+ } __Reply__task_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t old_stateCnt;
+ natural_t old_state[1296];
+ } __Reply__task_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ int old_limit;
+ } __Reply__task_set_phys_footprint_limit_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t suspend_token;
+ /* end of the kernel processed data */
+ } __Reply__task_suspend2_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_resume2_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ task_purgable_info_t stats;
+ } __Reply__task_purgable_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Reply__task_get_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_voucher;
+ /* end of the kernel processed data */
+ } __Reply__task_swap_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t corpse_task_port;
+ /* end of the kernel processed data */
+ } __Reply__task_generate_corpse_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ vm_address_t kcd_addr_begin;
+ uint32_t kcd_size;
+ } __Reply__task_map_corpse_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_register_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_unregister_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_ool_descriptor_t dyld_images;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t dyld_imagesCnt;
+ } __Reply__task_get_dyld_image_infos_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_register_dyld_shared_cache_image_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_register_dyld_set_dyld_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ dyld_kernel_process_info_t dyld_process_state;
+ } __Reply__task_register_dyld_get_process_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_vm_address_t kcd_addr_begin;
+ mach_vm_size_t kcd_size;
+ } __Reply__task_map_corpse_info_64_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t info_outCnt;
+ integer_t info_out[4];
+ } __Reply__task_inspect_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ task_exc_guard_behavior_t behavior;
+ } __Reply__task_get_exc_guard_behavior_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__task_set_exc_guard_behavior_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t delegation;
+ /* end of the kernel processed data */
+ } __Reply__task_create_suid_cred_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__task_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__task_subsystem__defined
+#define __ReplyUnion__task_subsystem__defined
+union __ReplyUnion__task_subsystem {
+ __Reply__task_create_t Reply_task_create;
+ __Reply__task_terminate_t Reply_task_terminate;
+ __Reply__task_threads_t Reply_task_threads;
+ __Reply__mach_ports_register_t Reply_mach_ports_register;
+ __Reply__mach_ports_lookup_t Reply_mach_ports_lookup;
+ __Reply__task_info_t Reply_task_info;
+ __Reply__task_set_info_t Reply_task_set_info;
+ __Reply__task_suspend_t Reply_task_suspend;
+ __Reply__task_resume_t Reply_task_resume;
+ __Reply__task_get_special_port_t Reply_task_get_special_port;
+ __Reply__task_set_special_port_t Reply_task_set_special_port;
+ __Reply__thread_create_t Reply_thread_create;
+ __Reply__thread_create_running_t Reply_thread_create_running;
+ __Reply__task_set_exception_ports_t Reply_task_set_exception_ports;
+ __Reply__task_get_exception_ports_t Reply_task_get_exception_ports;
+ __Reply__task_swap_exception_ports_t Reply_task_swap_exception_ports;
+ __Reply__lock_set_create_t Reply_lock_set_create;
+ __Reply__lock_set_destroy_t Reply_lock_set_destroy;
+ __Reply__semaphore_create_t Reply_semaphore_create;
+ __Reply__semaphore_destroy_t Reply_semaphore_destroy;
+ __Reply__task_policy_set_t Reply_task_policy_set;
+ __Reply__task_policy_get_t Reply_task_policy_get;
+ __Reply__task_sample_t Reply_task_sample;
+ __Reply__task_policy_t Reply_task_policy;
+ __Reply__task_set_emulation_t Reply_task_set_emulation;
+ __Reply__task_get_emulation_vector_t Reply_task_get_emulation_vector;
+ __Reply__task_set_emulation_vector_t Reply_task_set_emulation_vector;
+ __Reply__task_set_ras_pc_t Reply_task_set_ras_pc;
+ __Reply__task_zone_info_t Reply_task_zone_info;
+ __Reply__task_assign_t Reply_task_assign;
+ __Reply__task_assign_default_t Reply_task_assign_default;
+ __Reply__task_get_assignment_t Reply_task_get_assignment;
+ __Reply__task_set_policy_t Reply_task_set_policy;
+ __Reply__task_get_state_t Reply_task_get_state;
+ __Reply__task_set_state_t Reply_task_set_state;
+ __Reply__task_set_phys_footprint_limit_t Reply_task_set_phys_footprint_limit;
+ __Reply__task_suspend2_t Reply_task_suspend2;
+ __Reply__task_resume2_t Reply_task_resume2;
+ __Reply__task_purgable_info_t Reply_task_purgable_info;
+ __Reply__task_get_mach_voucher_t Reply_task_get_mach_voucher;
+ __Reply__task_set_mach_voucher_t Reply_task_set_mach_voucher;
+ __Reply__task_swap_mach_voucher_t Reply_task_swap_mach_voucher;
+ __Reply__task_generate_corpse_t Reply_task_generate_corpse;
+ __Reply__task_map_corpse_info_t Reply_task_map_corpse_info;
+ __Reply__task_register_dyld_image_infos_t Reply_task_register_dyld_image_infos;
+ __Reply__task_unregister_dyld_image_infos_t Reply_task_unregister_dyld_image_infos;
+ __Reply__task_get_dyld_image_infos_t Reply_task_get_dyld_image_infos;
+ __Reply__task_register_dyld_shared_cache_image_info_t Reply_task_register_dyld_shared_cache_image_info;
+ __Reply__task_register_dyld_set_dyld_state_t Reply_task_register_dyld_set_dyld_state;
+ __Reply__task_register_dyld_get_process_state_t Reply_task_register_dyld_get_process_state;
+ __Reply__task_map_corpse_info_64_t Reply_task_map_corpse_info_64;
+ __Reply__task_inspect_t Reply_task_inspect;
+ __Reply__task_get_exc_guard_behavior_t Reply_task_get_exc_guard_behavior;
+ __Reply__task_set_exc_guard_behavior_t Reply_task_set_exc_guard_behavior;
+ __Reply__task_create_suid_cred_t Reply_task_create_suid_cred;
+};
+#endif /* !__RequestUnion__task_subsystem__defined */
+
+#ifndef subsystem_to_name_map_task
+#define subsystem_to_name_map_task \
+ { "task_create", 3400 },\
+ { "task_terminate", 3401 },\
+ { "task_threads", 3402 },\
+ { "mach_ports_register", 3403 },\
+ { "mach_ports_lookup", 3404 },\
+ { "task_info", 3405 },\
+ { "task_set_info", 3406 },\
+ { "task_suspend", 3407 },\
+ { "task_resume", 3408 },\
+ { "task_get_special_port", 3409 },\
+ { "task_set_special_port", 3410 },\
+ { "thread_create", 3411 },\
+ { "thread_create_running", 3412 },\
+ { "task_set_exception_ports", 3413 },\
+ { "task_get_exception_ports", 3414 },\
+ { "task_swap_exception_ports", 3415 },\
+ { "lock_set_create", 3416 },\
+ { "lock_set_destroy", 3417 },\
+ { "semaphore_create", 3418 },\
+ { "semaphore_destroy", 3419 },\
+ { "task_policy_set", 3420 },\
+ { "task_policy_get", 3421 },\
+ { "task_sample", 3422 },\
+ { "task_policy", 3423 },\
+ { "task_set_emulation", 3424 },\
+ { "task_get_emulation_vector", 3425 },\
+ { "task_set_emulation_vector", 3426 },\
+ { "task_set_ras_pc", 3427 },\
+ { "task_zone_info", 3428 },\
+ { "task_assign", 3429 },\
+ { "task_assign_default", 3430 },\
+ { "task_get_assignment", 3431 },\
+ { "task_set_policy", 3432 },\
+ { "task_get_state", 3433 },\
+ { "task_set_state", 3434 },\
+ { "task_set_phys_footprint_limit", 3435 },\
+ { "task_suspend2", 3436 },\
+ { "task_resume2", 3437 },\
+ { "task_purgable_info", 3438 },\
+ { "task_get_mach_voucher", 3439 },\
+ { "task_set_mach_voucher", 3440 },\
+ { "task_swap_mach_voucher", 3441 },\
+ { "task_generate_corpse", 3442 },\
+ { "task_map_corpse_info", 3443 },\
+ { "task_register_dyld_image_infos", 3444 },\
+ { "task_unregister_dyld_image_infos", 3445 },\
+ { "task_get_dyld_image_infos", 3446 },\
+ { "task_register_dyld_shared_cache_image_info", 3447 },\
+ { "task_register_dyld_set_dyld_state", 3448 },\
+ { "task_register_dyld_get_process_state", 3449 },\
+ { "task_map_corpse_info_64", 3450 },\
+ { "task_inspect", 3451 },\
+ { "task_get_exc_guard_behavior", 3452 },\
+ { "task_set_exc_guard_behavior", 3453 },\
+ { "task_create_suid_cred", 3454 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _task_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/task_info.h b/lib/libc/include/aarch64-macos-gnu/mach/task_info.h
new file mode 100644
index 0000000000..6d8258ad72
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/task_info.h
@@ -0,0 +1,524 @@
+/*
+ * Copyright (c) 2000-2007, 2015 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ * Machine-independent task information structures and definitions.
+ *
+ * The definitions in this file are exported to the user. The kernel
+ * will translate its internal data structures to these structures
+ * as appropriate.
+ *
+ */
+
+#ifndef _MACH_TASK_INFO_H_
+#define _MACH_TASK_INFO_H_
+
+#include <mach/message.h>
+#include <mach/machine/vm_types.h>
+#include <mach/time_value.h>
+#include <mach/policy.h>
+#include <mach/vm_statistics.h> /* for vm_extmod_statistics_data_t */
+#include <Availability.h>
+
+#include <sys/cdefs.h>
+
+/*
+ * Generic information structure to allow for expansion.
+ */
+typedef natural_t task_flavor_t;
+typedef integer_t *task_info_t; /* varying array of int */
+
+/* Deprecated, use per structure _data_t's instead */
+#define TASK_INFO_MAX (1024) /* maximum array size */
+typedef integer_t task_info_data_t[TASK_INFO_MAX];
+
+/*
+ * Currently defined information structures.
+ */
+
+#pragma pack(push, 4)
+
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+#define TASK_BASIC_INFO_32 4 /* basic information */
+#define TASK_BASIC2_INFO_32 6
+
+struct task_basic_info_32 {
+ integer_t suspend_count; /* suspend count for task */
+ natural_t virtual_size; /* virtual memory size (bytes) */
+ natural_t resident_size; /* resident memory size (bytes) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+};
+typedef struct task_basic_info_32 task_basic_info_32_data_t;
+typedef struct task_basic_info_32 *task_basic_info_32_t;
+#define TASK_BASIC_INFO_32_COUNT \
+ (sizeof(task_basic_info_32_data_t) / sizeof(natural_t))
+
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+struct task_basic_info_64 {
+ integer_t suspend_count; /* suspend count for task */
+#if defined(__arm__) || defined(__arm64__)
+ mach_vm_size_t virtual_size; /* virtual memory size (bytes) */
+ mach_vm_size_t resident_size; /* resident memory size (bytes) */
+#else /* defined(__arm__) || defined(__arm64__) */
+ mach_vm_size_t virtual_size; /* virtual memory size (bytes) */
+ mach_vm_size_t resident_size; /* resident memory size (bytes) */
+#endif /* defined(__arm__) || defined(__arm64__) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+};
+typedef struct task_basic_info_64 task_basic_info_64_data_t;
+typedef struct task_basic_info_64 *task_basic_info_64_t;
+
+#if defined(__arm__) || defined(__arm64__)
+ #if defined(__arm__) && defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && (__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_5_0)
+/*
+ * Note: arm64 can't use the old flavor. If you somehow manage to,
+ * you can cope with the nonsense data yourself.
+ */
+ #define TASK_BASIC_INFO_64 5
+ #define TASK_BASIC_INFO_64_COUNT \
+ (sizeof(task_basic_info_64_data_t) / sizeof(natural_t))
+
+ #else
+
+ #define TASK_BASIC_INFO_64 TASK_BASIC_INFO_64_2
+ #define TASK_BASIC_INFO_64_COUNT TASK_BASIC_INFO_64_2_COUNT
+ #endif
+#else /* defined(__arm__) || defined(__arm64__) */
+#define TASK_BASIC_INFO_64 5 /* 64-bit capable basic info */
+#define TASK_BASIC_INFO_64_COUNT \
+ (sizeof(task_basic_info_64_data_t) / sizeof(natural_t))
+#endif
+
+
+/* localized structure - cannot be safely passed between tasks of differing sizes */
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+struct task_basic_info {
+ integer_t suspend_count; /* suspend count for task */
+ vm_size_t virtual_size; /* virtual memory size (bytes) */
+ vm_size_t resident_size; /* resident memory size (bytes) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+};
+
+typedef struct task_basic_info task_basic_info_data_t;
+typedef struct task_basic_info *task_basic_info_t;
+#define TASK_BASIC_INFO_COUNT \
+ (sizeof(task_basic_info_data_t) / sizeof(natural_t))
+#if !defined(__LP64__)
+#define TASK_BASIC_INFO TASK_BASIC_INFO_32
+#else
+#define TASK_BASIC_INFO TASK_BASIC_INFO_64
+#endif
+
+
+
+#define TASK_EVENTS_INFO 2 /* various event counts */
+
+struct task_events_info {
+ integer_t faults; /* number of page faults */
+ integer_t pageins; /* number of actual pageins */
+ integer_t cow_faults; /* number of copy-on-write faults */
+ integer_t messages_sent; /* number of messages sent */
+ integer_t messages_received; /* number of messages received */
+ integer_t syscalls_mach; /* number of mach system calls */
+ integer_t syscalls_unix; /* number of unix system calls */
+ integer_t csw; /* number of context switches */
+};
+typedef struct task_events_info task_events_info_data_t;
+typedef struct task_events_info *task_events_info_t;
+#define TASK_EVENTS_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_events_info_data_t) / sizeof(natural_t)))
+
+#define TASK_THREAD_TIMES_INFO 3 /* total times for live threads -
+ * only accurate if suspended */
+
+struct task_thread_times_info {
+ time_value_t user_time; /* total user run time for
+ * live threads */
+ time_value_t system_time; /* total system run time for
+ * live threads */
+};
+
+typedef struct task_thread_times_info task_thread_times_info_data_t;
+typedef struct task_thread_times_info *task_thread_times_info_t;
+#define TASK_THREAD_TIMES_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_thread_times_info_data_t) / sizeof(natural_t)))
+
+#define TASK_ABSOLUTETIME_INFO 1
+
+struct task_absolutetime_info {
+ uint64_t total_user;
+ uint64_t total_system;
+ uint64_t threads_user; /* existing threads only */
+ uint64_t threads_system;
+};
+
+typedef struct task_absolutetime_info task_absolutetime_info_data_t;
+typedef struct task_absolutetime_info *task_absolutetime_info_t;
+#define TASK_ABSOLUTETIME_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_absolutetime_info_data_t) / sizeof (natural_t)))
+
+#define TASK_KERNELMEMORY_INFO 7
+
+struct task_kernelmemory_info {
+ uint64_t total_palloc; /* private kernel mem alloc'ed */
+ uint64_t total_pfree; /* private kernel mem freed */
+ uint64_t total_salloc; /* shared kernel mem alloc'ed */
+ uint64_t total_sfree; /* shared kernel mem freed */
+};
+
+typedef struct task_kernelmemory_info task_kernelmemory_info_data_t;
+typedef struct task_kernelmemory_info *task_kernelmemory_info_t;
+#define TASK_KERNELMEMORY_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_kernelmemory_info_data_t) / sizeof (natural_t)))
+
+#define TASK_SECURITY_TOKEN 13
+#define TASK_SECURITY_TOKEN_COUNT ((mach_msg_type_number_t) \
+ (sizeof(security_token_t) / sizeof(natural_t)))
+
+#define TASK_AUDIT_TOKEN 15
+#define TASK_AUDIT_TOKEN_COUNT \
+ (sizeof(audit_token_t) / sizeof(natural_t))
+
+
+#define TASK_AFFINITY_TAG_INFO 16 /* This is experimental. */
+
+struct task_affinity_tag_info {
+ integer_t set_count;
+ integer_t min;
+ integer_t max;
+ integer_t task_count;
+};
+typedef struct task_affinity_tag_info task_affinity_tag_info_data_t;
+typedef struct task_affinity_tag_info *task_affinity_tag_info_t;
+#define TASK_AFFINITY_TAG_INFO_COUNT \
+ (sizeof(task_affinity_tag_info_data_t) / sizeof(natural_t))
+
+#define TASK_DYLD_INFO 17
+
+struct task_dyld_info {
+ mach_vm_address_t all_image_info_addr;
+ mach_vm_size_t all_image_info_size;
+ integer_t all_image_info_format;
+};
+typedef struct task_dyld_info task_dyld_info_data_t;
+typedef struct task_dyld_info *task_dyld_info_t;
+#define TASK_DYLD_INFO_COUNT \
+ (sizeof(task_dyld_info_data_t) / sizeof(natural_t))
+#define TASK_DYLD_ALL_IMAGE_INFO_32 0 /* format value */
+#define TASK_DYLD_ALL_IMAGE_INFO_64 1 /* format value */
+
+#if defined(__arm__) || defined(__arm64__)
+
+/* Don't use this, use MACH_TASK_BASIC_INFO instead */
+/* Compatibility for old 32-bit mach_vm_*_t */
+#define TASK_BASIC_INFO_64_2 18 /* 64-bit capable basic info */
+
+struct task_basic_info_64_2 {
+ integer_t suspend_count; /* suspend count for task */
+ mach_vm_size_t virtual_size; /* virtual memory size (bytes) */
+ mach_vm_size_t resident_size; /* resident memory size (bytes) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+};
+typedef struct task_basic_info_64_2 task_basic_info_64_2_data_t;
+typedef struct task_basic_info_64_2 *task_basic_info_64_2_t;
+#define TASK_BASIC_INFO_64_2_COUNT \
+ (sizeof(task_basic_info_64_2_data_t) / sizeof(natural_t))
+#endif
+
+#define TASK_EXTMOD_INFO 19
+
+struct task_extmod_info {
+ unsigned char task_uuid[16];
+ vm_extmod_statistics_data_t extmod_statistics;
+};
+typedef struct task_extmod_info task_extmod_info_data_t;
+typedef struct task_extmod_info *task_extmod_info_t;
+#define TASK_EXTMOD_INFO_COUNT \
+ (sizeof(task_extmod_info_data_t) / sizeof(natural_t))
+
+
+#define MACH_TASK_BASIC_INFO 20 /* always 64-bit basic info */
+struct mach_task_basic_info {
+ mach_vm_size_t virtual_size; /* virtual memory size (bytes) */
+ mach_vm_size_t resident_size; /* resident memory size (bytes) */
+ mach_vm_size_t resident_size_max; /* maximum resident memory size (bytes) */
+ time_value_t user_time; /* total user run time for
+ * terminated threads */
+ time_value_t system_time; /* total system run time for
+ * terminated threads */
+ policy_t policy; /* default policy for new threads */
+ integer_t suspend_count; /* suspend count for task */
+};
+typedef struct mach_task_basic_info mach_task_basic_info_data_t;
+typedef struct mach_task_basic_info *mach_task_basic_info_t;
+#define MACH_TASK_BASIC_INFO_COUNT \
+ (sizeof(mach_task_basic_info_data_t) / sizeof(natural_t))
+
+
+#define TASK_POWER_INFO 21
+
+struct task_power_info {
+ uint64_t total_user;
+ uint64_t total_system;
+ uint64_t task_interrupt_wakeups;
+ uint64_t task_platform_idle_wakeups;
+ uint64_t task_timer_wakeups_bin_1;
+ uint64_t task_timer_wakeups_bin_2;
+};
+
+typedef struct task_power_info task_power_info_data_t;
+typedef struct task_power_info *task_power_info_t;
+#define TASK_POWER_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_power_info_data_t) / sizeof (natural_t)))
+
+
+
+#define TASK_VM_INFO 22
+#define TASK_VM_INFO_PURGEABLE 23
+struct task_vm_info {
+ mach_vm_size_t virtual_size; /* virtual memory size (bytes) */
+ integer_t region_count; /* number of memory regions */
+ integer_t page_size;
+ mach_vm_size_t resident_size; /* resident memory size (bytes) */
+ mach_vm_size_t resident_size_peak; /* peak resident size (bytes) */
+
+ mach_vm_size_t device;
+ mach_vm_size_t device_peak;
+ mach_vm_size_t internal;
+ mach_vm_size_t internal_peak;
+ mach_vm_size_t external;
+ mach_vm_size_t external_peak;
+ mach_vm_size_t reusable;
+ mach_vm_size_t reusable_peak;
+ mach_vm_size_t purgeable_volatile_pmap;
+ mach_vm_size_t purgeable_volatile_resident;
+ mach_vm_size_t purgeable_volatile_virtual;
+ mach_vm_size_t compressed;
+ mach_vm_size_t compressed_peak;
+ mach_vm_size_t compressed_lifetime;
+
+ /* added for rev1 */
+ mach_vm_size_t phys_footprint;
+
+ /* added for rev2 */
+ mach_vm_address_t min_address;
+ mach_vm_address_t max_address;
+
+ /* added for rev3 */
+ int64_t ledger_phys_footprint_peak;
+ int64_t ledger_purgeable_nonvolatile;
+ int64_t ledger_purgeable_novolatile_compressed;
+ int64_t ledger_purgeable_volatile;
+ int64_t ledger_purgeable_volatile_compressed;
+ int64_t ledger_tag_network_nonvolatile;
+ int64_t ledger_tag_network_nonvolatile_compressed;
+ int64_t ledger_tag_network_volatile;
+ int64_t ledger_tag_network_volatile_compressed;
+ int64_t ledger_tag_media_footprint;
+ int64_t ledger_tag_media_footprint_compressed;
+ int64_t ledger_tag_media_nofootprint;
+ int64_t ledger_tag_media_nofootprint_compressed;
+ int64_t ledger_tag_graphics_footprint;
+ int64_t ledger_tag_graphics_footprint_compressed;
+ int64_t ledger_tag_graphics_nofootprint;
+ int64_t ledger_tag_graphics_nofootprint_compressed;
+ int64_t ledger_tag_neural_footprint;
+ int64_t ledger_tag_neural_footprint_compressed;
+ int64_t ledger_tag_neural_nofootprint;
+ int64_t ledger_tag_neural_nofootprint_compressed;
+
+ /* added for rev4 */
+ uint64_t limit_bytes_remaining;
+
+ /* added for rev5 */
+ integer_t decompressions;
+};
+typedef struct task_vm_info task_vm_info_data_t;
+typedef struct task_vm_info *task_vm_info_t;
+#define TASK_VM_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_vm_info_data_t) / sizeof (natural_t)))
+#define TASK_VM_INFO_REV5_COUNT TASK_VM_INFO_COUNT
+#define TASK_VM_INFO_REV4_COUNT /* doesn't include decompressions */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV5_COUNT - 1))
+#define TASK_VM_INFO_REV3_COUNT /* doesn't include limit bytes */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV4_COUNT - 2))
+#define TASK_VM_INFO_REV2_COUNT /* doesn't include extra ledgers info */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV3_COUNT - 42))
+#define TASK_VM_INFO_REV1_COUNT /* doesn't include min and max address */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV2_COUNT - 4))
+#define TASK_VM_INFO_REV0_COUNT /* doesn't include phys_footprint */ \
+ ((mach_msg_type_number_t) (TASK_VM_INFO_REV1_COUNT - 2))
+
+typedef struct vm_purgeable_info task_purgable_info_t;
+
+
+#define TASK_TRACE_MEMORY_INFO 24 /* no longer supported */
+struct task_trace_memory_info {
+ uint64_t user_memory_address; /* address of start of trace memory buffer */
+ uint64_t buffer_size; /* size of buffer in bytes */
+ uint64_t mailbox_array_size; /* size of mailbox area in bytes */
+};
+typedef struct task_trace_memory_info task_trace_memory_info_data_t;
+typedef struct task_trace_memory_info * task_trace_memory_info_t;
+#define TASK_TRACE_MEMORY_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_trace_memory_info_data_t) / sizeof(natural_t)))
+
+#define TASK_WAIT_STATE_INFO 25 /* deprecated. */
+struct task_wait_state_info {
+ uint64_t total_wait_state_time; /* Time that all threads past and present have been in a wait state */
+ uint64_t total_wait_sfi_state_time; /* Time that threads have been in SFI wait (should be a subset of total wait state time */
+ uint32_t _reserved[4];
+};
+typedef struct task_wait_state_info task_wait_state_info_data_t;
+typedef struct task_wait_state_info * task_wait_state_info_t;
+#define TASK_WAIT_STATE_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_wait_state_info_data_t) / sizeof(natural_t)))
+
+#define TASK_POWER_INFO_V2 26
+
+typedef struct {
+ uint64_t task_gpu_utilisation;
+ uint64_t task_gpu_stat_reserved0;
+ uint64_t task_gpu_stat_reserved1;
+ uint64_t task_gpu_stat_reserved2;
+} gpu_energy_data;
+
+typedef gpu_energy_data *gpu_energy_data_t;
+struct task_power_info_v2 {
+ task_power_info_data_t cpu_energy;
+ gpu_energy_data gpu_energy;
+#if defined(__arm__) || defined(__arm64__)
+ uint64_t task_energy;
+#endif /* defined(__arm__) || defined(__arm64__) */
+ uint64_t task_ptime;
+ uint64_t task_pset_switches;
+};
+
+typedef struct task_power_info_v2 task_power_info_v2_data_t;
+typedef struct task_power_info_v2 *task_power_info_v2_t;
+#define TASK_POWER_INFO_V2_COUNT_OLD \
+ ((mach_msg_type_number_t) (sizeof (task_power_info_v2_data_t) - sizeof(uint64_t)*2) / sizeof (natural_t))
+#define TASK_POWER_INFO_V2_COUNT \
+ ((mach_msg_type_number_t) (sizeof (task_power_info_v2_data_t) / sizeof (natural_t)))
+
+#define TASK_VM_INFO_PURGEABLE_ACCOUNT 27 /* Used for xnu purgeable vm unit tests */
+
+
+#define TASK_FLAGS_INFO 28 /* return t_flags field */
+struct task_flags_info {
+ uint32_t flags; /* task flags */
+};
+typedef struct task_flags_info task_flags_info_data_t;
+typedef struct task_flags_info * task_flags_info_t;
+#define TASK_FLAGS_INFO_COUNT ((mach_msg_type_number_t) \
+ (sizeof(task_flags_info_data_t) / sizeof (natural_t)))
+
+#define TF_LP64 0x00000001 /* task has 64-bit addressing */
+#define TF_64B_DATA 0x00000002 /* task has 64-bit data registers */
+
+#define TASK_DEBUG_INFO_INTERNAL 29 /* Used for kernel internal development tests. */
+
+
+/*
+ * Type to control EXC_GUARD delivery options for a task
+ * via task_get/set_exc_guard_behavior interface(s).
+ */
+typedef uint32_t task_exc_guard_behavior_t;
+
+/* EXC_GUARD optional delivery settings on a per-task basis */
+#define TASK_EXC_GUARD_VM_DELIVER 0x01 /* Deliver virtual memory EXC_GUARD exceptions */
+#define TASK_EXC_GUARD_VM_ONCE 0x02 /* Deliver them only once */
+#define TASK_EXC_GUARD_VM_CORPSE 0x04 /* Deliver them via a forked corpse */
+#define TASK_EXC_GUARD_VM_FATAL 0x08 /* Virtual Memory EXC_GUARD delivery is fatal */
+#define TASK_EXC_GUARD_VM_ALL 0x0f
+
+#define TASK_EXC_GUARD_MP_DELIVER 0x10 /* Deliver mach port EXC_GUARD exceptions */
+#define TASK_EXC_GUARD_MP_ONCE 0x20 /* Deliver them only once */
+#define TASK_EXC_GUARD_MP_CORPSE 0x40 /* Deliver them via a forked corpse */
+#define TASK_EXC_GUARD_MP_FATAL 0x80 /* mach port EXC_GUARD delivery is fatal */
+#define TASK_EXC_GUARD_MP_ALL 0xf0
+
+#define TASK_EXC_GUARD_ALL 0xff /* All optional deliver settings */
+
+
+/*
+ * Obsolete interfaces.
+ */
+
+#define TASK_SCHED_TIMESHARE_INFO 10
+#define TASK_SCHED_RR_INFO 11
+#define TASK_SCHED_FIFO_INFO 12
+
+#define TASK_SCHED_INFO 14
+
+#pragma pack(pop)
+
+#endif /* _MACH_TASK_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/task_policy.h b/lib/libc/include/aarch64-macos-gnu/mach/task_policy.h
new file mode 100644
index 0000000000..6ded769b6f
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/task_policy.h
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MACH_TASK_POLICY_H_
+#define _MACH_TASK_POLICY_H_
+
+#include <mach/mach_types.h>
+
+/*
+ * These are the calls for accessing the policy parameters
+ * of a particular task.
+ *
+ * The extra 'get_default' parameter to the second call is
+ * IN/OUT as follows:
+ * 1) if asserted on the way in it indicates that the default
+ * values should be returned, not the ones currently set, in
+ * this case 'get_default' will always be asserted on return;
+ * 2) if unasserted on the way in, the current settings are
+ * desired and if still unasserted on return, then the info
+ * returned reflects the current settings, otherwise if
+ * 'get_default' returns asserted, it means that there are no
+ * current settings due to other parameters taking precedence,
+ * and the default ones are being returned instead.
+ */
+
+typedef natural_t task_policy_flavor_t;
+typedef integer_t *task_policy_t;
+
+/*
+ * kern_return_t task_policy_set(
+ * task_t task,
+ * task_policy_flavor_t flavor,
+ * task_policy_t policy_info,
+ * mach_msg_type_number_t count);
+ *
+ * kern_return_t task_policy_get(
+ * task_t task,
+ * task_policy_flavor_t flavor,
+ * task_policy_t policy_info,
+ * mach_msg_type_number_t *count,
+ * boolean_t *get_default);
+ */
+
+/*
+ * Defined flavors.
+ */
+/*
+ * TASK_CATEGORY_POLICY:
+ *
+ * This provides information to the kernel about the role
+ * of the task in the system.
+ *
+ * Parameters:
+ *
+ * role: Enumerated as follows:
+ *
+ * TASK_UNSPECIFIED is the default, since the role is not
+ * inherited from the parent.
+ *
+ * TASK_FOREGROUND_APPLICATION should be assigned when the
+ * task is a normal UI application in the foreground from
+ * the HI point of view.
+ * **N.B. There may be more than one of these at a given time.
+ *
+ * TASK_BACKGROUND_APPLICATION should be assigned when the
+ * task is a normal UI application in the background from
+ * the HI point of view.
+ *
+ * TASK_CONTROL_APPLICATION should be assigned to the unique
+ * UI application which implements the pop-up application dialog.
+ * There can only be one task at a time with this designation,
+ * which is assigned FCFS.
+ *
+ * TASK_GRAPHICS_SERVER should be assigned to the graphics
+ * management (window) server. There can only be one task at
+ * a time with this designation, which is assigned FCFS.
+ */
+
+#define TASK_CATEGORY_POLICY 1
+
+#define TASK_SUPPRESSION_POLICY 3
+#define TASK_POLICY_STATE 4
+#define TASK_BASE_QOS_POLICY 8
+#define TASK_OVERRIDE_QOS_POLICY 9
+#define TASK_BASE_LATENCY_QOS_POLICY 10
+#define TASK_BASE_THROUGHPUT_QOS_POLICY 11
+
+typedef enum task_role {
+ TASK_RENICED = -1,
+ TASK_UNSPECIFIED = 0,
+ TASK_FOREGROUND_APPLICATION = 1,
+ TASK_BACKGROUND_APPLICATION = 2,
+ TASK_CONTROL_APPLICATION = 3,
+ TASK_GRAPHICS_SERVER = 4,
+ TASK_THROTTLE_APPLICATION = 5,
+ TASK_NONUI_APPLICATION = 6,
+ TASK_DEFAULT_APPLICATION = 7,
+ TASK_DARWINBG_APPLICATION = 8,
+} task_role_t;
+
+struct task_category_policy {
+ task_role_t role;
+};
+
+typedef struct task_category_policy task_category_policy_data_t;
+typedef struct task_category_policy *task_category_policy_t;
+
+#define TASK_CATEGORY_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (task_category_policy_data_t) / sizeof (integer_t)))
+
+
+enum task_latency_qos {
+ LATENCY_QOS_TIER_UNSPECIFIED = 0x0,
+ LATENCY_QOS_TIER_0 = ((0xFF << 16) | 1),
+ LATENCY_QOS_TIER_1 = ((0xFF << 16) | 2),
+ LATENCY_QOS_TIER_2 = ((0xFF << 16) | 3),
+ LATENCY_QOS_TIER_3 = ((0xFF << 16) | 4),
+ LATENCY_QOS_TIER_4 = ((0xFF << 16) | 5),
+ LATENCY_QOS_TIER_5 = ((0xFF << 16) | 6)
+};
+typedef integer_t task_latency_qos_t;
+enum task_throughput_qos {
+ THROUGHPUT_QOS_TIER_UNSPECIFIED = 0x0,
+ THROUGHPUT_QOS_TIER_0 = ((0xFE << 16) | 1),
+ THROUGHPUT_QOS_TIER_1 = ((0xFE << 16) | 2),
+ THROUGHPUT_QOS_TIER_2 = ((0xFE << 16) | 3),
+ THROUGHPUT_QOS_TIER_3 = ((0xFE << 16) | 4),
+ THROUGHPUT_QOS_TIER_4 = ((0xFE << 16) | 5),
+ THROUGHPUT_QOS_TIER_5 = ((0xFE << 16) | 6),
+};
+
+#define LATENCY_QOS_LAUNCH_DEFAULT_TIER LATENCY_QOS_TIER_3
+#define THROUGHPUT_QOS_LAUNCH_DEFAULT_TIER THROUGHPUT_QOS_TIER_3
+
+typedef integer_t task_throughput_qos_t;
+
+struct task_qos_policy {
+ task_latency_qos_t task_latency_qos_tier;
+ task_throughput_qos_t task_throughput_qos_tier;
+};
+
+typedef struct task_qos_policy *task_qos_policy_t;
+#define TASK_QOS_POLICY_COUNT ((mach_msg_type_number_t) \
+ (sizeof (struct task_qos_policy) / sizeof (integer_t)))
+
+/* These should be removed - they belong in proc_info.h */
+#define PROC_FLAG_DARWINBG 0x8000 /* process in darwin background */
+#define PROC_FLAG_EXT_DARWINBG 0x10000 /* process in darwin background - external enforcement */
+#define PROC_FLAG_IOS_APPLEDAEMON 0x20000 /* process is apple ios daemon */
+#define PROC_FLAG_IOS_IMPPROMOTION 0x80000 /* process is apple ios daemon */
+#define PROC_FLAG_ADAPTIVE 0x100000 /* Process is adaptive */
+#define PROC_FLAG_ADAPTIVE_IMPORTANT 0x200000 /* Process is adaptive, and is currently important */
+#define PROC_FLAG_IMPORTANCE_DONOR 0x400000 /* Process is marked as an importance donor */
+#define PROC_FLAG_SUPPRESSED 0x800000 /* Process is suppressed */
+#define PROC_FLAG_APPLICATION 0x1000000 /* Process is an application */
+#define PROC_FLAG_IOS_APPLICATION PROC_FLAG_APPLICATION /* Process is an application */
+
+
+
+
+#endif /* _MACH_TASK_POLICY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/task_special_ports.h b/lib/libc/include/aarch64-macos-gnu/mach/task_special_ports.h
new file mode 100644
index 0000000000..1b23c6b7e6
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/task_special_ports.h
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2000-2010 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+/*
+ * File: mach/task_special_ports.h
+ *
+ * Defines codes for special_purpose task ports. These are NOT
+ * port identifiers - they are only used for the task_get_special_port
+ * and task_set_special_port routines.
+ *
+ */
+
+#ifndef _MACH_TASK_SPECIAL_PORTS_H_
+#define _MACH_TASK_SPECIAL_PORTS_H_
+
+typedef int task_special_port_t;
+
+#define TASK_KERNEL_PORT 1 /* The full task port for task. */
+
+#define TASK_HOST_PORT 2 /* The host (priv) port for task. */
+
+#define TASK_NAME_PORT 3 /* The name port for task. */
+
+#define TASK_BOOTSTRAP_PORT 4 /* Bootstrap environment for task. */
+
+#define TASK_INSPECT_PORT 5 /* The inspect port for task. */
+
+#define TASK_READ_PORT 6 /* The read port for task. */
+
+
+
+#define TASK_SEATBELT_PORT 7 /* Seatbelt compiler/DEM port for task. */
+
+/* PORT 8 was the GSSD TASK PORT which transformed to a host port */
+
+#define TASK_ACCESS_PORT 9 /* Permission check for task_for_pid. */
+
+#define TASK_DEBUG_CONTROL_PORT 10 /* debug control port */
+
+#define TASK_RESOURCE_NOTIFY_PORT 11 /* overrides host special RN port */
+
+#define TASK_MAX_SPECIAL_PORT TASK_RESOURCE_NOTIFY_PORT
+
+/*
+ * Definitions for ease of use
+ */
+
+#define task_get_kernel_port(task, port) \
+ (task_get_special_port((task), TASK_KERNEL_PORT, (port)))
+
+#define task_set_kernel_port(task, port) \
+ (task_set_special_port((task), TASK_KERNEL_PORT, (port)))
+
+#define task_get_host_port(task, port) \
+ (task_get_special_port((task), TASK_HOST_PORT, (port)))
+
+#define task_set_host_port(task, port) \
+ (task_set_special_port((task), TASK_HOST_PORT, (port)))
+
+#define task_get_bootstrap_port(task, port) \
+ (task_get_special_port((task), TASK_BOOTSTRAP_PORT, (port)))
+
+#define task_get_debug_control_port(task, port) \
+ (task_get_special_port((task), TASK_DEBUG_CONTROL_PORT, (port)))
+
+#define task_set_bootstrap_port(task, port) \
+ (task_set_special_port((task), TASK_BOOTSTRAP_PORT, (port)))
+
+#define task_get_task_access_port(task, port) \
+ (task_get_special_port((task), TASK_ACCESS_PORT, (port)))
+
+#define task_set_task_access_port(task, port) \
+ (task_set_special_port((task), TASK_ACCESS_PORT, (port)))
+
+#define task_set_task_debug_control_port(task, port) \
+ (task_set_special_port((task), TASK_DEBUG_CONTROL_PORT, (port)))
+
+
+#endif /* _MACH_TASK_SPECIAL_PORTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/thread_act.h b/lib/libc/include/aarch64-macos-gnu/mach/thread_act.h
new file mode 100644
index 0000000000..5d7e2625a2
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/thread_act.h
@@ -0,0 +1,1386 @@
+#ifndef _thread_act_user_
+#define _thread_act_user_
+
+/* Module thread_act */
+
+#include <string.h>
+#include <mach/ndr.h>
+#include <mach/boolean.h>
+#include <mach/kern_return.h>
+#include <mach/notify.h>
+#include <mach/mach_types.h>
+#include <mach/message.h>
+#include <mach/mig_errors.h>
+#include <mach/port.h>
+
+/* BEGIN MIG_STRNCPY_ZEROFILL CODE */
+
+#if defined(__has_include)
+#if __has_include(<mach/mig_strncpy_zerofill_support.h>)
+#ifndef USING_MIG_STRNCPY_ZEROFILL
+#define USING_MIG_STRNCPY_ZEROFILL
+#endif
+#ifndef __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#define __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__
+#ifdef __cplusplus
+extern "C" {
+#endif
+ extern int mig_strncpy_zerofill(char *dest, const char *src, int len) __attribute__((weak_import));
+#ifdef __cplusplus
+}
+#endif
+#endif /* __MIG_STRNCPY_ZEROFILL_FORWARD_TYPE_DECLS__ */
+#endif /* __has_include(<mach/mig_strncpy_zerofill_support.h>) */
+#endif /* __has_include */
+
+/* END MIG_STRNCPY_ZEROFILL CODE */
+
+
+#ifdef AUTOTEST
+#ifndef FUNCTION_PTR_T
+#define FUNCTION_PTR_T
+typedef void (*function_ptr_t)(mach_port_t, char *, mach_msg_type_number_t);
+typedef struct {
+ char *name;
+ function_ptr_t function;
+} function_table_entry;
+typedef function_table_entry *function_table_t;
+#endif /* FUNCTION_PTR_T */
+#endif /* AUTOTEST */
+
+#ifndef thread_act_MSG_COUNT
+#define thread_act_MSG_COUNT 29
+#endif /* thread_act_MSG_COUNT */
+
+#include <mach/std_types.h>
+#include <mach/mig.h>
+#include <mach/mig.h>
+#include <mach/mach_types.h>
+
+#ifdef __BeforeMigUserHeader
+__BeforeMigUserHeader
+#endif /* __BeforeMigUserHeader */
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+
+/* Routine thread_terminate */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_terminate
+(
+ thread_act_t target_act
+);
+
+/* Routine act_get_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t act_get_state
+(
+ thread_read_t target_act,
+ int flavor,
+ thread_state_t old_state,
+ mach_msg_type_number_t *old_stateCnt
+);
+
+/* Routine act_set_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t act_set_state
+(
+ thread_act_t target_act,
+ int flavor,
+ thread_state_t new_state,
+ mach_msg_type_number_t new_stateCnt
+);
+
+/* Routine thread_get_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_get_state
+(
+ thread_read_t target_act,
+ thread_state_flavor_t flavor,
+ thread_state_t old_state,
+ mach_msg_type_number_t *old_stateCnt
+);
+
+/* Routine thread_set_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_set_state
+(
+ thread_act_t target_act,
+ thread_state_flavor_t flavor,
+ thread_state_t new_state,
+ mach_msg_type_number_t new_stateCnt
+);
+
+/* Routine thread_suspend */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_suspend
+(
+ thread_act_t target_act
+);
+
+/* Routine thread_resume */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_resume
+(
+ thread_act_t target_act
+);
+
+/* Routine thread_abort */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_abort
+(
+ thread_act_t target_act
+);
+
+/* Routine thread_abort_safely */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+kern_return_t thread_abort_safely
+(
+ thread_act_t target_act
+);
+
+/* Routine thread_depress_abort */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_depress_abort
+(
+ thread_act_t thread
+);
+
+/* Routine thread_get_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_get_special_port
+(
+ thread_inspect_t thr_act,
+ int which_port,
+ mach_port_t *special_port
+);
+
+/* Routine thread_set_special_port */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_set_special_port
+(
+ thread_act_t thr_act,
+ int which_port,
+ mach_port_t special_port
+);
+
+/* Routine thread_info */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_info
+(
+ thread_inspect_t target_act,
+ thread_flavor_t flavor,
+ thread_info_t thread_info_out,
+ mach_msg_type_number_t *thread_info_outCnt
+);
+
+/* Routine thread_set_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_set_exception_ports
+(
+ thread_act_t thread,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor
+);
+
+/* Routine thread_get_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_get_exception_ports
+(
+ thread_act_t thread,
+ exception_mask_t exception_mask,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlers,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine thread_swap_exception_ports */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_swap_exception_ports
+(
+ thread_act_t thread,
+ exception_mask_t exception_mask,
+ mach_port_t new_port,
+ exception_behavior_t behavior,
+ thread_state_flavor_t new_flavor,
+ exception_mask_array_t masks,
+ mach_msg_type_number_t *masksCnt,
+ exception_handler_array_t old_handlers,
+ exception_behavior_array_t old_behaviors,
+ exception_flavor_array_t old_flavors
+);
+
+/* Routine thread_policy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_policy
+(
+ thread_act_t thr_act,
+ policy_t policy,
+ policy_base_t base,
+ mach_msg_type_number_t baseCnt,
+ boolean_t set_limit
+);
+
+/* Routine thread_policy_set */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_policy_set
+(
+ thread_act_t thread,
+ thread_policy_flavor_t flavor,
+ thread_policy_t policy_info,
+ mach_msg_type_number_t policy_infoCnt
+);
+
+/* Routine thread_policy_get */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_policy_get
+(
+ thread_inspect_t thread,
+ thread_policy_flavor_t flavor,
+ thread_policy_t policy_info,
+ mach_msg_type_number_t *policy_infoCnt,
+ boolean_t *get_default
+);
+
+/* Routine thread_sample */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_sample
+(
+ thread_act_t thread,
+ mach_port_t reply
+);
+
+/* Routine etap_trace_thread */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t etap_trace_thread
+(
+ thread_act_t target_act,
+ boolean_t trace_status
+);
+
+/* Routine thread_assign */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_assign
+(
+ thread_act_t thread,
+ processor_set_t new_set
+);
+
+/* Routine thread_assign_default */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_assign_default
+(
+ thread_act_t thread
+);
+
+/* Routine thread_get_assignment */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_get_assignment
+(
+ thread_inspect_t thread,
+ processor_set_name_t *assigned_set
+);
+
+/* Routine thread_set_policy */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_set_policy
+(
+ thread_act_t thr_act,
+ processor_set_t pset,
+ policy_t policy,
+ policy_base_t base,
+ mach_msg_type_number_t baseCnt,
+ policy_limit_t limit,
+ mach_msg_type_number_t limitCnt
+);
+
+/* Routine thread_get_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_get_mach_voucher
+(
+ thread_read_t thr_act,
+ mach_voucher_selector_t which,
+ ipc_voucher_t *voucher
+);
+
+/* Routine thread_set_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_set_mach_voucher
+(
+ thread_act_t thr_act,
+ ipc_voucher_t voucher
+);
+
+/* Routine thread_swap_mach_voucher */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+__WATCHOS_PROHIBITED
+__TVOS_PROHIBITED
+kern_return_t thread_swap_mach_voucher
+(
+ thread_act_t thr_act,
+ ipc_voucher_t new_voucher,
+ ipc_voucher_t *old_voucher
+);
+
+/* Routine thread_convert_thread_state */
+#ifdef mig_external
+mig_external
+#else
+extern
+#endif /* mig_external */
+kern_return_t thread_convert_thread_state
+(
+ thread_act_t thread,
+ int direction,
+ thread_state_flavor_t flavor,
+ thread_state_t in_state,
+ mach_msg_type_number_t in_stateCnt,
+ thread_state_t out_state,
+ mach_msg_type_number_t *out_stateCnt
+);
+
+__END_DECLS
+
+/********************** Caution **************************/
+/* The following data types should be used to calculate */
+/* maximum message sizes only. The actual message may be */
+/* smaller, and the position of the arguments within the */
+/* message layout may vary from what is presented here. */
+/* For example, if any of the arguments are variable- */
+/* sized, and less than the maximum is sent, the data */
+/* will be packed tight in the actual message to reduce */
+/* the presence of holes. */
+/********************** Caution **************************/
+
+/* typedefs for all requests */
+
+#ifndef __Request__thread_act_subsystem__defined
+#define __Request__thread_act_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_terminate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int flavor;
+ mach_msg_type_number_t old_stateCnt;
+ } __Request__act_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int flavor;
+ mach_msg_type_number_t new_stateCnt;
+ natural_t new_state[1296];
+ } __Request__act_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t old_stateCnt;
+ } __Request__thread_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t new_stateCnt;
+ natural_t new_state[1296];
+ } __Request__thread_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_suspend_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_resume_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_abort_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_abort_safely_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_depress_abort_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int which_port;
+ } __Request__thread_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t special_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ int which_port;
+ } __Request__thread_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_flavor_t flavor;
+ mach_msg_type_number_t thread_info_outCnt;
+ } __Request__thread_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__thread_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ } __Request__thread_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_port;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ exception_behavior_t behavior;
+ thread_state_flavor_t new_flavor;
+ } __Request__thread_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ policy_t policy;
+ mach_msg_type_number_t baseCnt;
+ integer_t base[5];
+ boolean_t set_limit;
+ } __Request__thread_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_policy_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[16];
+ } __Request__thread_policy_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ thread_policy_flavor_t flavor;
+ mach_msg_type_number_t policy_infoCnt;
+ boolean_t get_default;
+ } __Request__thread_policy_get_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t reply;
+ /* end of the kernel processed data */
+ } __Request__thread_sample_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ boolean_t trace_status;
+ } __Request__etap_trace_thread_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_set;
+ /* end of the kernel processed data */
+ } __Request__thread_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_assign_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ } __Request__thread_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t pset;
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ policy_t policy;
+ mach_msg_type_number_t baseCnt;
+ integer_t base[5];
+ mach_msg_type_number_t limitCnt;
+ integer_t limit[1];
+ } __Request__thread_set_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_voucher_selector_t which;
+ } __Request__thread_get_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Request__thread_set_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t new_voucher;
+ mach_msg_port_descriptor_t old_voucher;
+ /* end of the kernel processed data */
+ } __Request__thread_swap_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ int direction;
+ thread_state_flavor_t flavor;
+ mach_msg_type_number_t in_stateCnt;
+ natural_t in_state[1296];
+ mach_msg_type_number_t out_stateCnt;
+ } __Request__thread_convert_thread_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Request__thread_act_subsystem__defined */
+
+/* union of all requests */
+
+#ifndef __RequestUnion__thread_act_subsystem__defined
+#define __RequestUnion__thread_act_subsystem__defined
+union __RequestUnion__thread_act_subsystem {
+ __Request__thread_terminate_t Request_thread_terminate;
+ __Request__act_get_state_t Request_act_get_state;
+ __Request__act_set_state_t Request_act_set_state;
+ __Request__thread_get_state_t Request_thread_get_state;
+ __Request__thread_set_state_t Request_thread_set_state;
+ __Request__thread_suspend_t Request_thread_suspend;
+ __Request__thread_resume_t Request_thread_resume;
+ __Request__thread_abort_t Request_thread_abort;
+ __Request__thread_abort_safely_t Request_thread_abort_safely;
+ __Request__thread_depress_abort_t Request_thread_depress_abort;
+ __Request__thread_get_special_port_t Request_thread_get_special_port;
+ __Request__thread_set_special_port_t Request_thread_set_special_port;
+ __Request__thread_info_t Request_thread_info;
+ __Request__thread_set_exception_ports_t Request_thread_set_exception_ports;
+ __Request__thread_get_exception_ports_t Request_thread_get_exception_ports;
+ __Request__thread_swap_exception_ports_t Request_thread_swap_exception_ports;
+ __Request__thread_policy_t Request_thread_policy;
+ __Request__thread_policy_set_t Request_thread_policy_set;
+ __Request__thread_policy_get_t Request_thread_policy_get;
+ __Request__thread_sample_t Request_thread_sample;
+ __Request__etap_trace_thread_t Request_etap_trace_thread;
+ __Request__thread_assign_t Request_thread_assign;
+ __Request__thread_assign_default_t Request_thread_assign_default;
+ __Request__thread_get_assignment_t Request_thread_get_assignment;
+ __Request__thread_set_policy_t Request_thread_set_policy;
+ __Request__thread_get_mach_voucher_t Request_thread_get_mach_voucher;
+ __Request__thread_set_mach_voucher_t Request_thread_set_mach_voucher;
+ __Request__thread_swap_mach_voucher_t Request_thread_swap_mach_voucher;
+ __Request__thread_convert_thread_state_t Request_thread_convert_thread_state;
+};
+#endif /* !__RequestUnion__thread_act_subsystem__defined */
+/* typedefs for all replies */
+
+#ifndef __Reply__thread_act_subsystem__defined
+#define __Reply__thread_act_subsystem__defined
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_terminate_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t old_stateCnt;
+ natural_t old_state[1296];
+ } __Reply__act_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__act_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t old_stateCnt;
+ natural_t old_state[1296];
+ } __Reply__thread_get_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_suspend_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_resume_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_abort_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_abort_safely_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_depress_abort_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t special_port;
+ /* end of the kernel processed data */
+ } __Reply__thread_get_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_special_port_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t thread_info_outCnt;
+ integer_t thread_info_out[32];
+ } __Reply__thread_info_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlers[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__thread_get_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlers[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } __Reply__thread_swap_exception_ports_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_policy_set_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t policy_infoCnt;
+ integer_t policy_info[16];
+ boolean_t get_default;
+ } __Reply__thread_policy_get_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_sample_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__etap_trace_thread_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_assign_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_assign_default_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t assigned_set;
+ /* end of the kernel processed data */
+ } __Reply__thread_get_assignment_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_policy_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t voucher;
+ /* end of the kernel processed data */
+ } __Reply__thread_get_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } __Reply__thread_set_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_voucher;
+ /* end of the kernel processed data */
+ } __Reply__thread_swap_mach_voucher_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+
+#ifdef __MigPackStructs
+#pragma pack(push, 4)
+#endif
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ mach_msg_type_number_t out_stateCnt;
+ natural_t out_state[1296];
+ } __Reply__thread_convert_thread_state_t __attribute__((unused));
+#ifdef __MigPackStructs
+#pragma pack(pop)
+#endif
+#endif /* !__Reply__thread_act_subsystem__defined */
+
+/* union of all replies */
+
+#ifndef __ReplyUnion__thread_act_subsystem__defined
+#define __ReplyUnion__thread_act_subsystem__defined
+union __ReplyUnion__thread_act_subsystem {
+ __Reply__thread_terminate_t Reply_thread_terminate;
+ __Reply__act_get_state_t Reply_act_get_state;
+ __Reply__act_set_state_t Reply_act_set_state;
+ __Reply__thread_get_state_t Reply_thread_get_state;
+ __Reply__thread_set_state_t Reply_thread_set_state;
+ __Reply__thread_suspend_t Reply_thread_suspend;
+ __Reply__thread_resume_t Reply_thread_resume;
+ __Reply__thread_abort_t Reply_thread_abort;
+ __Reply__thread_abort_safely_t Reply_thread_abort_safely;
+ __Reply__thread_depress_abort_t Reply_thread_depress_abort;
+ __Reply__thread_get_special_port_t Reply_thread_get_special_port;
+ __Reply__thread_set_special_port_t Reply_thread_set_special_port;
+ __Reply__thread_info_t Reply_thread_info;
+ __Reply__thread_set_exception_ports_t Reply_thread_set_exception_ports;
+ __Reply__thread_get_exception_ports_t Reply_thread_get_exception_ports;
+ __Reply__thread_swap_exception_ports_t Reply_thread_swap_exception_ports;
+ __Reply__thread_policy_t Reply_thread_policy;
+ __Reply__thread_policy_set_t Reply_thread_policy_set;
+ __Reply__thread_policy_get_t Reply_thread_policy_get;
+ __Reply__thread_sample_t Reply_thread_sample;
+ __Reply__etap_trace_thread_t Reply_etap_trace_thread;
+ __Reply__thread_assign_t Reply_thread_assign;
+ __Reply__thread_assign_default_t Reply_thread_assign_default;
+ __Reply__thread_get_assignment_t Reply_thread_get_assignment;
+ __Reply__thread_set_policy_t Reply_thread_set_policy;
+ __Reply__thread_get_mach_voucher_t Reply_thread_get_mach_voucher;
+ __Reply__thread_set_mach_voucher_t Reply_thread_set_mach_voucher;
+ __Reply__thread_swap_mach_voucher_t Reply_thread_swap_mach_voucher;
+ __Reply__thread_convert_thread_state_t Reply_thread_convert_thread_state;
+};
+#endif /* !__RequestUnion__thread_act_subsystem__defined */
+
+#ifndef subsystem_to_name_map_thread_act
+#define subsystem_to_name_map_thread_act \
+ { "thread_terminate", 3600 },\
+ { "act_get_state", 3601 },\
+ { "act_set_state", 3602 },\
+ { "thread_get_state", 3603 },\
+ { "thread_set_state", 3604 },\
+ { "thread_suspend", 3605 },\
+ { "thread_resume", 3606 },\
+ { "thread_abort", 3607 },\
+ { "thread_abort_safely", 3608 },\
+ { "thread_depress_abort", 3609 },\
+ { "thread_get_special_port", 3610 },\
+ { "thread_set_special_port", 3611 },\
+ { "thread_info", 3612 },\
+ { "thread_set_exception_ports", 3613 },\
+ { "thread_get_exception_ports", 3614 },\
+ { "thread_swap_exception_ports", 3615 },\
+ { "thread_policy", 3616 },\
+ { "thread_policy_set", 3617 },\
+ { "thread_policy_get", 3618 },\
+ { "thread_sample", 3619 },\
+ { "etap_trace_thread", 3620 },\
+ { "thread_assign", 3621 },\
+ { "thread_assign_default", 3622 },\
+ { "thread_get_assignment", 3623 },\
+ { "thread_set_policy", 3624 },\
+ { "thread_get_mach_voucher", 3625 },\
+ { "thread_set_mach_voucher", 3626 },\
+ { "thread_swap_mach_voucher", 3627 },\
+ { "thread_convert_thread_state", 3628 }
+#endif
+
+#ifdef __AfterMigUserHeader
+__AfterMigUserHeader
+#endif /* __AfterMigUserHeader */
+
+#endif /* _thread_act_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/thread_special_ports.h b/lib/libc/include/aarch64-macos-gnu/mach/thread_special_ports.h
new file mode 100644
index 0000000000..2e0e1a4a58
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/thread_special_ports.h
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+/*
+ * File: mach/thread_special_ports.h
+ *
+ * Defines codes for special_purpose thread ports. These are NOT
+ * port identifiers - they are only used for the thread_get_special_port
+ * and thread_set_special_port routines.
+ *
+ */
+
+#ifndef _MACH_THREAD_SPECIAL_PORTS_H_
+#define _MACH_THREAD_SPECIAL_PORTS_H_
+
+#define THREAD_KERNEL_PORT 1 /* The full thread port for thread. */
+
+#define THREAD_INSPECT_PORT 2 /* The inspect port for thread. */
+
+#define THREAD_READ_PORT 3 /* The read port for thread. */
+
+/*
+ * Definitions for ease of use
+ */
+
+#define thread_get_kernel_port(thread, port) \
+ (thread_get_special_port((thread), THREAD_KERNEL_PORT, (port)))
+
+#define thread_set_kernel_port(thread, port) \
+ (thread_set_special_port((thread), THREAD_KERNEL_PORT, (port)))
+
+#endif /* _MACH_THREAD_SPECIAL_PORTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/thread_status.h b/lib/libc/include/aarch64-macos-gnu/mach/thread_status.h
new file mode 100644
index 0000000000..f742500cac
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/thread_status.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+/*
+ * File: mach/thread_status.h
+ * Author: Avadis Tevanian, Jr.
+ *
+ * This file contains the structure definitions for the user-visible
+ * thread state. This thread state is examined with the thread_get_state
+ * kernel call and may be changed with the thread_set_state kernel call.
+ *
+ */
+
+#ifndef _MACH_THREAD_STATUS_H_
+#define _MACH_THREAD_STATUS_H_
+
+/*
+ * The actual structure that comprises the thread state is defined
+ * in the machine dependent module.
+ */
+#include <mach/machine/vm_types.h>
+#include <mach/machine/thread_status.h>
+#include <mach/machine/thread_state.h>
+
+/*
+ * Generic definition for machine-dependent thread status.
+ */
+
+typedef natural_t *thread_state_t; /* Variable-length array */
+
+/* THREAD_STATE_MAX is now defined in <mach/machine/thread_state.h> */
+typedef natural_t thread_state_data_t[THREAD_STATE_MAX];
+
+#define THREAD_STATE_FLAVOR_LIST 0 /* List of valid flavors */
+#define THREAD_STATE_FLAVOR_LIST_NEW 128
+#define THREAD_STATE_FLAVOR_LIST_10_9 129
+#define THREAD_STATE_FLAVOR_LIST_10_13 130
+#define THREAD_STATE_FLAVOR_LIST_10_15 131
+
+typedef int thread_state_flavor_t;
+typedef thread_state_flavor_t *thread_state_flavor_array_t;
+
+#define THREAD_CONVERT_THREAD_STATE_TO_SELF 1
+#define THREAD_CONVERT_THREAD_STATE_FROM_SELF 2
+
+#endif /* _MACH_THREAD_STATUS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/vm_prot.h b/lib/libc/include/aarch64-macos-gnu/mach/vm_prot.h
new file mode 100644
index 0000000000..08916dfa2a
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/vm_prot.h
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+/*
+ * File: mach/vm_prot.h
+ * Author: Avadis Tevanian, Jr., Michael Wayne Young
+ *
+ * Virtual memory protection definitions.
+ *
+ */
+
+#ifndef _MACH_VM_PROT_H_
+#define _MACH_VM_PROT_H_
+
+/*
+ * Types defined:
+ *
+ * vm_prot_t VM protection values.
+ */
+
+typedef int vm_prot_t;
+
+/*
+ * Protection values, defined as bits within the vm_prot_t type
+ */
+
+#define VM_PROT_NONE ((vm_prot_t) 0x00)
+
+#define VM_PROT_READ ((vm_prot_t) 0x01) /* read permission */
+#define VM_PROT_WRITE ((vm_prot_t) 0x02) /* write permission */
+#define VM_PROT_EXECUTE ((vm_prot_t) 0x04) /* execute permission */
+
+/*
+ * The default protection for newly-created virtual memory
+ */
+
+#define VM_PROT_DEFAULT (VM_PROT_READ|VM_PROT_WRITE)
+
+/*
+ * The maximum privileges possible, for parameter checking.
+ */
+
+#define VM_PROT_ALL (VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE)
+
+/*
+ * An invalid protection value.
+ * Used only by memory_object_lock_request to indicate no change
+ * to page locks. Using -1 here is a bad idea because it
+ * looks like VM_PROT_ALL and then some.
+ */
+
+#define VM_PROT_NO_CHANGE ((vm_prot_t) 0x08)
+
+/*
+ * When a caller finds that he cannot obtain write permission on a
+ * mapped entry, the following flag can be used. The entry will
+ * be made "needs copy" effectively copying the object (using COW),
+ * and write permission will be added to the maximum protections
+ * for the associated entry.
+ */
+
+#define VM_PROT_COPY ((vm_prot_t) 0x10)
+
+
+/*
+ * Another invalid protection value.
+ * Used only by memory_object_data_request upon an object
+ * which has specified a copy_call copy strategy. It is used
+ * when the kernel wants a page belonging to a copy of the
+ * object, and is only asking the object as a result of
+ * following a shadow chain. This solves the race between pages
+ * being pushed up by the memory manager and the kernel
+ * walking down the shadow chain.
+ */
+
+#define VM_PROT_WANTS_COPY ((vm_prot_t) 0x10)
+
+
+/*
+ * Another invalid protection value.
+ * Indicates that the other protection bits are to be applied as a mask
+ * against the actual protection bits of the map entry.
+ */
+#define VM_PROT_IS_MASK ((vm_prot_t) 0x40)
+
+/*
+ * Another invalid protection value to support execute-only protection.
+ * VM_PROT_STRIP_READ is a special marker that tells mprotect to not
+ * set VM_PROT_READ. We have to do it this way because existing code
+ * expects the system to set VM_PROT_READ if VM_PROT_EXECUTE is set.
+ * VM_PROT_EXECUTE_ONLY is just a convenience value to indicate that
+ * the memory should be executable and explicitly not readable. It will
+ * be ignored on platforms that do not support this type of protection.
+ */
+#define VM_PROT_STRIP_READ ((vm_prot_t) 0x80)
+#define VM_PROT_EXECUTE_ONLY (VM_PROT_EXECUTE|VM_PROT_STRIP_READ)
+
+
+#endif /* _MACH_VM_PROT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/vm_statistics.h b/lib/libc/include/aarch64-macos-gnu/mach/vm_statistics.h
new file mode 100644
index 0000000000..05e09ec20b
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/vm_statistics.h
@@ -0,0 +1,550 @@
+/*
+ * Copyright (c) 2000-2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ */
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+/*
+ * File: mach/vm_statistics.h
+ * Author: Avadis Tevanian, Jr., Michael Wayne Young, David Golub
+ *
+ * Virtual memory statistics structure.
+ *
+ */
+
+#ifndef _MACH_VM_STATISTICS_H_
+#define _MACH_VM_STATISTICS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <mach/machine/vm_types.h>
+#include <mach/machine/kern_return.h>
+
+/*
+ * vm_statistics
+ *
+ * History:
+ * rev0 - original structure.
+ * rev1 - added purgable info (purgable_count and purges).
+ * rev2 - added speculative_count.
+ *
+ * Note: you cannot add any new fields to this structure. Add them below in
+ * vm_statistics64.
+ */
+
+struct vm_statistics {
+ natural_t free_count; /* # of pages free */
+ natural_t active_count; /* # of pages active */
+ natural_t inactive_count; /* # of pages inactive */
+ natural_t wire_count; /* # of pages wired down */
+ natural_t zero_fill_count; /* # of zero fill pages */
+ natural_t reactivations; /* # of pages reactivated */
+ natural_t pageins; /* # of pageins */
+ natural_t pageouts; /* # of pageouts */
+ natural_t faults; /* # of faults */
+ natural_t cow_faults; /* # of copy-on-writes */
+ natural_t lookups; /* object cache lookups */
+ natural_t hits; /* object cache hits */
+
+ /* added for rev1 */
+ natural_t purgeable_count; /* # of pages purgeable */
+ natural_t purges; /* # of pages purged */
+
+ /* added for rev2 */
+ /*
+ * NB: speculative pages are already accounted for in "free_count",
+ * so "speculative_count" is the number of "free" pages that are
+ * used to hold data that was read speculatively from disk but
+ * haven't actually been used by anyone so far.
+ */
+ natural_t speculative_count; /* # of pages speculative */
+};
+
+/* Used by all architectures */
+typedef struct vm_statistics *vm_statistics_t;
+typedef struct vm_statistics vm_statistics_data_t;
+
+/*
+ * vm_statistics64
+ *
+ * History:
+ * rev0 - original structure.
+ * rev1 - added purgable info (purgable_count and purges).
+ * rev2 - added speculative_count.
+ * ----
+ * rev3 - changed name to vm_statistics64.
+ * changed some fields in structure to 64-bit on
+ * arm, i386 and x86_64 architectures.
+ * rev4 - require 64-bit alignment for efficient access
+ * in the kernel. No change to reported data.
+ *
+ */
+
+struct vm_statistics64 {
+ natural_t free_count; /* # of pages free */
+ natural_t active_count; /* # of pages active */
+ natural_t inactive_count; /* # of pages inactive */
+ natural_t wire_count; /* # of pages wired down */
+ uint64_t zero_fill_count; /* # of zero fill pages */
+ uint64_t reactivations; /* # of pages reactivated */
+ uint64_t pageins; /* # of pageins */
+ uint64_t pageouts; /* # of pageouts */
+ uint64_t faults; /* # of faults */
+ uint64_t cow_faults; /* # of copy-on-writes */
+ uint64_t lookups; /* object cache lookups */
+ uint64_t hits; /* object cache hits */
+ uint64_t purges; /* # of pages purged */
+ natural_t purgeable_count; /* # of pages purgeable */
+ /*
+ * NB: speculative pages are already accounted for in "free_count",
+ * so "speculative_count" is the number of "free" pages that are
+ * used to hold data that was read speculatively from disk but
+ * haven't actually been used by anyone so far.
+ */
+ natural_t speculative_count; /* # of pages speculative */
+
+ /* added for rev1 */
+ uint64_t decompressions; /* # of pages decompressed */
+ uint64_t compressions; /* # of pages compressed */
+ uint64_t swapins; /* # of pages swapped in (via compression segments) */
+ uint64_t swapouts; /* # of pages swapped out (via compression segments) */
+ natural_t compressor_page_count; /* # of pages used by the compressed pager to hold all the compressed data */
+ natural_t throttled_count; /* # of pages throttled */
+ natural_t external_page_count; /* # of pages that are file-backed (non-swap) */
+ natural_t internal_page_count; /* # of pages that are anonymous */
+ uint64_t total_uncompressed_pages_in_compressor; /* # of pages (uncompressed) held within the compressor. */
+} __attribute__((aligned(8)));
+
+typedef struct vm_statistics64 *vm_statistics64_t;
+typedef struct vm_statistics64 vm_statistics64_data_t;
+
+kern_return_t vm_stats(void *info, unsigned int *count);
+
+/*
+ * VM_STATISTICS_TRUNCATE_TO_32_BIT
+ *
+ * This is used by host_statistics() to truncate and peg the 64-bit in-kernel values from
+ * vm_statistics64 to the 32-bit values of the older structure above (vm_statistics).
+ */
+#define VM_STATISTICS_TRUNCATE_TO_32_BIT(value) ((uint32_t)(((value) > UINT32_MAX ) ? UINT32_MAX : (value)))
+
+/*
+ * vm_extmod_statistics
+ *
+ * Structure to record modifications to a task by an
+ * external agent.
+ *
+ * History:
+ * rev0 - original structure.
+ */
+
+struct vm_extmod_statistics {
+ int64_t task_for_pid_count; /* # of times task port was looked up */
+ int64_t task_for_pid_caller_count; /* # of times this task called task_for_pid */
+ int64_t thread_creation_count; /* # of threads created in task */
+ int64_t thread_creation_caller_count; /* # of threads created by task */
+ int64_t thread_set_state_count; /* # of register state sets in task */
+ int64_t thread_set_state_caller_count; /* # of register state sets by task */
+} __attribute__((aligned(8)));
+
+typedef struct vm_extmod_statistics *vm_extmod_statistics_t;
+typedef struct vm_extmod_statistics vm_extmod_statistics_data_t;
+
+typedef struct vm_purgeable_stat {
+ uint64_t count;
+ uint64_t size;
+}vm_purgeable_stat_t;
+
+struct vm_purgeable_info {
+ vm_purgeable_stat_t fifo_data[8];
+ vm_purgeable_stat_t obsolete_data;
+ vm_purgeable_stat_t lifo_data[8];
+};
+
+typedef struct vm_purgeable_info *vm_purgeable_info_t;
+
+/* included for the vm_map_page_query call */
+
+#define VM_PAGE_QUERY_PAGE_PRESENT 0x1
+#define VM_PAGE_QUERY_PAGE_FICTITIOUS 0x2
+#define VM_PAGE_QUERY_PAGE_REF 0x4
+#define VM_PAGE_QUERY_PAGE_DIRTY 0x8
+#define VM_PAGE_QUERY_PAGE_PAGED_OUT 0x10
+#define VM_PAGE_QUERY_PAGE_COPIED 0x20
+#define VM_PAGE_QUERY_PAGE_SPECULATIVE 0x40
+#define VM_PAGE_QUERY_PAGE_EXTERNAL 0x80
+#define VM_PAGE_QUERY_PAGE_CS_VALIDATED 0x100
+#define VM_PAGE_QUERY_PAGE_CS_TAINTED 0x200
+#define VM_PAGE_QUERY_PAGE_CS_NX 0x400
+#define VM_PAGE_QUERY_PAGE_REUSABLE 0x800
+
+
+/*
+ * VM allocation flags:
+ *
+ * VM_FLAGS_FIXED
+ * (really the absence of VM_FLAGS_ANYWHERE)
+ * Allocate new VM region at the specified virtual address, if possible.
+ *
+ * VM_FLAGS_ANYWHERE
+ * Allocate new VM region anywhere it would fit in the address space.
+ *
+ * VM_FLAGS_PURGABLE
+ * Create a purgable VM object for that new VM region.
+ *
+ * VM_FLAGS_4GB_CHUNK
+ * The new VM region will be chunked up into 4GB sized pieces.
+ *
+ * VM_FLAGS_NO_PMAP_CHECK
+ * (for DEBUG kernel config only, ignored for other configs)
+ * Do not check that there is no stale pmap mapping for the new VM region.
+ * This is useful for kernel memory allocations at bootstrap when building
+ * the initial kernel address space while some memory is already in use.
+ *
+ * VM_FLAGS_OVERWRITE
+ * The new VM region can replace existing VM regions if necessary
+ * (to be used in combination with VM_FLAGS_FIXED).
+ *
+ * VM_FLAGS_NO_CACHE
+ * Pages brought in to this VM region are placed on the speculative
+ * queue instead of the active queue. In other words, they are not
+ * cached so that they will be stolen first if memory runs low.
+ */
+
+#define VM_FLAGS_FIXED 0x0000
+#define VM_FLAGS_ANYWHERE 0x0001
+#define VM_FLAGS_PURGABLE 0x0002
+#define VM_FLAGS_4GB_CHUNK 0x0004
+#define VM_FLAGS_RANDOM_ADDR 0x0008
+#define VM_FLAGS_NO_CACHE 0x0010
+#define VM_FLAGS_RESILIENT_CODESIGN 0x0020
+#define VM_FLAGS_RESILIENT_MEDIA 0x0040
+#define VM_FLAGS_OVERWRITE 0x4000 /* delete any existing mappings first */
+/*
+ * VM_FLAGS_SUPERPAGE_MASK
+ * 3 bits that specify whether large pages should be used instead of
+ * base pages (!=0), as well as the requested page size.
+ */
+#define VM_FLAGS_SUPERPAGE_MASK 0x70000 /* bits 0x10000, 0x20000, 0x40000 */
+#define VM_FLAGS_RETURN_DATA_ADDR 0x100000 /* Return address of target data, rather than base of page */
+#define VM_FLAGS_RETURN_4K_DATA_ADDR 0x800000 /* Return 4K aligned address of target data */
+#define VM_FLAGS_ALIAS_MASK 0xFF000000
+#define VM_GET_FLAGS_ALIAS(flags, alias) \
+ (alias) = ((flags) & VM_FLAGS_ALIAS_MASK) >> 24
+#define VM_SET_FLAGS_ALIAS(flags, alias) \
+ (flags) = (((flags) & ~VM_FLAGS_ALIAS_MASK) | \
+ (((alias) & ~VM_FLAGS_ALIAS_MASK) << 24))
+
+/* These are the flags that we accept from user-space */
+#define VM_FLAGS_USER_ALLOCATE (VM_FLAGS_FIXED | \
+ VM_FLAGS_ANYWHERE | \
+ VM_FLAGS_PURGABLE | \
+ VM_FLAGS_4GB_CHUNK | \
+ VM_FLAGS_RANDOM_ADDR | \
+ VM_FLAGS_NO_CACHE | \
+ VM_FLAGS_OVERWRITE | \
+ VM_FLAGS_SUPERPAGE_MASK | \
+ VM_FLAGS_ALIAS_MASK)
+#define VM_FLAGS_USER_MAP (VM_FLAGS_USER_ALLOCATE | \
+ VM_FLAGS_RETURN_4K_DATA_ADDR | \
+ VM_FLAGS_RETURN_DATA_ADDR)
+#define VM_FLAGS_USER_REMAP (VM_FLAGS_FIXED | \
+ VM_FLAGS_ANYWHERE | \
+ VM_FLAGS_RANDOM_ADDR | \
+ VM_FLAGS_OVERWRITE| \
+ VM_FLAGS_RETURN_DATA_ADDR | \
+ VM_FLAGS_RESILIENT_CODESIGN | \
+ VM_FLAGS_RESILIENT_MEDIA)
+
+#define VM_FLAGS_SUPERPAGE_SHIFT 16
+#define SUPERPAGE_NONE 0 /* no superpages, if all bits are 0 */
+#define SUPERPAGE_SIZE_ANY 1
+#define VM_FLAGS_SUPERPAGE_NONE (SUPERPAGE_NONE << VM_FLAGS_SUPERPAGE_SHIFT)
+#define VM_FLAGS_SUPERPAGE_SIZE_ANY (SUPERPAGE_SIZE_ANY << VM_FLAGS_SUPERPAGE_SHIFT)
+#define SUPERPAGE_SIZE_2MB 2
+#define VM_FLAGS_SUPERPAGE_SIZE_2MB (SUPERPAGE_SIZE_2MB<<VM_FLAGS_SUPERPAGE_SHIFT)
+
+/*
+ * EXC_GUARD definitions for virtual memory.
+ */
+#define GUARD_TYPE_VIRT_MEMORY 0x5
+
+/* Reasons for exception for virtual memory */
+enum virtual_memory_guard_exception_codes {
+ kGUARD_EXC_DEALLOC_GAP = 1u << 0
+};
+
+
+/* current accounting postmark */
+#define __VM_LEDGER_ACCOUNTING_POSTMARK 2019032600
+
+/* discrete values: */
+#define VM_LEDGER_TAG_NONE 0x00000000
+#define VM_LEDGER_TAG_DEFAULT 0x00000001
+#define VM_LEDGER_TAG_NETWORK 0x00000002
+#define VM_LEDGER_TAG_MEDIA 0x00000003
+#define VM_LEDGER_TAG_GRAPHICS 0x00000004
+#define VM_LEDGER_TAG_NEURAL 0x00000005
+#define VM_LEDGER_TAG_MAX 0x00000005
+/* individual bits: */
+#define VM_LEDGER_FLAG_NO_FOOTPRINT 0x00000001
+#define VM_LEDGER_FLAGS (VM_LEDGER_FLAG_NO_FOOTPRINT)
+
+
+#define VM_MEMORY_MALLOC 1
+#define VM_MEMORY_MALLOC_SMALL 2
+#define VM_MEMORY_MALLOC_LARGE 3
+#define VM_MEMORY_MALLOC_HUGE 4
+#define VM_MEMORY_SBRK 5// uninteresting -- no one should call
+#define VM_MEMORY_REALLOC 6
+#define VM_MEMORY_MALLOC_TINY 7
+#define VM_MEMORY_MALLOC_LARGE_REUSABLE 8
+#define VM_MEMORY_MALLOC_LARGE_REUSED 9
+
+#define VM_MEMORY_ANALYSIS_TOOL 10
+
+#define VM_MEMORY_MALLOC_NANO 11
+#define VM_MEMORY_MALLOC_MEDIUM 12
+#define VM_MEMORY_MALLOC_PGUARD 13
+
+#define VM_MEMORY_MACH_MSG 20
+#define VM_MEMORY_IOKIT 21
+#define VM_MEMORY_STACK 30
+#define VM_MEMORY_GUARD 31
+#define VM_MEMORY_SHARED_PMAP 32
+/* memory containing a dylib */
+#define VM_MEMORY_DYLIB 33
+#define VM_MEMORY_OBJC_DISPATCHERS 34
+
+/* Was a nested pmap (VM_MEMORY_SHARED_PMAP) which has now been unnested */
+#define VM_MEMORY_UNSHARED_PMAP 35
+
+
+// Placeholders for now -- as we analyze the libraries and find how they
+// use memory, we can make these labels more specific.
+#define VM_MEMORY_APPKIT 40
+#define VM_MEMORY_FOUNDATION 41
+#define VM_MEMORY_COREGRAPHICS 42
+#define VM_MEMORY_CORESERVICES 43
+#define VM_MEMORY_CARBON VM_MEMORY_CORESERVICES
+#define VM_MEMORY_JAVA 44
+#define VM_MEMORY_COREDATA 45
+#define VM_MEMORY_COREDATA_OBJECTIDS 46
+#define VM_MEMORY_ATS 50
+#define VM_MEMORY_LAYERKIT 51
+#define VM_MEMORY_CGIMAGE 52
+#define VM_MEMORY_TCMALLOC 53
+
+/* private raster data (i.e. layers, some images, QGL allocator) */
+#define VM_MEMORY_COREGRAPHICS_DATA 54
+
+/* shared image and font caches */
+#define VM_MEMORY_COREGRAPHICS_SHARED 55
+
+/* Memory used for virtual framebuffers, shadowing buffers, etc... */
+#define VM_MEMORY_COREGRAPHICS_FRAMEBUFFERS 56
+
+/* Window backing stores, custom shadow data, and compressed backing stores */
+#define VM_MEMORY_COREGRAPHICS_BACKINGSTORES 57
+
+/* x-alloc'd memory */
+#define VM_MEMORY_COREGRAPHICS_XALLOC 58
+
+/* catch-all for other uses, such as the read-only shared data page */
+#define VM_MEMORY_COREGRAPHICS_MISC VM_MEMORY_COREGRAPHICS
+
+/* memory allocated by the dynamic loader for itself */
+#define VM_MEMORY_DYLD 60
+/* malloc'd memory created by dyld */
+#define VM_MEMORY_DYLD_MALLOC 61
+
+/* Used for sqlite page cache */
+#define VM_MEMORY_SQLITE 62
+
+/* JavaScriptCore heaps */
+#define VM_MEMORY_JAVASCRIPT_CORE 63
+#define VM_MEMORY_WEBASSEMBLY VM_MEMORY_JAVASCRIPT_CORE
+/* memory allocated for the JIT */
+#define VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR 64
+#define VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE 65
+
+/* memory allocated for GLSL */
+#define VM_MEMORY_GLSL 66
+
+/* memory allocated for OpenCL.framework */
+#define VM_MEMORY_OPENCL 67
+
+/* memory allocated for QuartzCore.framework */
+#define VM_MEMORY_COREIMAGE 68
+
+/* memory allocated for WebCore Purgeable Buffers */
+#define VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS 69
+
+/* ImageIO memory */
+#define VM_MEMORY_IMAGEIO 70
+
+/* CoreProfile memory */
+#define VM_MEMORY_COREPROFILE 71
+
+/* assetsd / MobileSlideShow memory */
+#define VM_MEMORY_ASSETSD 72
+
+/* libsystem_kernel os_once_alloc */
+#define VM_MEMORY_OS_ALLOC_ONCE 73
+
+/* libdispatch internal allocator */
+#define VM_MEMORY_LIBDISPATCH 74
+
+/* Accelerate.framework image backing stores */
+#define VM_MEMORY_ACCELERATE 75
+
+/* CoreUI image block data */
+#define VM_MEMORY_COREUI 76
+
+/* CoreUI image file */
+#define VM_MEMORY_COREUIFILE 77
+
+/* Genealogy buffers */
+#define VM_MEMORY_GENEALOGY 78
+
+/* RawCamera VM allocated memory */
+#define VM_MEMORY_RAWCAMERA 79
+
+/* corpse info for dead process */
+#define VM_MEMORY_CORPSEINFO 80
+
+/* Apple System Logger (ASL) messages */
+#define VM_MEMORY_ASL 81
+
+/* Swift runtime */
+#define VM_MEMORY_SWIFT_RUNTIME 82
+
+/* Swift metadata */
+#define VM_MEMORY_SWIFT_METADATA 83
+
+/* DHMM data */
+#define VM_MEMORY_DHMM 84
+
+
+/* memory allocated by SceneKit.framework */
+#define VM_MEMORY_SCENEKIT 86
+
+/* memory allocated by skywalk networking */
+#define VM_MEMORY_SKYWALK 87
+
+#define VM_MEMORY_IOSURFACE 88
+
+#define VM_MEMORY_LIBNETWORK 89
+
+#define VM_MEMORY_AUDIO 90
+
+#define VM_MEMORY_VIDEOBITSTREAM 91
+
+/* memory allocated by CoreMedia */
+#define VM_MEMORY_CM_XPC 92
+
+#define VM_MEMORY_CM_RPC 93
+
+#define VM_MEMORY_CM_MEMORYPOOL 94
+
+#define VM_MEMORY_CM_READCACHE 95
+
+#define VM_MEMORY_CM_CRABS 96
+
+/* memory allocated for QuickLookThumbnailing */
+#define VM_MEMORY_QUICKLOOK_THUMBNAILS 97
+
+/* memory allocated by Accounts framework */
+#define VM_MEMORY_ACCOUNTS 98
+
+/* memory allocated by Sanitizer runtime libraries */
+#define VM_MEMORY_SANITIZER 99
+
+/* Differentiate memory needed by GPU drivers and frameworks from generic IOKit allocations */
+#define VM_MEMORY_IOACCELERATOR 100
+
+/* memory allocated by CoreMedia for global image registration of frames */
+#define VM_MEMORY_CM_REGWARP 101
+
+/* memory allocated by EmbeddedAcousticRecognition for speech decoder */
+#define VM_MEMORY_EAR_DECODER 102
+
+/* CoreUI cached image data */
+#define VM_MEMORY_COREUI_CACHED_IMAGE_DATA 103
+
+/* Reserve 230-239 for Rosetta */
+#define VM_MEMORY_ROSETTA 230
+#define VM_MEMORY_ROSETTA_THREAD_CONTEXT 231
+#define VM_MEMORY_ROSETTA_INDIRECT_BRANCH_MAP 232
+#define VM_MEMORY_ROSETTA_RETURN_STACK 233
+#define VM_MEMORY_ROSETTA_EXECUTABLE_HEAP 234
+#define VM_MEMORY_ROSETTA_USER_LDT 235
+#define VM_MEMORY_ROSETTA_ARENA 236
+#define VM_MEMORY_ROSETTA_10 239
+
+/* Reserve 240-255 for application */
+#define VM_MEMORY_APPLICATION_SPECIFIC_1 240
+#define VM_MEMORY_APPLICATION_SPECIFIC_16 255
+
+#define VM_MAKE_TAG(tag) ((tag) << 24)
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MACH_VM_STATISTICS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/mach/vm_types.h b/lib/libc/include/aarch64-macos-gnu/mach/vm_types.h
new file mode 100644
index 0000000000..b7f30cf246
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/mach/vm_types.h
@@ -0,0 +1,97 @@
+/*
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * @OSF_COPYRIGHT@
+ *
+ */
+#ifndef _MACH_VM_TYPES_H_
+#define _MACH_VM_TYPES_H_
+
+#include <mach/port.h>
+#include <mach/machine/vm_types.h>
+
+#include <stdint.h>
+
+typedef vm_offset_t pointer_t;
+typedef vm_offset_t vm_address_t;
+
+/*
+ * We use addr64_t for 64-bit addresses that are used on both
+ * 32 and 64-bit machines. On PPC, they are passed and returned as
+ * two adjacent 32-bit GPRs. We use addr64_t in places where
+ * common code must be useable both on 32 and 64-bit machines.
+ */
+typedef uint64_t addr64_t; /* Basic effective address */
+
+/*
+ * We use reg64_t for addresses that are 32 bits on a 32-bit
+ * machine, and 64 bits on a 64-bit machine, but are always
+ * passed and returned in a single GPR on PPC. This type
+ * cannot be used in generic 32-bit c, since on a 64-bit
+ * machine the upper half of the register will be ignored
+ * by the c compiler in 32-bit mode. In c, we can only use the
+ * type in prototypes of functions that are written in and called
+ * from assembly language. This type is basically a comment.
+ */
+typedef uint32_t reg64_t;
+
+/*
+ * To minimize the use of 64-bit fields, we keep some physical
+ * addresses (that are page aligned) as 32-bit page numbers.
+ * This limits the physical address space to 16TB of RAM.
+ */
+typedef uint32_t ppnum_t; /* Physical page number */
+#define PPNUM_MAX UINT32_MAX
+
+
+
+typedef mach_port_t vm_map_t, vm_map_read_t, vm_map_inspect_t;
+
+
+#define VM_MAP_NULL ((vm_map_t) 0)
+#define VM_MAP_INSPECT_NULL ((vm_map_inspect_t) 0)
+#define VM_MAP_READ_NULL ((vm_map_read_t) 0)
+
+/*
+ * Evolving definitions, likely to change.
+ */
+
+typedef uint64_t vm_object_offset_t;
+typedef uint64_t vm_object_size_t;
+
+
+
+
+typedef mach_port_t upl_t;
+typedef mach_port_t vm_named_entry_t;
+
+
+#define UPL_NULL ((upl_t) 0)
+#define VM_NAMED_ENTRY_NULL ((vm_named_entry_t) 0)
+
+#endif /* _MACH_VM_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/machine/_mcontext.h b/lib/libc/include/aarch64-macos-gnu/machine/_mcontext.h
new file mode 100644
index 0000000000..12965510fa
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/machine/_mcontext.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#if defined (__i386__) || defined (__x86_64__)
+#include "i386/_mcontext.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "arm/_mcontext.h"
+#else
+#error architecture not supported
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/machine/_param.h b/lib/libc/include/aarch64-macos-gnu/machine/_param.h
new file mode 100644
index 0000000000..5fdf54345f
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/machine/_param.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2004-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#if defined (__i386__) || defined (__x86_64__)
+#include <i386/_param.h>
+#elif defined (__arm__) || defined (__arm64__)
+#include <arm/_param.h>
+#else
+#error architecture not supported
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/machine/_types.h b/lib/libc/include/aarch64-macos-gnu/machine/_types.h
new file mode 100644
index 0000000000..6e38e3a253
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/machine/_types.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2003-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _BSD_MACHINE__TYPES_H_
+#define _BSD_MACHINE__TYPES_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "i386/_types.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "arm/_types.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _BSD_MACHINE__TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/machine/endian.h b/lib/libc/include/aarch64-macos-gnu/machine/endian.h
new file mode 100644
index 0000000000..39758c04d2
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/machine/endian.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright 1995 NeXT Computer, Inc. All rights reserved.
+ */
+#ifndef _BSD_MACHINE_ENDIAN_H_
+#define _BSD_MACHINE_ENDIAN_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "i386/endian.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "arm/endian.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _BSD_MACHINE_ENDIAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/machine/limits.h b/lib/libc/include/aarch64-macos-gnu/machine/limits.h
new file mode 100644
index 0000000000..7523f8806d
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/machine/limits.h
@@ -0,0 +1,11 @@
+/* This is the `system' limits.h, independent of any particular
+ * compiler. GCC provides its own limits.h which can be found in
+ * /usr/lib/gcc, although it is not very informative.
+ * This file is public domain. */
+#if defined (__i386__) || defined(__x86_64__)
+#include <i386/limits.h>
+#elif defined (__arm__) || defined (__arm64__)
+#include <arm/limits.h>
+#else
+#error architecture not supported
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/machine/param.h b/lib/libc/include/aarch64-macos-gnu/machine/param.h
new file mode 100644
index 0000000000..ccfeff4398
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/machine/param.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright 1995 NeXT Computer, Inc. All rights reserved.
+ */
+#ifndef _BSD_MACHINE_PARAM_H_
+#define _BSD_MACHINE_PARAM_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include <i386/param.h>
+#elif defined (__arm__) || defined (__arm64__)
+#include <arm/param.h>
+#else
+#error architecture not supported
+#endif
+
+#endif /* _BSD_MACHINE_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/machine/signal.h b/lib/libc/include/aarch64-macos-gnu/machine/signal.h
new file mode 100644
index 0000000000..2f33966bf1
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/machine/signal.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _BSD_MACHINE_SIGNAL_H_
+#define _BSD_MACHINE_SIGNAL_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "i386/signal.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "arm/signal.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _BSD_MACHINE_SIGNAL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/machine/types.h b/lib/libc/include/aarch64-macos-gnu/machine/types.h
new file mode 100644
index 0000000000..a4c80b820f
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/machine/types.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2000-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright 1995 NeXT Computer, Inc. All rights reserved.
+ */
+#ifndef _BSD_MACHINE_TYPES_H_
+#define _BSD_MACHINE_TYPES_H_
+
+#if defined (__i386__) || defined(__x86_64__)
+#include "i386/types.h"
+#elif defined (__arm__) || defined (__arm64__)
+#include "arm/types.h"
+#else
+#error architecture not supported
+#endif
+
+#endif /* _BSD_MACHINE_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/malloc/_malloc.h b/lib/libc/include/aarch64-macos-gnu/malloc/_malloc.h
new file mode 100644
index 0000000000..2c49d73458
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/malloc/_malloc.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2018 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MALLOC_UNDERSCORE_MALLOC_H_
+#define _MALLOC_UNDERSCORE_MALLOC_H_
+
+/*
+ * This header is included from <stdlib.h>, so the contents of this file have
+ * broad source compatibility and POSIX conformance implications.
+ * Be cautious about what is included and declared here.
+ */
+
+#include <Availability.h>
+#include <sys/cdefs.h>
+#include <_types.h>
+#include <sys/_types/_size_t.h>
+
+__BEGIN_DECLS
+
+void *malloc(size_t __size) __result_use_check __alloc_size(1);
+void *calloc(size_t __count, size_t __size) __result_use_check __alloc_size(1,2);
+void free(void *);
+void *realloc(void *__ptr, size_t __size) __result_use_check __alloc_size(2);
+#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+void *valloc(size_t) __alloc_size(1);
+#endif // !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+#if (__DARWIN_C_LEVEL >= __DARWIN_C_FULL) || \
+ (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
+ (defined(__cplusplus) && __cplusplus >= 201703L)
+void *aligned_alloc(size_t __alignment, size_t __size) __result_use_check __alloc_size(2) __OSX_AVAILABLE(10.15) __IOS_AVAILABLE(13.0) __TVOS_AVAILABLE(13.0) __WATCHOS_AVAILABLE(6.0);
+#endif
+int posix_memalign(void **__memptr, size_t __alignment, size_t __size) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+
+__END_DECLS
+
+#endif /* _MALLOC_UNDERSCORE_MALLOC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/malloc/malloc.h b/lib/libc/include/aarch64-macos-gnu/malloc/malloc.h
new file mode 100644
index 0000000000..33013ccc54
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/malloc/malloc.h
@@ -0,0 +1,314 @@
+/*
+ * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _MALLOC_MALLOC_H_
+#define _MALLOC_MALLOC_H_
+
+#include <stddef.h>
+#include <mach/mach_types.h>
+#include <sys/cdefs.h>
+#include <Availability.h>
+
+#if __has_feature(ptrauth_calls)
+#include <ptrauth.h>
+
+// Zone function pointer, type-diversified but not address-diversified (because
+// the zone can be copied). Process-independent because the zone structure may
+// be in the shared library cache.
+#define MALLOC_ZONE_FN_PTR(fn) __ptrauth(ptrauth_key_process_independent_code, \
+ FALSE, ptrauth_string_discriminator("malloc_zone_fn." #fn)) fn
+
+// Introspection function pointer, address- and type-diversified.
+// Process-independent because the malloc_introspection_t structure that contains
+// these pointers may be in the shared library cache.
+#define MALLOC_INTROSPECT_FN_PTR(fn) __ptrauth(ptrauth_key_process_independent_code, \
+ TRUE, ptrauth_string_discriminator("malloc_introspect_fn." #fn)) fn
+
+// Pointer to the introspection pointer table, type-diversified but not
+// address-diversified (because the zone can be copied).
+// Process-independent because the table pointer may be in the shared library cache.
+#define MALLOC_INTROSPECT_TBL_PTR(ptr) __ptrauth(ptrauth_key_process_independent_data,\
+ FALSE, ptrauth_string_discriminator("malloc_introspect_tbl")) ptr
+
+#endif // __has_feature(ptrauth_calls)
+
+#ifndef MALLOC_ZONE_FN_PTR
+#define MALLOC_ZONE_FN_PTR(fn) fn
+#define MALLOC_INTROSPECT_FN_PTR(fn) fn
+#define MALLOC_INTROSPECT_TBL_PTR(ptr) ptr
+#endif // MALLOC_ZONE_FN_PTR
+
+__BEGIN_DECLS
+/********* Type definitions ************/
+
+typedef struct _malloc_zone_t {
+ /* Only zone implementors should depend on the layout of this structure;
+ Regular callers should use the access functions below */
+ void *reserved1; /* RESERVED FOR CFAllocator DO NOT USE */
+ void *reserved2; /* RESERVED FOR CFAllocator DO NOT USE */
+ size_t (* MALLOC_ZONE_FN_PTR(size))(struct _malloc_zone_t *zone, const void *ptr); /* returns the size of a block or 0 if not in this zone; must be fast, especially for negative answers */
+ void *(* MALLOC_ZONE_FN_PTR(malloc))(struct _malloc_zone_t *zone, size_t size);
+ void *(* MALLOC_ZONE_FN_PTR(calloc))(struct _malloc_zone_t *zone, size_t num_items, size_t size); /* same as malloc, but block returned is set to zero */
+ void *(* MALLOC_ZONE_FN_PTR(valloc))(struct _malloc_zone_t *zone, size_t size); /* same as malloc, but block returned is set to zero and is guaranteed to be page aligned */
+ void (* MALLOC_ZONE_FN_PTR(free))(struct _malloc_zone_t *zone, void *ptr);
+ void *(* MALLOC_ZONE_FN_PTR(realloc))(struct _malloc_zone_t *zone, void *ptr, size_t size);
+ void (* MALLOC_ZONE_FN_PTR(destroy))(struct _malloc_zone_t *zone); /* zone is destroyed and all memory reclaimed */
+ const char *zone_name;
+
+ /* Optional batch callbacks; these may be NULL */
+ unsigned (* MALLOC_ZONE_FN_PTR(batch_malloc))(struct _malloc_zone_t *zone, size_t size, void **results, unsigned num_requested); /* given a size, returns pointers capable of holding that size; returns the number of pointers allocated (maybe 0 or less than num_requested) */
+ void (* MALLOC_ZONE_FN_PTR(batch_free))(struct _malloc_zone_t *zone, void **to_be_freed, unsigned num_to_be_freed); /* frees all the pointers in to_be_freed; note that to_be_freed may be overwritten during the process */
+
+ struct malloc_introspection_t * MALLOC_INTROSPECT_TBL_PTR(introspect);
+ unsigned version;
+
+ /* aligned memory allocation. The callback may be NULL. Present in version >= 5. */
+ void *(* MALLOC_ZONE_FN_PTR(memalign))(struct _malloc_zone_t *zone, size_t alignment, size_t size);
+
+ /* free a pointer known to be in zone and known to have the given size. The callback may be NULL. Present in version >= 6.*/
+ void (* MALLOC_ZONE_FN_PTR(free_definite_size))(struct _malloc_zone_t *zone, void *ptr, size_t size);
+
+ /* Empty out caches in the face of memory pressure. The callback may be NULL. Present in version >= 8. */
+ size_t (* MALLOC_ZONE_FN_PTR(pressure_relief))(struct _malloc_zone_t *zone, size_t goal);
+
+ /*
+ * Checks whether an address might belong to the zone. May be NULL. Present in version >= 10.
+ * False positives are allowed (e.g. the pointer was freed, or it's in zone space that has
+ * not yet been allocated. False negatives are not allowed.
+ */
+ boolean_t (* MALLOC_ZONE_FN_PTR(claimed_address))(struct _malloc_zone_t *zone, void *ptr);
+} malloc_zone_t;
+
+/********* Creation and destruction ************/
+
+extern malloc_zone_t *malloc_default_zone(void);
+ /* The initial zone */
+
+extern malloc_zone_t *malloc_create_zone(vm_size_t start_size, unsigned flags);
+ /* Creates a new zone with default behavior and registers it */
+
+extern void malloc_destroy_zone(malloc_zone_t *zone);
+ /* Destroys zone and everything it allocated */
+
+/********* Block creation and manipulation ************/
+
+extern void *malloc_zone_malloc(malloc_zone_t *zone, size_t size) __alloc_size(2);
+ /* Allocates a new pointer of size size; zone must be non-NULL */
+
+extern void *malloc_zone_calloc(malloc_zone_t *zone, size_t num_items, size_t size) __alloc_size(2,3);
+ /* Allocates a new pointer of size num_items * size; block is cleared; zone must be non-NULL */
+
+extern void *malloc_zone_valloc(malloc_zone_t *zone, size_t size) __alloc_size(2);
+ /* Allocates a new pointer of size size; zone must be non-NULL; Pointer is guaranteed to be page-aligned and block is cleared */
+
+extern void malloc_zone_free(malloc_zone_t *zone, void *ptr);
+ /* Frees pointer in zone; zone must be non-NULL */
+
+extern void *malloc_zone_realloc(malloc_zone_t *zone, void *ptr, size_t size) __alloc_size(3);
+ /* Enlarges block if necessary; zone must be non-NULL */
+
+extern malloc_zone_t *malloc_zone_from_ptr(const void *ptr);
+ /* Returns the zone for a pointer, or NULL if not in any zone.
+ The ptr must have been returned from a malloc or realloc call. */
+
+extern size_t malloc_size(const void *ptr);
+ /* Returns size of given ptr */
+
+extern size_t malloc_good_size(size_t size);
+ /* Returns number of bytes greater than or equal to size that can be allocated without padding */
+
+extern void *malloc_zone_memalign(malloc_zone_t *zone, size_t alignment, size_t size) __alloc_size(3) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+ /*
+ * Allocates a new pointer of size size whose address is an exact multiple of alignment.
+ * alignment must be a power of two and at least as large as sizeof(void *).
+ * zone must be non-NULL.
+ */
+
+/********* Batch methods ************/
+
+extern unsigned malloc_zone_batch_malloc(malloc_zone_t *zone, size_t size, void **results, unsigned num_requested);
+ /* Allocates num blocks of the same size; Returns the number truly allocated (may be 0) */
+
+extern void malloc_zone_batch_free(malloc_zone_t *zone, void **to_be_freed, unsigned num);
+ /* frees all the pointers in to_be_freed; note that to_be_freed may be overwritten during the process; This function will always free even if the zone has no batch callback */
+
+/********* Functions for libcache ************/
+
+extern malloc_zone_t *malloc_default_purgeable_zone(void) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+ /* Returns a pointer to the default purgeable_zone. */
+
+extern void malloc_make_purgeable(void *ptr) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+ /* Make an allocation from the purgeable zone purgeable if possible. */
+
+extern int malloc_make_nonpurgeable(void *ptr) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+ /* Makes an allocation from the purgeable zone nonpurgeable.
+ * Returns zero if the contents were not purged since the last
+ * call to malloc_make_purgeable, else returns non-zero. */
+
+/********* Functions for zone implementors ************/
+
+extern void malloc_zone_register(malloc_zone_t *zone);
+ /* Registers a custom malloc zone; Should typically be called after a
+ * malloc_zone_t has been filled in with custom methods by a client. See
+ * malloc_create_zone for creating additional malloc zones with the
+ * default allocation and free behavior. */
+
+extern void malloc_zone_unregister(malloc_zone_t *zone);
+ /* De-registers a zone
+ Should typically be called before calling the zone destruction routine */
+
+extern void malloc_set_zone_name(malloc_zone_t *zone, const char *name);
+ /* Sets the name of a zone */
+
+extern const char *malloc_get_zone_name(malloc_zone_t *zone);
+ /* Returns the name of a zone */
+
+size_t malloc_zone_pressure_relief(malloc_zone_t *zone, size_t goal) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+ /* malloc_zone_pressure_relief() advises the malloc subsystem that the process is under memory pressure and
+ * that the subsystem should make its best effort towards releasing (i.e. munmap()-ing) "goal" bytes from "zone".
+ * If "goal" is passed as zero, the malloc subsystem will attempt to achieve maximal pressure relief in "zone".
+ * If "zone" is passed as NULL, all zones are examined for pressure relief opportunities.
+ * malloc_zone_pressure_relief() returns the number of bytes released.
+ */
+
+typedef struct {
+ vm_address_t address;
+ vm_size_t size;
+} vm_range_t;
+
+typedef struct malloc_statistics_t {
+ unsigned blocks_in_use;
+ size_t size_in_use;
+ size_t max_size_in_use; /* high water mark of touched memory */
+ size_t size_allocated; /* reserved in memory */
+} malloc_statistics_t;
+
+typedef kern_return_t memory_reader_t(task_t remote_task, vm_address_t remote_address, vm_size_t size, void **local_memory);
+ /* given a task, "reads" the memory at the given address and size
+local_memory: set to a contiguous chunk of memory; validity of local_memory is assumed to be limited (until next call) */
+
+#define MALLOC_PTR_IN_USE_RANGE_TYPE 1 /* for allocated pointers */
+#define MALLOC_PTR_REGION_RANGE_TYPE 2 /* for region containing pointers */
+#define MALLOC_ADMIN_REGION_RANGE_TYPE 4 /* for region used internally */
+#define MALLOC_ZONE_SPECIFIC_FLAGS 0xff00 /* bits reserved for zone-specific purposes */
+
+typedef void vm_range_recorder_t(task_t, void *, unsigned type, vm_range_t *, unsigned);
+ /* given a task and context, "records" the specified addresses */
+
+/* Print function for the print_task() operation. */
+typedef void print_task_printer_t(const char *fmt, ...) __printflike(1,2);
+
+typedef struct malloc_introspection_t {
+ kern_return_t (* MALLOC_INTROSPECT_FN_PTR(enumerator))(task_t task, void *, unsigned type_mask, vm_address_t zone_address, memory_reader_t reader, vm_range_recorder_t recorder); /* enumerates all the malloc pointers in use */
+ size_t (* MALLOC_INTROSPECT_FN_PTR(good_size))(malloc_zone_t *zone, size_t size);
+ boolean_t (* MALLOC_INTROSPECT_FN_PTR(check))(malloc_zone_t *zone); /* Consistency checker */
+ void (* MALLOC_INTROSPECT_FN_PTR(print))(malloc_zone_t *zone, boolean_t verbose); /* Prints zone */
+ void (* MALLOC_INTROSPECT_FN_PTR(log))(malloc_zone_t *zone, void *address); /* Enables logging of activity */
+ void (* MALLOC_INTROSPECT_FN_PTR(force_lock))(malloc_zone_t *zone); /* Forces locking zone */
+ void (* MALLOC_INTROSPECT_FN_PTR(force_unlock))(malloc_zone_t *zone); /* Forces unlocking zone */
+ void (* MALLOC_INTROSPECT_FN_PTR(statistics))(malloc_zone_t *zone, malloc_statistics_t *stats); /* Fills statistics */
+ boolean_t (* MALLOC_INTROSPECT_FN_PTR(zone_locked))(malloc_zone_t *zone); /* Are any zone locks held */
+
+ /* Discharge checking. Present in version >= 7. */
+ boolean_t (* MALLOC_INTROSPECT_FN_PTR(enable_discharge_checking))(malloc_zone_t *zone);
+ void (* MALLOC_INTROSPECT_FN_PTR(disable_discharge_checking))(malloc_zone_t *zone);
+ void (* MALLOC_INTROSPECT_FN_PTR(discharge))(malloc_zone_t *zone, void *memory);
+#ifdef __BLOCKS__
+ void (* MALLOC_INTROSPECT_FN_PTR(enumerate_discharged_pointers))(malloc_zone_t *zone, void (^report_discharged)(void *memory, void *info));
+ #else
+ void *enumerate_unavailable_without_blocks;
+#endif /* __BLOCKS__ */
+ void (* MALLOC_INTROSPECT_FN_PTR(reinit_lock))(malloc_zone_t *zone); /* Reinitialize zone locks, called only from atfork_child handler. Present in version >= 9. */
+ void (* MALLOC_INTROSPECT_FN_PTR(print_task))(task_t task, unsigned level, vm_address_t zone_address, memory_reader_t reader, print_task_printer_t printer); /* debug print for another process. Present in version >= 11. */
+ void (* MALLOC_INTROSPECT_FN_PTR(task_statistics))(task_t task, vm_address_t zone_address, memory_reader_t reader, malloc_statistics_t *stats); /* Present in version >= 12 */
+} malloc_introspection_t;
+
+// The value of "level" when passed to print_task() that corresponds to
+// verbose passed to print()
+#define MALLOC_VERBOSE_PRINT_LEVEL 2
+
+extern void malloc_printf(const char *format, ...);
+ /* Convenience for logging errors and warnings;
+ No allocation is performed during execution of this function;
+ Only understands usual %p %d %s formats, and %y that expresses a number of bytes (5b,10KB,1MB...)
+ */
+
+/********* Functions for performance tools ************/
+
+extern kern_return_t malloc_get_all_zones(task_t task, memory_reader_t reader, vm_address_t **addresses, unsigned *count);
+ /* Fills addresses and count with the addresses of the zones in task;
+ Note that the validity of the addresses returned correspond to the validity of the memory returned by reader */
+
+/********* Debug helpers ************/
+
+extern void malloc_zone_print_ptr_info(void *ptr);
+ /* print to stdout if this pointer is in the malloc heap, free status, and size */
+
+extern boolean_t malloc_zone_check(malloc_zone_t *zone);
+ /* Checks zone is well formed; if !zone, checks all zones */
+
+extern void malloc_zone_print(malloc_zone_t *zone, boolean_t verbose);
+ /* Prints summary on zone; if !zone, prints all zones */
+
+extern void malloc_zone_statistics(malloc_zone_t *zone, malloc_statistics_t *stats);
+ /* Fills statistics for zone; if !zone, sums up all zones */
+
+extern void malloc_zone_log(malloc_zone_t *zone, void *address);
+ /* Controls logging of all activity; if !zone, for all zones;
+ If address==0 nothing is logged;
+ If address==-1 all activity is logged;
+ Else only the activity regarding address is logged */
+
+struct mstats {
+ size_t bytes_total;
+ size_t chunks_used;
+ size_t bytes_used;
+ size_t chunks_free;
+ size_t bytes_free;
+};
+
+extern struct mstats mstats(void);
+
+extern boolean_t malloc_zone_enable_discharge_checking(malloc_zone_t *zone) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+/* Increment the discharge checking enabled counter for a zone. Returns true if the zone supports checking, false if it does not. */
+
+extern void malloc_zone_disable_discharge_checking(malloc_zone_t *zone) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+/* Decrement the discharge checking enabled counter for a zone. */
+
+extern void malloc_zone_discharge(malloc_zone_t *zone, void *memory) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+/* Register memory that the programmer expects to be freed soon.
+ zone may be NULL in which case the zone is determined using malloc_zone_from_ptr().
+ If discharge checking is off for the zone this function is a no-op. */
+
+#ifdef __BLOCKS__
+extern void malloc_zone_enumerate_discharged_pointers(malloc_zone_t *zone, void (^report_discharged)(void *memory, void *info)) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+/* Calls report_discharged for each block that was registered using malloc_zone_discharge() but has not yet been freed.
+ info is used to provide zone defined information about the memory block.
+ If zone is NULL then the enumeration covers all zones. */
+#else
+extern void malloc_zone_enumerate_discharged_pointers(malloc_zone_t *zone, void *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+#endif /* __BLOCKS__ */
+
+__END_DECLS
+
+#endif /* _MALLOC_MALLOC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/math.h b/lib/libc/include/aarch64-macos-gnu/math.h
new file mode 100644
index 0000000000..f3d6d6dbb4
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/math.h
@@ -0,0 +1,775 @@
+/*
+ * Copyright (c) 2002-2017 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 1.1 (the
+ * "License"). You may not use this file except in compliance with the
+ * License. Please obtain a copy of the License at
+ * http://www.apple.com/publicsource and read it before using this file.
+ *
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef __MATH_H__
+#define __MATH_H__
+
+#ifndef __MATH__
+#define __MATH__
+#endif
+
+#include <sys/cdefs.h>
+#include <Availability.h>
+
+__BEGIN_DECLS
+
+/******************************************************************************
+ * Floating point data types *
+ ******************************************************************************/
+
+/* Define float_t and double_t per C standard, ISO/IEC 9899:2011 7.12 2,
+ taking advantage of GCC's __FLT_EVAL_METHOD__ (which a compiler may
+ define anytime and GCC does) that shadows FLT_EVAL_METHOD (which a
+ compiler must define only in float.h). */
+#if __FLT_EVAL_METHOD__ == 0
+ typedef float float_t;
+ typedef double double_t;
+#elif __FLT_EVAL_METHOD__ == 1
+ typedef double float_t;
+ typedef double double_t;
+#elif __FLT_EVAL_METHOD__ == 2 || __FLT_EVAL_METHOD__ == -1
+ typedef long double float_t;
+ typedef long double double_t;
+#else /* __FLT_EVAL_METHOD__ */
+# error "Unsupported value of __FLT_EVAL_METHOD__."
+#endif /* __FLT_EVAL_METHOD__ */
+
+#if defined(__GNUC__)
+# define HUGE_VAL __builtin_huge_val()
+# define HUGE_VALF __builtin_huge_valf()
+# define HUGE_VALL __builtin_huge_vall()
+# define NAN __builtin_nanf("0x7fc00000")
+#else
+# define HUGE_VAL 1e500
+# define HUGE_VALF 1e50f
+# define HUGE_VALL 1e5000L
+# define NAN __nan()
+#endif
+
+#define INFINITY HUGE_VALF
+
+/******************************************************************************
+ * Taxonomy of floating point data types *
+ ******************************************************************************/
+
+#define FP_NAN 1
+#define FP_INFINITE 2
+#define FP_ZERO 3
+#define FP_NORMAL 4
+#define FP_SUBNORMAL 5
+#define FP_SUPERNORMAL 6 /* legacy PowerPC support; this is otherwise unused */
+
+#if defined __arm64__ || defined __ARM_VFPV4__
+/* On these architectures, fma(), fmaf( ), and fmal( ) are generally about as
+ fast as (or faster than) separate multiply and add of the same operands. */
+# define FP_FAST_FMA 1
+# define FP_FAST_FMAF 1
+# define FP_FAST_FMAL 1
+#elif (defined __i386__ || defined __x86_64__) && (defined __FMA__ || defined __AVX512F__)
+/* When targeting the FMA ISA extension, fma() and fmaf( ) are generally
+ about as fast as (or faster than) separate multiply and add of the same
+ operands, but fmal( ) may be more costly. */
+# define FP_FAST_FMA 1
+# define FP_FAST_FMAF 1
+# undef FP_FAST_FMAL
+#else
+/* On these architectures, fma( ), fmaf( ), and fmal( ) function calls are
+ significantly more costly than separate multiply and add operations. */
+# undef FP_FAST_FMA
+# undef FP_FAST_FMAF
+# undef FP_FAST_FMAL
+#endif
+
+/* The values returned by `ilogb' for 0 and NaN respectively. */
+#define FP_ILOGB0 (-2147483647 - 1)
+#define FP_ILOGBNAN (-2147483647 - 1)
+
+/* Bitmasks for the math_errhandling macro. */
+#define MATH_ERRNO 1 /* errno set by math functions. */
+#define MATH_ERREXCEPT 2 /* Exceptions raised by math functions. */
+
+#define math_errhandling (__math_errhandling())
+extern int __math_errhandling(void);
+
+/******************************************************************************
+ * *
+ * Inquiry macros *
+ * *
+ * fpclassify Returns one of the FP_* values. *
+ * isnormal Non-zero if and only if the argument x is normalized. *
+ * isfinite Non-zero if and only if the argument x is finite. *
+ * isnan Non-zero if and only if the argument x is a NaN. *
+ * signbit Non-zero if and only if the sign of the argument x is *
+ * negative. This includes, NaNs, infinities and zeros. *
+ * *
+ ******************************************************************************/
+
+#define fpclassify(x) \
+ ( sizeof(x) == sizeof(float) ? __fpclassifyf((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __fpclassifyd((double)(x)) \
+ : __fpclassifyl((long double)(x)))
+
+extern int __fpclassifyf(float);
+extern int __fpclassifyd(double);
+extern int __fpclassifyl(long double);
+
+#if (defined(__GNUC__) && 0 == __FINITE_MATH_ONLY__)
+/* These inline functions may fail to return expected results if unsafe
+ math optimizations like those enabled by -ffast-math are turned on.
+ Thus, (somewhat surprisingly) you only get the fast inline
+ implementations if such compiler options are NOT enabled. This is
+ because the inline functions require the compiler to be adhering to
+ the standard in order to work properly; -ffast-math, among other
+ things, implies that NaNs don't happen, which allows the compiler to
+ optimize away checks like x != x, which might lead to things like
+ isnan(NaN) returning false.
+
+ Thus, if you compile with -ffast-math, actual function calls are
+ generated for these utilities. */
+
+#define isnormal(x) \
+ ( sizeof(x) == sizeof(float) ? __inline_isnormalf((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __inline_isnormald((double)(x)) \
+ : __inline_isnormall((long double)(x)))
+
+#define isfinite(x) \
+ ( sizeof(x) == sizeof(float) ? __inline_isfinitef((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __inline_isfinited((double)(x)) \
+ : __inline_isfinitel((long double)(x)))
+
+#define isinf(x) \
+ ( sizeof(x) == sizeof(float) ? __inline_isinff((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __inline_isinfd((double)(x)) \
+ : __inline_isinfl((long double)(x)))
+
+#define isnan(x) \
+ ( sizeof(x) == sizeof(float) ? __inline_isnanf((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __inline_isnand((double)(x)) \
+ : __inline_isnanl((long double)(x)))
+
+#define signbit(x) \
+ ( sizeof(x) == sizeof(float) ? __inline_signbitf((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __inline_signbitd((double)(x)) \
+ : __inline_signbitl((long double)(x)))
+
+__header_always_inline int __inline_isfinitef(float);
+__header_always_inline int __inline_isfinited(double);
+__header_always_inline int __inline_isfinitel(long double);
+__header_always_inline int __inline_isinff(float);
+__header_always_inline int __inline_isinfd(double);
+__header_always_inline int __inline_isinfl(long double);
+__header_always_inline int __inline_isnanf(float);
+__header_always_inline int __inline_isnand(double);
+__header_always_inline int __inline_isnanl(long double);
+__header_always_inline int __inline_isnormalf(float);
+__header_always_inline int __inline_isnormald(double);
+__header_always_inline int __inline_isnormall(long double);
+__header_always_inline int __inline_signbitf(float);
+__header_always_inline int __inline_signbitd(double);
+__header_always_inline int __inline_signbitl(long double);
+
+__header_always_inline int __inline_isfinitef(float __x) {
+ return __x == __x && __builtin_fabsf(__x) != __builtin_inff();
+}
+__header_always_inline int __inline_isfinited(double __x) {
+ return __x == __x && __builtin_fabs(__x) != __builtin_inf();
+}
+__header_always_inline int __inline_isfinitel(long double __x) {
+ return __x == __x && __builtin_fabsl(__x) != __builtin_infl();
+}
+__header_always_inline int __inline_isinff(float __x) {
+ return __builtin_fabsf(__x) == __builtin_inff();
+}
+__header_always_inline int __inline_isinfd(double __x) {
+ return __builtin_fabs(__x) == __builtin_inf();
+}
+__header_always_inline int __inline_isinfl(long double __x) {
+ return __builtin_fabsl(__x) == __builtin_infl();
+}
+__header_always_inline int __inline_isnanf(float __x) {
+ return __x != __x;
+}
+__header_always_inline int __inline_isnand(double __x) {
+ return __x != __x;
+}
+__header_always_inline int __inline_isnanl(long double __x) {
+ return __x != __x;
+}
+__header_always_inline int __inline_signbitf(float __x) {
+ union { float __f; unsigned int __u; } __u;
+ __u.__f = __x;
+ return (int)(__u.__u >> 31);
+}
+__header_always_inline int __inline_signbitd(double __x) {
+ union { double __f; unsigned long long __u; } __u;
+ __u.__f = __x;
+ return (int)(__u.__u >> 63);
+}
+#if defined __i386__ || defined __x86_64__
+__header_always_inline int __inline_signbitl(long double __x) {
+ union {
+ long double __ld;
+ struct{ unsigned long long __m; unsigned short __sexp; } __p;
+ } __u;
+ __u.__ld = __x;
+ return (int)(__u.__p.__sexp >> 15);
+}
+#else
+__header_always_inline int __inline_signbitl(long double __x) {
+ union { long double __f; unsigned long long __u;} __u;
+ __u.__f = __x;
+ return (int)(__u.__u >> 63);
+}
+#endif
+__header_always_inline int __inline_isnormalf(float __x) {
+ return __inline_isfinitef(__x) && __builtin_fabsf(__x) >= __FLT_MIN__;
+}
+__header_always_inline int __inline_isnormald(double __x) {
+ return __inline_isfinited(__x) && __builtin_fabs(__x) >= __DBL_MIN__;
+}
+__header_always_inline int __inline_isnormall(long double __x) {
+ return __inline_isfinitel(__x) && __builtin_fabsl(__x) >= __LDBL_MIN__;
+}
+
+#else /* defined(__GNUC__) && 0 == __FINITE_MATH_ONLY__ */
+
+/* Implementations making function calls to fall back on when -ffast-math
+ or similar is specified. These are not available in iOS versions prior
+ to 6.0. If you need them, you must target that version or later. */
+
+#define isnormal(x) \
+ ( sizeof(x) == sizeof(float) ? __isnormalf((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __isnormald((double)(x)) \
+ : __isnormall((long double)(x)))
+
+#define isfinite(x) \
+ ( sizeof(x) == sizeof(float) ? __isfinitef((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __isfinited((double)(x)) \
+ : __isfinitel((long double)(x)))
+
+#define isinf(x) \
+ ( sizeof(x) == sizeof(float) ? __isinff((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __isinfd((double)(x)) \
+ : __isinfl((long double)(x)))
+
+#define isnan(x) \
+ ( sizeof(x) == sizeof(float) ? __isnanf((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __isnand((double)(x)) \
+ : __isnanl((long double)(x)))
+
+#define signbit(x) \
+ ( sizeof(x) == sizeof(float) ? __signbitf((float)(x)) \
+ : sizeof(x) == sizeof(double) ? __signbitd((double)(x)) \
+ : __signbitl((long double)(x)))
+
+extern int __isnormalf(float);
+extern int __isnormald(double);
+extern int __isnormall(long double);
+extern int __isfinitef(float);
+extern int __isfinited(double);
+extern int __isfinitel(long double);
+extern int __isinff(float);
+extern int __isinfd(double);
+extern int __isinfl(long double);
+extern int __isnanf(float);
+extern int __isnand(double);
+extern int __isnanl(long double);
+extern int __signbitf(float);
+extern int __signbitd(double);
+extern int __signbitl(long double);
+
+#endif /* defined(__GNUC__) && 0 == __FINITE_MATH_ONLY__ */
+
+/******************************************************************************
+ * *
+ * Math Functions *
+ * *
+ ******************************************************************************/
+
+extern float acosf(float);
+extern double acos(double);
+extern long double acosl(long double);
+
+extern float asinf(float);
+extern double asin(double);
+extern long double asinl(long double);
+
+extern float atanf(float);
+extern double atan(double);
+extern long double atanl(long double);
+
+extern float atan2f(float, float);
+extern double atan2(double, double);
+extern long double atan2l(long double, long double);
+
+extern float cosf(float);
+extern double cos(double);
+extern long double cosl(long double);
+
+extern float sinf(float);
+extern double sin(double);
+extern long double sinl(long double);
+
+extern float tanf(float);
+extern double tan(double);
+extern long double tanl(long double);
+
+extern float acoshf(float);
+extern double acosh(double);
+extern long double acoshl(long double);
+
+extern float asinhf(float);
+extern double asinh(double);
+extern long double asinhl(long double);
+
+extern float atanhf(float);
+extern double atanh(double);
+extern long double atanhl(long double);
+
+extern float coshf(float);
+extern double cosh(double);
+extern long double coshl(long double);
+
+extern float sinhf(float);
+extern double sinh(double);
+extern long double sinhl(long double);
+
+extern float tanhf(float);
+extern double tanh(double);
+extern long double tanhl(long double);
+
+extern float expf(float);
+extern double exp(double);
+extern long double expl(long double);
+
+extern float exp2f(float);
+extern double exp2(double);
+extern long double exp2l(long double);
+
+extern float expm1f(float);
+extern double expm1(double);
+extern long double expm1l(long double);
+
+extern float logf(float);
+extern double log(double);
+extern long double logl(long double);
+
+extern float log10f(float);
+extern double log10(double);
+extern long double log10l(long double);
+
+extern float log2f(float);
+extern double log2(double);
+extern long double log2l(long double);
+
+extern float log1pf(float);
+extern double log1p(double);
+extern long double log1pl(long double);
+
+extern float logbf(float);
+extern double logb(double);
+extern long double logbl(long double);
+
+extern float modff(float, float *);
+extern double modf(double, double *);
+extern long double modfl(long double, long double *);
+
+extern float ldexpf(float, int);
+extern double ldexp(double, int);
+extern long double ldexpl(long double, int);
+
+extern float frexpf(float, int *);
+extern double frexp(double, int *);
+extern long double frexpl(long double, int *);
+
+extern int ilogbf(float);
+extern int ilogb(double);
+extern int ilogbl(long double);
+
+extern float scalbnf(float, int);
+extern double scalbn(double, int);
+extern long double scalbnl(long double, int);
+
+extern float scalblnf(float, long int);
+extern double scalbln(double, long int);
+extern long double scalblnl(long double, long int);
+
+extern float fabsf(float);
+extern double fabs(double);
+extern long double fabsl(long double);
+
+extern float cbrtf(float);
+extern double cbrt(double);
+extern long double cbrtl(long double);
+
+extern float hypotf(float, float);
+extern double hypot(double, double);
+extern long double hypotl(long double, long double);
+
+extern float powf(float, float);
+extern double pow(double, double);
+extern long double powl(long double, long double);
+
+extern float sqrtf(float);
+extern double sqrt(double);
+extern long double sqrtl(long double);
+
+extern float erff(float);
+extern double erf(double);
+extern long double erfl(long double);
+
+extern float erfcf(float);
+extern double erfc(double);
+extern long double erfcl(long double);
+
+/* lgammaf, lgamma, and lgammal are not thread-safe. The thread-safe
+ variants lgammaf_r, lgamma_r, and lgammal_r are made available if
+ you define the _REENTRANT symbol before including <math.h> */
+extern float lgammaf(float);
+extern double lgamma(double);
+extern long double lgammal(long double);
+
+extern float tgammaf(float);
+extern double tgamma(double);
+extern long double tgammal(long double);
+
+extern float ceilf(float);
+extern double ceil(double);
+extern long double ceill(long double);
+
+extern float floorf(float);
+extern double floor(double);
+extern long double floorl(long double);
+
+extern float nearbyintf(float);
+extern double nearbyint(double);
+extern long double nearbyintl(long double);
+
+extern float rintf(float);
+extern double rint(double);
+extern long double rintl(long double);
+
+extern long int lrintf(float);
+extern long int lrint(double);
+extern long int lrintl(long double);
+
+extern float roundf(float);
+extern double round(double);
+extern long double roundl(long double);
+
+extern long int lroundf(float);
+extern long int lround(double);
+extern long int lroundl(long double);
+
+/* long long is not part of C90. Make sure you are passing -std=c99 or
+ -std=gnu99 or higher if you need these functions returning long longs */
+#if !(__DARWIN_NO_LONG_LONG)
+extern long long int llrintf(float);
+extern long long int llrint(double);
+extern long long int llrintl(long double);
+
+extern long long int llroundf(float);
+extern long long int llround(double);
+extern long long int llroundl(long double);
+#endif /* !(__DARWIN_NO_LONG_LONG) */
+
+extern float truncf(float);
+extern double trunc(double);
+extern long double truncl(long double);
+
+extern float fmodf(float, float);
+extern double fmod(double, double);
+extern long double fmodl(long double, long double);
+
+extern float remainderf(float, float);
+extern double remainder(double, double);
+extern long double remainderl(long double, long double);
+
+extern float remquof(float, float, int *);
+extern double remquo(double, double, int *);
+extern long double remquol(long double, long double, int *);
+
+extern float copysignf(float, float);
+extern double copysign(double, double);
+extern long double copysignl(long double, long double);
+
+extern float nanf(const char *);
+extern double nan(const char *);
+extern long double nanl(const char *);
+
+extern float nextafterf(float, float);
+extern double nextafter(double, double);
+extern long double nextafterl(long double, long double);
+
+extern double nexttoward(double, long double);
+extern float nexttowardf(float, long double);
+extern long double nexttowardl(long double, long double);
+
+extern float fdimf(float, float);
+extern double fdim(double, double);
+extern long double fdiml(long double, long double);
+
+extern float fmaxf(float, float);
+extern double fmax(double, double);
+extern long double fmaxl(long double, long double);
+
+extern float fminf(float, float);
+extern double fmin(double, double);
+extern long double fminl(long double, long double);
+
+extern float fmaf(float, float, float);
+extern double fma(double, double, double);
+extern long double fmal(long double, long double, long double);
+
+#define isgreater(x, y) __builtin_isgreater((x),(y))
+#define isgreaterequal(x, y) __builtin_isgreaterequal((x),(y))
+#define isless(x, y) __builtin_isless((x),(y))
+#define islessequal(x, y) __builtin_islessequal((x),(y))
+#define islessgreater(x, y) __builtin_islessgreater((x),(y))
+#define isunordered(x, y) __builtin_isunordered((x),(y))
+
+#if defined __i386__ || defined __x86_64__
+/* Deprecated functions; use the INFINITY and NAN macros instead. */
+extern float __inff(void)
+__API_DEPRECATED("use `(float)INFINITY` instead", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+extern double __inf(void)
+__API_DEPRECATED("use `INFINITY` instead", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+extern long double __infl(void)
+__API_DEPRECATED("use `(long double)INFINITY` instead", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+extern float __nan(void)
+__API_DEPRECATED("use `NAN` instead", macos(10.0, 10.14)) __API_UNAVAILABLE(ios, watchos, tvos);
+#endif
+
+/******************************************************************************
+ * Reentrant variants of lgamma[fl] *
+ ******************************************************************************/
+
+#ifdef _REENTRANT
+/* Reentrant variants of the lgamma[fl] functions. */
+extern float lgammaf_r(float, int *) __API_AVAILABLE(macos(10.6), ios(3.1));
+extern double lgamma_r(double, int *) __API_AVAILABLE(macos(10.6), ios(3.1));
+extern long double lgammal_r(long double, int *) __API_AVAILABLE(macos(10.6), ios(3.1));
+#endif /* _REENTRANT */
+
+/******************************************************************************
+ * Apple extensions to the C standard *
+ ******************************************************************************/
+
+/* Because these functions are not specified by any relevant standard, they
+ are prefixed with __, which places them in the implementor's namespace, so
+ they should not conflict with any developer or third-party code. If they
+ are added to a relevant standard in the future, un-prefixed names may be
+ added to the library and they may be moved out of this section of the
+ header.
+
+ Because these functions are non-standard, they may not be available on non-
+ Apple platforms. */
+
+/* __exp10(x) returns 10**x. Edge cases match those of exp( ) and exp2( ). */
+extern float __exp10f(float) __API_AVAILABLE(macos(10.9), ios(7.0));
+extern double __exp10(double) __API_AVAILABLE(macos(10.9), ios(7.0));
+
+/* __sincos(x,sinp,cosp) computes the sine and cosine of x with a single
+ function call, storing the sine in the memory pointed to by sinp, and
+ the cosine in the memory pointed to by cosp. Edge cases match those of
+ separate calls to sin( ) and cos( ). */
+__header_always_inline void __sincosf(float __x, float *__sinp, float *__cosp);
+__header_always_inline void __sincos(double __x, double *__sinp, double *__cosp);
+
+/* __sinpi(x) returns the sine of pi times x; __cospi(x) and __tanpi(x) return
+ the cosine and tangent, respectively. These functions can produce a more
+ accurate answer than expressions of the form sin(M_PI * x) because they
+ avoid any loss of precision that results from rounding the result of the
+ multiplication M_PI * x. They may also be significantly more efficient in
+ some cases because the argument reduction for these functions is easier
+ to compute. Consult the man pages for edge case details. */
+extern float __cospif(float) __API_AVAILABLE(macos(10.9), ios(7.0));
+extern double __cospi(double) __API_AVAILABLE(macos(10.9), ios(7.0));
+extern float __sinpif(float) __API_AVAILABLE(macos(10.9), ios(7.0));
+extern double __sinpi(double) __API_AVAILABLE(macos(10.9), ios(7.0));
+extern float __tanpif(float) __API_AVAILABLE(macos(10.9), ios(7.0));
+extern double __tanpi(double) __API_AVAILABLE(macos(10.9), ios(7.0));
+
+#if (defined __MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED < 1090) || \
+ (defined __IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED < 70000)
+/* __sincos and __sincosf were introduced in OSX 10.9 and iOS 7.0. When
+ targeting an older system, we simply split them up into discrete calls
+ to sin( ) and cos( ). */
+__header_always_inline void __sincosf(float __x, float *__sinp, float *__cosp) {
+ *__sinp = sinf(__x);
+ *__cosp = cosf(__x);
+}
+
+__header_always_inline void __sincos(double __x, double *__sinp, double *__cosp) {
+ *__sinp = sin(__x);
+ *__cosp = cos(__x);
+}
+#else
+/* __sincospi(x,sinp,cosp) computes the sine and cosine of pi times x with a
+ single function call, storing the sine in the memory pointed to by sinp,
+ and the cosine in the memory pointed to by cosp. Edge cases match those
+ of separate calls to __sinpi( ) and __cospi( ), and are documented in the
+ man pages.
+
+ These functions were introduced in OSX 10.9 and iOS 7.0. Because they are
+ implemented as header inlines, weak-linking does not function as normal,
+ and they are simply hidden when targeting earlier OS versions. */
+__header_always_inline void __sincospif(float __x, float *__sinp, float *__cosp);
+__header_always_inline void __sincospi(double __x, double *__sinp, double *__cosp);
+
+/* Implementation details of __sincos and __sincospi allowing them to return
+ two results while allowing the compiler to optimize away unnecessary load-
+ store traffic. Although these interfaces are exposed in the math.h header
+ to allow compilers to generate better code, users should call __sincos[f]
+ and __sincospi[f] instead and allow the compiler to emit these calls. */
+struct __float2 { float __sinval; float __cosval; };
+struct __double2 { double __sinval; double __cosval; };
+
+extern struct __float2 __sincosf_stret(float);
+extern struct __double2 __sincos_stret(double);
+extern struct __float2 __sincospif_stret(float);
+extern struct __double2 __sincospi_stret(double);
+
+__header_always_inline void __sincosf(float __x, float *__sinp, float *__cosp) {
+ const struct __float2 __stret = __sincosf_stret(__x);
+ *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
+}
+
+__header_always_inline void __sincos(double __x, double *__sinp, double *__cosp) {
+ const struct __double2 __stret = __sincos_stret(__x);
+ *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
+}
+
+__header_always_inline void __sincospif(float __x, float *__sinp, float *__cosp) {
+ const struct __float2 __stret = __sincospif_stret(__x);
+ *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
+}
+
+__header_always_inline void __sincospi(double __x, double *__sinp, double *__cosp) {
+ const struct __double2 __stret = __sincospi_stret(__x);
+ *__sinp = __stret.__sinval; *__cosp = __stret.__cosval;
+}
+#endif
+
+/******************************************************************************
+ * POSIX/UNIX extensions to the C standard *
+ ******************************************************************************/
+
+#if __DARWIN_C_LEVEL >= 199506L
+extern double j0(double) __API_AVAILABLE(macos(10.0), ios(3.2));
+extern double j1(double) __API_AVAILABLE(macos(10.0), ios(3.2));
+extern double jn(int, double) __API_AVAILABLE(macos(10.0), ios(3.2));
+extern double y0(double) __API_AVAILABLE(macos(10.0), ios(3.2));
+extern double y1(double) __API_AVAILABLE(macos(10.0), ios(3.2));
+extern double yn(int, double) __API_AVAILABLE(macos(10.0), ios(3.2));
+extern double scalb(double, double);
+extern int signgam;
+
+/* Even though these might be more useful as long doubles, POSIX requires
+ that they be double-precision literals. */
+#define M_E 2.71828182845904523536028747135266250 /* e */
+#define M_LOG2E 1.44269504088896340735992468100189214 /* log2(e) */
+#define M_LOG10E 0.434294481903251827651128918916605082 /* log10(e) */
+#define M_LN2 0.693147180559945309417232121458176568 /* loge(2) */
+#define M_LN10 2.30258509299404568401799145468436421 /* loge(10) */
+#define M_PI 3.14159265358979323846264338327950288 /* pi */
+#define M_PI_2 1.57079632679489661923132169163975144 /* pi/2 */
+#define M_PI_4 0.785398163397448309615660845819875721 /* pi/4 */
+#define M_1_PI 0.318309886183790671537767526745028724 /* 1/pi */
+#define M_2_PI 0.636619772367581343075535053490057448 /* 2/pi */
+#define M_2_SQRTPI 1.12837916709551257389615890312154517 /* 2/sqrt(pi) */
+#define M_SQRT2 1.41421356237309504880168872420969808 /* sqrt(2) */
+#define M_SQRT1_2 0.707106781186547524400844362104849039 /* 1/sqrt(2) */
+
+#define MAXFLOAT 0x1.fffffep+127f
+#endif /* __DARWIN_C_LEVEL >= 199506L */
+
+/* Long-double versions of M_E, etc for convenience on Intel where long-
+ double is not the same as double. Define __MATH_LONG_DOUBLE_CONSTANTS
+ to make these constants available. */
+#if defined __MATH_LONG_DOUBLE_CONSTANTS
+#define M_El 0xa.df85458a2bb4a9bp-2L
+#define M_LOG2El 0xb.8aa3b295c17f0bcp-3L
+#define M_LOG10El 0xd.e5bd8a937287195p-5L
+#define M_LN2l 0xb.17217f7d1cf79acp-4L
+#define M_LN10l 0x9.35d8dddaaa8ac17p-2L
+#define M_PIl 0xc.90fdaa22168c235p-2L
+#define M_PI_2l 0xc.90fdaa22168c235p-3L
+#define M_PI_4l 0xc.90fdaa22168c235p-4L
+#define M_1_PIl 0xa.2f9836e4e44152ap-5L
+#define M_2_PIl 0xa.2f9836e4e44152ap-4L
+#define M_2_SQRTPIl 0x9.06eba8214db688dp-3L
+#define M_SQRT2l 0xb.504f333f9de6484p-3L
+#define M_SQRT1_2l 0xb.504f333f9de6484p-4L
+#endif /* defined __MATH_LONG_DOUBLE_CONSTANTS */
+
+/******************************************************************************
+ * Legacy BSD extensions to the C standard *
+ ******************************************************************************/
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define FP_SNAN FP_NAN
+#define FP_QNAN FP_NAN
+#define HUGE MAXFLOAT
+#define X_TLOSS 1.41484755040568800000e+16
+#define DOMAIN 1
+#define SING 2
+#define OVERFLOW 3
+#define UNDERFLOW 4
+#define TLOSS 5
+#define PLOSS 6
+
+#if defined __i386__ || defined __x86_64__
+/* Legacy BSD API; use the C99 `lrint( )` function instead. */
+extern long int rinttol(double)
+__API_DEPRECATED_WITH_REPLACEMENT("lrint", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+/* Legacy BSD API; use the C99 `lround( )` function instead. */
+extern long int roundtol(double)
+__API_DEPRECATED_WITH_REPLACEMENT("lround", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+/* Legacy BSD API; use the C99 `remainder( )` function instead. */
+extern double drem(double, double)
+__API_DEPRECATED_WITH_REPLACEMENT("remainder", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+/* Legacy BSD API; use the C99 `isfinite( )` macro instead. */
+extern int finite(double)
+__API_DEPRECATED("Use `isfinite((double)x)` instead.", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+/* Legacy BSD API; use the C99 `tgamma( )` function instead. */
+extern double gamma(double)
+__API_DEPRECATED_WITH_REPLACEMENT("tgamma", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+/* Legacy BSD API; use `2*frexp( )` or `scalbn(x, -ilogb(x))` instead. */
+extern double significand(double)
+__API_DEPRECATED("Use `2*frexp( )` or `scalbn(x, -ilogb(x))` instead.", macos(10.0, 10.9)) __API_UNAVAILABLE(ios, watchos, tvos);
+#endif
+
+#if !defined __cplusplus
+struct exception {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+};
+
+#endif /* !defined __cplusplus */
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+__END_DECLS
+#endif /* __MATH_H__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/net/if.h b/lib/libc/include/aarch64-macos-gnu/net/if.h
new file mode 100644
index 0000000000..e77e7b8338
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/net/if.h
@@ -0,0 +1,442 @@
+/*
+ * Copyright (c) 2000-2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright (c) 1982, 1986, 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)if.h 8.1 (Berkeley) 6/10/93
+ */
+
+#ifndef _NET_IF_H_
+#define _NET_IF_H_
+
+#include <sys/cdefs.h>
+#include <net/net_kev.h>
+
+#define IF_NAMESIZE 16
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#include <sys/appleapiopts.h>
+#ifdef __APPLE__
+
+#include <net/if_var.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+#endif
+
+struct if_clonereq {
+ int ifcr_total; /* total cloners (out) */
+ int ifcr_count; /* room for this many in user buffer */
+ char *ifcr_buffer; /* buffer for cloner names */
+};
+
+
+#define IFF_UP 0x1 /* interface is up */
+#define IFF_BROADCAST 0x2 /* broadcast address valid */
+#define IFF_DEBUG 0x4 /* turn on debugging */
+#define IFF_LOOPBACK 0x8 /* is a loopback net */
+#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */
+#define IFF_NOTRAILERS 0x20 /* obsolete: avoid use of trailers */
+#define IFF_RUNNING 0x40 /* resources allocated */
+#define IFF_NOARP 0x80 /* no address resolution protocol */
+#define IFF_PROMISC 0x100 /* receive all packets */
+#define IFF_ALLMULTI 0x200 /* receive all multicast packets */
+#define IFF_OACTIVE 0x400 /* transmission in progress */
+#define IFF_SIMPLEX 0x800 /* can't hear own transmissions */
+#define IFF_LINK0 0x1000 /* per link layer defined bit */
+#define IFF_LINK1 0x2000 /* per link layer defined bit */
+#define IFF_LINK2 0x4000 /* per link layer defined bit */
+#define IFF_ALTPHYS IFF_LINK2 /* use alternate physical connection */
+#define IFF_MULTICAST 0x8000 /* supports multicast */
+
+
+
+/*
+ * Capabilities that interfaces can advertise.
+ *
+ * struct ifnet.if_capabilities
+ * contains the optional features & capabilities a particular interface
+ * supports (not only the driver but also the detected hw revision).
+ * Capabilities are defined by IFCAP_* below.
+ * struct ifnet.if_capenable
+ * contains the enabled (either by default or through ifconfig) optional
+ * features & capabilities on this interface.
+ * Capabilities are defined by IFCAP_* below.
+ * struct if_data.ifi_hwassist in IFNET_* form, defined in net/kpi_interface.h,
+ * contains the enabled optional features & capabilites that can be used
+ * individually per packet and are specified in the mbuf pkthdr.csum_flags
+ * field. IFCAP_* and IFNET_* do not match one to one and IFNET_* may be
+ * more detailed or differentiated than IFCAP_*.
+ * IFNET_* hwassist flags have corresponding CSUM_* in sys/mbuf.h
+ */
+#define IFCAP_RXCSUM 0x00001 /* can offload checksum on RX */
+#define IFCAP_TXCSUM 0x00002 /* can offload checksum on TX */
+#define IFCAP_VLAN_MTU 0x00004 /* VLAN-compatible MTU */
+#define IFCAP_VLAN_HWTAGGING 0x00008 /* hardware VLAN tag support */
+#define IFCAP_JUMBO_MTU 0x00010 /* 9000 byte MTU supported */
+#define IFCAP_TSO4 0x00020 /* can do TCP Segmentation Offload */
+#define IFCAP_TSO6 0x00040 /* can do TCP6 Segmentation Offload */
+#define IFCAP_LRO 0x00080 /* can do Large Receive Offload */
+#define IFCAP_AV 0x00100 /* can do 802.1 AV Bridging */
+#define IFCAP_TXSTATUS 0x00200 /* can return linklevel xmit status */
+#define IFCAP_SKYWALK 0x00400 /* Skywalk mode supported/enabled */
+#define IFCAP_HW_TIMESTAMP 0x00800 /* Time stamping in hardware */
+#define IFCAP_SW_TIMESTAMP 0x01000 /* Time stamping in software */
+#define IFCAP_CSUM_PARTIAL 0x02000 /* can offload partial checksum */
+#define IFCAP_CSUM_ZERO_INVERT 0x04000 /* can invert 0 to -0 (0xffff) */
+
+#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM)
+#define IFCAP_TSO (IFCAP_TSO4 | IFCAP_TSO6)
+
+#define IFCAP_VALID (IFCAP_HWCSUM | IFCAP_TSO | IFCAP_LRO | IFCAP_VLAN_MTU | \
+ IFCAP_VLAN_HWTAGGING | IFCAP_JUMBO_MTU | IFCAP_AV | IFCAP_TXSTATUS | \
+ IFCAP_SKYWALK | IFCAP_SW_TIMESTAMP | IFCAP_HW_TIMESTAMP | \
+ IFCAP_CSUM_PARTIAL | IFCAP_CSUM_ZERO_INVERT)
+
+#define IFQ_MAXLEN 128
+#define IFNET_SLOWHZ 1 /* granularity is 1 second */
+#define IFQ_TARGET_DELAY (10ULL * 1000 * 1000) /* 10 ms */
+#define IFQ_UPDATE_INTERVAL (100ULL * 1000 * 1000) /* 100 ms */
+
+/*
+ * Message format for use in obtaining information about interfaces
+ * from sysctl and the routing socket
+ */
+struct if_msghdr {
+ unsigned short ifm_msglen; /* to skip non-understood messages */
+ unsigned char ifm_version; /* future binary compatability */
+ unsigned char ifm_type; /* message type */
+ int ifm_addrs; /* like rtm_addrs */
+ int ifm_flags; /* value of if_flags */
+ unsigned short ifm_index; /* index for associated ifp */
+ struct if_data ifm_data; /* statistics and other data about if */
+};
+
+/*
+ * Message format for use in obtaining information about interface addresses
+ * from sysctl and the routing socket
+ */
+struct ifa_msghdr {
+ unsigned short ifam_msglen; /* to skip non-understood messages */
+ unsigned char ifam_version; /* future binary compatability */
+ unsigned char ifam_type; /* message type */
+ int ifam_addrs; /* like rtm_addrs */
+ int ifam_flags; /* value of ifa_flags */
+ unsigned short ifam_index; /* index for associated ifp */
+ int ifam_metric; /* value of ifa_metric */
+};
+
+/*
+ * Message format for use in obtaining information about multicast addresses
+ * from the routing socket
+ */
+struct ifma_msghdr {
+ unsigned short ifmam_msglen; /* to skip non-understood messages */
+ unsigned char ifmam_version; /* future binary compatability */
+ unsigned char ifmam_type; /* message type */
+ int ifmam_addrs; /* like rtm_addrs */
+ int ifmam_flags; /* value of ifa_flags */
+ unsigned short ifmam_index; /* index for associated ifp */
+};
+
+/*
+ * Message format for use in obtaining information about interfaces
+ * from sysctl
+ */
+struct if_msghdr2 {
+ u_short ifm_msglen; /* to skip over non-understood messages */
+ u_char ifm_version; /* future binary compatability */
+ u_char ifm_type; /* message type */
+ int ifm_addrs; /* like rtm_addrs */
+ int ifm_flags; /* value of if_flags */
+ u_short ifm_index; /* index for associated ifp */
+ int ifm_snd_len; /* instantaneous length of send queue */
+ int ifm_snd_maxlen; /* maximum length of send queue */
+ int ifm_snd_drops; /* number of drops in send queue */
+ int ifm_timer; /* time until if_watchdog called */
+ struct if_data64 ifm_data; /* statistics and other data */
+};
+
+/*
+ * Message format for use in obtaining information about multicast addresses
+ * from sysctl
+ */
+struct ifma_msghdr2 {
+ u_short ifmam_msglen; /* to skip over non-understood messages */
+ u_char ifmam_version; /* future binary compatability */
+ u_char ifmam_type; /* message type */
+ int ifmam_addrs; /* like rtm_addrs */
+ int ifmam_flags; /* value of ifa_flags */
+ u_short ifmam_index; /* index for associated ifp */
+ int32_t ifmam_refcount;
+};
+
+/*
+ * ifdevmtu: interface device mtu
+ * Used with SIOCGIFDEVMTU to get the current mtu in use by the device,
+ * as well as the minimum and maximum mtu allowed by the device.
+ */
+struct ifdevmtu {
+ int ifdm_current;
+ int ifdm_min;
+ int ifdm_max;
+};
+
+#pragma pack(4)
+
+/*
+ * ifkpi: interface kpi ioctl
+ * Used with SIOCSIFKPI and SIOCGIFKPI.
+ *
+ * ifk_module_id - From in the kernel, a value from kev_vendor_code_find. From
+ * user space, a value from SIOCGKEVVENDOR ioctl on a kernel event socket.
+ * ifk_type - The type. Types are specific to each module id.
+ * ifk_data - The data. ifk_ptr may be a 64bit pointer for 64 bit processes.
+ *
+ * Copying data between user space and kernel space is done using copyin
+ * and copyout. A process may be running in 64bit mode. In such a case,
+ * the pointer will be a 64bit pointer, not a 32bit pointer. The following
+ * sample is a safe way to copy the data in to the kernel from either a
+ * 32bit or 64bit process:
+ *
+ * user_addr_t tmp_ptr;
+ * if (IS_64BIT_PROCESS(current_proc())) {
+ * tmp_ptr = CAST_USER_ADDR_T(ifkpi.ifk_data.ifk_ptr64);
+ * }
+ * else {
+ * tmp_ptr = CAST_USER_ADDR_T(ifkpi.ifk_data.ifk_ptr);
+ * }
+ * error = copyin(tmp_ptr, allocated_dst_buffer, size of allocated_dst_buffer);
+ */
+
+struct ifkpi {
+ unsigned int ifk_module_id;
+ unsigned int ifk_type;
+ union {
+ void *ifk_ptr;
+ int ifk_value;
+ } ifk_data;
+};
+
+/* Wake capabilities of a interface */
+#define IF_WAKE_ON_MAGIC_PACKET 0x01
+
+
+#pragma pack()
+
+/*
+ * Interface request structure used for socket
+ * ioctl's. All interface ioctl's must have parameter
+ * definitions which begin with ifr_name. The
+ * remainder may be interface specific.
+ */
+struct ifreq {
+#ifndef IFNAMSIZ
+#define IFNAMSIZ IF_NAMESIZE
+#endif
+ char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ union {
+ struct sockaddr ifru_addr;
+ struct sockaddr ifru_dstaddr;
+ struct sockaddr ifru_broadaddr;
+ short ifru_flags;
+ int ifru_metric;
+ int ifru_mtu;
+ int ifru_phys;
+ int ifru_media;
+ int ifru_intval;
+ caddr_t ifru_data;
+ struct ifdevmtu ifru_devmtu;
+ struct ifkpi ifru_kpi;
+ u_int32_t ifru_wake_flags;
+ u_int32_t ifru_route_refcnt;
+ int ifru_cap[2];
+ u_int32_t ifru_functional_type;
+#define IFRTYPE_FUNCTIONAL_UNKNOWN 0
+#define IFRTYPE_FUNCTIONAL_LOOPBACK 1
+#define IFRTYPE_FUNCTIONAL_WIRED 2
+#define IFRTYPE_FUNCTIONAL_WIFI_INFRA 3
+#define IFRTYPE_FUNCTIONAL_WIFI_AWDL 4
+#define IFRTYPE_FUNCTIONAL_CELLULAR 5
+#define IFRTYPE_FUNCTIONAL_INTCOPROC 6
+#define IFRTYPE_FUNCTIONAL_COMPANIONLINK 7
+#define IFRTYPE_FUNCTIONAL_LAST 7
+ } ifr_ifru;
+#define ifr_addr ifr_ifru.ifru_addr /* address */
+#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
+#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
+#ifdef __APPLE__
+#define ifr_flags ifr_ifru.ifru_flags /* flags */
+#else
+#define ifr_flags ifr_ifru.ifru_flags[0] /* flags */
+#define ifr_prevflags ifr_ifru.ifru_flags[1] /* flags */
+#endif /* __APPLE__ */
+#define ifr_metric ifr_ifru.ifru_metric /* metric */
+#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
+#define ifr_phys ifr_ifru.ifru_phys /* physical wire */
+#define ifr_media ifr_ifru.ifru_media /* physical media */
+#define ifr_data ifr_ifru.ifru_data /* for use by interface */
+#define ifr_devmtu ifr_ifru.ifru_devmtu
+#define ifr_intval ifr_ifru.ifru_intval /* integer value */
+#define ifr_kpi ifr_ifru.ifru_kpi
+#define ifr_wake_flags ifr_ifru.ifru_wake_flags /* wake capabilities */
+#define ifr_route_refcnt ifr_ifru.ifru_route_refcnt /* route references count */
+#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */
+#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */
+};
+
+#define _SIZEOF_ADDR_IFREQ(ifr) \
+ ((ifr).ifr_addr.sa_len > sizeof (struct sockaddr) ? \
+ (sizeof (struct ifreq) - sizeof (struct sockaddr) + \
+ (ifr).ifr_addr.sa_len) : sizeof (struct ifreq))
+
+struct ifaliasreq {
+ char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ struct sockaddr ifra_addr;
+ struct sockaddr ifra_broadaddr;
+ struct sockaddr ifra_mask;
+};
+
+struct rslvmulti_req {
+ struct sockaddr *sa;
+ struct sockaddr **llsa;
+};
+
+#pragma pack(4)
+
+struct ifmediareq {
+ char ifm_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ int ifm_current; /* current media options */
+ int ifm_mask; /* don't care mask */
+ int ifm_status; /* media status */
+ int ifm_active; /* active options */
+ int ifm_count; /* # entries in ifm_ulist array */
+ int *ifm_ulist; /* media words */
+};
+
+#pragma pack()
+
+
+
+#pragma pack(4)
+struct ifdrv {
+ char ifd_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ unsigned long ifd_cmd;
+ size_t ifd_len; /* length of ifd_data buffer */
+ void *ifd_data;
+};
+#pragma pack()
+
+
+/*
+ * Structure used to retrieve aux status data from interfaces.
+ * Kernel suppliers to this interface should respect the formatting
+ * needed by ifconfig(8): each line starts with a TAB and ends with
+ * a newline.
+ */
+
+#define IFSTATMAX 800 /* 10 lines of text */
+struct ifstat {
+ char ifs_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ char ascii[IFSTATMAX + 1];
+};
+
+/*
+ * Structure used in SIOCGIFCONF request.
+ * Used to retrieve interface configuration
+ * for machine (useful for programs which
+ * must know all networks accessible).
+ */
+#pragma pack(4)
+struct ifconf {
+ int ifc_len; /* size of associated buffer */
+ union {
+ caddr_t ifcu_buf;
+ struct ifreq *ifcu_req;
+ } ifc_ifcu;
+};
+#pragma pack()
+#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
+#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */
+
+
+/*
+ * DLIL KEV_DL_PROTO_ATTACHED/DETACHED structure
+ */
+struct kev_dl_proto_data {
+ struct net_event_data link_data;
+ u_int32_t proto_family;
+ u_int32_t proto_remaining_count;
+};
+
+
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+struct if_nameindex {
+ unsigned int if_index; /* 1, 2, ... */
+ char *if_name; /* null terminated name: "le0", ... */
+};
+
+__BEGIN_DECLS
+unsigned int if_nametoindex(const char *);
+char *if_indextoname(unsigned int, char *);
+struct if_nameindex *if_nameindex(void);
+void if_freenameindex(struct if_nameindex *);
+__END_DECLS
+
+
+#endif /* !_NET_IF_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/net/if_var.h b/lib/libc/include/aarch64-macos-gnu/net/if_var.h
new file mode 100644
index 0000000000..79e6a60368
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/net/if_var.h
@@ -0,0 +1,243 @@
+/*
+ * Copyright (c) 2000-2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright (c) 1982, 1986, 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * From: @(#)if.h 8.1 (Berkeley) 6/10/93
+ * $FreeBSD: src/sys/net/if_var.h,v 1.18.2.7 2001/07/24 19:10:18 brooks Exp $
+ */
+
+#ifndef _NET_IF_VAR_H_
+#define _NET_IF_VAR_H_
+
+#include <sys/appleapiopts.h>
+#include <stdint.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/queue.h> /* get TAILQ macros */
+#ifdef BSD_KERN_PRIVATE
+#include <net/pktsched/pktsched.h>
+#include <sys/eventhandler.h>
+#endif
+
+
+#ifdef __APPLE__
+#define APPLE_IF_FAM_LOOPBACK 1
+#define APPLE_IF_FAM_ETHERNET 2
+#define APPLE_IF_FAM_SLIP 3
+#define APPLE_IF_FAM_TUN 4
+#define APPLE_IF_FAM_VLAN 5
+#define APPLE_IF_FAM_PPP 6
+#define APPLE_IF_FAM_PVC 7
+#define APPLE_IF_FAM_DISC 8
+#define APPLE_IF_FAM_MDECAP 9
+#define APPLE_IF_FAM_GIF 10
+#define APPLE_IF_FAM_FAITH 11 /* deprecated */
+#define APPLE_IF_FAM_STF 12
+#define APPLE_IF_FAM_FIREWIRE 13
+#define APPLE_IF_FAM_BOND 14
+#define APPLE_IF_FAM_CELLULAR 15
+#define APPLE_IF_FAM_6LOWPAN 16
+#define APPLE_IF_FAM_UTUN 17
+#define APPLE_IF_FAM_IPSEC 18
+#endif /* __APPLE__ */
+
+/*
+ * 72 was chosen below because it is the size of a TCP/IP
+ * header (40) + the minimum mss (32).
+ */
+#define IF_MINMTU 72
+#define IF_MAXMTU 65535
+
+/*
+ * Structures defining a network interface, providing a packet
+ * transport mechanism (ala level 0 of the PUP protocols).
+ *
+ * Each interface accepts output datagrams of a specified maximum
+ * length, and provides higher level routines with input datagrams
+ * received from its medium.
+ *
+ * Output occurs when the routine if_output is called, with three parameters:
+ * (*ifp->if_output)(ifp, m, dst, rt)
+ * Here m is the mbuf chain to be sent and dst is the destination address.
+ * The output routine encapsulates the supplied datagram if necessary,
+ * and then transmits it on its medium.
+ *
+ * On input, each interface unwraps the data received by it, and either
+ * places it on the input queue of a internetwork datagram routine
+ * and posts the associated software interrupt, or passes the datagram to a raw
+ * packet input routine.
+ *
+ * Routines exist for locating interfaces by their addresses
+ * or for locating a interface on a certain network, as well as more general
+ * routing and gateway routines maintaining information used to locate
+ * interfaces. These routines live in the files if.c and route.c
+ */
+
+#define IFNAMSIZ 16
+
+/* This belongs up in socket.h or socketvar.h, depending on how far the
+ * event bubbles up.
+ */
+
+struct net_event_data {
+ u_int32_t if_family;
+ u_int32_t if_unit;
+ char if_name[IFNAMSIZ];
+};
+
+#if defined(__LP64__)
+#include <sys/_types/_timeval32.h>
+#define IF_DATA_TIMEVAL timeval32
+#else
+#define IF_DATA_TIMEVAL timeval
+#endif
+
+#pragma pack(4)
+
+/*
+ * Structure describing information about an interface
+ * which may be of interest to management entities.
+ */
+struct if_data {
+ /* generic interface information */
+ u_char ifi_type; /* ethernet, tokenring, etc */
+ u_char ifi_typelen; /* Length of frame type id */
+ u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */
+ u_char ifi_addrlen; /* media address length */
+ u_char ifi_hdrlen; /* media header length */
+ u_char ifi_recvquota; /* polling quota for receive intrs */
+ u_char ifi_xmitquota; /* polling quota for xmit intrs */
+ u_char ifi_unused1; /* for future use */
+ u_int32_t ifi_mtu; /* maximum transmission unit */
+ u_int32_t ifi_metric; /* routing metric (external only) */
+ u_int32_t ifi_baudrate; /* linespeed */
+ /* volatile statistics */
+ u_int32_t ifi_ipackets; /* packets received on interface */
+ u_int32_t ifi_ierrors; /* input errors on interface */
+ u_int32_t ifi_opackets; /* packets sent on interface */
+ u_int32_t ifi_oerrors; /* output errors on interface */
+ u_int32_t ifi_collisions; /* collisions on csma interfaces */
+ u_int32_t ifi_ibytes; /* total number of octets received */
+ u_int32_t ifi_obytes; /* total number of octets sent */
+ u_int32_t ifi_imcasts; /* packets received via multicast */
+ u_int32_t ifi_omcasts; /* packets sent via multicast */
+ u_int32_t ifi_iqdrops; /* dropped on input, this interface */
+ u_int32_t ifi_noproto; /* destined for unsupported protocol */
+ u_int32_t ifi_recvtiming; /* usec spent receiving when timing */
+ u_int32_t ifi_xmittiming; /* usec spent xmitting when timing */
+ struct IF_DATA_TIMEVAL ifi_lastchange; /* time of last administrative change */
+ u_int32_t ifi_unused2; /* used to be the default_proto */
+ u_int32_t ifi_hwassist; /* HW offload capabilities */
+ u_int32_t ifi_reserved1; /* for future use */
+ u_int32_t ifi_reserved2; /* for future use */
+};
+
+/*
+ * Structure describing information about an interface
+ * which may be of interest to management entities.
+ */
+struct if_data64 {
+ /* generic interface information */
+ u_char ifi_type; /* ethernet, tokenring, etc */
+ u_char ifi_typelen; /* Length of frame type id */
+ u_char ifi_physical; /* e.g., AUI, Thinnet, 10base-T, etc */
+ u_char ifi_addrlen; /* media address length */
+ u_char ifi_hdrlen; /* media header length */
+ u_char ifi_recvquota; /* polling quota for receive intrs */
+ u_char ifi_xmitquota; /* polling quota for xmit intrs */
+ u_char ifi_unused1; /* for future use */
+ u_int32_t ifi_mtu; /* maximum transmission unit */
+ u_int32_t ifi_metric; /* routing metric (external only) */
+ u_int64_t ifi_baudrate; /* linespeed */
+ /* volatile statistics */
+ u_int64_t ifi_ipackets; /* packets received on interface */
+ u_int64_t ifi_ierrors; /* input errors on interface */
+ u_int64_t ifi_opackets; /* packets sent on interface */
+ u_int64_t ifi_oerrors; /* output errors on interface */
+ u_int64_t ifi_collisions; /* collisions on csma interfaces */
+ u_int64_t ifi_ibytes; /* total number of octets received */
+ u_int64_t ifi_obytes; /* total number of octets sent */
+ u_int64_t ifi_imcasts; /* packets received via multicast */
+ u_int64_t ifi_omcasts; /* packets sent via multicast */
+ u_int64_t ifi_iqdrops; /* dropped on input, this interface */
+ u_int64_t ifi_noproto; /* destined for unsupported protocol */
+ u_int32_t ifi_recvtiming; /* usec spent receiving when timing */
+ u_int32_t ifi_xmittiming; /* usec spent xmitting when timing */
+ struct IF_DATA_TIMEVAL ifi_lastchange; /* time of last administrative change */
+};
+
+
+#pragma pack()
+
+/*
+ * Structure defining a queue for a network interface.
+ */
+struct ifqueue {
+ void *ifq_head;
+ void *ifq_tail;
+ int ifq_len;
+ int ifq_maxlen;
+ int ifq_drops;
+};
+
+
+
+
+
+
+#endif /* !_NET_IF_VAR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/netinet/in.h b/lib/libc/include/aarch64-macos-gnu/netinet/in.h
new file mode 100644
index 0000000000..8916f36091
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/netinet/in.h
@@ -0,0 +1,672 @@
+/*
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright (c) 1982, 1986, 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)in.h 8.3 (Berkeley) 1/3/94
+ * $FreeBSD: src/sys/netinet/in.h,v 1.48.2.2 2001/04/21 14:53:06 ume Exp $
+ */
+
+#ifndef _NETINET_IN_H_
+#define _NETINET_IN_H_
+
+#include <sys/appleapiopts.h>
+#include <stdint.h> /* uint(8|16|32)_t */
+
+#include <Availability.h>
+
+
+#include <sys/_types/_in_addr_t.h>
+#include <sys/_types/_in_port_t.h>
+
+/*
+ * POSIX 1003.1-2003
+ * "Inclusion of the <netinet/in.h> header may also make visible all
+ * symbols from <inttypes.h> and <sys/socket.h>".
+ */
+#include <sys/socket.h>
+
+/*
+ * The following two #includes insure htonl and family are defined
+ */
+#include <machine/endian.h>
+#include <sys/_endian.h>
+
+/*
+ * Constants and structures defined by the internet system,
+ * Per RFC 790, September 1981, and numerous additions.
+ */
+
+/*
+ * Protocols (RFC 1700)
+ */
+#define IPPROTO_IP 0 /* dummy for IP */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IPPROTO_HOPOPTS 0 /* IP6 hop-by-hop options */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define IPPROTO_ICMP 1 /* control message protocol */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IPPROTO_IGMP 2 /* group mgmt protocol */
+#define IPPROTO_GGP 3 /* gateway^2 (deprecated) */
+#define IPPROTO_IPV4 4 /* IPv4 encapsulation */
+#define IPPROTO_IPIP IPPROTO_IPV4 /* for compatibility */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define IPPROTO_TCP 6 /* tcp */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IPPROTO_ST 7 /* Stream protocol II */
+#define IPPROTO_EGP 8 /* exterior gateway protocol */
+#define IPPROTO_PIGP 9 /* private interior gateway */
+#define IPPROTO_RCCMON 10 /* BBN RCC Monitoring */
+#define IPPROTO_NVPII 11 /* network voice protocol*/
+#define IPPROTO_PUP 12 /* pup */
+#define IPPROTO_ARGUS 13 /* Argus */
+#define IPPROTO_EMCON 14 /* EMCON */
+#define IPPROTO_XNET 15 /* Cross Net Debugger */
+#define IPPROTO_CHAOS 16 /* Chaos*/
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define IPPROTO_UDP 17 /* user datagram protocol */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IPPROTO_MUX 18 /* Multiplexing */
+#define IPPROTO_MEAS 19 /* DCN Measurement Subsystems */
+#define IPPROTO_HMP 20 /* Host Monitoring */
+#define IPPROTO_PRM 21 /* Packet Radio Measurement */
+#define IPPROTO_IDP 22 /* xns idp */
+#define IPPROTO_TRUNK1 23 /* Trunk-1 */
+#define IPPROTO_TRUNK2 24 /* Trunk-2 */
+#define IPPROTO_LEAF1 25 /* Leaf-1 */
+#define IPPROTO_LEAF2 26 /* Leaf-2 */
+#define IPPROTO_RDP 27 /* Reliable Data */
+#define IPPROTO_IRTP 28 /* Reliable Transaction */
+#define IPPROTO_TP 29 /* tp-4 w/ class negotiation */
+#define IPPROTO_BLT 30 /* Bulk Data Transfer */
+#define IPPROTO_NSP 31 /* Network Services */
+#define IPPROTO_INP 32 /* Merit Internodal */
+#define IPPROTO_SEP 33 /* Sequential Exchange */
+#define IPPROTO_3PC 34 /* Third Party Connect */
+#define IPPROTO_IDPR 35 /* InterDomain Policy Routing */
+#define IPPROTO_XTP 36 /* XTP */
+#define IPPROTO_DDP 37 /* Datagram Delivery */
+#define IPPROTO_CMTP 38 /* Control Message Transport */
+#define IPPROTO_TPXX 39 /* TP++ Transport */
+#define IPPROTO_IL 40 /* IL transport protocol */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define IPPROTO_IPV6 41 /* IP6 header */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IPPROTO_SDRP 42 /* Source Demand Routing */
+#define IPPROTO_ROUTING 43 /* IP6 routing header */
+#define IPPROTO_FRAGMENT 44 /* IP6 fragmentation header */
+#define IPPROTO_IDRP 45 /* InterDomain Routing*/
+#define IPPROTO_RSVP 46 /* resource reservation */
+#define IPPROTO_GRE 47 /* General Routing Encap. */
+#define IPPROTO_MHRP 48 /* Mobile Host Routing */
+#define IPPROTO_BHA 49 /* BHA */
+#define IPPROTO_ESP 50 /* IP6 Encap Sec. Payload */
+#define IPPROTO_AH 51 /* IP6 Auth Header */
+#define IPPROTO_INLSP 52 /* Integ. Net Layer Security */
+#define IPPROTO_SWIPE 53 /* IP with encryption */
+#define IPPROTO_NHRP 54 /* Next Hop Resolution */
+/* 55-57: Unassigned */
+#define IPPROTO_ICMPV6 58 /* ICMP6 */
+#define IPPROTO_NONE 59 /* IP6 no next header */
+#define IPPROTO_DSTOPTS 60 /* IP6 destination option */
+#define IPPROTO_AHIP 61 /* any host internal protocol */
+#define IPPROTO_CFTP 62 /* CFTP */
+#define IPPROTO_HELLO 63 /* "hello" routing protocol */
+#define IPPROTO_SATEXPAK 64 /* SATNET/Backroom EXPAK */
+#define IPPROTO_KRYPTOLAN 65 /* Kryptolan */
+#define IPPROTO_RVD 66 /* Remote Virtual Disk */
+#define IPPROTO_IPPC 67 /* Pluribus Packet Core */
+#define IPPROTO_ADFS 68 /* Any distributed FS */
+#define IPPROTO_SATMON 69 /* Satnet Monitoring */
+#define IPPROTO_VISA 70 /* VISA Protocol */
+#define IPPROTO_IPCV 71 /* Packet Core Utility */
+#define IPPROTO_CPNX 72 /* Comp. Prot. Net. Executive */
+#define IPPROTO_CPHB 73 /* Comp. Prot. HeartBeat */
+#define IPPROTO_WSN 74 /* Wang Span Network */
+#define IPPROTO_PVP 75 /* Packet Video Protocol */
+#define IPPROTO_BRSATMON 76 /* BackRoom SATNET Monitoring */
+#define IPPROTO_ND 77 /* Sun net disk proto (temp.) */
+#define IPPROTO_WBMON 78 /* WIDEBAND Monitoring */
+#define IPPROTO_WBEXPAK 79 /* WIDEBAND EXPAK */
+#define IPPROTO_EON 80 /* ISO cnlp */
+#define IPPROTO_VMTP 81 /* VMTP */
+#define IPPROTO_SVMTP 82 /* Secure VMTP */
+#define IPPROTO_VINES 83 /* Banyon VINES */
+#define IPPROTO_TTP 84 /* TTP */
+#define IPPROTO_IGP 85 /* NSFNET-IGP */
+#define IPPROTO_DGP 86 /* dissimilar gateway prot. */
+#define IPPROTO_TCF 87 /* TCF */
+#define IPPROTO_IGRP 88 /* Cisco/GXS IGRP */
+#define IPPROTO_OSPFIGP 89 /* OSPFIGP */
+#define IPPROTO_SRPC 90 /* Strite RPC protocol */
+#define IPPROTO_LARP 91 /* Locus Address Resoloution */
+#define IPPROTO_MTP 92 /* Multicast Transport */
+#define IPPROTO_AX25 93 /* AX.25 Frames */
+#define IPPROTO_IPEIP 94 /* IP encapsulated in IP */
+#define IPPROTO_MICP 95 /* Mobile Int.ing control */
+#define IPPROTO_SCCSP 96 /* Semaphore Comm. security */
+#define IPPROTO_ETHERIP 97 /* Ethernet IP encapsulation */
+#define IPPROTO_ENCAP 98 /* encapsulation header */
+#define IPPROTO_APES 99 /* any private encr. scheme */
+#define IPPROTO_GMTP 100 /* GMTP*/
+/* 101-252: Partly Unassigned */
+#define IPPROTO_PIM 103 /* Protocol Independent Mcast */
+#define IPPROTO_IPCOMP 108 /* payload compression (IPComp) */
+#define IPPROTO_PGM 113 /* PGM */
+#define IPPROTO_SCTP 132 /* SCTP */
+/* 253-254: Experimentation and testing; 255: Reserved (RFC3692) */
+/* BSD Private, local use, namespace incursion */
+#define IPPROTO_DIVERT 254 /* divert pseudo-protocol */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define IPPROTO_RAW 255 /* raw IP packet */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IPPROTO_MAX 256
+
+/* last return value of *_input(), meaning "all job for this pkt is done". */
+#define IPPROTO_DONE 257
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+/*
+ * Local port number conventions:
+ *
+ * When a user does a bind(2) or connect(2) with a port number of zero,
+ * a non-conflicting local port address is chosen.
+ * The default range is IPPORT_RESERVED through
+ * IPPORT_USERRESERVED, although that is settable by sysctl.
+ *
+ * A user may set the IPPROTO_IP option IP_PORTRANGE to change this
+ * default assignment range.
+ *
+ * The value IP_PORTRANGE_DEFAULT causes the default behavior.
+ *
+ * The value IP_PORTRANGE_HIGH changes the range of candidate port numbers
+ * into the "high" range. These are reserved for client outbound connections
+ * which do not want to be filtered by any firewalls.
+ *
+ * The value IP_PORTRANGE_LOW changes the range to the "low" are
+ * that is (by convention) restricted to privileged processes. This
+ * convention is based on "vouchsafe" principles only. It is only secure
+ * if you trust the remote host to restrict these ports.
+ *
+ * The default range of ports and the high range can be changed by
+ * sysctl(3). (net.inet.ip.port{hi,low}{first,last}_auto)
+ *
+ * Changing those values has bad security implications if you are
+ * using a a stateless firewall that is allowing packets outside of that
+ * range in order to allow transparent outgoing connections.
+ *
+ * Such a firewall configuration will generally depend on the use of these
+ * default values. If you change them, you may find your Security
+ * Administrator looking for you with a heavy object.
+ *
+ * For a slightly more orthodox text view on this:
+ *
+ * ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers
+ *
+ * port numbers are divided into three ranges:
+ *
+ * 0 - 1023 Well Known Ports
+ * 1024 - 49151 Registered Ports
+ * 49152 - 65535 Dynamic and/or Private Ports
+ *
+ */
+
+#define __DARWIN_IPPORT_RESERVED 1024
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * Ports < IPPORT_RESERVED are reserved for
+ * privileged processes (e.g. root). (IP_PORTRANGE_LOW)
+ * Ports > IPPORT_USERRESERVED are reserved
+ * for servers, not necessarily privileged. (IP_PORTRANGE_DEFAULT)
+ */
+#ifndef IPPORT_RESERVED
+#define IPPORT_RESERVED __DARWIN_IPPORT_RESERVED
+#endif
+#define IPPORT_USERRESERVED 5000
+
+/*
+ * Default local port range to use by setting IP_PORTRANGE_HIGH
+ */
+#define IPPORT_HIFIRSTAUTO 49152
+#define IPPORT_HILASTAUTO 65535
+
+/*
+ * Scanning for a free reserved port return a value below IPPORT_RESERVED,
+ * but higher than IPPORT_RESERVEDSTART. Traditionally the start value was
+ * 512, but that conflicts with some well-known-services that firewalls may
+ * have a fit if we use.
+ */
+#define IPPORT_RESERVEDSTART 600
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * Internet address (a structure for historical reasons)
+ */
+struct in_addr {
+ in_addr_t s_addr;
+};
+
+/*
+ * Definitions of bits in internet address integers.
+ * On subnets, the decomposition of addresses to host and net parts
+ * is done according to subnet mask, not the masks here.
+ */
+#define INADDR_ANY (u_int32_t)0x00000000
+#define INADDR_BROADCAST (u_int32_t)0xffffffff /* must be masked */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IN_CLASSA(i) (((u_int32_t)(i) & 0x80000000) == 0)
+#define IN_CLASSA_NET 0xff000000
+#define IN_CLASSA_NSHIFT 24
+#define IN_CLASSA_HOST 0x00ffffff
+#define IN_CLASSA_MAX 128
+
+#define IN_CLASSB(i) (((u_int32_t)(i) & 0xc0000000) == 0x80000000)
+#define IN_CLASSB_NET 0xffff0000
+#define IN_CLASSB_NSHIFT 16
+#define IN_CLASSB_HOST 0x0000ffff
+#define IN_CLASSB_MAX 65536
+
+#define IN_CLASSC(i) (((u_int32_t)(i) & 0xe0000000) == 0xc0000000)
+#define IN_CLASSC_NET 0xffffff00
+#define IN_CLASSC_NSHIFT 8
+#define IN_CLASSC_HOST 0x000000ff
+
+#define IN_CLASSD(i) (((u_int32_t)(i) & 0xf0000000) == 0xe0000000)
+#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */
+#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */
+#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */
+#define IN_MULTICAST(i) IN_CLASSD(i)
+
+#define IN_EXPERIMENTAL(i) (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
+#define IN_BADCLASS(i) (((u_int32_t)(i) & 0xf0000000) == 0xf0000000)
+
+#define INADDR_LOOPBACK (u_int32_t)0x7f000001
+
+#define INADDR_NONE 0xffffffff /* -1 return */
+
+#define INADDR_UNSPEC_GROUP (u_int32_t)0xe0000000 /* 224.0.0.0 */
+#define INADDR_ALLHOSTS_GROUP (u_int32_t)0xe0000001 /* 224.0.0.1 */
+#define INADDR_ALLRTRS_GROUP (u_int32_t)0xe0000002 /* 224.0.0.2 */
+#define INADDR_ALLRPTS_GROUP (u_int32_t)0xe0000016 /* 224.0.0.22, IGMPv3 */
+#define INADDR_CARP_GROUP (u_int32_t)0xe0000012 /* 224.0.0.18 */
+#define INADDR_PFSYNC_GROUP (u_int32_t)0xe00000f0 /* 224.0.0.240 */
+#define INADDR_ALLMDNS_GROUP (u_int32_t)0xe00000fb /* 224.0.0.251 */
+#define INADDR_MAX_LOCAL_GROUP (u_int32_t)0xe00000ff /* 224.0.0.255 */
+
+#ifdef __APPLE__
+#define IN_LINKLOCALNETNUM (u_int32_t)0xA9FE0000 /* 169.254.0.0 */
+#define IN_LINKLOCAL(i) (((u_int32_t)(i) & IN_CLASSB_NET) == IN_LINKLOCALNETNUM)
+#define IN_LOOPBACK(i) (((u_int32_t)(i) & 0xff000000) == 0x7f000000)
+#define IN_ZERONET(i) (((u_int32_t)(i) & 0xff000000) == 0)
+
+#define IN_PRIVATE(i) ((((u_int32_t)(i) & 0xff000000) == 0x0a000000) || \
+ (((u_int32_t)(i) & 0xfff00000) == 0xac100000) || \
+ (((u_int32_t)(i) & 0xffff0000) == 0xc0a80000))
+
+
+#define IN_LOCAL_GROUP(i) (((u_int32_t)(i) & 0xffffff00) == 0xe0000000)
+
+#define IN_ANY_LOCAL(i) (IN_LINKLOCAL(i) || IN_LOCAL_GROUP(i))
+#endif /* __APPLE__ */
+
+#define IN_LOOPBACKNET 127 /* official! */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * Socket address, internet style.
+ */
+struct sockaddr_in {
+ __uint8_t sin_len;
+ sa_family_t sin_family;
+ in_port_t sin_port;
+ struct in_addr sin_addr;
+ char sin_zero[8];
+};
+
+#define IN_ARE_ADDR_EQUAL(a, b) \
+ (bcmp(&(a)->s_addr, &(b)->s_addr, \
+ sizeof (struct in_addr)) == 0)
+
+
+#define INET_ADDRSTRLEN 16
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * Structure used to describe IP options.
+ * Used to store options internally, to pass them to a process,
+ * or to restore options retrieved earlier.
+ * The ip_dst is used for the first-hop gateway when using a source route
+ * (this gets put into the header proper).
+ */
+struct ip_opts {
+ struct in_addr ip_dst; /* first hop, 0 w/o src rt */
+ char ip_opts[40]; /* actually variable in size */
+};
+
+/*
+ * Options for use with [gs]etsockopt at the IP level.
+ * First word of comment is data type; bool is stored in int.
+ */
+#define IP_OPTIONS 1 /* buf/ip_opts; set/get IP options */
+#define IP_HDRINCL 2 /* int; header is included with data */
+#define IP_TOS 3 /* int; IP type of service and preced. */
+#define IP_TTL 4 /* int; IP time to live */
+#define IP_RECVOPTS 5 /* bool; receive all IP opts w/dgram */
+#define IP_RECVRETOPTS 6 /* bool; receive IP opts for response */
+#define IP_RECVDSTADDR 7 /* bool; receive IP dst addr w/dgram */
+#define IP_RETOPTS 8 /* ip_opts; set/get IP options */
+#define IP_MULTICAST_IF 9 /* u_char; set/get IP multicast i/f */
+#define IP_MULTICAST_TTL 10 /* u_char; set/get IP multicast ttl */
+#define IP_MULTICAST_LOOP 11 /* u_char; set/get IP multicast loopback */
+#define IP_ADD_MEMBERSHIP 12 /* ip_mreq; add an IP group membership */
+#define IP_DROP_MEMBERSHIP 13 /* ip_mreq; drop an IP group membership */
+#define IP_MULTICAST_VIF 14 /* set/get IP mcast virt. iface */
+#define IP_RSVP_ON 15 /* enable RSVP in kernel */
+#define IP_RSVP_OFF 16 /* disable RSVP in kernel */
+#define IP_RSVP_VIF_ON 17 /* set RSVP per-vif socket */
+#define IP_RSVP_VIF_OFF 18 /* unset RSVP per-vif socket */
+#define IP_PORTRANGE 19 /* int; range to choose for unspec port */
+#define IP_RECVIF 20 /* bool; receive reception if w/dgram */
+/* for IPSEC */
+#define IP_IPSEC_POLICY 21 /* int; set/get security policy */
+#define IP_FAITH 22 /* deprecated */
+#ifdef __APPLE__
+#define IP_STRIPHDR 23 /* bool: drop receive of raw IP header */
+#endif
+#define IP_RECVTTL 24 /* bool; receive reception TTL w/dgram */
+#define IP_BOUND_IF 25 /* int; set/get bound interface */
+#define IP_PKTINFO 26 /* get pktinfo on recv socket, set src on sent dgram */
+#define IP_RECVPKTINFO IP_PKTINFO /* receive pktinfo w/dgram */
+#define IP_RECVTOS 27 /* bool; receive IP TOS w/dgram */
+#define IP_DONTFRAG 28 /* don't fragment packet */
+
+#define IP_FW_ADD 40 /* add a firewall rule to chain */
+#define IP_FW_DEL 41 /* delete a firewall rule from chain */
+#define IP_FW_FLUSH 42 /* flush firewall rule chain */
+#define IP_FW_ZERO 43 /* clear single/all firewall counter(s) */
+#define IP_FW_GET 44 /* get entire firewall rule chain */
+#define IP_FW_RESETLOG 45 /* reset logging counters */
+
+/* These older firewall socket option codes are maintained for backward compatibility. */
+#define IP_OLD_FW_ADD 50 /* add a firewall rule to chain */
+#define IP_OLD_FW_DEL 51 /* delete a firewall rule from chain */
+#define IP_OLD_FW_FLUSH 52 /* flush firewall rule chain */
+#define IP_OLD_FW_ZERO 53 /* clear single/all firewall counter(s) */
+#define IP_OLD_FW_GET 54 /* get entire firewall rule chain */
+#define IP_NAT__XXX 55 /* set/get NAT opts XXX Deprecated, do not use */
+#define IP_OLD_FW_RESETLOG 56 /* reset logging counters */
+
+#define IP_DUMMYNET_CONFIGURE 60 /* add/configure a dummynet pipe */
+#define IP_DUMMYNET_DEL 61 /* delete a dummynet pipe from chain */
+#define IP_DUMMYNET_FLUSH 62 /* flush dummynet */
+#define IP_DUMMYNET_GET 64 /* get entire dummynet pipes */
+
+#define IP_TRAFFIC_MGT_BACKGROUND 65 /* int*; get background IO flags; set background IO */
+#define IP_MULTICAST_IFINDEX 66 /* int*; set/get IP multicast i/f index */
+
+/* IPv4 Source Filter Multicast API [RFC3678] */
+#define IP_ADD_SOURCE_MEMBERSHIP 70 /* join a source-specific group */
+#define IP_DROP_SOURCE_MEMBERSHIP 71 /* drop a single source */
+#define IP_BLOCK_SOURCE 72 /* block a source */
+#define IP_UNBLOCK_SOURCE 73 /* unblock a source */
+
+/* The following option is private; do not use it from user applications. */
+#define IP_MSFILTER 74 /* set/get filter list */
+
+/* Protocol Independent Multicast API [RFC3678] */
+#define MCAST_JOIN_GROUP 80 /* join an any-source group */
+#define MCAST_LEAVE_GROUP 81 /* leave all sources for group */
+#define MCAST_JOIN_SOURCE_GROUP 82 /* join a source-specific group */
+#define MCAST_LEAVE_SOURCE_GROUP 83 /* leave a single source */
+#define MCAST_BLOCK_SOURCE 84 /* block a source */
+#define MCAST_UNBLOCK_SOURCE 85 /* unblock a source */
+
+
+/*
+ * Defaults and limits for options
+ */
+#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */
+#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
+
+/*
+ * The imo_membership vector for each socket is now dynamically allocated at
+ * run-time, bounded by USHRT_MAX, and is reallocated when needed, sized
+ * according to a power-of-two increment.
+ */
+#define IP_MIN_MEMBERSHIPS 31
+#define IP_MAX_MEMBERSHIPS 4095
+
+/*
+ * Default resource limits for IPv4 multicast source filtering.
+ * These may be modified by sysctl.
+ */
+#define IP_MAX_GROUP_SRC_FILTER 512 /* sources per group */
+#define IP_MAX_SOCK_SRC_FILTER 128 /* sources per socket/group */
+#define IP_MAX_SOCK_MUTE_FILTER 128 /* XXX no longer used */
+
+/*
+ * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
+ */
+struct ip_mreq {
+ struct in_addr imr_multiaddr; /* IP multicast address of group */
+ struct in_addr imr_interface; /* local IP address of interface */
+};
+
+/*
+ * Modified argument structure for IP_MULTICAST_IF, obtained from Linux.
+ * This is used to specify an interface index for multicast sends, as
+ * the IPv4 legacy APIs do not support this (unless IP_SENDIF is available).
+ */
+struct ip_mreqn {
+ struct in_addr imr_multiaddr; /* IP multicast address of group */
+ struct in_addr imr_address; /* local IP address of interface */
+ int imr_ifindex; /* Interface index; cast to uint32_t */
+};
+
+#pragma pack(4)
+/*
+ * Argument structure for IPv4 Multicast Source Filter APIs. [RFC3678]
+ */
+struct ip_mreq_source {
+ struct in_addr imr_multiaddr; /* IP multicast address of group */
+ struct in_addr imr_sourceaddr; /* IP address of source */
+ struct in_addr imr_interface; /* local IP address of interface */
+};
+
+/*
+ * Argument structures for Protocol-Independent Multicast Source
+ * Filter APIs. [RFC3678]
+ */
+struct group_req {
+ uint32_t gr_interface; /* interface index */
+ struct sockaddr_storage gr_group; /* group address */
+};
+
+struct group_source_req {
+ uint32_t gsr_interface; /* interface index */
+ struct sockaddr_storage gsr_group; /* group address */
+ struct sockaddr_storage gsr_source; /* source address */
+};
+
+#ifndef __MSFILTERREQ_DEFINED
+#define __MSFILTERREQ_DEFINED
+/*
+ * The following structure is private; do not use it from user applications.
+ * It is used to communicate IP_MSFILTER/IPV6_MSFILTER information between
+ * the RFC 3678 libc functions and the kernel.
+ */
+struct __msfilterreq {
+ uint32_t msfr_ifindex; /* interface index */
+ uint32_t msfr_fmode; /* filter mode for group */
+ uint32_t msfr_nsrcs; /* # of sources in msfr_srcs */
+ uint32_t __msfr_align;
+ struct sockaddr_storage msfr_group; /* group address */
+ struct sockaddr_storage *msfr_srcs;
+};
+
+#endif /* __MSFILTERREQ_DEFINED */
+
+#pragma pack()
+struct sockaddr;
+
+/*
+ * Advanced (Full-state) APIs [RFC3678]
+ * The RFC specifies uint_t for the 6th argument to [sg]etsourcefilter().
+ * We use uint32_t here to be consistent.
+ */
+int setipv4sourcefilter(int, struct in_addr, struct in_addr, uint32_t,
+ uint32_t, struct in_addr *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+int getipv4sourcefilter(int, struct in_addr, struct in_addr, uint32_t *,
+ uint32_t *, struct in_addr *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+int setsourcefilter(int, uint32_t, struct sockaddr *, socklen_t,
+ uint32_t, uint32_t, struct sockaddr_storage *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+int getsourcefilter(int, uint32_t, struct sockaddr *, socklen_t,
+ uint32_t *, uint32_t *, struct sockaddr_storage *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+
+/*
+ * Filter modes; also used to represent per-socket filter mode internally.
+ */
+#define MCAST_UNDEFINED 0 /* fmode: not yet defined */
+#define MCAST_INCLUDE 1 /* fmode: include these source(s) */
+#define MCAST_EXCLUDE 2 /* fmode: exclude these source(s) */
+
+/*
+ * Argument for IP_PORTRANGE:
+ * - which range to search when port is unspecified at bind() or connect()
+ */
+#define IP_PORTRANGE_DEFAULT 0 /* default range */
+#define IP_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */
+#define IP_PORTRANGE_LOW 2 /* "low" - vouchsafe security */
+
+
+/*
+ * IP_PKTINFO: Packet information (equivalent to RFC2292 sec 5 for IPv4)
+ * This structure is used for
+ *
+ * 1) Receiving ancilliary data about the datagram if IP_PKTINFO sockopt is
+ * set on the socket. In this case ipi_ifindex will contain the interface
+ * index the datagram was received on, ipi_addr is the IP address the
+ * datagram was received to.
+ *
+ * 2) Sending a datagram using a specific interface or IP source address.
+ * if ipi_ifindex is set to non-zero when in_pktinfo is passed as
+ * ancilliary data of type IP_PKTINFO, this will be used as the source
+ * interface to send the datagram from. If ipi_ifindex is null, ip_spec_dst
+ * will be used for the source address.
+ *
+ * Note: if IP_BOUND_IF is set on the socket, ipi_ifindex in the ancillary
+ * IP_PKTINFO option silently overrides the bound interface when it is
+ * specified during send time.
+ */
+struct in_pktinfo {
+ unsigned int ipi_ifindex; /* send/recv interface index */
+ struct in_addr ipi_spec_dst; /* Local address */
+ struct in_addr ipi_addr; /* IP Header dst address */
+};
+
+/*
+ * Definitions for inet sysctl operations.
+ *
+ * Third level is protocol number.
+ * Fourth level is desired variable within that protocol.
+ */
+#define IPPROTO_MAXID (IPPROTO_AH + 1) /* don't list to IPPROTO_MAX */
+
+
+/*
+ * Names for IP sysctl objects
+ */
+#define IPCTL_FORWARDING 1 /* act as router */
+#define IPCTL_SENDREDIRECTS 2 /* may send redirects when forwarding */
+#define IPCTL_DEFTTL 3 /* default TTL */
+#ifdef notyet
+#define IPCTL_DEFMTU 4 /* default MTU */
+#endif
+#define IPCTL_RTEXPIRE 5 /* cloned route expiration time */
+#define IPCTL_RTMINEXPIRE 6 /* min value for expiration time */
+#define IPCTL_RTMAXCACHE 7 /* trigger level for dynamic expire */
+#define IPCTL_SOURCEROUTE 8 /* may perform source routes */
+#define IPCTL_DIRECTEDBROADCAST 9 /* may re-broadcast received packets */
+#define IPCTL_INTRQMAXLEN 10 /* max length of netisr queue */
+#define IPCTL_INTRQDROPS 11 /* number of netisr q drops */
+#define IPCTL_STATS 12 /* ipstat structure */
+#define IPCTL_ACCEPTSOURCEROUTE 13 /* may accept source routed packets */
+#define IPCTL_FASTFORWARDING 14 /* use fast IP forwarding code */
+#define IPCTL_KEEPFAITH 15 /* deprecated */
+#define IPCTL_GIF_TTL 16 /* default TTL for gif encap packet */
+#define IPCTL_MAXID 17
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/* INET6 stuff */
+#define __KAME_NETINET_IN_H_INCLUDED_
+#include <netinet6/in6.h>
+#undef __KAME_NETINET_IN_H_INCLUDED_
+
+
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+__BEGIN_DECLS
+int bindresvport(int, struct sockaddr_in *);
+struct sockaddr;
+int bindresvport_sa(int, struct sockaddr *);
+__END_DECLS
+#endif
+#endif /* _NETINET_IN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/netinet/tcp.h b/lib/libc/include/aarch64-macos-gnu/netinet/tcp.h
new file mode 100644
index 0000000000..1d1030c509
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/netinet/tcp.h
@@ -0,0 +1,285 @@
+/*
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright (c) 1982, 1986, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)tcp.h 8.1 (Berkeley) 6/10/93
+ * $FreeBSD: src/sys/netinet/tcp.h,v 1.13.2.3 2001/03/01 22:08:42 jlemon Exp $
+ */
+
+#ifndef _NETINET_TCP_H_
+#define _NETINET_TCP_H_
+#include <sys/appleapiopts.h>
+
+#include <machine/endian.h>
+#include <machine/types.h> /* __uint32_t */
+
+#include <sys/types.h>
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+typedef __uint32_t tcp_seq;
+typedef __uint32_t tcp_cc; /* connection count per rfc1644 */
+
+#define tcp6_seq tcp_seq /* for KAME src sync over BSD*'s */
+#define tcp6hdr tcphdr /* for KAME src sync over BSD*'s */
+
+/*
+ * TCP header.
+ * Per RFC 793, September, 1981.
+ */
+struct tcphdr {
+ unsigned short th_sport; /* source port */
+ unsigned short th_dport; /* destination port */
+ tcp_seq th_seq; /* sequence number */
+ tcp_seq th_ack; /* acknowledgement number */
+#if __DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN
+ unsigned int th_x2:4, /* (unused) */
+ th_off:4; /* data offset */
+#endif
+#if __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN
+ unsigned int th_off:4, /* data offset */
+ th_x2:4; /* (unused) */
+#endif
+ unsigned char th_flags;
+#define TH_FIN 0x01
+#define TH_SYN 0x02
+#define TH_RST 0x04
+#define TH_PUSH 0x08
+#define TH_ACK 0x10
+#define TH_URG 0x20
+#define TH_ECE 0x40
+#define TH_CWR 0x80
+#define TH_FLAGS (TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)
+#define TH_ACCEPT (TH_FIN|TH_SYN|TH_RST|TH_ACK)
+
+ unsigned short th_win; /* window */
+ unsigned short th_sum; /* checksum */
+ unsigned short th_urp; /* urgent pointer */
+};
+
+#define TCPOPT_EOL 0
+#define TCPOPT_NOP 1
+#define TCPOPT_MAXSEG 2
+#define TCPOLEN_MAXSEG 4
+#define TCPOPT_WINDOW 3
+#define TCPOLEN_WINDOW 3
+#define TCPOPT_SACK_PERMITTED 4 /* Experimental */
+#define TCPOLEN_SACK_PERMITTED 2
+#define TCPOPT_SACK 5 /* Experimental */
+#define TCPOLEN_SACK 8 /* len of sack block */
+#define TCPOPT_TIMESTAMP 8
+#define TCPOLEN_TIMESTAMP 10
+#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */
+#define TCPOPT_TSTAMP_HDR \
+ (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
+
+#define MAX_TCPOPTLEN 40 /* Absolute maximum TCP options len */
+
+#define TCPOPT_CC 11 /* CC options: RFC-1644 */
+#define TCPOPT_CCNEW 12
+#define TCPOPT_CCECHO 13
+#define TCPOLEN_CC 6
+#define TCPOLEN_CC_APPA (TCPOLEN_CC+2)
+#define TCPOPT_CC_HDR(ccopt) \
+ (TCPOPT_NOP<<24|TCPOPT_NOP<<16|(ccopt)<<8|TCPOLEN_CC)
+#define TCPOPT_SIGNATURE 19 /* Keyed MD5: RFC 2385 */
+#define TCPOLEN_SIGNATURE 18
+#if MPTCP
+#define TCPOPT_MULTIPATH 30
+#endif
+
+#define TCPOPT_FASTOPEN 34
+#define TCPOLEN_FASTOPEN_REQ 2
+
+/* Option definitions */
+#define TCPOPT_SACK_PERMIT_HDR \
+(TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_SACK_PERMITTED<<8|TCPOLEN_SACK_PERMITTED)
+#define TCPOPT_SACK_HDR (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_SACK<<8)
+/* Miscellaneous constants */
+#define MAX_SACK_BLKS 6 /* Max # SACK blocks stored at sender side */
+
+/*
+ * A SACK option that specifies n blocks will have a length of (8*n + 2)
+ * bytes, so the 40 bytes available for TCP options can specify a
+ * maximum of 4 blocks.
+ */
+
+#define TCP_MAX_SACK 4 /* MAX # SACKs sent in any segment */
+
+
+/*
+ * Default maximum segment size for TCP.
+ * With an IP MTU of 576, this is 536,
+ * but 512 is probably more convenient.
+ * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
+ */
+#define TCP_MSS 512
+
+/*
+ * TCP_MINMSS is defined to be 216 which is fine for the smallest
+ * link MTU (256 bytes, SLIP interface) in the Internet.
+ * However it is very unlikely to come across such low MTU interfaces
+ * these days (anno dato 2004).
+ * Probably it can be set to 512 without ill effects. But we play safe.
+ * See tcp_subr.c tcp_minmss SYSCTL declaration for more comments.
+ * Setting this to "0" disables the minmss check.
+ */
+#define TCP_MINMSS 216
+
+/*
+ * Default maximum segment size for TCP6.
+ * With an IP6 MSS of 1280, this is 1220,
+ * but 1024 is probably more convenient. (xxx kazu in doubt)
+ * This should be defined as MIN(1024, IP6_MSS - sizeof (struct tcpip6hdr))
+ */
+#define TCP6_MSS 1024
+
+#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */
+#define TTCP_CLIENT_SND_WND 4096 /* dflt send window for T/TCP client */
+
+#define TCP_MAX_WINSHIFT 14 /* maximum window shift */
+
+#define TCP_MAXHLEN (0xf<<2) /* max length of header in bytes */
+#define TCP_MAXOLEN (TCP_MAXHLEN - sizeof(struct tcphdr))
+/* max space left for options */
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+/*
+ * User-settable options (used with setsockopt).
+ */
+#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define TCP_MAXSEG 0x02 /* set maximum segment size */
+#define TCP_NOPUSH 0x04 /* don't push last block of write */
+#define TCP_NOOPT 0x08 /* don't use TCP options */
+#define TCP_KEEPALIVE 0x10 /* idle time used when SO_KEEPALIVE is enabled */
+#define TCP_CONNECTIONTIMEOUT 0x20 /* connection timeout */
+#define PERSIST_TIMEOUT 0x40 /* time after which a connection in
+ * persist timeout will terminate.
+ * see draft-ananth-tcpm-persist-02.txt
+ */
+#define TCP_RXT_CONNDROPTIME 0x80 /* time after which tcp retransmissions will be
+ * stopped and the connection will be dropped
+ */
+#define TCP_RXT_FINDROP 0x100 /* when this option is set, drop a connection
+ * after retransmitting the FIN 3 times. It will
+ * prevent holding too many mbufs in socket
+ * buffer queues.
+ */
+#define TCP_KEEPINTVL 0x101 /* interval between keepalives */
+#define TCP_KEEPCNT 0x102 /* number of keepalives before close */
+#define TCP_SENDMOREACKS 0x103 /* always ack every other packet */
+#define TCP_ENABLE_ECN 0x104 /* Enable ECN on a connection */
+#define TCP_FASTOPEN 0x105 /* Enable/Disable TCP Fastopen on this socket */
+#define TCP_CONNECTION_INFO 0x106 /* State of TCP connection */
+
+
+
+#define TCP_NOTSENT_LOWAT 0x201 /* Low water mark for TCP unsent data */
+
+
+struct tcp_connection_info {
+ u_int8_t tcpi_state; /* connection state */
+ u_int8_t tcpi_snd_wscale; /* Window scale for send window */
+ u_int8_t tcpi_rcv_wscale; /* Window scale for receive window */
+ u_int8_t __pad1;
+ u_int32_t tcpi_options; /* TCP options supported */
+#define TCPCI_OPT_TIMESTAMPS 0x00000001 /* Timestamps enabled */
+#define TCPCI_OPT_SACK 0x00000002 /* SACK enabled */
+#define TCPCI_OPT_WSCALE 0x00000004 /* Window scaling enabled */
+#define TCPCI_OPT_ECN 0x00000008 /* ECN enabled */
+ u_int32_t tcpi_flags; /* flags */
+#define TCPCI_FLAG_LOSSRECOVERY 0x00000001
+#define TCPCI_FLAG_REORDERING_DETECTED 0x00000002
+ u_int32_t tcpi_rto; /* retransmit timeout in ms */
+ u_int32_t tcpi_maxseg; /* maximum segment size supported */
+ u_int32_t tcpi_snd_ssthresh; /* slow start threshold in bytes */
+ u_int32_t tcpi_snd_cwnd; /* send congestion window in bytes */
+ u_int32_t tcpi_snd_wnd; /* send widnow in bytes */
+ u_int32_t tcpi_snd_sbbytes; /* bytes in send socket buffer, including in-flight data */
+ u_int32_t tcpi_rcv_wnd; /* receive window in bytes*/
+ u_int32_t tcpi_rttcur; /* most recent RTT in ms */
+ u_int32_t tcpi_srtt; /* average RTT in ms */
+ u_int32_t tcpi_rttvar; /* RTT variance */
+ u_int32_t
+ tcpi_tfo_cookie_req:1, /* Cookie requested? */
+ tcpi_tfo_cookie_rcv:1, /* Cookie received? */
+ tcpi_tfo_syn_loss:1, /* Fallback to reg. TCP after SYN-loss */
+ tcpi_tfo_syn_data_sent:1, /* SYN+data has been sent out */
+ tcpi_tfo_syn_data_acked:1, /* SYN+data has been fully acknowledged */
+ tcpi_tfo_syn_data_rcv:1, /* Server received SYN+data with a valid cookie */
+ tcpi_tfo_cookie_req_rcv:1, /* Server received cookie-request */
+ tcpi_tfo_cookie_sent:1, /* Server announced cookie */
+ tcpi_tfo_cookie_invalid:1, /* Server received an invalid cookie */
+ tcpi_tfo_cookie_wrong:1, /* Our sent cookie was wrong */
+ tcpi_tfo_no_cookie_rcv:1, /* We did not receive a cookie upon our request */
+ tcpi_tfo_heuristics_disable:1, /* TFO-heuristics disabled it */
+ tcpi_tfo_send_blackhole:1, /* A sending-blackhole got detected */
+ tcpi_tfo_recv_blackhole:1, /* A receiver-blackhole got detected */
+ tcpi_tfo_onebyte_proxy:1, /* A proxy acknowledges all but one byte of the SYN */
+ __pad2:17;
+ u_int64_t tcpi_txpackets __attribute__((aligned(8)));
+ u_int64_t tcpi_txbytes __attribute__((aligned(8)));
+ u_int64_t tcpi_txretransmitbytes __attribute__((aligned(8)));
+ u_int64_t tcpi_rxpackets __attribute__((aligned(8)));
+ u_int64_t tcpi_rxbytes __attribute__((aligned(8)));
+ u_int64_t tcpi_rxoutoforderbytes __attribute__((aligned(8)));
+ u_int64_t tcpi_txretransmitpackets __attribute__((aligned(8)));
+};
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/netinet6/in6.h b/lib/libc/include/aarch64-macos-gnu/netinet6/in6.h
new file mode 100644
index 0000000000..b912e8dbe7
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/netinet6/in6.h
@@ -0,0 +1,681 @@
+/*
+ * Copyright (c) 2008-2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+/*
+ * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the project nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * Copyright (c) 1982, 1986, 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)in.h 8.3 (Berkeley) 1/3/94
+ */
+
+#ifndef __KAME_NETINET_IN_H_INCLUDED_
+#error "do not include netinet6/in6.h directly, include netinet/in.h. " \
+ " see RFC2553"
+#endif
+
+#ifndef _NETINET6_IN6_H_
+#define _NETINET6_IN6_H_
+#include <sys/appleapiopts.h>
+
+#include <sys/_types.h>
+#include <sys/_types/_sa_family_t.h>
+
+/*
+ * Identification of the network protocol stack
+ * for *BSD-current/release: http://www.kame.net/dev/cvsweb.cgi/kame/COVERAGE
+ * has the table of implementation/integration differences.
+ */
+#define __KAME__
+#define __KAME_VERSION "2009/apple-darwin"
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * Local port number conventions:
+ *
+ * Ports < IPPORT_RESERVED are reserved for privileged processes (e.g. root),
+ * unless a kernel is compiled with IPNOPRIVPORTS defined.
+ *
+ * When a user does a bind(2) or connect(2) with a port number of zero,
+ * a non-conflicting local port address is chosen.
+ *
+ * The default range is IPPORT_ANONMIN to IPPORT_ANONMAX, although
+ * that is settable by sysctl(3); net.inet.ip.anonportmin and
+ * net.inet.ip.anonportmax respectively.
+ *
+ * A user may set the IPPROTO_IP option IP_PORTRANGE to change this
+ * default assignment range.
+ *
+ * The value IP_PORTRANGE_DEFAULT causes the default behavior.
+ *
+ * The value IP_PORTRANGE_HIGH is the same as IP_PORTRANGE_DEFAULT,
+ * and exists only for FreeBSD compatibility purposes.
+ *
+ * The value IP_PORTRANGE_LOW changes the range to the "low" are
+ * that is (by convention) restricted to privileged processes.
+ * This convention is based on "vouchsafe" principles only.
+ * It is only secure if you trust the remote host to restrict these ports.
+ * The range is IPPORT_RESERVEDMIN to IPPORT_RESERVEDMAX.
+ */
+
+#define IPV6PORT_RESERVED 1024
+#define IPV6PORT_ANONMIN 49152
+#define IPV6PORT_ANONMAX 65535
+#define IPV6PORT_RESERVEDMIN 600
+#define IPV6PORT_RESERVEDMAX (IPV6PORT_RESERVED-1)
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+/*
+ * IPv6 address
+ */
+typedef struct in6_addr {
+ union {
+ __uint8_t __u6_addr8[16];
+ __uint16_t __u6_addr16[8];
+ __uint32_t __u6_addr32[4];
+ } __u6_addr; /* 128-bit IP6 address */
+} in6_addr_t;
+
+#define s6_addr __u6_addr.__u6_addr8
+
+#define INET6_ADDRSTRLEN 46
+
+/*
+ * Socket address for IPv6
+ */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define SIN6_LEN
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+struct sockaddr_in6 {
+ __uint8_t sin6_len; /* length of this struct(sa_family_t) */
+ sa_family_t sin6_family; /* AF_INET6 (sa_family_t) */
+ in_port_t sin6_port; /* Transport layer port # (in_port_t) */
+ __uint32_t sin6_flowinfo; /* IP6 flow information */
+ struct in6_addr sin6_addr; /* IP6 address */
+ __uint32_t sin6_scope_id; /* scope zone index */
+};
+
+
+
+
+
+/*
+ * Definition of some useful macros to handle IP6 addresses
+ */
+#define IN6ADDR_ANY_INIT \
+ {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}}
+#define IN6ADDR_LOOPBACK_INIT \
+ {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IN6ADDR_NODELOCAL_ALLNODES_INIT \
+ {{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
+#define IN6ADDR_INTFACELOCAL_ALLNODES_INIT \
+ {{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
+#define IN6ADDR_LINKLOCAL_ALLNODES_INIT \
+ {{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}}
+#define IN6ADDR_LINKLOCAL_ALLROUTERS_INIT \
+ {{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }}}
+#define IN6ADDR_LINKLOCAL_ALLV2ROUTERS_INIT \
+ {{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16 }}}
+#define IN6ADDR_V4MAPPED_INIT \
+ {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
+ 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }}}
+#define IN6ADDR_MULTICAST_PREFIX IN6MASK8
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+extern const struct in6_addr in6addr_any;
+extern const struct in6_addr in6addr_loopback;
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+extern const struct in6_addr in6addr_nodelocal_allnodes;
+extern const struct in6_addr in6addr_linklocal_allnodes;
+extern const struct in6_addr in6addr_linklocal_allrouters;
+extern const struct in6_addr in6addr_linklocal_allv2routers;
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+/*
+ * Equality
+ * NOTE: Some of kernel programming environment (for example, openbsd/sparc)
+ * does not supply memcmp(). For userland memcmp() is preferred as it is
+ * in ANSI standard.
+ */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IN6_ARE_ADDR_EQUAL(a, b) \
+ (memcmp(&(a)->s6_addr[0], &(b)->s6_addr[0], sizeof (struct in6_addr)) \
+ == 0)
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+
+/*
+ * Unspecified
+ */
+#define IN6_IS_ADDR_UNSPECIFIED(a) \
+ ((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[12]) == 0))
+
+/*
+ * Loopback
+ */
+#define IN6_IS_ADDR_LOOPBACK(a) \
+ ((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[12]) == ntohl(1)))
+
+/*
+ * IPv4 compatible
+ */
+#define IN6_IS_ADDR_V4COMPAT(a) \
+ ((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[12]) != 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[12]) != ntohl(1)))
+
+/*
+ * Mapped
+ */
+#define IN6_IS_ADDR_V4MAPPED(a) \
+ ((*(const __uint32_t *)(const void *)(&(a)->s6_addr[0]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[4]) == 0) && \
+ (*(const __uint32_t *)(const void *)(&(a)->s6_addr[8]) == \
+ ntohl(0x0000ffff)))
+
+/*
+ * 6to4
+ */
+#define IN6_IS_ADDR_6TO4(x) (ntohs((x)->s6_addr16[0]) == 0x2002)
+
+/*
+ * KAME Scope Values
+ */
+
+#define __IPV6_ADDR_SCOPE_NODELOCAL 0x01
+#define __IPV6_ADDR_SCOPE_INTFACELOCAL 0x01
+#define __IPV6_ADDR_SCOPE_LINKLOCAL 0x02
+#define __IPV6_ADDR_SCOPE_SITELOCAL 0x05
+#define __IPV6_ADDR_SCOPE_ORGLOCAL 0x08 /* just used in this file */
+#define __IPV6_ADDR_SCOPE_GLOBAL 0x0e
+
+/*
+ * Unicast Scope
+ * Note that we must check topmost 10 bits only, not 16 bits (see RFC2373).
+ */
+#define IN6_IS_ADDR_LINKLOCAL(a) \
+ (((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0x80))
+#define IN6_IS_ADDR_SITELOCAL(a) \
+ (((a)->s6_addr[0] == 0xfe) && (((a)->s6_addr[1] & 0xc0) == 0xc0))
+
+/*
+ * Multicast
+ */
+#define IN6_IS_ADDR_MULTICAST(a) ((a)->s6_addr[0] == 0xff)
+
+#define IPV6_ADDR_MC_FLAGS(a) ((a)->s6_addr[1] & 0xf0)
+
+#define IPV6_ADDR_MC_FLAGS_TRANSIENT 0x10
+#define IPV6_ADDR_MC_FLAGS_PREFIX 0x20
+#define IPV6_ADDR_MC_FLAGS_UNICAST_BASED (IPV6_ADDR_MC_FLAGS_TRANSIENT | IPV6_ADDR_MC_FLAGS_PREFIX)
+
+#define IN6_IS_ADDR_UNICAST_BASED_MULTICAST(a) \
+ (IN6_IS_ADDR_MULTICAST(a) && \
+ (IPV6_ADDR_MC_FLAGS(a) == IPV6_ADDR_MC_FLAGS_UNICAST_BASED))
+
+/*
+ * Unique Local IPv6 Unicast Addresses (per RFC 4193)
+ */
+#define IN6_IS_ADDR_UNIQUE_LOCAL(a) \
+ (((a)->s6_addr[0] == 0xfc) || ((a)->s6_addr[0] == 0xfd))
+
+#define __IPV6_ADDR_MC_SCOPE(a) ((a)->s6_addr[1] & 0x0f)
+
+/*
+ * Multicast Scope
+ */
+#define IN6_IS_ADDR_MC_NODELOCAL(a) \
+ (IN6_IS_ADDR_MULTICAST(a) && \
+ (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_NODELOCAL))
+#define IN6_IS_ADDR_MC_LINKLOCAL(a) \
+ (IN6_IS_ADDR_MULTICAST(a) && \
+ (IPV6_ADDR_MC_FLAGS(a) != IPV6_ADDR_MC_FLAGS_UNICAST_BASED) && \
+ (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_LINKLOCAL))
+#define IN6_IS_ADDR_MC_SITELOCAL(a) \
+ (IN6_IS_ADDR_MULTICAST(a) && \
+ (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_SITELOCAL))
+#define IN6_IS_ADDR_MC_ORGLOCAL(a) \
+ (IN6_IS_ADDR_MULTICAST(a) && \
+ (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_ORGLOCAL))
+#define IN6_IS_ADDR_MC_GLOBAL(a) \
+ (IN6_IS_ADDR_MULTICAST(a) && \
+ (__IPV6_ADDR_MC_SCOPE(a) == __IPV6_ADDR_SCOPE_GLOBAL))
+
+
+
+
+/*
+ * Options for use with [gs]etsockopt at the IPV6 level.
+ * First word of comment is data type; bool is stored in int.
+ */
+/* no hdrincl */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * RFC 3542 define the following socket options in a manner incompatible
+ * with RFC 2292:
+ * IPV6_PKTINFO
+ * IPV6_HOPLIMIT
+ * IPV6_NEXTHOP
+ * IPV6_HOPOPTS
+ * IPV6_DSTOPTS
+ * IPV6_RTHDR
+ *
+ * To use the new IPv6 Sockets options introduced by RFC 3542
+ * the constant __APPLE_USE_RFC_3542 must be defined before
+ * including <netinet/in.h>
+ *
+ * To use the old IPv6 Sockets options from RFC 2292
+ * the constant __APPLE_USE_RFC_2292 must be defined before
+ * including <netinet/in.h>
+ *
+ * Note that eventually RFC 3542 is going to be the
+ * default and RFC 2292 will be obsolete.
+ */
+
+#if defined(__APPLE_USE_RFC_3542) && defined(__APPLE_USE_RFC_2292)
+#error "__APPLE_USE_RFC_3542 and __APPLE_USE_RFC_2292 cannot be both defined"
+#endif
+
+#if 0 /* the followings are relic in IPv4 and hence are disabled */
+#define IPV6_OPTIONS 1 /* buf/ip6_opts; set/get IP6 options */
+#define IPV6_RECVOPTS 5 /* bool; receive all IP6 opts w/dgram */
+#define IPV6_RECVRETOPTS 6 /* bool; receive IP6 opts for response */
+#define IPV6_RECVDSTADDR 7 /* bool; receive IP6 dst addr w/dgram */
+#define IPV6_RETOPTS 8 /* ip6_opts; set/get IP6 options */
+#endif /* 0 */
+#define IPV6_SOCKOPT_RESERVED1 3 /* reserved for future use */
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+#define IPV6_UNICAST_HOPS 4 /* int; IP6 hops */
+#define IPV6_MULTICAST_IF 9 /* u_int; set/get IP6 multicast i/f */
+#define IPV6_MULTICAST_HOPS 10 /* int; set/get IP6 multicast hops */
+#define IPV6_MULTICAST_LOOP 11 /* u_int; set/get IP6 mcast loopback */
+#define IPV6_JOIN_GROUP 12 /* ip6_mreq; join a group membership */
+#define IPV6_LEAVE_GROUP 13 /* ip6_mreq; leave a group membership */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IPV6_PORTRANGE 14 /* int; range to choose for unspec port */
+#define ICMP6_FILTER 18 /* icmp6_filter; icmp6 filter */
+#define IPV6_2292PKTINFO 19 /* bool; send/recv if, src/dst addr */
+#define IPV6_2292HOPLIMIT 20 /* bool; hop limit */
+#define IPV6_2292NEXTHOP 21 /* bool; next hop addr */
+#define IPV6_2292HOPOPTS 22 /* bool; hop-by-hop option */
+#define IPV6_2292DSTOPTS 23 /* bool; destinaion option */
+#define IPV6_2292RTHDR 24 /* ip6_rthdr: routing header */
+
+/* buf/cmsghdr; set/get IPv6 options [obsoleted by RFC3542] */
+#define IPV6_2292PKTOPTIONS 25
+
+#ifdef __APPLE_USE_RFC_2292
+#define IPV6_PKTINFO IPV6_2292PKTINFO
+#define IPV6_HOPLIMIT IPV6_2292HOPLIMIT
+#define IPV6_NEXTHOP IPV6_2292NEXTHOP
+#define IPV6_HOPOPTS IPV6_2292HOPOPTS
+#define IPV6_DSTOPTS IPV6_2292DSTOPTS
+#define IPV6_RTHDR IPV6_2292RTHDR
+#define IPV6_PKTOPTIONS IPV6_2292PKTOPTIONS
+#endif /* __APPLE_USE_RFC_2292 */
+
+#define IPV6_CHECKSUM 26 /* int; checksum offset for raw socket */
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+#define IPV6_V6ONLY 27 /* bool; only bind INET6 at wildcard bind */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define IPV6_BINDV6ONLY IPV6_V6ONLY
+
+
+#if 1 /* IPSEC */
+#define IPV6_IPSEC_POLICY 28 /* struct; get/set security policy */
+#endif /* 1 */
+#define IPV6_FAITH 29 /* deprecated */
+
+#if 1 /* IPV6FIREWALL */
+#define IPV6_FW_ADD 30 /* add a firewall rule to chain */
+#define IPV6_FW_DEL 31 /* delete a firewall rule from chain */
+#define IPV6_FW_FLUSH 32 /* flush firewall rule chain */
+#define IPV6_FW_ZERO 33 /* clear single/all firewall counter(s) */
+#define IPV6_FW_GET 34 /* get entire firewall rule chain */
+#endif /* 1 */
+
+/*
+ * APPLE: NOTE the value of those 2 options is kept unchanged from
+ * previous version of darwin/OS X for binary compatibility reasons
+ * and differ from FreeBSD (values 57 and 61). See below.
+ */
+#define IPV6_RECVTCLASS 35 /* bool; recv traffic class values */
+#define IPV6_TCLASS 36 /* int; send traffic class value */
+
+#ifdef __APPLE_USE_RFC_3542
+/* new socket options introduced in RFC3542 */
+/*
+ * ip6_dest; send dst option before rthdr
+ * APPLE: Value purposely different than FreeBSD (35) to avoid
+ * collision with definition of IPV6_RECVTCLASS in previous
+ * darwin implementations
+ */
+#define IPV6_RTHDRDSTOPTS 57
+
+/*
+ * bool; recv if, dst addr
+ * APPLE: Value purposely different than FreeBSD(36) to avoid
+ * collision with definition of IPV6_TCLASS in previous
+ * darwin implementations
+ */
+#define IPV6_RECVPKTINFO 61
+
+#define IPV6_RECVHOPLIMIT 37 /* bool; recv hop limit */
+#define IPV6_RECVRTHDR 38 /* bool; recv routing header */
+#define IPV6_RECVHOPOPTS 39 /* bool; recv hop-by-hop option */
+#define IPV6_RECVDSTOPTS 40 /* bool; recv dst option after rthdr */
+
+#define IPV6_USE_MIN_MTU 42 /* bool; send packets at the minimum MTU */
+#define IPV6_RECVPATHMTU 43 /* bool; notify an according MTU */
+
+/*
+ * mtuinfo; get the current path MTU (sopt), 4 bytes int;
+ * MTU notification (cmsg)
+ */
+#define IPV6_PATHMTU 44
+
+#if 0 /* obsoleted during 2292bis -> 3542 */
+/* no data; ND reachability confirm (cmsg only/not in of RFC3542) */
+#define IPV6_REACHCONF 45
+#endif
+/* more new socket options introduced in RFC3542 */
+#define IPV6_3542PKTINFO 46 /* in6_pktinfo; send if, src addr */
+#define IPV6_3542HOPLIMIT 47 /* int; send hop limit */
+#define IPV6_3542NEXTHOP 48 /* sockaddr; next hop addr */
+#define IPV6_3542HOPOPTS 49 /* ip6_hbh; send hop-by-hop option */
+#define IPV6_3542DSTOPTS 50 /* ip6_dest; send dst option befor rthdr */
+#define IPV6_3542RTHDR 51 /* ip6_rthdr; send routing header */
+
+#define IPV6_PKTINFO IPV6_3542PKTINFO
+#define IPV6_HOPLIMIT IPV6_3542HOPLIMIT
+#define IPV6_NEXTHOP IPV6_3542NEXTHOP
+#define IPV6_HOPOPTS IPV6_3542HOPOPTS
+#define IPV6_DSTOPTS IPV6_3542DSTOPTS
+#define IPV6_RTHDR IPV6_3542RTHDR
+
+#define IPV6_AUTOFLOWLABEL 59 /* bool; attach flowlabel automagically */
+
+#define IPV6_DONTFRAG 62 /* bool; disable IPv6 fragmentation */
+
+/* int; prefer temporary addresses as the source address. */
+#define IPV6_PREFER_TEMPADDR 63
+
+/*
+ * The following option is private; do not use it from user applications.
+ * It is deliberately defined to the same value as IP_MSFILTER.
+ */
+#define IPV6_MSFILTER 74 /* struct __msfilterreq; */
+#endif /* __APPLE_USE_RFC_3542 */
+
+#define IPV6_BOUND_IF 125 /* int; set/get bound interface */
+
+
+/* to define items, should talk with KAME guys first, for *BSD compatibility */
+
+#define IPV6_RTHDR_LOOSE 0 /* this hop need not be a neighbor. */
+#define IPV6_RTHDR_STRICT 1 /* this hop must be a neighbor. */
+#define IPV6_RTHDR_TYPE_0 0 /* IPv6 routing header type 0 */
+
+/*
+ * Defaults and limits for options
+ */
+#define IPV6_DEFAULT_MULTICAST_HOPS 1 /* normally limit m'casts to 1 hop */
+#define IPV6_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
+
+/*
+ * The im6o_membership vector for each socket is now dynamically allocated at
+ * run-time, bounded by USHRT_MAX, and is reallocated when needed, sized
+ * according to a power-of-two increment.
+ */
+#define IPV6_MIN_MEMBERSHIPS 31
+#define IPV6_MAX_MEMBERSHIPS 4095
+
+/*
+ * Default resource limits for IPv6 multicast source filtering.
+ * These may be modified by sysctl.
+ */
+#define IPV6_MAX_GROUP_SRC_FILTER 512 /* sources per group */
+#define IPV6_MAX_SOCK_SRC_FILTER 128 /* sources per socket/group */
+
+/*
+ * Argument structure for IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP.
+ */
+struct ipv6_mreq {
+ struct in6_addr ipv6mr_multiaddr;
+ unsigned int ipv6mr_interface;
+};
+
+/*
+ * IPV6_2292PKTINFO: Packet information(RFC2292 sec 5)
+ */
+struct in6_pktinfo {
+ struct in6_addr ipi6_addr; /* src/dst IPv6 address */
+ unsigned int ipi6_ifindex; /* send/recv interface index */
+};
+
+/*
+ * Control structure for IPV6_RECVPATHMTU socket option.
+ */
+struct ip6_mtuinfo {
+ struct sockaddr_in6 ip6m_addr; /* or sockaddr_storage? */
+ uint32_t ip6m_mtu;
+};
+
+/*
+ * Argument for IPV6_PORTRANGE:
+ * - which range to search when port is unspecified at bind() or connect()
+ */
+#define IPV6_PORTRANGE_DEFAULT 0 /* default range */
+#define IPV6_PORTRANGE_HIGH 1 /* "high" - request firewall bypass */
+#define IPV6_PORTRANGE_LOW 2 /* "low" - vouchsafe security */
+
+/*
+ * Definitions for inet6 sysctl operations.
+ *
+ * Third level is protocol number.
+ * Fourth level is desired variable within that protocol.
+ */
+#define IPV6PROTO_MAXID (IPPROTO_PIM + 1) /* don't list to IPV6PROTO_MAX */
+
+/*
+ * Names for IP sysctl objects
+ */
+#define IPV6CTL_FORWARDING 1 /* act as router */
+#define IPV6CTL_SENDREDIRECTS 2 /* may send redirects when forwarding */
+#define IPV6CTL_DEFHLIM 3 /* default Hop-Limit */
+#ifdef notyet
+#define IPV6CTL_DEFMTU 4 /* default MTU */
+#endif
+#define IPV6CTL_FORWSRCRT 5 /* forward source-routed dgrams */
+#define IPV6CTL_STATS 6 /* stats */
+#define IPV6CTL_MRTSTATS 7 /* multicast forwarding stats */
+#define IPV6CTL_MRTPROTO 8 /* multicast routing protocol */
+#define IPV6CTL_MAXFRAGPACKETS 9 /* max packets reassembly queue */
+#define IPV6CTL_SOURCECHECK 10 /* verify source route and intf */
+#define IPV6CTL_SOURCECHECK_LOGINT 11 /* minimume logging interval */
+#define IPV6CTL_ACCEPT_RTADV 12
+#define IPV6CTL_KEEPFAITH 13 /* deprecated */
+#define IPV6CTL_LOG_INTERVAL 14
+#define IPV6CTL_HDRNESTLIMIT 15
+#define IPV6CTL_DAD_COUNT 16
+#define IPV6CTL_AUTO_FLOWLABEL 17
+#define IPV6CTL_DEFMCASTHLIM 18
+#define IPV6CTL_GIF_HLIM 19 /* default HLIM for gif encap packet */
+#define IPV6CTL_KAME_VERSION 20
+#define IPV6CTL_USE_DEPRECATED 21 /* use deprec addr (RFC2462 5.5.4) */
+#define IPV6CTL_RR_PRUNE 22 /* walk timer for router renumbering */
+#if 0 /* obsolete */
+#define IPV6CTL_MAPPED_ADDR 23
+#endif
+#define IPV6CTL_V6ONLY 24
+#define IPV6CTL_RTEXPIRE 25 /* cloned route expiration time */
+#define IPV6CTL_RTMINEXPIRE 26 /* min value for expiration time */
+#define IPV6CTL_RTMAXCACHE 27 /* trigger level for dynamic expire */
+
+#define IPV6CTL_USETEMPADDR 32 /* use temporary addresses [RFC 4941] */
+#define IPV6CTL_TEMPPLTIME 33 /* preferred lifetime for tmpaddrs */
+#define IPV6CTL_TEMPVLTIME 34 /* valid lifetime for tmpaddrs */
+#define IPV6CTL_AUTO_LINKLOCAL 35 /* automatic link-local addr assign */
+#define IPV6CTL_RIP6STATS 36 /* raw_ip6 stats */
+#define IPV6CTL_PREFER_TEMPADDR 37 /* prefer temporary addr as src */
+#define IPV6CTL_ADDRCTLPOLICY 38 /* get/set address selection policy */
+#define IPV6CTL_USE_DEFAULTZONE 39 /* use default scope zone */
+
+#define IPV6CTL_MAXFRAGS 41 /* max fragments */
+#define IPV6CTL_MCAST_PMTU 44 /* enable pMTU discovery for mcast? */
+
+#define IPV6CTL_NEIGHBORGCTHRESH 46
+#define IPV6CTL_MAXIFPREFIXES 47
+#define IPV6CTL_MAXIFDEFROUTERS 48
+#define IPV6CTL_MAXDYNROUTES 49
+#define ICMPV6CTL_ND6_ONLINKNSRFC4861 50
+
+/* New entries should be added here from current IPV6CTL_MAXID value. */
+/* to define items, should talk with KAME guys first, for *BSD compatibility */
+#define IPV6CTL_MAXID 51
+
+
+
+
+
+__BEGIN_DECLS
+struct cmsghdr;
+
+extern int inet6_option_space(int);
+extern int inet6_option_init(void *, struct cmsghdr **, int);
+extern int inet6_option_append(struct cmsghdr *, const __uint8_t *, int, int);
+extern __uint8_t *inet6_option_alloc(struct cmsghdr *, int, int, int);
+extern int inet6_option_next(const struct cmsghdr *, __uint8_t **);
+extern int inet6_option_find(const struct cmsghdr *, __uint8_t **, int);
+
+extern size_t inet6_rthdr_space(int, int);
+extern struct cmsghdr *inet6_rthdr_init(void *, int);
+extern int inet6_rthdr_add(struct cmsghdr *, const struct in6_addr *,
+ unsigned int);
+extern int inet6_rthdr_lasthop(struct cmsghdr *, unsigned int);
+#if 0 /* not implemented yet */
+extern int inet6_rthdr_reverse(const struct cmsghdr *, struct cmsghdr *);
+#endif
+extern int inet6_rthdr_segments(const struct cmsghdr *);
+extern struct in6_addr *inet6_rthdr_getaddr(struct cmsghdr *, int);
+extern int inet6_rthdr_getflags(const struct cmsghdr *, int);
+
+extern int inet6_opt_init(void *, socklen_t);
+extern int inet6_opt_append(void *, socklen_t, int, __uint8_t, socklen_t,
+ __uint8_t, void **);
+extern int inet6_opt_finish(void *, socklen_t, int);
+extern int inet6_opt_set_val(void *, int, void *, socklen_t);
+
+extern int inet6_opt_next(void *, socklen_t, int, __uint8_t *, socklen_t *,
+ void **);
+extern int inet6_opt_find(void *, socklen_t, int, __uint8_t, socklen_t *,
+ void **);
+extern int inet6_opt_get_val(void *, int, void *, socklen_t);
+extern socklen_t inet6_rth_space(int, int);
+extern void *inet6_rth_init(void *, socklen_t, int, int);
+extern int inet6_rth_add(void *, const struct in6_addr *);
+extern int inet6_rth_reverse(const void *, void *);
+extern int inet6_rth_segments(const void *);
+extern struct in6_addr *inet6_rth_getaddr(const void *, int);
+
+__END_DECLS
+#endif /* PLATFORM_DriverKit */
+#endif /* !_NETINET6_IN6_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/objc/objc-api.h b/lib/libc/include/aarch64-macos-gnu/objc/objc-api.h
new file mode 100644
index 0000000000..16bac0c0e2
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/objc/objc-api.h
@@ -0,0 +1,286 @@
+/*
+ * Copyright (c) 1999-2006 Apple Inc. All Rights Reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+// Copyright 1988-1996 NeXT Software, Inc.
+
+#ifndef _OBJC_OBJC_API_H_
+#define _OBJC_OBJC_API_H_
+
+#include <Availability.h>
+#include <AvailabilityMacros.h>
+#include <TargetConditionals.h>
+#include <sys/types.h>
+
+#ifndef __has_feature
+# define __has_feature(x) 0
+#endif
+
+#ifndef __has_extension
+# define __has_extension __has_feature
+#endif
+
+#ifndef __has_attribute
+# define __has_attribute(x) 0
+#endif
+
+#if !__has_feature(nullability)
+# ifndef _Nullable
+# define _Nullable
+# endif
+# ifndef _Nonnull
+# define _Nonnull
+# endif
+# ifndef _Null_unspecified
+# define _Null_unspecified
+# endif
+#endif
+
+
+
+/*
+ * OBJC_API_VERSION 0 or undef: Tiger and earlier API only
+ * OBJC_API_VERSION 2: Leopard and later API available
+ */
+#if !defined(OBJC_API_VERSION)
+# if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_5
+# define OBJC_API_VERSION 0
+# else
+# define OBJC_API_VERSION 2
+# endif
+#endif
+
+
+/*
+ * OBJC_NO_GC 1: GC is not supported
+ * OBJC_NO_GC undef: GC is supported. This SDK no longer supports this mode.
+ *
+ * OBJC_NO_GC_API undef: Libraries must export any symbols that
+ * dual-mode code may links to.
+ * OBJC_NO_GC_API 1: Libraries need not export GC-related symbols.
+ */
+#if defined(__OBJC_GC__)
+# error Objective-C garbage collection is not supported.
+#elif TARGET_OS_OSX
+ /* GC is unsupported. GC API symbols are exported. */
+# define OBJC_NO_GC 1
+# undef OBJC_NO_GC_API
+#else
+ /* GC is unsupported. GC API symbols are not exported. */
+# define OBJC_NO_GC 1
+# define OBJC_NO_GC_API 1
+#endif
+
+
+/* NS_ENFORCE_NSOBJECT_DESIGNATED_INITIALIZER == 1
+ * marks -[NSObject init] as a designated initializer. */
+#if !defined(NS_ENFORCE_NSOBJECT_DESIGNATED_INITIALIZER)
+# define NS_ENFORCE_NSOBJECT_DESIGNATED_INITIALIZER 1
+#endif
+
+/* The arm64 ABI requires proper casting to ensure arguments are passed
+ * * correctly. */
+#if defined(__arm64__) && !__swift__
+# undef OBJC_OLD_DISPATCH_PROTOTYPES
+# define OBJC_OLD_DISPATCH_PROTOTYPES 0
+#endif
+
+/* OBJC_OLD_DISPATCH_PROTOTYPES == 0 enforces the rule that the dispatch
+ * functions must be cast to an appropriate function pointer type. */
+#if !defined(OBJC_OLD_DISPATCH_PROTOTYPES)
+# if __swift__
+ // Existing Swift code expects IMP to be Comparable.
+ // Variadic IMP is comparable via OpaquePointer; non-variadic IMP isn't.
+# define OBJC_OLD_DISPATCH_PROTOTYPES 1
+# else
+# define OBJC_OLD_DISPATCH_PROTOTYPES 0
+# endif
+#endif
+
+
+/* OBJC_AVAILABLE: shorthand for all-OS availability */
+
+# if !defined(OBJC_AVAILABLE)
+# define OBJC_AVAILABLE(x, i, t, w, b) \
+ __OSX_AVAILABLE(x) __IOS_AVAILABLE(i) __TVOS_AVAILABLE(t) \
+ __WATCHOS_AVAILABLE(w)
+# endif
+
+
+
+/* OBJC_OSX_DEPRECATED_OTHERS_UNAVAILABLE: Deprecated on OS X,
+ * unavailable everywhere else. */
+
+# if !defined(OBJC_OSX_DEPRECATED_OTHERS_UNAVAILABLE)
+# define OBJC_OSX_DEPRECATED_OTHERS_UNAVAILABLE(_start, _dep, _msg) \
+ __OSX_DEPRECATED(_start, _dep, _msg) \
+ __IOS_UNAVAILABLE __TVOS_UNAVAILABLE \
+ __WATCHOS_UNAVAILABLE
+# endif
+
+
+
+/* OBJC_OSX_AVAILABLE_OTHERS_UNAVAILABLE: Available on OS X,
+ * unavailable everywhere else. */
+
+# if !defined(OBJC_OSX_AVAILABLE_OTHERS_UNAVAILABLE)
+# define OBJC_OSX_AVAILABLE_OTHERS_UNAVAILABLE(vers) \
+ __OSX_AVAILABLE(vers) \
+ __IOS_UNAVAILABLE __TVOS_UNAVAILABLE \
+ __WATCHOS_UNAVAILABLE
+# endif
+
+
+
+/* OBJC_ISA_AVAILABILITY: `isa` will be deprecated or unavailable
+ * in the future */
+#if !defined(OBJC_ISA_AVAILABILITY)
+# if __OBJC2__
+# define OBJC_ISA_AVAILABILITY __attribute__((deprecated))
+# else
+# define OBJC_ISA_AVAILABILITY /* still available */
+# endif
+#endif
+
+
+/* OBJC2_UNAVAILABLE: unavailable in objc 2.0, deprecated in Leopard */
+#if !defined(OBJC2_UNAVAILABLE)
+# if __OBJC2__
+# define OBJC2_UNAVAILABLE UNAVAILABLE_ATTRIBUTE
+# else
+ /* plain C code also falls here, but this is close enough */
+# define OBJC2_UNAVAILABLE \
+ __OSX_DEPRECATED(10.5, 10.5, "not available in __OBJC2__") \
+ __IOS_DEPRECATED(2.0, 2.0, "not available in __OBJC2__") \
+ __TVOS_UNAVAILABLE __WATCHOS_UNAVAILABLE
+# endif
+#endif
+
+/* OBJC_UNAVAILABLE: unavailable, with a message where supported */
+#if !defined(OBJC_UNAVAILABLE)
+# if __has_extension(attribute_unavailable_with_message)
+# define OBJC_UNAVAILABLE(_msg) __attribute__((unavailable(_msg)))
+# else
+# define OBJC_UNAVAILABLE(_msg) __attribute__((unavailable))
+# endif
+#endif
+
+/* OBJC_DEPRECATED: deprecated, with a message where supported */
+#if !defined(OBJC_DEPRECATED)
+# if __has_extension(attribute_deprecated_with_message)
+# define OBJC_DEPRECATED(_msg) __attribute__((deprecated(_msg)))
+# else
+# define OBJC_DEPRECATED(_msg) __attribute__((deprecated))
+# endif
+#endif
+
+/* OBJC_ARC_UNAVAILABLE: unavailable with -fobjc-arc */
+#if !defined(OBJC_ARC_UNAVAILABLE)
+# if __has_feature(objc_arc)
+# define OBJC_ARC_UNAVAILABLE OBJC_UNAVAILABLE("not available in automatic reference counting mode")
+# else
+# define OBJC_ARC_UNAVAILABLE
+# endif
+#endif
+
+/* OBJC_SWIFT_UNAVAILABLE: unavailable in Swift */
+#if !defined(OBJC_SWIFT_UNAVAILABLE)
+# if __has_feature(attribute_availability_swift)
+# define OBJC_SWIFT_UNAVAILABLE(_msg) __attribute__((availability(swift, unavailable, message=_msg)))
+# else
+# define OBJC_SWIFT_UNAVAILABLE(_msg)
+# endif
+#endif
+
+/* OBJC_ARM64_UNAVAILABLE: unavailable on arm64 (i.e. stret dispatch) */
+#if !defined(OBJC_ARM64_UNAVAILABLE)
+# if defined(__arm64__)
+# define OBJC_ARM64_UNAVAILABLE OBJC_UNAVAILABLE("not available in arm64")
+# else
+# define OBJC_ARM64_UNAVAILABLE
+# endif
+#endif
+
+/* OBJC_GC_UNAVAILABLE: unavailable with -fobjc-gc or -fobjc-gc-only */
+#if !defined(OBJC_GC_UNAVAILABLE)
+# define OBJC_GC_UNAVAILABLE
+#endif
+
+#if !defined(OBJC_EXTERN)
+# if defined(__cplusplus)
+# define OBJC_EXTERN extern "C"
+# else
+# define OBJC_EXTERN extern
+# endif
+#endif
+
+#if !defined(OBJC_VISIBLE)
+
+# define OBJC_VISIBLE __attribute__((visibility("default")))
+
+#endif
+
+#if !defined(OBJC_EXPORT)
+# define OBJC_EXPORT OBJC_EXTERN OBJC_VISIBLE
+#endif
+
+#if !defined(OBJC_IMPORT)
+# define OBJC_IMPORT extern
+#endif
+
+#if !defined(OBJC_ROOT_CLASS)
+# if __has_attribute(objc_root_class)
+# define OBJC_ROOT_CLASS __attribute__((objc_root_class))
+# else
+# define OBJC_ROOT_CLASS
+# endif
+#endif
+
+#ifndef __DARWIN_NULL
+#define __DARWIN_NULL NULL
+#endif
+
+#if !defined(OBJC_INLINE)
+# define OBJC_INLINE __inline
+#endif
+
+// Declares an enum type or option bits type as appropriate for each language.
+#if (__cplusplus && __cplusplus >= 201103L && (__has_extension(cxx_strong_enums) || __has_feature(objc_fixed_enum))) || (!__cplusplus && __has_feature(objc_fixed_enum))
+#define OBJC_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
+#if (__cplusplus)
+#define OBJC_OPTIONS(_type, _name) _type _name; enum : _type
+#else
+#define OBJC_OPTIONS(_type, _name) enum _name : _type _name; enum _name : _type
+#endif
+#else
+#define OBJC_ENUM(_type, _name) _type _name; enum
+#define OBJC_OPTIONS(_type, _name) _type _name; enum
+#endif
+
+#if !defined(OBJC_RETURNS_RETAINED)
+# if __OBJC__ && __has_attribute(ns_returns_retained)
+# define OBJC_RETURNS_RETAINED __attribute__((ns_returns_retained))
+# else
+# define OBJC_RETURNS_RETAINED
+# endif
+#endif
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/objc/runtime.h b/lib/libc/include/aarch64-macos-gnu/objc/runtime.h
new file mode 100644
index 0000000000..3e4440f632
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/objc/runtime.h
@@ -0,0 +1,2164 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc. All Rights Reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _OBJC_RUNTIME_H
+#define _OBJC_RUNTIME_H
+
+#include <objc/objc.h>
+#include <stdarg.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <Availability.h>
+#include <TargetConditionals.h>
+
+#if TARGET_OS_MAC
+#include <sys/types.h>
+#endif
+
+
+/* Types */
+
+#if !OBJC_TYPES_DEFINED
+
+/// An opaque type that represents a method in a class definition.
+typedef struct objc_method *Method;
+
+/// An opaque type that represents an instance variable.
+typedef struct objc_ivar *Ivar;
+
+/// An opaque type that represents a category.
+typedef struct objc_category *Category;
+
+/// An opaque type that represents an Objective-C declared property.
+typedef struct objc_property *objc_property_t;
+
+struct objc_class {
+ Class _Nonnull isa OBJC_ISA_AVAILABILITY;
+
+#if !__OBJC2__
+ Class _Nullable super_class OBJC2_UNAVAILABLE;
+ const char * _Nonnull name OBJC2_UNAVAILABLE;
+ long version OBJC2_UNAVAILABLE;
+ long info OBJC2_UNAVAILABLE;
+ long instance_size OBJC2_UNAVAILABLE;
+ struct objc_ivar_list * _Nullable ivars OBJC2_UNAVAILABLE;
+ struct objc_method_list * _Nullable * _Nullable methodLists OBJC2_UNAVAILABLE;
+ struct objc_cache * _Nonnull cache OBJC2_UNAVAILABLE;
+ struct objc_protocol_list * _Nullable protocols OBJC2_UNAVAILABLE;
+#endif
+
+} OBJC2_UNAVAILABLE;
+/* Use `Class` instead of `struct objc_class *` */
+
+#endif
+
+#ifdef __OBJC__
+@class Protocol;
+#else
+typedef struct objc_object Protocol;
+#endif
+
+/// Defines a method
+struct objc_method_description {
+ SEL _Nullable name; /**< The name of the method */
+ char * _Nullable types; /**< The types of the method arguments */
+};
+
+/// Defines a property attribute
+typedef struct {
+ const char * _Nonnull name; /**< The name of the attribute */
+ const char * _Nonnull value; /**< The value of the attribute (usually empty) */
+} objc_property_attribute_t;
+
+
+/* Functions */
+
+/* Working with Instances */
+
+/**
+ * Returns a copy of a given object.
+ *
+ * @param obj An Objective-C object.
+ * @param size The size of the object \e obj.
+ *
+ * @return A copy of \e obj.
+ */
+OBJC_EXPORT id _Nullable object_copy(id _Nullable obj, size_t size)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0)
+ OBJC_ARC_UNAVAILABLE;
+
+/**
+ * Frees the memory occupied by a given object.
+ *
+ * @param obj An Objective-C object.
+ *
+ * @return nil
+ */
+OBJC_EXPORT id _Nullable
+object_dispose(id _Nullable obj)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0)
+ OBJC_ARC_UNAVAILABLE;
+
+/**
+ * Returns the class of an object.
+ *
+ * @param obj The object you want to inspect.
+ *
+ * @return The class object of which \e object is an instance,
+ * or \c Nil if \e object is \c nil.
+ */
+OBJC_EXPORT Class _Nullable
+object_getClass(id _Nullable obj)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the class of an object.
+ *
+ * @param obj The object to modify.
+ * @param cls A class object.
+ *
+ * @return The previous value of \e object's class, or \c Nil if \e object is \c nil.
+ */
+OBJC_EXPORT Class _Nullable
+object_setClass(id _Nullable obj, Class _Nonnull cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+
+/**
+ * Returns whether an object is a class object.
+ *
+ * @param obj An Objective-C object.
+ *
+ * @return true if the object is a class or metaclass, false otherwise.
+ */
+OBJC_EXPORT BOOL
+object_isClass(id _Nullable obj)
+ OBJC_AVAILABLE(10.10, 8.0, 9.0, 1.0, 2.0);
+
+
+/**
+ * Reads the value of an instance variable in an object.
+ *
+ * @param obj The object containing the instance variable whose value you want to read.
+ * @param ivar The Ivar describing the instance variable whose value you want to read.
+ *
+ * @return The value of the instance variable specified by \e ivar, or \c nil if \e object is \c nil.
+ *
+ * @note \c object_getIvar is faster than \c object_getInstanceVariable if the Ivar
+ * for the instance variable is already known.
+ */
+OBJC_EXPORT id _Nullable
+object_getIvar(id _Nullable obj, Ivar _Nonnull ivar)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the value of an instance variable in an object.
+ *
+ * @param obj The object containing the instance variable whose value you want to set.
+ * @param ivar The Ivar describing the instance variable whose value you want to set.
+ * @param value The new value for the instance variable.
+ *
+ * @note Instance variables with known memory management (such as ARC strong and weak)
+ * use that memory management. Instance variables with unknown memory management
+ * are assigned as if they were unsafe_unretained.
+ * @note \c object_setIvar is faster than \c object_setInstanceVariable if the Ivar
+ * for the instance variable is already known.
+ */
+OBJC_EXPORT void
+object_setIvar(id _Nullable obj, Ivar _Nonnull ivar, id _Nullable value)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the value of an instance variable in an object.
+ *
+ * @param obj The object containing the instance variable whose value you want to set.
+ * @param ivar The Ivar describing the instance variable whose value you want to set.
+ * @param value The new value for the instance variable.
+ *
+ * @note Instance variables with known memory management (such as ARC strong and weak)
+ * use that memory management. Instance variables with unknown memory management
+ * are assigned as if they were strong.
+ * @note \c object_setIvar is faster than \c object_setInstanceVariable if the Ivar
+ * for the instance variable is already known.
+ */
+OBJC_EXPORT void
+object_setIvarWithStrongDefault(id _Nullable obj, Ivar _Nonnull ivar,
+ id _Nullable value)
+ OBJC_AVAILABLE(10.12, 10.0, 10.0, 3.0, 2.0);
+
+/**
+ * Changes the value of an instance variable of a class instance.
+ *
+ * @param obj A pointer to an instance of a class. Pass the object containing
+ * the instance variable whose value you wish to modify.
+ * @param name A C string. Pass the name of the instance variable whose value you wish to modify.
+ * @param value The new value for the instance variable.
+ *
+ * @return A pointer to the \c Ivar data structure that defines the type and
+ * name of the instance variable specified by \e name.
+ *
+ * @note Instance variables with known memory management (such as ARC strong and weak)
+ * use that memory management. Instance variables with unknown memory management
+ * are assigned as if they were unsafe_unretained.
+ */
+OBJC_EXPORT Ivar _Nullable
+object_setInstanceVariable(id _Nullable obj, const char * _Nonnull name,
+ void * _Nullable value)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0)
+ OBJC_ARC_UNAVAILABLE;
+
+/**
+ * Changes the value of an instance variable of a class instance.
+ *
+ * @param obj A pointer to an instance of a class. Pass the object containing
+ * the instance variable whose value you wish to modify.
+ * @param name A C string. Pass the name of the instance variable whose value you wish to modify.
+ * @param value The new value for the instance variable.
+ *
+ * @return A pointer to the \c Ivar data structure that defines the type and
+ * name of the instance variable specified by \e name.
+ *
+ * @note Instance variables with known memory management (such as ARC strong and weak)
+ * use that memory management. Instance variables with unknown memory management
+ * are assigned as if they were strong.
+ */
+OBJC_EXPORT Ivar _Nullable
+object_setInstanceVariableWithStrongDefault(id _Nullable obj,
+ const char * _Nonnull name,
+ void * _Nullable value)
+ OBJC_AVAILABLE(10.12, 10.0, 10.0, 3.0, 2.0)
+ OBJC_ARC_UNAVAILABLE;
+
+/**
+ * Obtains the value of an instance variable of a class instance.
+ *
+ * @param obj A pointer to an instance of a class. Pass the object containing
+ * the instance variable whose value you wish to obtain.
+ * @param name A C string. Pass the name of the instance variable whose value you wish to obtain.
+ * @param outValue On return, contains a pointer to the value of the instance variable.
+ *
+ * @return A pointer to the \c Ivar data structure that defines the type and name of
+ * the instance variable specified by \e name.
+ */
+OBJC_EXPORT Ivar _Nullable
+object_getInstanceVariable(id _Nullable obj, const char * _Nonnull name,
+ void * _Nullable * _Nullable outValue)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0)
+ OBJC_ARC_UNAVAILABLE;
+
+
+/* Obtaining Class Definitions */
+
+/**
+ * Returns the class definition of a specified class.
+ *
+ * @param name The name of the class to look up.
+ *
+ * @return The Class object for the named class, or \c nil
+ * if the class is not registered with the Objective-C runtime.
+ *
+ * @note \c objc_getClass is different from \c objc_lookUpClass in that if the class
+ * is not registered, \c objc_getClass calls the class handler callback and then checks
+ * a second time to see whether the class is registered. \c objc_lookUpClass does
+ * not call the class handler callback.
+ *
+ * @warning Earlier implementations of this function (prior to OS X v10.0)
+ * terminate the program if the class does not exist.
+ */
+OBJC_EXPORT Class _Nullable
+objc_getClass(const char * _Nonnull name)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the metaclass definition of a specified class.
+ *
+ * @param name The name of the class to look up.
+ *
+ * @return The \c Class object for the metaclass of the named class, or \c nil if the class
+ * is not registered with the Objective-C runtime.
+ *
+ * @note If the definition for the named class is not registered, this function calls the class handler
+ * callback and then checks a second time to see if the class is registered. However, every class
+ * definition must have a valid metaclass definition, and so the metaclass definition is always returned,
+ * whether it’s valid or not.
+ */
+OBJC_EXPORT Class _Nullable
+objc_getMetaClass(const char * _Nonnull name)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the class definition of a specified class.
+ *
+ * @param name The name of the class to look up.
+ *
+ * @return The Class object for the named class, or \c nil if the class
+ * is not registered with the Objective-C runtime.
+ *
+ * @note \c objc_getClass is different from this function in that if the class is not
+ * registered, \c objc_getClass calls the class handler callback and then checks a second
+ * time to see whether the class is registered. This function does not call the class handler callback.
+ */
+OBJC_EXPORT Class _Nullable
+objc_lookUpClass(const char * _Nonnull name)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the class definition of a specified class.
+ *
+ * @param name The name of the class to look up.
+ *
+ * @return The Class object for the named class.
+ *
+ * @note This function is the same as \c objc_getClass, but kills the process if the class is not found.
+ * @note This function is used by ZeroLink, where failing to find a class would be a compile-time link error without ZeroLink.
+ */
+OBJC_EXPORT Class _Nonnull
+objc_getRequiredClass(const char * _Nonnull name)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Obtains the list of registered class definitions.
+ *
+ * @param buffer An array of \c Class values. On output, each \c Class value points to
+ * one class definition, up to either \e bufferCount or the total number of registered classes,
+ * whichever is less. You can pass \c NULL to obtain the total number of registered class
+ * definitions without actually retrieving any class definitions.
+ * @param bufferCount An integer value. Pass the number of pointers for which you have allocated space
+ * in \e buffer. On return, this function fills in only this number of elements. If this number is less
+ * than the number of registered classes, this function returns an arbitrary subset of the registered classes.
+ *
+ * @return An integer value indicating the total number of registered classes.
+ *
+ * @note The Objective-C runtime library automatically registers all the classes defined in your source code.
+ * You can create class definitions at runtime and register them with the \c objc_addClass function.
+ *
+ * @warning You cannot assume that class objects you get from this function are classes that inherit from \c NSObject,
+ * so you cannot safely call any methods on such classes without detecting that the method is implemented first.
+ */
+OBJC_EXPORT int
+objc_getClassList(Class _Nonnull * _Nullable buffer, int bufferCount)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Creates and returns a list of pointers to all registered class definitions.
+ *
+ * @param outCount An integer pointer used to store the number of classes returned by
+ * this function in the list. It can be \c nil.
+ *
+ * @return A nil terminated array of classes. It must be freed with \c free().
+ *
+ * @see objc_getClassList
+ */
+OBJC_EXPORT Class _Nonnull * _Nullable
+objc_copyClassList(unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.7, 3.1, 9.0, 1.0, 2.0);
+
+
+/* Working with Classes */
+
+/**
+ * Returns the name of a class.
+ *
+ * @param cls A class object.
+ *
+ * @return The name of the class, or the empty string if \e cls is \c Nil.
+ */
+OBJC_EXPORT const char * _Nonnull
+class_getName(Class _Nullable cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a Boolean value that indicates whether a class object is a metaclass.
+ *
+ * @param cls A class object.
+ *
+ * @return \c YES if \e cls is a metaclass, \c NO if \e cls is a non-meta class,
+ * \c NO if \e cls is \c Nil.
+ */
+OBJC_EXPORT BOOL
+class_isMetaClass(Class _Nullable cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the superclass of a class.
+ *
+ * @param cls A class object.
+ *
+ * @return The superclass of the class, or \c Nil if
+ * \e cls is a root class, or \c Nil if \e cls is \c Nil.
+ *
+ * @note You should usually use \c NSObject's \c superclass method instead of this function.
+ */
+OBJC_EXPORT Class _Nullable
+class_getSuperclass(Class _Nullable cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the superclass of a given class.
+ *
+ * @param cls The class whose superclass you want to set.
+ * @param newSuper The new superclass for cls.
+ *
+ * @return The old superclass for cls.
+ *
+ * @warning You should not use this function.
+ */
+OBJC_EXPORT Class _Nonnull
+class_setSuperclass(Class _Nonnull cls, Class _Nonnull newSuper)
+ __OSX_DEPRECATED(10.5, 10.5, "not recommended")
+ __IOS_DEPRECATED(2.0, 2.0, "not recommended")
+ __TVOS_DEPRECATED(9.0, 9.0, "not recommended")
+ __WATCHOS_DEPRECATED(1.0, 1.0, "not recommended")
+
+;
+
+/**
+ * Returns the version number of a class definition.
+ *
+ * @param cls A pointer to a \c Class data structure. Pass
+ * the class definition for which you wish to obtain the version.
+ *
+ * @return An integer indicating the version number of the class definition.
+ *
+ * @see class_setVersion
+ */
+OBJC_EXPORT int
+class_getVersion(Class _Nullable cls)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the version number of a class definition.
+ *
+ * @param cls A pointer to an Class data structure.
+ * Pass the class definition for which you wish to set the version.
+ * @param version An integer. Pass the new version number of the class definition.
+ *
+ * @note You can use the version number of the class definition to provide versioning of the
+ * interface that your class represents to other classes. This is especially useful for object
+ * serialization (that is, archiving of the object in a flattened form), where it is important to
+ * recognize changes to the layout of the instance variables in different class-definition versions.
+ * @note Classes derived from the Foundation framework \c NSObject class can set the class-definition
+ * version number using the \c setVersion: class method, which is implemented using the \c class_setVersion function.
+ */
+OBJC_EXPORT void
+class_setVersion(Class _Nullable cls, int version)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the size of instances of a class.
+ *
+ * @param cls A class object.
+ *
+ * @return The size in bytes of instances of the class \e cls, or \c 0 if \e cls is \c Nil.
+ */
+OBJC_EXPORT size_t
+class_getInstanceSize(Class _Nullable cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the \c Ivar for a specified instance variable of a given class.
+ *
+ * @param cls The class whose instance variable you wish to obtain.
+ * @param name The name of the instance variable definition to obtain.
+ *
+ * @return A pointer to an \c Ivar data structure containing information about
+ * the instance variable specified by \e name.
+ */
+OBJC_EXPORT Ivar _Nullable
+class_getInstanceVariable(Class _Nullable cls, const char * _Nonnull name)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the Ivar for a specified class variable of a given class.
+ *
+ * @param cls The class definition whose class variable you wish to obtain.
+ * @param name The name of the class variable definition to obtain.
+ *
+ * @return A pointer to an \c Ivar data structure containing information about the class variable specified by \e name.
+ */
+OBJC_EXPORT Ivar _Nullable
+class_getClassVariable(Class _Nullable cls, const char * _Nonnull name)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Describes the instance variables declared by a class.
+ *
+ * @param cls The class to inspect.
+ * @param outCount On return, contains the length of the returned array.
+ * If outCount is NULL, the length is not returned.
+ *
+ * @return An array of pointers of type Ivar describing the instance variables declared by the class.
+ * Any instance variables declared by superclasses are not included. The array contains *outCount
+ * pointers followed by a NULL terminator. You must free the array with free().
+ *
+ * If the class declares no instance variables, or cls is Nil, NULL is returned and *outCount is 0.
+ */
+OBJC_EXPORT Ivar _Nonnull * _Nullable
+class_copyIvarList(Class _Nullable cls, unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a specified instance method for a given class.
+ *
+ * @param cls The class you want to inspect.
+ * @param name The selector of the method you want to retrieve.
+ *
+ * @return The method that corresponds to the implementation of the selector specified by
+ * \e name for the class specified by \e cls, or \c NULL if the specified class or its
+ * superclasses do not contain an instance method with the specified selector.
+ *
+ * @note This function searches superclasses for implementations, whereas \c class_copyMethodList does not.
+ */
+OBJC_EXPORT Method _Nullable
+class_getInstanceMethod(Class _Nullable cls, SEL _Nonnull name)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a pointer to the data structure describing a given class method for a given class.
+ *
+ * @param cls A pointer to a class definition. Pass the class that contains the method you want to retrieve.
+ * @param name A pointer of type \c SEL. Pass the selector of the method you want to retrieve.
+ *
+ * @return A pointer to the \c Method data structure that corresponds to the implementation of the
+ * selector specified by aSelector for the class specified by aClass, or NULL if the specified
+ * class or its superclasses do not contain an instance method with the specified selector.
+ *
+ * @note Note that this function searches superclasses for implementations,
+ * whereas \c class_copyMethodList does not.
+ */
+OBJC_EXPORT Method _Nullable
+class_getClassMethod(Class _Nullable cls, SEL _Nonnull name)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the function pointer that would be called if a
+ * particular message were sent to an instance of a class.
+ *
+ * @param cls The class you want to inspect.
+ * @param name A selector.
+ *
+ * @return The function pointer that would be called if \c [object name] were called
+ * with an instance of the class, or \c NULL if \e cls is \c Nil.
+ *
+ * @note \c class_getMethodImplementation may be faster than \c method_getImplementation(class_getInstanceMethod(cls, name)).
+ * @note The function pointer returned may be a function internal to the runtime instead of
+ * an actual method implementation. For example, if instances of the class do not respond to
+ * the selector, the function pointer returned will be part of the runtime's message forwarding machinery.
+ */
+OBJC_EXPORT IMP _Nullable
+class_getMethodImplementation(Class _Nullable cls, SEL _Nonnull name)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the function pointer that would be called if a particular
+ * message were sent to an instance of a class.
+ *
+ * @param cls The class you want to inspect.
+ * @param name A selector.
+ *
+ * @return The function pointer that would be called if \c [object name] were called
+ * with an instance of the class, or \c NULL if \e cls is \c Nil.
+ */
+OBJC_EXPORT IMP _Nullable
+class_getMethodImplementation_stret(Class _Nullable cls, SEL _Nonnull name)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0)
+ OBJC_ARM64_UNAVAILABLE;
+
+/**
+ * Returns a Boolean value that indicates whether instances of a class respond to a particular selector.
+ *
+ * @param cls The class you want to inspect.
+ * @param sel A selector.
+ *
+ * @return \c YES if instances of the class respond to the selector, otherwise \c NO.
+ *
+ * @note You should usually use \c NSObject's \c respondsToSelector: or \c instancesRespondToSelector:
+ * methods instead of this function.
+ */
+OBJC_EXPORT BOOL
+class_respondsToSelector(Class _Nullable cls, SEL _Nonnull sel)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Describes the instance methods implemented by a class.
+ *
+ * @param cls The class you want to inspect.
+ * @param outCount On return, contains the length of the returned array.
+ * If outCount is NULL, the length is not returned.
+ *
+ * @return An array of pointers of type Method describing the instance methods
+ * implemented by the class—any instance methods implemented by superclasses are not included.
+ * The array contains *outCount pointers followed by a NULL terminator. You must free the array with free().
+ *
+ * If cls implements no instance methods, or cls is Nil, returns NULL and *outCount is 0.
+ *
+ * @note To get the class methods of a class, use \c class_copyMethodList(object_getClass(cls), &count).
+ * @note To get the implementations of methods that may be implemented by superclasses,
+ * use \c class_getInstanceMethod or \c class_getClassMethod.
+ */
+OBJC_EXPORT Method _Nonnull * _Nullable
+class_copyMethodList(Class _Nullable cls, unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a Boolean value that indicates whether a class conforms to a given protocol.
+ *
+ * @param cls The class you want to inspect.
+ * @param protocol A protocol.
+ *
+ * @return YES if cls conforms to protocol, otherwise NO.
+ *
+ * @note You should usually use NSObject's conformsToProtocol: method instead of this function.
+ */
+OBJC_EXPORT BOOL
+class_conformsToProtocol(Class _Nullable cls, Protocol * _Nullable protocol)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Describes the protocols adopted by a class.
+ *
+ * @param cls The class you want to inspect.
+ * @param outCount On return, contains the length of the returned array.
+ * If outCount is NULL, the length is not returned.
+ *
+ * @return An array of pointers of type Protocol* describing the protocols adopted
+ * by the class. Any protocols adopted by superclasses or other protocols are not included.
+ * The array contains *outCount pointers followed by a NULL terminator. You must free the array with free().
+ *
+ * If cls adopts no protocols, or cls is Nil, returns NULL and *outCount is 0.
+ */
+OBJC_EXPORT Protocol * __unsafe_unretained _Nonnull * _Nullable
+class_copyProtocolList(Class _Nullable cls, unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a property with a given name of a given class.
+ *
+ * @param cls The class you want to inspect.
+ * @param name The name of the property you want to inspect.
+ *
+ * @return A pointer of type \c objc_property_t describing the property, or
+ * \c NULL if the class does not declare a property with that name,
+ * or \c NULL if \e cls is \c Nil.
+ */
+OBJC_EXPORT objc_property_t _Nullable
+class_getProperty(Class _Nullable cls, const char * _Nonnull name)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Describes the properties declared by a class.
+ *
+ * @param cls The class you want to inspect.
+ * @param outCount On return, contains the length of the returned array.
+ * If \e outCount is \c NULL, the length is not returned.
+ *
+ * @return An array of pointers of type \c objc_property_t describing the properties
+ * declared by the class. Any properties declared by superclasses are not included.
+ * The array contains \c *outCount pointers followed by a \c NULL terminator. You must free the array with \c free().
+ *
+ * If \e cls declares no properties, or \e cls is \c Nil, returns \c NULL and \c *outCount is \c 0.
+ */
+OBJC_EXPORT objc_property_t _Nonnull * _Nullable
+class_copyPropertyList(Class _Nullable cls, unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a description of the \c Ivar layout for a given class.
+ *
+ * @param cls The class to inspect.
+ *
+ * @return A description of the \c Ivar layout for \e cls.
+ */
+OBJC_EXPORT const uint8_t * _Nullable
+class_getIvarLayout(Class _Nullable cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a description of the layout of weak Ivars for a given class.
+ *
+ * @param cls The class to inspect.
+ *
+ * @return A description of the layout of the weak \c Ivars for \e cls.
+ */
+OBJC_EXPORT const uint8_t * _Nullable
+class_getWeakIvarLayout(Class _Nullable cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Adds a new method to a class with a given name and implementation.
+ *
+ * @param cls The class to which to add a method.
+ * @param name A selector that specifies the name of the method being added.
+ * @param imp A function which is the implementation of the new method. The function must take at least two arguments—self and _cmd.
+ * @param types An array of characters that describe the types of the arguments to the method.
+ *
+ * @return YES if the method was added successfully, otherwise NO
+ * (for example, the class already contains a method implementation with that name).
+ *
+ * @note class_addMethod will add an override of a superclass's implementation,
+ * but will not replace an existing implementation in this class.
+ * To change an existing implementation, use method_setImplementation.
+ */
+OBJC_EXPORT BOOL
+class_addMethod(Class _Nullable cls, SEL _Nonnull name, IMP _Nonnull imp,
+ const char * _Nullable types)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Replaces the implementation of a method for a given class.
+ *
+ * @param cls The class you want to modify.
+ * @param name A selector that identifies the method whose implementation you want to replace.
+ * @param imp The new implementation for the method identified by name for the class identified by cls.
+ * @param types An array of characters that describe the types of the arguments to the method.
+ * Since the function must take at least two arguments—self and _cmd, the second and third characters
+ * must be “@:” (the first character is the return type).
+ *
+ * @return The previous implementation of the method identified by \e name for the class identified by \e cls.
+ *
+ * @note This function behaves in two different ways:
+ * - If the method identified by \e name does not yet exist, it is added as if \c class_addMethod were called.
+ * The type encoding specified by \e types is used as given.
+ * - If the method identified by \e name does exist, its \c IMP is replaced as if \c method_setImplementation were called.
+ * The type encoding specified by \e types is ignored.
+ */
+OBJC_EXPORT IMP _Nullable
+class_replaceMethod(Class _Nullable cls, SEL _Nonnull name, IMP _Nonnull imp,
+ const char * _Nullable types)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Adds a new instance variable to a class.
+ *
+ * @return YES if the instance variable was added successfully, otherwise NO
+ * (for example, the class already contains an instance variable with that name).
+ *
+ * @note This function may only be called after objc_allocateClassPair and before objc_registerClassPair.
+ * Adding an instance variable to an existing class is not supported.
+ * @note The class must not be a metaclass. Adding an instance variable to a metaclass is not supported.
+ * @note The instance variable's minimum alignment in bytes is 1<<align. The minimum alignment of an instance
+ * variable depends on the ivar's type and the machine architecture.
+ * For variables of any pointer type, pass log2(sizeof(pointer_type)).
+ */
+OBJC_EXPORT BOOL
+class_addIvar(Class _Nullable cls, const char * _Nonnull name, size_t size,
+ uint8_t alignment, const char * _Nullable types)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Adds a protocol to a class.
+ *
+ * @param cls The class to modify.
+ * @param protocol The protocol to add to \e cls.
+ *
+ * @return \c YES if the method was added successfully, otherwise \c NO
+ * (for example, the class already conforms to that protocol).
+ */
+OBJC_EXPORT BOOL
+class_addProtocol(Class _Nullable cls, Protocol * _Nonnull protocol)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Adds a property to a class.
+ *
+ * @param cls The class to modify.
+ * @param name The name of the property.
+ * @param attributes An array of property attributes.
+ * @param attributeCount The number of attributes in \e attributes.
+ *
+ * @return \c YES if the property was added successfully, otherwise \c NO
+ * (for example, the class already has that property).
+ */
+OBJC_EXPORT BOOL
+class_addProperty(Class _Nullable cls, const char * _Nonnull name,
+ const objc_property_attribute_t * _Nullable attributes,
+ unsigned int attributeCount)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Replace a property of a class.
+ *
+ * @param cls The class to modify.
+ * @param name The name of the property.
+ * @param attributes An array of property attributes.
+ * @param attributeCount The number of attributes in \e attributes.
+ */
+OBJC_EXPORT void
+class_replaceProperty(Class _Nullable cls, const char * _Nonnull name,
+ const objc_property_attribute_t * _Nullable attributes,
+ unsigned int attributeCount)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the Ivar layout for a given class.
+ *
+ * @param cls The class to modify.
+ * @param layout The layout of the \c Ivars for \e cls.
+ */
+OBJC_EXPORT void
+class_setIvarLayout(Class _Nullable cls, const uint8_t * _Nullable layout)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the layout for weak Ivars for a given class.
+ *
+ * @param cls The class to modify.
+ * @param layout The layout of the weak Ivars for \e cls.
+ */
+OBJC_EXPORT void
+class_setWeakIvarLayout(Class _Nullable cls, const uint8_t * _Nullable layout)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Used by CoreFoundation's toll-free bridging.
+ * Return the id of the named class.
+ *
+ * @return The id of the named class, or an uninitialized class
+ * structure that will be used for the class when and if it does
+ * get loaded.
+ *
+ * @warning Do not call this function yourself.
+ */
+OBJC_EXPORT Class _Nonnull
+objc_getFutureClass(const char * _Nonnull name)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0)
+ OBJC_ARC_UNAVAILABLE;
+
+
+/* Instantiating Classes */
+
+/**
+ * Creates an instance of a class, allocating memory for the class in the
+ * default malloc memory zone.
+ *
+ * @param cls The class that you wish to allocate an instance of.
+ * @param extraBytes An integer indicating the number of extra bytes to allocate.
+ * The additional bytes can be used to store additional instance variables beyond
+ * those defined in the class definition.
+ *
+ * @return An instance of the class \e cls.
+ */
+OBJC_EXPORT id _Nullable
+class_createInstance(Class _Nullable cls, size_t extraBytes)
+ OBJC_RETURNS_RETAINED
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Creates an instance of a class at the specific location provided.
+ *
+ * @param cls The class that you wish to allocate an instance of.
+ * @param bytes The location at which to allocate an instance of \e cls.
+ * Must point to at least \c class_getInstanceSize(cls) bytes of well-aligned,
+ * zero-filled memory.
+ *
+ * @return \e bytes on success, \c nil otherwise. (For example, \e cls or \e bytes
+ * might be \c nil)
+ *
+ * @see class_createInstance
+ */
+OBJC_EXPORT id _Nullable
+objc_constructInstance(Class _Nullable cls, void * _Nullable bytes)
+ OBJC_AVAILABLE(10.6, 3.0, 9.0, 1.0, 2.0)
+ OBJC_ARC_UNAVAILABLE;
+
+/**
+ * Destroys an instance of a class without freeing memory and removes any
+ * associated references this instance might have had.
+ *
+ * @param obj The class instance to destroy.
+ *
+ * @return \e obj. Does nothing if \e obj is nil.
+ *
+ * @note CF and other clients do call this under GC.
+ */
+OBJC_EXPORT void * _Nullable objc_destructInstance(id _Nullable obj)
+ OBJC_AVAILABLE(10.6, 3.0, 9.0, 1.0, 2.0)
+ OBJC_ARC_UNAVAILABLE;
+
+
+/* Adding Classes */
+
+/**
+ * Creates a new class and metaclass.
+ *
+ * @param superclass The class to use as the new class's superclass, or \c Nil to create a new root class.
+ * @param name The string to use as the new class's name. The string will be copied.
+ * @param extraBytes The number of bytes to allocate for indexed ivars at the end of
+ * the class and metaclass objects. This should usually be \c 0.
+ *
+ * @return The new class, or Nil if the class could not be created (for example, the desired name is already in use).
+ *
+ * @note You can get a pointer to the new metaclass by calling \c object_getClass(newClass).
+ * @note To create a new class, start by calling \c objc_allocateClassPair.
+ * Then set the class's attributes with functions like \c class_addMethod and \c class_addIvar.
+ * When you are done building the class, call \c objc_registerClassPair. The new class is now ready for use.
+ * @note Instance methods and instance variables should be added to the class itself.
+ * Class methods should be added to the metaclass.
+ */
+OBJC_EXPORT Class _Nullable
+objc_allocateClassPair(Class _Nullable superclass, const char * _Nonnull name,
+ size_t extraBytes)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Registers a class that was allocated using \c objc_allocateClassPair.
+ *
+ * @param cls The class you want to register.
+ */
+OBJC_EXPORT void
+objc_registerClassPair(Class _Nonnull cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Used by Foundation's Key-Value Observing.
+ *
+ * @warning Do not call this function yourself.
+ */
+OBJC_EXPORT Class _Nonnull
+objc_duplicateClass(Class _Nonnull original, const char * _Nonnull name,
+ size_t extraBytes)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Destroy a class and its associated metaclass.
+ *
+ * @param cls The class to be destroyed. It must have been allocated with
+ * \c objc_allocateClassPair
+ *
+ * @warning Do not call if instances of this class or a subclass exist.
+ */
+OBJC_EXPORT void
+objc_disposeClassPair(Class _Nonnull cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+
+/* Working with Methods */
+
+/**
+ * Returns the name of a method.
+ *
+ * @param m The method to inspect.
+ *
+ * @return A pointer of type SEL.
+ *
+ * @note To get the method name as a C string, call \c sel_getName(method_getName(method)).
+ */
+OBJC_EXPORT SEL _Nonnull
+method_getName(Method _Nonnull m)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the implementation of a method.
+ *
+ * @param m The method to inspect.
+ *
+ * @return A function pointer of type IMP.
+ */
+OBJC_EXPORT IMP _Nonnull
+method_getImplementation(Method _Nonnull m)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a string describing a method's parameter and return types.
+ *
+ * @param m The method to inspect.
+ *
+ * @return A C string. The string may be \c NULL.
+ */
+OBJC_EXPORT const char * _Nullable
+method_getTypeEncoding(Method _Nonnull m)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the number of arguments accepted by a method.
+ *
+ * @param m A pointer to a \c Method data structure. Pass the method in question.
+ *
+ * @return An integer containing the number of arguments accepted by the given method.
+ */
+OBJC_EXPORT unsigned int
+method_getNumberOfArguments(Method _Nonnull m)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a string describing a method's return type.
+ *
+ * @param m The method to inspect.
+ *
+ * @return A C string describing the return type. You must free the string with \c free().
+ */
+OBJC_EXPORT char * _Nonnull
+method_copyReturnType(Method _Nonnull m)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a string describing a single parameter type of a method.
+ *
+ * @param m The method to inspect.
+ * @param index The index of the parameter to inspect.
+ *
+ * @return A C string describing the type of the parameter at index \e index, or \c NULL
+ * if method has no parameter index \e index. You must free the string with \c free().
+ */
+OBJC_EXPORT char * _Nullable
+method_copyArgumentType(Method _Nonnull m, unsigned int index)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns by reference a string describing a method's return type.
+ *
+ * @param m The method you want to inquire about.
+ * @param dst The reference string to store the description.
+ * @param dst_len The maximum number of characters that can be stored in \e dst.
+ *
+ * @note The method's return type string is copied to \e dst.
+ * \e dst is filled as if \c strncpy(dst, parameter_type, dst_len) were called.
+ */
+OBJC_EXPORT void
+method_getReturnType(Method _Nonnull m, char * _Nonnull dst, size_t dst_len)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns by reference a string describing a single parameter type of a method.
+ *
+ * @param m The method you want to inquire about.
+ * @param index The index of the parameter you want to inquire about.
+ * @param dst The reference string to store the description.
+ * @param dst_len The maximum number of characters that can be stored in \e dst.
+ *
+ * @note The parameter type string is copied to \e dst. \e dst is filled as if \c strncpy(dst, parameter_type, dst_len)
+ * were called. If the method contains no parameter with that index, \e dst is filled as
+ * if \c strncpy(dst, "", dst_len) were called.
+ */
+OBJC_EXPORT void
+method_getArgumentType(Method _Nonnull m, unsigned int index,
+ char * _Nullable dst, size_t dst_len)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+OBJC_EXPORT struct objc_method_description * _Nonnull
+method_getDescription(Method _Nonnull m)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the implementation of a method.
+ *
+ * @param m The method for which to set an implementation.
+ * @param imp The implemention to set to this method.
+ *
+ * @return The previous implementation of the method.
+ */
+OBJC_EXPORT IMP _Nonnull
+method_setImplementation(Method _Nonnull m, IMP _Nonnull imp)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Exchanges the implementations of two methods.
+ *
+ * @param m1 Method to exchange with second method.
+ * @param m2 Method to exchange with first method.
+ *
+ * @note This is an atomic version of the following:
+ * \code
+ * IMP imp1 = method_getImplementation(m1);
+ * IMP imp2 = method_getImplementation(m2);
+ * method_setImplementation(m1, imp2);
+ * method_setImplementation(m2, imp1);
+ * \endcode
+ */
+OBJC_EXPORT void
+method_exchangeImplementations(Method _Nonnull m1, Method _Nonnull m2)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+
+/* Working with Instance Variables */
+
+/**
+ * Returns the name of an instance variable.
+ *
+ * @param v The instance variable you want to enquire about.
+ *
+ * @return A C string containing the instance variable's name.
+ */
+OBJC_EXPORT const char * _Nullable
+ivar_getName(Ivar _Nonnull v)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the type string of an instance variable.
+ *
+ * @param v The instance variable you want to enquire about.
+ *
+ * @return A C string containing the instance variable's type encoding.
+ *
+ * @note For possible values, see Objective-C Runtime Programming Guide > Type Encodings.
+ */
+OBJC_EXPORT const char * _Nullable
+ivar_getTypeEncoding(Ivar _Nonnull v)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the offset of an instance variable.
+ *
+ * @param v The instance variable you want to enquire about.
+ *
+ * @return The offset of \e v.
+ *
+ * @note For instance variables of type \c id or other object types, call \c object_getIvar
+ * and \c object_setIvar instead of using this offset to access the instance variable data directly.
+ */
+OBJC_EXPORT ptrdiff_t
+ivar_getOffset(Ivar _Nonnull v)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+
+/* Working with Properties */
+
+/**
+ * Returns the name of a property.
+ *
+ * @param property The property you want to inquire about.
+ *
+ * @return A C string containing the property's name.
+ */
+OBJC_EXPORT const char * _Nonnull
+property_getName(objc_property_t _Nonnull property)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the attribute string of a property.
+ *
+ * @param property A property.
+ *
+ * @return A C string containing the property's attributes.
+ *
+ * @note The format of the attribute string is described in Declared Properties in Objective-C Runtime Programming Guide.
+ */
+OBJC_EXPORT const char * _Nullable
+property_getAttributes(objc_property_t _Nonnull property)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns an array of property attributes for a property.
+ *
+ * @param property The property whose attributes you want copied.
+ * @param outCount The number of attributes returned in the array.
+ *
+ * @return An array of property attributes; must be free'd() by the caller.
+ */
+OBJC_EXPORT objc_property_attribute_t * _Nullable
+property_copyAttributeList(objc_property_t _Nonnull property,
+ unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the value of a property attribute given the attribute name.
+ *
+ * @param property The property whose attribute value you are interested in.
+ * @param attributeName C string representing the attribute name.
+ *
+ * @return The value string of the attribute \e attributeName if it exists in
+ * \e property, \c nil otherwise.
+ */
+OBJC_EXPORT char * _Nullable
+property_copyAttributeValue(objc_property_t _Nonnull property,
+ const char * _Nonnull attributeName)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+
+/* Working with Protocols */
+
+/**
+ * Returns a specified protocol.
+ *
+ * @param name The name of a protocol.
+ *
+ * @return The protocol named \e name, or \c NULL if no protocol named \e name could be found.
+ *
+ * @note This function acquires the runtime lock.
+ */
+OBJC_EXPORT Protocol * _Nullable
+objc_getProtocol(const char * _Nonnull name)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns an array of all the protocols known to the runtime.
+ *
+ * @param outCount Upon return, contains the number of protocols in the returned array.
+ *
+ * @return A C array of all the protocols known to the runtime. The array contains \c *outCount
+ * pointers followed by a \c NULL terminator. You must free the list with \c free().
+ *
+ * @note This function acquires the runtime lock.
+ */
+OBJC_EXPORT Protocol * __unsafe_unretained _Nonnull * _Nullable
+objc_copyProtocolList(unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a Boolean value that indicates whether one protocol conforms to another protocol.
+ *
+ * @param proto A protocol.
+ * @param other A protocol.
+ *
+ * @return \c YES if \e proto conforms to \e other, otherwise \c NO.
+ *
+ * @note One protocol can incorporate other protocols using the same syntax
+ * that classes use to adopt a protocol:
+ * \code
+ * @protocol ProtocolName < protocol list >
+ * \endcode
+ * All the protocols listed between angle brackets are considered part of the ProtocolName protocol.
+ */
+OBJC_EXPORT BOOL
+protocol_conformsToProtocol(Protocol * _Nullable proto,
+ Protocol * _Nullable other)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a Boolean value that indicates whether two protocols are equal.
+ *
+ * @param proto A protocol.
+ * @param other A protocol.
+ *
+ * @return \c YES if \e proto is the same as \e other, otherwise \c NO.
+ */
+OBJC_EXPORT BOOL
+protocol_isEqual(Protocol * _Nullable proto, Protocol * _Nullable other)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the name of a protocol.
+ *
+ * @param proto A protocol.
+ *
+ * @return The name of the protocol \e p as a C string.
+ */
+OBJC_EXPORT const char * _Nonnull
+protocol_getName(Protocol * _Nonnull proto)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a method description structure for a specified method of a given protocol.
+ *
+ * @param proto A protocol.
+ * @param aSel A selector.
+ * @param isRequiredMethod A Boolean value that indicates whether aSel is a required method.
+ * @param isInstanceMethod A Boolean value that indicates whether aSel is an instance method.
+ *
+ * @return An \c objc_method_description structure that describes the method specified by \e aSel,
+ * \e isRequiredMethod, and \e isInstanceMethod for the protocol \e p.
+ * If the protocol does not contain the specified method, returns an \c objc_method_description structure
+ * with the value \c {NULL, \c NULL}.
+ *
+ * @note This function recursively searches any protocols that this protocol conforms to.
+ */
+OBJC_EXPORT struct objc_method_description
+protocol_getMethodDescription(Protocol * _Nonnull proto, SEL _Nonnull aSel,
+ BOOL isRequiredMethod, BOOL isInstanceMethod)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns an array of method descriptions of methods meeting a given specification for a given protocol.
+ *
+ * @param proto A protocol.
+ * @param isRequiredMethod A Boolean value that indicates whether returned methods should
+ * be required methods (pass YES to specify required methods).
+ * @param isInstanceMethod A Boolean value that indicates whether returned methods should
+ * be instance methods (pass YES to specify instance methods).
+ * @param outCount Upon return, contains the number of method description structures in the returned array.
+ *
+ * @return A C array of \c objc_method_description structures containing the names and types of \e p's methods
+ * specified by \e isRequiredMethod and \e isInstanceMethod. The array contains \c *outCount pointers followed
+ * by a \c NULL terminator. You must free the list with \c free().
+ * If the protocol declares no methods that meet the specification, \c NULL is returned and \c *outCount is 0.
+ *
+ * @note Methods in other protocols adopted by this protocol are not included.
+ */
+OBJC_EXPORT struct objc_method_description * _Nullable
+protocol_copyMethodDescriptionList(Protocol * _Nonnull proto,
+ BOOL isRequiredMethod,
+ BOOL isInstanceMethod,
+ unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the specified property of a given protocol.
+ *
+ * @param proto A protocol.
+ * @param name The name of a property.
+ * @param isRequiredProperty \c YES searches for a required property, \c NO searches for an optional property.
+ * @param isInstanceProperty \c YES searches for an instance property, \c NO searches for a class property.
+ *
+ * @return The property specified by \e name, \e isRequiredProperty, and \e isInstanceProperty for \e proto,
+ * or \c NULL if none of \e proto's properties meets the specification.
+ */
+OBJC_EXPORT objc_property_t _Nullable
+protocol_getProperty(Protocol * _Nonnull proto,
+ const char * _Nonnull name,
+ BOOL isRequiredProperty, BOOL isInstanceProperty)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns an array of the required instance properties declared by a protocol.
+ *
+ * @note Identical to
+ * \code
+ * protocol_copyPropertyList2(proto, outCount, YES, YES);
+ * \endcode
+ */
+OBJC_EXPORT objc_property_t _Nonnull * _Nullable
+protocol_copyPropertyList(Protocol * _Nonnull proto,
+ unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns an array of properties declared by a protocol.
+ *
+ * @param proto A protocol.
+ * @param outCount Upon return, contains the number of elements in the returned array.
+ * @param isRequiredProperty \c YES returns required properties, \c NO returns optional properties.
+ * @param isInstanceProperty \c YES returns instance properties, \c NO returns class properties.
+ *
+ * @return A C array of pointers of type \c objc_property_t describing the properties declared by \e proto.
+ * Any properties declared by other protocols adopted by this protocol are not included. The array contains
+ * \c *outCount pointers followed by a \c NULL terminator. You must free the array with \c free().
+ * If the protocol declares no matching properties, \c NULL is returned and \c *outCount is \c 0.
+ */
+OBJC_EXPORT objc_property_t _Nonnull * _Nullable
+protocol_copyPropertyList2(Protocol * _Nonnull proto,
+ unsigned int * _Nullable outCount,
+ BOOL isRequiredProperty, BOOL isInstanceProperty)
+ OBJC_AVAILABLE(10.12, 10.0, 10.0, 3.0, 2.0);
+
+/**
+ * Returns an array of the protocols adopted by a protocol.
+ *
+ * @param proto A protocol.
+ * @param outCount Upon return, contains the number of elements in the returned array.
+ *
+ * @return A C array of protocols adopted by \e proto. The array contains \e *outCount pointers
+ * followed by a \c NULL terminator. You must free the array with \c free().
+ * If the protocol adopts no other protocols, \c NULL is returned and \c *outCount is \c 0.
+ */
+OBJC_EXPORT Protocol * __unsafe_unretained _Nonnull * _Nullable
+protocol_copyProtocolList(Protocol * _Nonnull proto,
+ unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Creates a new protocol instance that cannot be used until registered with
+ * \c objc_registerProtocol()
+ *
+ * @param name The name of the protocol to create.
+ *
+ * @return The Protocol instance on success, \c nil if a protocol
+ * with the same name already exists.
+ * @note There is no dispose method for this.
+ */
+OBJC_EXPORT Protocol * _Nullable
+objc_allocateProtocol(const char * _Nonnull name)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Registers a newly constructed protocol with the runtime. The protocol
+ * will be ready for use and is immutable after this.
+ *
+ * @param proto The protocol you want to register.
+ */
+OBJC_EXPORT void
+objc_registerProtocol(Protocol * _Nonnull proto)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Adds a method to a protocol. The protocol must be under construction.
+ *
+ * @param proto The protocol to add a method to.
+ * @param name The name of the method to add.
+ * @param types A C string that represents the method signature.
+ * @param isRequiredMethod YES if the method is not an optional method.
+ * @param isInstanceMethod YES if the method is an instance method.
+ */
+OBJC_EXPORT void
+protocol_addMethodDescription(Protocol * _Nonnull proto, SEL _Nonnull name,
+ const char * _Nullable types,
+ BOOL isRequiredMethod, BOOL isInstanceMethod)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Adds an incorporated protocol to another protocol. The protocol being
+ * added to must still be under construction, while the additional protocol
+ * must be already constructed.
+ *
+ * @param proto The protocol you want to add to, it must be under construction.
+ * @param addition The protocol you want to incorporate into \e proto, it must be registered.
+ */
+OBJC_EXPORT void
+protocol_addProtocol(Protocol * _Nonnull proto, Protocol * _Nonnull addition)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Adds a property to a protocol. The protocol must be under construction.
+ *
+ * @param proto The protocol to add a property to.
+ * @param name The name of the property.
+ * @param attributes An array of property attributes.
+ * @param attributeCount The number of attributes in \e attributes.
+ * @param isRequiredProperty YES if the property (accessor methods) is not optional.
+ * @param isInstanceProperty YES if the property (accessor methods) are instance methods.
+ * This is the only case allowed fo a property, as a result, setting this to NO will
+ * not add the property to the protocol at all.
+ */
+OBJC_EXPORT void
+protocol_addProperty(Protocol * _Nonnull proto, const char * _Nonnull name,
+ const objc_property_attribute_t * _Nullable attributes,
+ unsigned int attributeCount,
+ BOOL isRequiredProperty, BOOL isInstanceProperty)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+
+/* Working with Libraries */
+
+/**
+ * Returns the names of all the loaded Objective-C frameworks and dynamic
+ * libraries.
+ *
+ * @param outCount The number of names returned.
+ *
+ * @return An array of C strings of names. Must be free()'d by caller.
+ */
+OBJC_EXPORT const char * _Nonnull * _Nonnull
+objc_copyImageNames(unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the dynamic library name a class originated from.
+ *
+ * @param cls The class you are inquiring about.
+ *
+ * @return The name of the library containing this class.
+ */
+OBJC_EXPORT const char * _Nullable
+class_getImageName(Class _Nullable cls)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the names of all the classes within a library.
+ *
+ * @param image The library or framework you are inquiring about.
+ * @param outCount The number of class names returned.
+ *
+ * @return An array of C strings representing the class names.
+ */
+OBJC_EXPORT const char * _Nonnull * _Nullable
+objc_copyClassNamesForImage(const char * _Nonnull image,
+ unsigned int * _Nullable outCount)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+
+/* Working with Selectors */
+
+/**
+ * Returns the name of the method specified by a given selector.
+ *
+ * @param sel A pointer of type \c SEL. Pass the selector whose name you wish to determine.
+ *
+ * @return A C string indicating the name of the selector.
+ */
+OBJC_EXPORT const char * _Nonnull
+sel_getName(SEL _Nonnull sel)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+
+/**
+ * Registers a method with the Objective-C runtime system, maps the method
+ * name to a selector, and returns the selector value.
+ *
+ * @param str A pointer to a C string. Pass the name of the method you wish to register.
+ *
+ * @return A pointer of type SEL specifying the selector for the named method.
+ *
+ * @note You must register a method name with the Objective-C runtime system to obtain the
+ * method’s selector before you can add the method to a class definition. If the method name
+ * has already been registered, this function simply returns the selector.
+ */
+OBJC_EXPORT SEL _Nonnull
+sel_registerName(const char * _Nonnull str)
+ OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Returns a Boolean value that indicates whether two selectors are equal.
+ *
+ * @param lhs The selector to compare with rhs.
+ * @param rhs The selector to compare with lhs.
+ *
+ * @return \c YES if \e lhs and \e rhs are equal, otherwise \c NO.
+ *
+ * @note sel_isEqual is equivalent to ==.
+ */
+OBJC_EXPORT BOOL
+sel_isEqual(SEL _Nonnull lhs, SEL _Nonnull rhs)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+
+/* Objective-C Language Features */
+
+/**
+ * This function is inserted by the compiler when a mutation
+ * is detected during a foreach iteration. It gets called
+ * when a mutation occurs, and the enumerationMutationHandler
+ * is enacted if it is set up. A fatal error occurs if a handler is not set up.
+ *
+ * @param obj The object being mutated.
+ *
+ */
+OBJC_EXPORT void
+objc_enumerationMutation(id _Nonnull obj)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Sets the current mutation handler.
+ *
+ * @param handler Function pointer to the new mutation handler.
+ */
+OBJC_EXPORT void
+objc_setEnumerationMutationHandler(void (*_Nullable handler)(id _Nonnull ))
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Set the function to be called by objc_msgForward.
+ *
+ * @param fwd Function to be jumped to by objc_msgForward.
+ * @param fwd_stret Function to be jumped to by objc_msgForward_stret.
+ *
+ * @see message.h::_objc_msgForward
+ */
+OBJC_EXPORT void
+objc_setForwardHandler(void * _Nonnull fwd, void * _Nonnull fwd_stret)
+ OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
+/**
+ * Creates a pointer to a function that will call the block
+ * when the method is called.
+ *
+ * @param block The block that implements this method. Its signature should
+ * be: method_return_type ^(id self, method_args...).
+ * The selector is not available as a parameter to this block.
+ * The block is copied with \c Block_copy().
+ *
+ * @return The IMP that calls this block. Must be disposed of with
+ * \c imp_removeBlock.
+ */
+OBJC_EXPORT IMP _Nonnull
+imp_implementationWithBlock(id _Nonnull block)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Return the block associated with an IMP that was created using
+ * \c imp_implementationWithBlock.
+ *
+ * @param anImp The IMP that calls this block.
+ *
+ * @return The block called by \e anImp.
+ */
+OBJC_EXPORT id _Nullable
+imp_getBlock(IMP _Nonnull anImp)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * Disassociates a block from an IMP that was created using
+ * \c imp_implementationWithBlock and releases the copy of the
+ * block that was created.
+ *
+ * @param anImp An IMP that was created using \c imp_implementationWithBlock.
+ *
+ * @return YES if the block was released successfully, NO otherwise.
+ * (For example, the block might not have been used to create an IMP previously).
+ */
+OBJC_EXPORT BOOL
+imp_removeBlock(IMP _Nonnull anImp)
+ OBJC_AVAILABLE(10.7, 4.3, 9.0, 1.0, 2.0);
+
+/**
+ * This loads the object referenced by a weak pointer and returns it, after
+ * retaining and autoreleasing the object to ensure that it stays alive
+ * long enough for the caller to use it. This function would be used
+ * anywhere a __weak variable is used in an expression.
+ *
+ * @param location The weak pointer address
+ *
+ * @return The object pointed to by \e location, or \c nil if \e *location is \c nil.
+ */
+OBJC_EXPORT id _Nullable
+objc_loadWeak(id _Nullable * _Nonnull location)
+ OBJC_AVAILABLE(10.7, 5.0, 9.0, 1.0, 2.0);
+
+/**
+ * This function stores a new value into a __weak variable. It would
+ * be used anywhere a __weak variable is the target of an assignment.
+ *
+ * @param location The address of the weak pointer itself
+ * @param obj The new object this weak ptr should now point to
+ *
+ * @return The value stored into \e location, i.e. \e obj
+ */
+OBJC_EXPORT id _Nullable
+objc_storeWeak(id _Nullable * _Nonnull location, id _Nullable obj)
+ OBJC_AVAILABLE(10.7, 5.0, 9.0, 1.0, 2.0);
+
+
+/* Associative References */
+
+/**
+ * Policies related to associative references.
+ * These are options to objc_setAssociatedObject()
+ */
+typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy) {
+ OBJC_ASSOCIATION_ASSIGN = 0, /**< Specifies a weak reference to the associated object. */
+ OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, /**< Specifies a strong reference to the associated object.
+ * The association is not made atomically. */
+ OBJC_ASSOCIATION_COPY_NONATOMIC = 3, /**< Specifies that the associated object is copied.
+ * The association is not made atomically. */
+ OBJC_ASSOCIATION_RETAIN = 01401, /**< Specifies a strong reference to the associated object.
+ * The association is made atomically. */
+ OBJC_ASSOCIATION_COPY = 01403 /**< Specifies that the associated object is copied.
+ * The association is made atomically. */
+};
+
+/**
+ * Sets an associated value for a given object using a given key and association policy.
+ *
+ * @param object The source object for the association.
+ * @param key The key for the association.
+ * @param value The value to associate with the key key for object. Pass nil to clear an existing association.
+ * @param policy The policy for the association. For possible values, see “Associative Object Behaviors.”
+ *
+ * @see objc_setAssociatedObject
+ * @see objc_removeAssociatedObjects
+ */
+OBJC_EXPORT void
+objc_setAssociatedObject(id _Nonnull object, const void * _Nonnull key,
+ id _Nullable value, objc_AssociationPolicy policy)
+ OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0, 2.0);
+
+/**
+ * Returns the value associated with a given object for a given key.
+ *
+ * @param object The source object for the association.
+ * @param key The key for the association.
+ *
+ * @return The value associated with the key \e key for \e object.
+ *
+ * @see objc_setAssociatedObject
+ */
+OBJC_EXPORT id _Nullable
+objc_getAssociatedObject(id _Nonnull object, const void * _Nonnull key)
+ OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0, 2.0);
+
+/**
+ * Removes all associations for a given object.
+ *
+ * @param object An object that maintains associated objects.
+ *
+ * @note The main purpose of this function is to make it easy to return an object
+ * to a "pristine state”. You should not use this function for general removal of
+ * associations from objects, since it also removes associations that other clients
+ * may have added to the object. Typically you should use \c objc_setAssociatedObject
+ * with a nil value to clear an association.
+ *
+ * @see objc_setAssociatedObject
+ * @see objc_getAssociatedObject
+ */
+OBJC_EXPORT void
+objc_removeAssociatedObjects(id _Nonnull object)
+ OBJC_AVAILABLE(10.6, 3.1, 9.0, 1.0, 2.0);
+
+
+/* Hooks for Swift */
+
+/**
+ * Function type for a hook that intercepts class_getImageName().
+ *
+ * @param cls The class whose image name is being looked up.
+ * @param outImageName On return, the result of the image name lookup.
+ * @return YES if an image name for this class was found, NO otherwise.
+ *
+ * @see class_getImageName
+ * @see objc_setHook_getImageName
+ */
+typedef BOOL (*objc_hook_getImageName)(Class _Nonnull cls, const char * _Nullable * _Nonnull outImageName);
+
+/**
+ * Install a hook for class_getImageName().
+ *
+ * @param newValue The hook function to install.
+ * @param outOldValue The address of a function pointer variable. On return,
+ * the old hook function is stored in the variable.
+ *
+ * @note The store to *outOldValue is thread-safe: the variable will be
+ * updated before class_getImageName() calls your new hook to read it,
+ * even if your new hook is called from another thread before this
+ * setter completes.
+ * @note The first hook in the chain is the native implementation of
+ * class_getImageName(). Your hook should call the previous hook for
+ * classes that you do not recognize.
+ *
+ * @see class_getImageName
+ * @see objc_hook_getImageName
+ */
+OBJC_EXPORT void objc_setHook_getImageName(objc_hook_getImageName _Nonnull newValue,
+ objc_hook_getImageName _Nullable * _Nonnull outOldValue)
+ OBJC_AVAILABLE(10.14, 12.0, 12.0, 5.0, 3.0);
+
+/**
+ * Function type for a hook that assists objc_getClass() and related functions.
+ *
+ * @param name The class name to look up.
+ * @param outClass On return, the result of the class lookup.
+ * @return YES if a class with this name was found, NO otherwise.
+ *
+ * @see objc_getClass
+ * @see objc_setHook_getClass
+ */
+typedef BOOL (*objc_hook_getClass)(const char * _Nonnull name, Class _Nullable * _Nonnull outClass);
+
+/**
+ * Install a hook for objc_getClass() and related functions.
+ *
+ * @param newValue The hook function to install.
+ * @param outOldValue The address of a function pointer variable. On return,
+ * the old hook function is stored in the variable.
+ *
+ * @note The store to *outOldValue is thread-safe: the variable will be
+ * updated before objc_getClass() calls your new hook to read it,
+ * even if your new hook is called from another thread before this
+ * setter completes.
+ * @note Your hook should call the previous hook for class names
+ * that you do not recognize.
+ *
+ * @see objc_getClass
+ * @see objc_hook_getClass
+ */
+#if !(TARGET_OS_OSX && __i386__)
+#define OBJC_GETCLASSHOOK_DEFINED 1
+OBJC_EXPORT void objc_setHook_getClass(objc_hook_getClass _Nonnull newValue,
+ objc_hook_getClass _Nullable * _Nonnull outOldValue)
+ OBJC_AVAILABLE(10.14.4, 12.2, 12.2, 5.2, 3.2);
+#endif
+
+/**
+ * Function type for a function that is called when an image is loaded.
+ *
+ * @param header The newly loaded header.
+ */
+struct mach_header;
+typedef void (*objc_func_loadImage)(const struct mach_header * _Nonnull header);
+
+/**
+ * Add a function to be called when a new image is loaded. The function is
+ * called after ObjC has scanned and fixed up the image. It is called
+ * BEFORE +load methods are invoked.
+ *
+ * When adding a new function, that function is immediately called with all
+ * images that are currently loaded. It is then called as needed for images
+ * that are loaded afterwards.
+ *
+ * Note: the function is called with ObjC's internal runtime lock held.
+ * Be VERY careful with what the function does to avoid deadlocks or
+ * poor performance.
+ *
+ * @param func The function to add.
+ */
+#define OBJC_ADDLOADIMAGEFUNC_DEFINED 1
+OBJC_EXPORT void objc_addLoadImageFunc(objc_func_loadImage _Nonnull func)
+ OBJC_AVAILABLE(10.15, 13.0, 13.0, 6.0, 4.0);
+
+/**
+ * Function type for a hook that provides a name for lazily named classes.
+ *
+ * @param cls The class to generate a name for.
+ * @return The name of the class, or NULL if the name isn't known or can't me generated.
+ *
+ * @see objc_setHook_lazyClassNamer
+ */
+typedef const char * _Nullable (*objc_hook_lazyClassNamer)(_Nonnull Class cls);
+
+/**
+ * Install a hook to provide a name for lazily-named classes.
+ *
+ * @param newValue The hook function to install.
+ * @param outOldValue The address of a function pointer variable. On return,
+ * the old hook function is stored in the variable.
+ *
+ * @note The store to *outOldValue is thread-safe: the variable will be
+ * updated before objc_getClass() calls your new hook to read it,
+ * even if your new hook is called from another thread before this
+ * setter completes.
+ * @note Your hook must call the previous hook for class names
+ * that you do not recognize.
+ */
+#if !(TARGET_OS_OSX && __i386__)
+#define OBJC_SETHOOK_LAZYCLASSNAMER_DEFINED 1
+OBJC_EXPORT
+void objc_setHook_lazyClassNamer(_Nonnull objc_hook_lazyClassNamer newValue,
+ _Nonnull objc_hook_lazyClassNamer * _Nonnull oldOutValue)
+ OBJC_AVAILABLE(11.0, 14.0, 14.0, 7.0, 5.0);
+#endif
+
+/**
+ * Callback from Objective-C to Swift to perform Swift class initialization.
+ */
+#if !(TARGET_OS_OSX && __i386__)
+typedef Class _Nullable
+(*_objc_swiftMetadataInitializer)(Class _Nonnull cls, void * _Nullable arg);
+#endif
+
+
+/**
+ * Perform Objective-C initialization of a Swift class.
+ * Do not call this function. It is provided for the Swift runtime's use only
+ * and will change without notice or mercy.
+ */
+#if !(TARGET_OS_OSX && __i386__)
+#define OBJC_REALIZECLASSFROMSWIFT_DEFINED 1
+OBJC_EXPORT Class _Nullable
+_objc_realizeClassFromSwift(Class _Nullable cls, void * _Nullable previously)
+ OBJC_AVAILABLE(10.14.4, 12.2, 12.2, 5.2, 3.2);
+#endif
+
+
+#define _C_ID '@'
+#define _C_CLASS '#'
+#define _C_SEL ':'
+#define _C_CHR 'c'
+#define _C_UCHR 'C'
+#define _C_SHT 's'
+#define _C_USHT 'S'
+#define _C_INT 'i'
+#define _C_UINT 'I'
+#define _C_LNG 'l'
+#define _C_ULNG 'L'
+#define _C_LNG_LNG 'q'
+#define _C_ULNG_LNG 'Q'
+#define _C_FLT 'f'
+#define _C_DBL 'd'
+#define _C_BFLD 'b'
+#define _C_BOOL 'B'
+#define _C_VOID 'v'
+#define _C_UNDEF '?'
+#define _C_PTR '^'
+#define _C_CHARPTR '*'
+#define _C_ATOM '%'
+#define _C_ARY_B '['
+#define _C_ARY_E ']'
+#define _C_UNION_B '('
+#define _C_UNION_E ')'
+#define _C_STRUCT_B '{'
+#define _C_STRUCT_E '}'
+#define _C_VECTOR '!'
+#define _C_CONST 'r'
+
+
+/* Obsolete types */
+
+#if !__OBJC2__
+
+#define CLS_GETINFO(cls,infomask) ((cls)->info & (infomask))
+#define CLS_SETINFO(cls,infomask) ((cls)->info |= (infomask))
+
+// class is not a metaclass
+#define CLS_CLASS 0x1
+// class is a metaclass
+#define CLS_META 0x2
+// class's +initialize method has completed
+#define CLS_INITIALIZED 0x4
+// class is posing
+#define CLS_POSING 0x8
+// unused
+#define CLS_MAPPED 0x10
+// class and subclasses need cache flush during image loading
+#define CLS_FLUSH_CACHE 0x20
+// method cache should grow when full
+#define CLS_GROW_CACHE 0x40
+// unused
+#define CLS_NEED_BIND 0x80
+// methodLists is array of method lists
+#define CLS_METHOD_ARRAY 0x100
+// the JavaBridge constructs classes with these markers
+#define CLS_JAVA_HYBRID 0x200
+#define CLS_JAVA_CLASS 0x400
+// thread-safe +initialize
+#define CLS_INITIALIZING 0x800
+// bundle unloading
+#define CLS_FROM_BUNDLE 0x1000
+// C++ ivar support
+#define CLS_HAS_CXX_STRUCTORS 0x2000
+// Lazy method list arrays
+#define CLS_NO_METHOD_ARRAY 0x4000
+// +load implementation
+#define CLS_HAS_LOAD_METHOD 0x8000
+// objc_allocateClassPair API
+#define CLS_CONSTRUCTING 0x10000
+// class compiled with bigger class structure
+#define CLS_EXT 0x20000
+
+
+struct objc_method_description_list {
+ int count;
+ struct objc_method_description list[1];
+};
+
+
+struct objc_protocol_list {
+ struct objc_protocol_list * _Nullable next;
+ long count;
+ __unsafe_unretained Protocol * _Nullable list[1];
+};
+
+
+struct objc_category {
+ char * _Nonnull category_name OBJC2_UNAVAILABLE;
+ char * _Nonnull class_name OBJC2_UNAVAILABLE;
+ struct objc_method_list * _Nullable instance_methods OBJC2_UNAVAILABLE;
+ struct objc_method_list * _Nullable class_methods OBJC2_UNAVAILABLE;
+ struct objc_protocol_list * _Nullable protocols OBJC2_UNAVAILABLE;
+} OBJC2_UNAVAILABLE;
+
+
+struct objc_ivar {
+ char * _Nullable ivar_name OBJC2_UNAVAILABLE;
+ char * _Nullable ivar_type OBJC2_UNAVAILABLE;
+ int ivar_offset OBJC2_UNAVAILABLE;
+#ifdef __LP64__
+ int space OBJC2_UNAVAILABLE;
+#endif
+} OBJC2_UNAVAILABLE;
+
+struct objc_ivar_list {
+ int ivar_count OBJC2_UNAVAILABLE;
+#ifdef __LP64__
+ int space OBJC2_UNAVAILABLE;
+#endif
+ /* variable length structure */
+ struct objc_ivar ivar_list[1] OBJC2_UNAVAILABLE;
+} OBJC2_UNAVAILABLE;
+
+
+struct objc_method {
+ SEL _Nonnull method_name OBJC2_UNAVAILABLE;
+ char * _Nullable method_types OBJC2_UNAVAILABLE;
+ IMP _Nonnull method_imp OBJC2_UNAVAILABLE;
+} OBJC2_UNAVAILABLE;
+
+struct objc_method_list {
+ struct objc_method_list * _Nullable obsolete OBJC2_UNAVAILABLE;
+
+ int method_count OBJC2_UNAVAILABLE;
+#ifdef __LP64__
+ int space OBJC2_UNAVAILABLE;
+#endif
+ /* variable length structure */
+ struct objc_method method_list[1] OBJC2_UNAVAILABLE;
+} OBJC2_UNAVAILABLE;
+
+
+typedef struct objc_symtab *Symtab OBJC2_UNAVAILABLE;
+
+struct objc_symtab {
+ unsigned long sel_ref_cnt OBJC2_UNAVAILABLE;
+ SEL _Nonnull * _Nullable refs OBJC2_UNAVAILABLE;
+ unsigned short cls_def_cnt OBJC2_UNAVAILABLE;
+ unsigned short cat_def_cnt OBJC2_UNAVAILABLE;
+ void * _Nullable defs[1] /* variable size */ OBJC2_UNAVAILABLE;
+} OBJC2_UNAVAILABLE;
+
+
+typedef struct objc_cache *Cache OBJC2_UNAVAILABLE;
+
+#define CACHE_BUCKET_NAME(B) ((B)->method_name)
+#define CACHE_BUCKET_IMP(B) ((B)->method_imp)
+#define CACHE_BUCKET_VALID(B) (B)
+#ifndef __LP64__
+#define CACHE_HASH(sel, mask) (((uintptr_t)(sel)>>2) & (mask))
+#else
+#define CACHE_HASH(sel, mask) (((unsigned int)((uintptr_t)(sel)>>3)) & (mask))
+#endif
+struct objc_cache {
+ unsigned int mask /* total = mask + 1 */ OBJC2_UNAVAILABLE;
+ unsigned int occupied OBJC2_UNAVAILABLE;
+ Method _Nullable buckets[1] OBJC2_UNAVAILABLE;
+};
+
+
+typedef struct objc_module *Module OBJC2_UNAVAILABLE;
+
+struct objc_module {
+ unsigned long version OBJC2_UNAVAILABLE;
+ unsigned long size OBJC2_UNAVAILABLE;
+ const char * _Nullable name OBJC2_UNAVAILABLE;
+ Symtab _Nullable symtab OBJC2_UNAVAILABLE;
+} OBJC2_UNAVAILABLE;
+
+#else
+
+struct objc_method_list;
+
+#endif
+
+
+/* Obsolete functions */
+
+OBJC_EXPORT IMP _Nullable
+class_lookupMethod(Class _Nullable cls, SEL _Nonnull sel)
+ __OSX_DEPRECATED(10.0, 10.5, "use class_getMethodImplementation instead")
+ __IOS_DEPRECATED(2.0, 2.0, "use class_getMethodImplementation instead")
+ __TVOS_DEPRECATED(9.0, 9.0, "use class_getMethodImplementation instead")
+ __WATCHOS_DEPRECATED(1.0, 1.0, "use class_getMethodImplementation instead")
+
+;
+OBJC_EXPORT BOOL
+class_respondsToMethod(Class _Nullable cls, SEL _Nonnull sel)
+ __OSX_DEPRECATED(10.0, 10.5, "use class_respondsToSelector instead")
+ __IOS_DEPRECATED(2.0, 2.0, "use class_respondsToSelector instead")
+ __TVOS_DEPRECATED(9.0, 9.0, "use class_respondsToSelector instead")
+ __WATCHOS_DEPRECATED(1.0, 1.0, "use class_respondsToSelector instead")
+
+;
+
+OBJC_EXPORT void
+_objc_flush_caches(Class _Nullable cls)
+ __OSX_DEPRECATED(10.0, 10.5, "not recommended")
+ __IOS_DEPRECATED(2.0, 2.0, "not recommended")
+ __TVOS_DEPRECATED(9.0, 9.0, "not recommended")
+ __WATCHOS_DEPRECATED(1.0, 1.0, "not recommended")
+
+;
+
+OBJC_EXPORT id _Nullable
+object_copyFromZone(id _Nullable anObject, size_t nBytes, void * _Nullable z)
+ OBJC_OSX_DEPRECATED_OTHERS_UNAVAILABLE(10.0, 10.5, "use object_copy instead");
+
+OBJC_EXPORT id _Nullable
+object_realloc(id _Nullable anObject, size_t nBytes)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id _Nullable
+object_reallocFromZone(id _Nullable anObject, size_t nBytes, void * _Nullable z)
+ OBJC2_UNAVAILABLE;
+
+#define OBSOLETE_OBJC_GETCLASSES 1
+OBJC_EXPORT void * _Nonnull
+objc_getClasses(void)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT void
+objc_addClass(Class _Nonnull myClass)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT void
+objc_setClassHandler(int (* _Nullable )(const char * _Nonnull))
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT void
+objc_setMultithreaded(BOOL flag)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id _Nullable
+class_createInstanceFromZone(Class _Nullable, size_t idxIvars,
+ void * _Nullable z)
+ OBJC_OSX_DEPRECATED_OTHERS_UNAVAILABLE(10.0, 10.5, "use class_createInstance instead");
+
+OBJC_EXPORT void
+class_addMethods(Class _Nullable, struct objc_method_list * _Nonnull)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT void
+class_removeMethods(Class _Nullable, struct objc_method_list * _Nonnull)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT void
+_objc_resolve_categories_for_class(Class _Nonnull cls)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT Class _Nonnull
+class_poseAs(Class _Nonnull imposter, Class _Nonnull original)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT unsigned int
+method_getSizeOfArguments(Method _Nonnull m)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT unsigned
+method_getArgumentInfo(struct objc_method * _Nonnull m, int arg,
+ const char * _Nullable * _Nonnull type,
+ int * _Nonnull offset)
+ UNAVAILABLE_ATTRIBUTE // This function was accidentally deleted in 10.9.
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT Class _Nullable
+objc_getOrigClass(const char * _Nonnull name)
+ OBJC2_UNAVAILABLE;
+
+#define OBJC_NEXT_METHOD_LIST 1
+OBJC_EXPORT struct objc_method_list * _Nullable
+class_nextMethodList(Class _Nullable, void * _Nullable * _Nullable)
+ OBJC2_UNAVAILABLE;
+// usage for nextMethodList
+//
+// void *iterator = 0;
+// struct objc_method_list *mlist;
+// while ( mlist = class_nextMethodList( cls, &iterator ) )
+// ;
+
+OBJC_EXPORT id _Nullable
+(* _Nonnull _alloc)(Class _Nullable, size_t)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id _Nullable
+(* _Nonnull _copy)(id _Nullable, size_t)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id _Nullable
+(* _Nonnull _realloc)(id _Nullable, size_t)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id _Nullable
+(* _Nonnull _dealloc)(id _Nullable)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id _Nullable
+(* _Nonnull _zoneAlloc)(Class _Nullable, size_t, void * _Nullable)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id _Nullable
+(* _Nonnull _zoneRealloc)(id _Nullable, size_t, void * _Nullable)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id _Nullable
+(* _Nonnull _zoneCopy)(id _Nullable, size_t, void * _Nullable)
+ OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT void
+(* _Nonnull _error)(id _Nullable, const char * _Nonnull, va_list)
+ OBJC2_UNAVAILABLE;
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/os/base.h b/lib/libc/include/aarch64-macos-gnu/os/base.h
new file mode 100644
index 0000000000..a630138a10
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/os/base.h
@@ -0,0 +1,322 @@
+/*
+ * Copyright (c) 2008-2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __OS_BASE__
+#define __OS_BASE__
+
+#include <sys/cdefs.h>
+
+
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+#ifndef __has_include
+#define __has_include(x) 0
+#endif
+#ifndef __has_feature
+#define __has_feature(x) 0
+#endif
+#ifndef __has_attribute
+#define __has_attribute(x) 0
+#endif
+#ifndef __has_extension
+#define __has_extension(x) 0
+#endif
+
+#undef OS_INLINE // <sys/_types/_os_inline.h>
+#if __GNUC__
+#define OS_NORETURN __attribute__((__noreturn__))
+#define OS_NOTHROW __attribute__((__nothrow__))
+#define OS_NONNULL1 __attribute__((__nonnull__(1)))
+#define OS_NONNULL2 __attribute__((__nonnull__(2)))
+#define OS_NONNULL3 __attribute__((__nonnull__(3)))
+#define OS_NONNULL4 __attribute__((__nonnull__(4)))
+#define OS_NONNULL5 __attribute__((__nonnull__(5)))
+#define OS_NONNULL6 __attribute__((__nonnull__(6)))
+#define OS_NONNULL7 __attribute__((__nonnull__(7)))
+#define OS_NONNULL8 __attribute__((__nonnull__(8)))
+#define OS_NONNULL9 __attribute__((__nonnull__(9)))
+#define OS_NONNULL10 __attribute__((__nonnull__(10)))
+#define OS_NONNULL11 __attribute__((__nonnull__(11)))
+#define OS_NONNULL12 __attribute__((__nonnull__(12)))
+#define OS_NONNULL13 __attribute__((__nonnull__(13)))
+#define OS_NONNULL14 __attribute__((__nonnull__(14)))
+#define OS_NONNULL15 __attribute__((__nonnull__(15)))
+#define OS_NONNULL_ALL __attribute__((__nonnull__))
+#define OS_SENTINEL __attribute__((__sentinel__))
+#define OS_PURE __attribute__((__pure__))
+#define OS_CONST __attribute__((__const__))
+#define OS_WARN_RESULT __attribute__((__warn_unused_result__))
+#define OS_MALLOC __attribute__((__malloc__))
+#define OS_USED __attribute__((__used__))
+#define OS_UNUSED __attribute__((__unused__))
+#define OS_COLD __attribute__((__cold__))
+#define OS_WEAK __attribute__((__weak__))
+#define OS_WEAK_IMPORT __attribute__((__weak_import__))
+#define OS_NOINLINE __attribute__((__noinline__))
+#define OS_ALWAYS_INLINE __attribute__((__always_inline__))
+#define OS_TRANSPARENT_UNION __attribute__((__transparent_union__))
+#define OS_ALIGNED(n) __attribute__((__aligned__((n))))
+#define OS_FORMAT_PRINTF(x, y) __attribute__((__format__(printf,x,y)))
+#define OS_EXPORT extern __attribute__((__visibility__("default")))
+#define OS_INLINE static __inline__
+#define OS_EXPECT(x, v) __builtin_expect((x), (v))
+#else
+#define OS_NORETURN
+#define OS_NOTHROW
+#define OS_NONNULL1
+#define OS_NONNULL2
+#define OS_NONNULL3
+#define OS_NONNULL4
+#define OS_NONNULL5
+#define OS_NONNULL6
+#define OS_NONNULL7
+#define OS_NONNULL8
+#define OS_NONNULL9
+#define OS_NONNULL10
+#define OS_NONNULL11
+#define OS_NONNULL12
+#define OS_NONNULL13
+#define OS_NONNULL14
+#define OS_NONNULL15
+#define OS_NONNULL_ALL
+#define OS_SENTINEL
+#define OS_PURE
+#define OS_CONST
+#define OS_WARN_RESULT
+#define OS_MALLOC
+#define OS_USED
+#define OS_UNUSED
+#define OS_COLD
+#define OS_WEAK
+#define OS_WEAK_IMPORT
+#define OS_NOINLINE
+#define OS_ALWAYS_INLINE
+#define OS_TRANSPARENT_UNION
+#define OS_ALIGNED(n)
+#define OS_FORMAT_PRINTF(x, y)
+#define OS_EXPORT extern
+#define OS_INLINE static inline
+#define OS_EXPECT(x, v) (x)
+#endif
+
+#if __has_attribute(noescape)
+#define OS_NOESCAPE __attribute__((__noescape__))
+#else
+#define OS_NOESCAPE
+#endif
+
+#if defined(__cplusplus) && defined(__clang__)
+#define OS_FALLTHROUGH [[clang::fallthrough]]
+#elif __has_attribute(fallthrough)
+#define OS_FALLTHROUGH __attribute__((__fallthrough__))
+#else
+#define OS_FALLTHROUGH
+#endif
+
+#if __has_feature(assume_nonnull)
+#define OS_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
+#define OS_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
+#else
+#define OS_ASSUME_NONNULL_BEGIN
+#define OS_ASSUME_NONNULL_END
+#endif
+
+#if __has_builtin(__builtin_assume)
+#define OS_COMPILER_CAN_ASSUME(expr) __builtin_assume(expr)
+#else
+#define OS_COMPILER_CAN_ASSUME(expr) ((void)(expr))
+#endif
+
+#if __has_extension(attribute_overloadable)
+#define OS_OVERLOADABLE __attribute__((__overloadable__))
+#else
+#define OS_OVERLOADABLE
+#endif
+
+#if __has_attribute(enum_extensibility)
+#define __OS_ENUM_ATTR __attribute__((enum_extensibility(open)))
+#define __OS_ENUM_ATTR_CLOSED __attribute__((enum_extensibility(closed)))
+#else
+#define __OS_ENUM_ATTR
+#define __OS_ENUM_ATTR_CLOSED
+#endif // __has_attribute(enum_extensibility)
+
+#if __has_attribute(flag_enum)
+/*!
+ * Compile with -Wflag-enum and -Wassign-enum to enforce at definition and
+ * assignment, respectively, i.e. -Wflag-enum prevents you from creating new
+ * enumeration values from illegal values within the enum definition, and
+ * -Wassign-enum prevents you from assigning illegal values to a variable of the
+ * enum type.
+ */
+#define __OS_OPTIONS_ATTR __attribute__((flag_enum))
+#else
+#define __OS_OPTIONS_ATTR
+#endif // __has_attribute(flag_enum)
+
+#if __has_feature(objc_fixed_enum) || __has_extension(cxx_fixed_enum) || \
+ __has_extension(cxx_strong_enums)
+#define OS_ENUM(_name, _type, ...) \
+ typedef enum : _type { __VA_ARGS__ } _name##_t
+#define OS_CLOSED_ENUM(_name, _type, ...) \
+ typedef enum : _type { __VA_ARGS__ } __OS_ENUM_ATTR_CLOSED _name##_t
+#define OS_OPTIONS(_name, _type, ...) \
+ typedef enum : _type { __VA_ARGS__ } __OS_ENUM_ATTR __OS_OPTIONS_ATTR _name##_t
+#define OS_CLOSED_OPTIONS(_name, _type, ...) \
+ typedef enum : _type { __VA_ARGS__ } __OS_ENUM_ATTR_CLOSED __OS_OPTIONS_ATTR _name##_t
+#else
+/*!
+ * There is unfortunately no good way in plain C to have both fixed-type enums
+ * and enforcement for clang's enum_extensibility extensions. The primary goal
+ * of these macros is to allow you to define an enum and specify its width in a
+ * single statement, and for plain C that is accomplished by defining an
+ * anonymous enum and then separately typedef'ing the requested type name to the
+ * requested underlying integer type. So the type emitted actually has no
+ * relationship at all to the enum, and therefore while the compiler could
+ * enforce enum extensibility if you used the enum type, it cannot do so if you
+ * use the "_t" type resulting from this expression.
+ *
+ * But we still define a named enum type and decorate it appropriately for you,
+ * so if you really want the enum extensibility enforcement, you can use the
+ * enum type yourself, i.e. when compiling with a C compiler:
+ *
+ * OS_CLOSED_ENUM(my_type, uint64_t,
+ * FOO,
+ * BAR,
+ * BAZ,
+ * );
+ *
+ * my_type_t mt = 98; // legal
+ * enum my_type emt = 98; // illegal
+ *
+ * But be aware that the underlying enum type's width is subject only to the C
+ * language's guarantees -- namely that it will be compatible with int, char,
+ * and unsigned char. It is not safe to rely on the size of this type.
+ *
+ * When compiling in ObjC or C++, both of the above assignments are illegal.
+ */
+#define __OS_ENUM_C_FALLBACK(_name, _type, ...) \
+ typedef _type _name##_t; enum _name { __VA_ARGS__ }
+
+#define OS_ENUM(_name, _type, ...) \
+ typedef _type _name##_t; enum { __VA_ARGS__ }
+#define OS_CLOSED_ENUM(_name, _type, ...) \
+ __OS_ENUM_C_FALLBACK(_name, _type, ## __VA_ARGS__) \
+ __OS_ENUM_ATTR_CLOSED
+#define OS_OPTIONS(_name, _type, ...) \
+ __OS_ENUM_C_FALLBACK(_name, _type, ## __VA_ARGS__) \
+ __OS_ENUM_ATTR __OS_OPTIONS_ATTR
+#define OS_CLOSED_OPTIONS(_name, _type, ...) \
+ __OS_ENUM_C_FALLBACK(_name, _type, ## __VA_ARGS__) \
+ __OS_ENUM_ATTR_CLOSED __OS_OPTIONS_ATTR
+#endif // __has_feature(objc_fixed_enum) || __has_extension(cxx_strong_enums)
+
+#if __has_feature(attribute_availability_swift)
+// equivalent to __SWIFT_UNAVAILABLE from Availability.h
+#define OS_SWIFT_UNAVAILABLE(_msg) \
+ __attribute__((__availability__(swift, unavailable, message=_msg)))
+#else
+#define OS_SWIFT_UNAVAILABLE(_msg)
+#endif
+
+#if __has_attribute(swift_private)
+# define OS_REFINED_FOR_SWIFT __attribute__((__swift_private__))
+#else
+# define OS_REFINED_FOR_SWIFT
+#endif
+
+#if __has_attribute(swift_name)
+# define OS_SWIFT_NAME(_name) __attribute__((__swift_name__(#_name)))
+#else
+# define OS_SWIFT_NAME(_name)
+#endif
+
+#define __OS_STRINGIFY(s) #s
+#define OS_STRINGIFY(s) __OS_STRINGIFY(s)
+#define __OS_CONCAT(x, y) x ## y
+#define OS_CONCAT(x, y) __OS_CONCAT(x, y)
+
+#ifdef __GNUC__
+#define os_prevent_tail_call_optimization() __asm__("")
+#define os_is_compile_time_constant(expr) __builtin_constant_p(expr)
+#define os_compiler_barrier() __asm__ __volatile__("" ::: "memory")
+#else
+#define os_prevent_tail_call_optimization() do { } while (0)
+#define os_is_compile_time_constant(expr) 0
+#define os_compiler_barrier() do { } while (0)
+#endif
+
+#if __has_attribute(not_tail_called)
+#define OS_NOT_TAIL_CALLED __attribute__((__not_tail_called__))
+#else
+#define OS_NOT_TAIL_CALLED
+#endif
+
+
+typedef void (*os_function_t)(void *_Nullable);
+
+#ifdef __BLOCKS__
+/*!
+ * @typedef os_block_t
+ *
+ * @abstract
+ * Generic type for a block taking no arguments and returning no value.
+ *
+ * @discussion
+ * When not building with Objective-C ARC, a block object allocated on or
+ * copied to the heap must be released with a -[release] message or the
+ * Block_release() function.
+ *
+ * The declaration of a block literal allocates storage on the stack.
+ * Therefore, this is an invalid construct:
+ * <code>
+ * os_block_t block;
+ * if (x) {
+ * block = ^{ printf("true\n"); };
+ * } else {
+ * block = ^{ printf("false\n"); };
+ * }
+ * block(); // unsafe!!!
+ * </code>
+ *
+ * What is happening behind the scenes:
+ * <code>
+ * if (x) {
+ * struct Block __tmp_1 = ...; // setup details
+ * block = &__tmp_1;
+ * } else {
+ * struct Block __tmp_2 = ...; // setup details
+ * block = &__tmp_2;
+ * }
+ * </code>
+ *
+ * As the example demonstrates, the address of a stack variable is escaping the
+ * scope in which it is allocated. That is a classic C bug.
+ *
+ * Instead, the block literal must be copied to the heap with the Block_copy()
+ * function or by sending it a -[copy] message.
+ */
+typedef void (^os_block_t)(void);
+#endif
+
+
+
+#endif // __OS_BASE__ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/os/clock.h b/lib/libc/include/aarch64-macos-gnu/os/clock.h
new file mode 100644
index 0000000000..2217dd6ef5
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/os/clock.h
@@ -0,0 +1,18 @@
+#ifndef __OS_CLOCK__
+#define __OS_CLOCK__
+
+#include <os/base.h>
+#include <stdint.h>
+
+/*
+ * @typedef os_clockid_t
+ *
+ * @abstract
+ * Describes the kind of clock that the workgroup timestamp parameters are
+ * specified in
+ */
+OS_ENUM(os_clockid, uint32_t,
+ OS_CLOCK_MACH_ABSOLUTE_TIME = 32,
+);
+
+#endif /* __OS_CLOCK__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/os/object.h b/lib/libc/include/aarch64-macos-gnu/os/object.h
new file mode 100644
index 0000000000..b378cab8ae
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/os/object.h
@@ -0,0 +1,303 @@
+/*
+ * Copyright (c) 2011-2014 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __OS_OBJECT__
+#define __OS_OBJECT__
+
+#ifdef __APPLE__
+#include <Availability.h>
+#include <os/availability.h>
+#include <TargetConditionals.h>
+#include <os/base.h>
+#elif defined(_WIN32)
+#include <os/generic_win_base.h>
+#elif defined(__unix__)
+#include <os/generic_unix_base.h>
+#endif
+
+/*!
+ * @header
+ *
+ * @preprocinfo
+ * By default, libSystem objects such as GCD and XPC objects are declared as
+ * Objective-C types when building with an Objective-C compiler. This allows
+ * them to participate in ARC, in RR management by the Blocks runtime and in
+ * leaks checking by the static analyzer, and enables them to be added to Cocoa
+ * collections.
+ *
+ * NOTE: this requires explicit cancellation of dispatch sources and xpc
+ * connections whose handler blocks capture the source/connection object,
+ * resp. ensuring that such captures do not form retain cycles (e.g. by
+ * declaring the source as __weak).
+ *
+ * To opt-out of this default behavior, add -DOS_OBJECT_USE_OBJC=0 to your
+ * compiler flags.
+ *
+ * This mode requires a platform with the modern Objective-C runtime, the
+ * Objective-C GC compiler option to be disabled, and at least a Mac OS X 10.8
+ * or iOS 6.0 deployment target.
+ */
+
+#ifndef OS_OBJECT_HAVE_OBJC_SUPPORT
+#if !defined(__OBJC__) || defined(__OBJC_GC__)
+# define OS_OBJECT_HAVE_OBJC_SUPPORT 0
+#elif !defined(TARGET_OS_MAC) || !TARGET_OS_MAC
+# define OS_OBJECT_HAVE_OBJC_SUPPORT 0
+#elif TARGET_OS_IOS && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_6_0
+# define OS_OBJECT_HAVE_OBJC_SUPPORT 0
+#elif TARGET_OS_MAC && !TARGET_OS_IPHONE
+# if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_8
+# define OS_OBJECT_HAVE_OBJC_SUPPORT 0
+# elif defined(__i386__) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_12
+# define OS_OBJECT_HAVE_OBJC_SUPPORT 0
+# else
+# define OS_OBJECT_HAVE_OBJC_SUPPORT 1
+# endif
+#else
+# define OS_OBJECT_HAVE_OBJC_SUPPORT 1
+#endif
+#endif // OS_OBJECT_HAVE_OBJC_SUPPORT
+
+#if OS_OBJECT_HAVE_OBJC_SUPPORT
+#if defined(__swift__) && __swift__ && !OS_OBJECT_USE_OBJC
+#define OS_OBJECT_USE_OBJC 1
+#endif
+#ifndef OS_OBJECT_USE_OBJC
+#define OS_OBJECT_USE_OBJC 1
+#endif
+#elif defined(OS_OBJECT_USE_OBJC) && OS_OBJECT_USE_OBJC
+/* Unsupported platform for OS_OBJECT_USE_OBJC=1 */
+#undef OS_OBJECT_USE_OBJC
+#define OS_OBJECT_USE_OBJC 0
+#else
+#define OS_OBJECT_USE_OBJC 0
+#endif
+
+#ifndef OS_OBJECT_SWIFT3
+#ifdef __swift__
+#define OS_OBJECT_SWIFT3 1
+#else // __swift__
+#define OS_OBJECT_SWIFT3 0
+#endif // __swift__
+#endif // OS_OBJECT_SWIFT3
+
+#if __has_feature(assume_nonnull)
+#define OS_OBJECT_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
+#define OS_OBJECT_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
+#else
+#define OS_OBJECT_ASSUME_NONNULL_BEGIN
+#define OS_OBJECT_ASSUME_NONNULL_END
+#endif
+#define OS_OBJECT_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
+
+#if OS_OBJECT_USE_OBJC
+#import <objc/NSObject.h>
+#if __has_attribute(objc_independent_class)
+#define OS_OBJC_INDEPENDENT_CLASS __attribute__((objc_independent_class))
+#endif // __has_attribute(objc_independent_class)
+#ifndef OS_OBJC_INDEPENDENT_CLASS
+#define OS_OBJC_INDEPENDENT_CLASS
+#endif
+#define OS_OBJECT_CLASS(name) OS_##name
+#define OS_OBJECT_DECL_PROTOCOL(name, ...) \
+ @protocol OS_OBJECT_CLASS(name) __VA_ARGS__ \
+ @end
+#define OS_OBJECT_CLASS_IMPLEMENTS_PROTOCOL_IMPL(name, proto) \
+ @interface name () <proto> \
+ @end
+#define OS_OBJECT_CLASS_IMPLEMENTS_PROTOCOL(name, proto) \
+ OS_OBJECT_CLASS_IMPLEMENTS_PROTOCOL_IMPL( \
+ OS_OBJECT_CLASS(name), OS_OBJECT_CLASS(proto))
+#define OS_OBJECT_DECL_IMPL(name, adhere, ...) \
+ OS_OBJECT_DECL_PROTOCOL(name, __VA_ARGS__) \
+ typedef adhere<OS_OBJECT_CLASS(name)> \
+ * OS_OBJC_INDEPENDENT_CLASS name##_t
+#define OS_OBJECT_DECL_BASE(name, ...) \
+ @interface OS_OBJECT_CLASS(name) : __VA_ARGS__ \
+ - (instancetype)init OS_SWIFT_UNAVAILABLE("Unavailable in Swift"); \
+ @end
+#define OS_OBJECT_DECL_IMPL_CLASS(name, ...) \
+ OS_OBJECT_DECL_BASE(name, ## __VA_ARGS__) \
+ typedef OS_OBJECT_CLASS(name) \
+ * OS_OBJC_INDEPENDENT_CLASS name##_t
+#define OS_OBJECT_DECL(name, ...) \
+ OS_OBJECT_DECL_IMPL(name, NSObject, <NSObject>)
+#define OS_OBJECT_DECL_SUBCLASS(name, super) \
+ OS_OBJECT_DECL_IMPL(name, NSObject, <OS_OBJECT_CLASS(super)>)
+#if __has_attribute(ns_returns_retained)
+#define OS_OBJECT_RETURNS_RETAINED __attribute__((__ns_returns_retained__))
+#else
+#define OS_OBJECT_RETURNS_RETAINED
+#endif
+#if __has_attribute(ns_consumed)
+#define OS_OBJECT_CONSUMED __attribute__((__ns_consumed__))
+#else
+#define OS_OBJECT_CONSUMED
+#endif
+#if __has_feature(objc_arc)
+#define OS_OBJECT_BRIDGE __bridge
+#define OS_WARN_RESULT_NEEDS_RELEASE
+#else
+#define OS_OBJECT_BRIDGE
+#define OS_WARN_RESULT_NEEDS_RELEASE OS_WARN_RESULT
+#endif
+
+
+#if __has_attribute(objc_runtime_visible) && \
+ ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \
+ __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_12) || \
+ (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && \
+ !defined(__TV_OS_VERSION_MIN_REQUIRED) && \
+ !defined(__WATCH_OS_VERSION_MIN_REQUIRED) && \
+ __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0) || \
+ (defined(__TV_OS_VERSION_MIN_REQUIRED) && \
+ __TV_OS_VERSION_MIN_REQUIRED < __TVOS_10_0) || \
+ (defined(__WATCH_OS_VERSION_MIN_REQUIRED) && \
+ __WATCH_OS_VERSION_MIN_REQUIRED < __WATCHOS_3_0))
+/*
+ * To provide backward deployment of ObjC objects in Swift on pre-10.12
+ * SDKs, OS_object classes can be marked as OS_OBJECT_OBJC_RUNTIME_VISIBLE.
+ * When compiling with a deployment target earlier than OS X 10.12 (iOS 10.0,
+ * tvOS 10.0, watchOS 3.0) the Swift compiler will only refer to this type at
+ * runtime (using the ObjC runtime).
+ */
+#define OS_OBJECT_OBJC_RUNTIME_VISIBLE __attribute__((objc_runtime_visible))
+#else
+#define OS_OBJECT_OBJC_RUNTIME_VISIBLE
+#endif
+#ifndef OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+#if defined(__clang_analyzer__)
+#define OS_OBJECT_USE_OBJC_RETAIN_RELEASE 1
+#elif __has_feature(objc_arc) && !OS_OBJECT_SWIFT3
+#define OS_OBJECT_USE_OBJC_RETAIN_RELEASE 1
+#else
+#define OS_OBJECT_USE_OBJC_RETAIN_RELEASE 0
+#endif
+#endif
+#if OS_OBJECT_SWIFT3
+#define OS_OBJECT_DECL_SWIFT(name) \
+ OS_EXPORT OS_OBJECT_OBJC_RUNTIME_VISIBLE \
+ OS_OBJECT_DECL_IMPL_CLASS(name, NSObject)
+#define OS_OBJECT_DECL_SUBCLASS_SWIFT(name, super) \
+ OS_EXPORT OS_OBJECT_OBJC_RUNTIME_VISIBLE \
+ OS_OBJECT_DECL_IMPL_CLASS(name, OS_OBJECT_CLASS(super))
+#endif // OS_OBJECT_SWIFT3
+OS_EXPORT OS_OBJECT_OBJC_RUNTIME_VISIBLE
+OS_OBJECT_DECL_BASE(object, NSObject);
+#else
+/*! @parseOnly */
+#define OS_OBJECT_RETURNS_RETAINED
+/*! @parseOnly */
+#define OS_OBJECT_CONSUMED
+/*! @parseOnly */
+#define OS_OBJECT_BRIDGE
+/*! @parseOnly */
+#define OS_WARN_RESULT_NEEDS_RELEASE OS_WARN_RESULT
+/*! @parseOnly */
+#define OS_OBJECT_OBJC_RUNTIME_VISIBLE
+#define OS_OBJECT_USE_OBJC_RETAIN_RELEASE 0
+#endif
+
+#if OS_OBJECT_SWIFT3
+#define OS_OBJECT_DECL_CLASS(name) \
+ OS_OBJECT_DECL_SUBCLASS_SWIFT(name, object)
+#elif OS_OBJECT_USE_OBJC
+#define OS_OBJECT_DECL_CLASS(name) \
+ OS_OBJECT_DECL(name)
+#else
+#define OS_OBJECT_DECL_CLASS(name) \
+ typedef struct name##_s *name##_t
+#endif
+
+#if OS_OBJECT_USE_OBJC
+/* Declares a class of the specific name and exposes the interface and typedefs
+ * name##_t to the pointer to the class */
+#define OS_OBJECT_SHOW_CLASS(name, ...) \
+ OS_EXPORT OS_OBJECT_OBJC_RUNTIME_VISIBLE \
+ OS_OBJECT_DECL_IMPL_CLASS(name, ## __VA_ARGS__ )
+/* Declares a subclass of the same name, and
+ * subclass adheres to protocol specified. Typedefs baseclass<proto> * to subclass##_t */
+#define OS_OBJECT_SHOW_SUBCLASS(subclass_name, super, proto_name) \
+ OS_EXPORT OS_OBJECT_OBJC_RUNTIME_VISIBLE \
+ OS_OBJECT_DECL_BASE(subclass_name, OS_OBJECT_CLASS(super)<OS_OBJECT_CLASS(proto_name)>); \
+ typedef OS_OBJECT_CLASS(super)<OS_OBJECT_CLASS(proto_name)> \
+ * OS_OBJC_INDEPENDENT_CLASS subclass_name##_t
+#else /* Plain C */
+#define OS_OBJECT_DECL_PROTOCOL(name, ...)
+#define OS_OBJECT_SHOW_CLASS(name, ...) \
+ typedef struct name##_s *name##_t
+#define OS_OBJECT_SHOW_SUBCLASS(name, super, ...) \
+ typedef super##_t name##_t
+#endif
+
+#define OS_OBJECT_GLOBAL_OBJECT(type, object) ((OS_OBJECT_BRIDGE type)&(object))
+
+__BEGIN_DECLS
+
+/*!
+ * @function os_retain
+ *
+ * @abstract
+ * Increment the reference count of an os_object.
+ *
+ * @discussion
+ * On a platform with the modern Objective-C runtime this is exactly equivalent
+ * to sending the object the -[retain] message.
+ *
+ * @param object
+ * The object to retain.
+ *
+ * @result
+ * The retained object.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+OS_EXPORT OS_SWIFT_UNAVAILABLE("Can't be used with ARC")
+void*
+os_retain(void *object);
+#if OS_OBJECT_USE_OBJC
+#undef os_retain
+#define os_retain(object) [object retain]
+#endif
+
+/*!
+ * @function os_release
+ *
+ * @abstract
+ * Decrement the reference count of a os_object.
+ *
+ * @discussion
+ * On a platform with the modern Objective-C runtime this is exactly equivalent
+ * to sending the object the -[release] message.
+ *
+ * @param object
+ * The object to release.
+ */
+API_AVAILABLE(macos(10.10), ios(8.0))
+OS_EXPORT
+void OS_SWIFT_UNAVAILABLE("Can't be used with ARC")
+os_release(void *object);
+#if OS_OBJECT_USE_OBJC
+#undef os_release
+#define os_release(object) [object release]
+#endif
+
+__END_DECLS
+
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/os/workgroup.h b/lib/libc/include/aarch64-macos-gnu/os/workgroup.h
new file mode 100644
index 0000000000..956808125c
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/os/workgroup.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __OS_WORKGROUP__
+#define __OS_WORKGROUP__
+
+#ifndef __DISPATCH_BUILDING_DISPATCH__
+#ifndef __OS_WORKGROUP_INDIRECT__
+#define __OS_WORKGROUP_INDIRECT__
+#endif /* __OS_WORKGROUP_INDIRECT__ */
+
+#include <os/workgroup_base.h>
+#include <os/workgroup_object.h>
+#include <os/workgroup_interval.h>
+#include <os/workgroup_parallel.h>
+
+#undef __OS_WORKGROUP_INDIRECT__
+#endif /* __DISPATCH_BUILDING_DISPATCH__ */
+
+#endif /* __OS_WORKGROUP__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/os/workgroup_base.h b/lib/libc/include/aarch64-macos-gnu/os/workgroup_base.h
new file mode 100644
index 0000000000..87ea379479
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/os/workgroup_base.h
@@ -0,0 +1,78 @@
+#ifndef __OS_WORKGROUP_BASE__
+#define __OS_WORKGROUP_BASE__
+
+#ifndef __OS_WORKGROUP_INDIRECT__
+#error "Please #include <os/workgroup.h> instead of this file directly."
+#endif
+
+#include <sys/types.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include <mach/port.h>
+
+#include <Availability.h>
+#include <os/base.h>
+#include <os/object.h>
+#include <os/clock.h>
+
+#if __has_feature(assume_nonnull)
+#define OS_WORKGROUP_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
+#define OS_WORKGROUP_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
+#else
+#define OS_WORKGROUP_ASSUME_NONNULL_BEGIN
+#define OS_WORKGROUP_ASSUME_NONNULL_END
+#endif
+#define OS_WORKGROUP_WARN_RESULT __attribute__((__warn_unused_result__))
+#define OS_WORKGROUP_EXPORT OS_EXPORT
+#define OS_WORKGROUP_RETURNS_RETAINED OS_OBJECT_RETURNS_RETAINED
+
+#define OS_WORKGROUP_DECL(name, swift_name) \
+ OS_SWIFT_NAME(swift_name) \
+ OS_OBJECT_SHOW_CLASS(name, OS_OBJECT_CLASS(object))
+
+#if OS_OBJECT_USE_OBJC
+#define OS_WORKGROUP_SUBCLASS_DECL_PROTO(name, swift_name, ...) \
+ OS_SWIFT_NAME(swift_name) \
+ OS_OBJECT_DECL_PROTOCOL(name ## __VA_ARGS__ )
+#else
+#define OS_WORKGROUP_SUBCLASS_DECL_PROTO(name, swift_name, ...)
+#endif
+
+#define OS_WORKGROUP_SUBCLASS_DECL(name, super, swift_name, ...) \
+ OS_SWIFT_NAME(swift_name) \
+ OS_OBJECT_SHOW_SUBCLASS(name, super, name, ## __VA_ARGS__)
+
+#if defined(__LP64__)
+#define __OS_WORKGROUP_ATTR_SIZE__ 60
+#define __OS_WORKGROUP_INTERVAL_DATA_SIZE__ 56
+#define __OS_WORKGROUP_JOIN_TOKEN_SIZE__ 36
+#else
+#define __OS_WORKGROUP_ATTR_SIZE__ 60
+#define __OS_WORKGROUP_INTERVAL_DATA_SIZE__ 56
+#define __OS_WORKGROUP_JOIN_TOKEN_SIZE__ 28
+#endif
+
+#define _OS_WORKGROUP_ATTR_SIG_DEFAULT_INIT 0x2FA863B4
+#define _OS_WORKGROUP_ATTR_SIG_EMPTY_INIT 0x2FA863C4
+
+struct OS_REFINED_FOR_SWIFT os_workgroup_attr_opaque_s {
+ uint32_t sig;
+ char opaque[__OS_WORKGROUP_ATTR_SIZE__];
+};
+
+#define _OS_WORKGROUP_INTERVAL_DATA_SIG_INIT 0x52A74C4D
+struct OS_REFINED_FOR_SWIFT os_workgroup_interval_data_opaque_s {
+ uint32_t sig;
+ char opaque[__OS_WORKGROUP_INTERVAL_DATA_SIZE__];
+};
+
+struct OS_REFINED_FOR_SWIFT os_workgroup_join_token_opaque_s {
+ uint32_t sig;
+ char opaque[__OS_WORKGROUP_JOIN_TOKEN_SIZE__];
+};
+
+#endif /* __OS_WORKGROUP_BASE__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/os/workgroup_interval.h b/lib/libc/include/aarch64-macos-gnu/os/workgroup_interval.h
new file mode 100644
index 0000000000..b68326dd1e
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/os/workgroup_interval.h
@@ -0,0 +1,155 @@
+/*
+ * Copyright (c) 2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __OS_WORKGROUP_INTERVAL__
+#define __OS_WORKGROUP_INTERVAL__
+
+#ifndef __OS_WORKGROUP_INDIRECT__
+#error "Please #include <os/workgroup.h> instead of this file directly."
+#include <os/workgroup_base.h> // For header doc
+#endif
+
+__BEGIN_DECLS
+
+OS_WORKGROUP_ASSUME_NONNULL_BEGIN
+
+/*!
+ * @typedef os_workgroup_interval_t
+ *
+ * @abstract
+ * A subclass of an os_workgroup_t for tracking work performed as part of
+ * a repeating interval-driven workload.
+ */
+OS_WORKGROUP_SUBCLASS_DECL_PROTO(os_workgroup_interval, Repeatable);
+OS_WORKGROUP_SUBCLASS_DECL(os_workgroup_interval, os_workgroup, WorkGroupInterval);
+
+/* During the first instance of this API, the only supported interval
+ * workgroups are for audio workloads. Please refer to the AudioToolbox
+ * framework for more information.
+ */
+
+/*
+ * @typedef os_workgroup_interval_data, os_workgroup_interval_data_t
+ *
+ * @abstract
+ * An opaque structure containing additional configuration for the workgroup
+ * interval.
+ */
+typedef struct os_workgroup_interval_data_opaque_s os_workgroup_interval_data_s;
+typedef struct os_workgroup_interval_data_opaque_s *os_workgroup_interval_data_t;
+#define OS_WORKGROUP_INTERVAL_DATA_INITIALIZER \
+ { .sig = _OS_WORKGROUP_INTERVAL_DATA_SIG_INIT }
+
+/*!
+ * @function os_workgroup_interval_start
+ *
+ * @abstract
+ * Indicates to the system that the member threads of this
+ * os_workgroup_interval_t have begun working on an instance of the repeatable
+ * interval workload with the specified timestamps. This function is real time
+ * safe.
+ *
+ * This function will set and return an errno in the following cases:
+ *
+ * - The current thread is not a member of the os_workgroup_interval_t
+ * - The os_workgroup_interval_t has been cancelled
+ * - The timestamps passed in are malformed
+ * - os_workgroup_interval_start() was previously called on the
+ * os_workgroup_interval_t without an intervening os_workgroup_interval_finish()
+ * - A concurrent workgroup interval configuration operation is taking place.
+ *
+ * @param start
+ * Start timestamp specified in the os_clockid_t with which the
+ * os_workgroup_interval_t was created. This is generally a time in the past and
+ * indicates when the workgroup started working on an interval period
+ *
+ * @param deadline
+ * Deadline timestamp specified in the os_clockid_t with which the
+ * os_workgroup_interval_t was created. This specifies the deadline which the
+ * interval period would like to meet.
+ *
+ * @param data
+ * This field is currently unused and should be NULL
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT OS_WORKGROUP_WARN_RESULT
+int
+os_workgroup_interval_start(os_workgroup_interval_t wg, uint64_t start, uint64_t
+ deadline, os_workgroup_interval_data_t _Nullable data);
+
+/*!
+ * @function os_workgroup_interval_update
+ *
+ * @abstract
+ * Updates an already started interval workgroup to have the new
+ * deadline specified. This function is real time safe.
+ *
+ * This function will return an error in the following cases:
+ * - The current thread is not a member of the os_workgroup_interval_t
+ * - The os_workgroup_interval_t has been cancelled
+ * - The timestamp passed in is malformed
+ * - os_workgroup_interval_start() was not previously called on the
+ * os_workgroup_interval_t or was already matched with an
+ * os_workgroup_interval_finish()
+ * - A concurrent workgroup interval configuration operation is taking place
+ *
+ * @param deadline
+ * Timestamp specified in the os_clockid_t with
+ * which the os_workgroup_interval_t was created.
+ *
+ * @param data
+ * This field is currently unused and should be NULL
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT OS_WORKGROUP_WARN_RESULT
+int
+os_workgroup_interval_update(os_workgroup_interval_t wg, uint64_t deadline,
+ os_workgroup_interval_data_t _Nullable data);
+
+/*!
+ * @function os_workgroup_interval_finish
+ *
+ * @abstract
+ * Indicates to the system that the member threads of
+ * this os_workgroup_interval_t have finished working on the current instance
+ * of the interval workload. This function is real time safe.
+ *
+ * This function will return an error in the following cases:
+ * - The current thread is not a member of the os_workgroup_interval_t
+ * - os_workgroup_interval_start() was not previously called on the
+ * os_workgroup_interval_t or was already matched with an
+ * os_workgroup_interval_finish()
+ * - A concurrent workgroup interval configuration operation is taking place.
+ *
+ * @param data
+ * This field is currently unused and should be NULL
+ *
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT OS_WORKGROUP_WARN_RESULT
+int
+os_workgroup_interval_finish(os_workgroup_interval_t wg,
+ os_workgroup_interval_data_t _Nullable data);
+
+OS_WORKGROUP_ASSUME_NONNULL_END
+
+__END_DECLS
+
+#endif /* __OS_WORKGROUP_INTERVAL__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/os/workgroup_object.h b/lib/libc/include/aarch64-macos-gnu/os/workgroup_object.h
new file mode 100644
index 0000000000..f9e5b551db
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/os/workgroup_object.h
@@ -0,0 +1,357 @@
+/*
+ * Copyright (c) 2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __OS_WORKGROUP_OBJECT__
+#define __OS_WORKGROUP_OBJECT__
+
+#ifndef __OS_WORKGROUP_INDIRECT__
+#error "Please #include <os/workgroup.h> instead of this file directly."
+#include <os/workgroup_base.h> // For header doc
+#endif
+
+__BEGIN_DECLS
+
+OS_WORKGROUP_ASSUME_NONNULL_BEGIN
+
+/*!
+ * @typedef os_workgroup_t
+ *
+ * @abstract
+ * A reference counted os object representing a workload that needs to
+ * be distinctly recognized and tracked by the system. The workgroup
+ * tracks a collection of threads all working cooperatively. An os_workgroup
+ * object - when not an instance of a specific os_workgroup_t subclass -
+ * represents a generic workload and makes no assumptions about the kind of
+ * work done.
+ *
+ * @discussion
+ * Threads can explicitly join an os_workgroup_t to mark themselves as
+ * participants in the workload.
+ */
+OS_WORKGROUP_DECL(os_workgroup, WorkGroup);
+
+
+/* Attribute creation and specification */
+
+/*!
+ * @typedef os_workgroup_attr_t
+ *
+ * @abstract
+ * Pointer to an opaque structure for describing attributes that can be
+ * configured on a workgroup at creation.
+ */
+typedef struct os_workgroup_attr_opaque_s os_workgroup_attr_s;
+typedef struct os_workgroup_attr_opaque_s *os_workgroup_attr_t;
+
+/* os_workgroup_t attributes need to be initialized before use. This initializer
+ * allows you to create a workgroup with the system default attributes. */
+#define OS_WORKGROUP_ATTR_INITIALIZER_DEFAULT \
+ { .sig = _OS_WORKGROUP_ATTR_SIG_DEFAULT_INIT }
+
+
+
+/* The main use of the workgroup API is through instantiations of the concrete
+ * subclasses - please refer to os/workgroup_interval.h and
+ * os/workgroup_parallel.h for more information on creating workgroups.
+ *
+ * The functions below operate on all subclasses of os_workgroup_t.
+ */
+
+/*!
+ * @function os_workgroup_copy_port
+ *
+ * @abstract
+ * Returns a reference to a send right representing this workgroup that is to be
+ * sent to other processes. This port is to be passed to
+ * os_workgroup_create_with_port() to create a workgroup object.
+ *
+ * It is the client's responsibility to release the send right reference.
+ *
+ * If an error is encountered, errno is set and returned.
+ */
+API_AVAILABLE(macos(11.0))
+API_UNAVAILABLE(ios, tvos, watchos)
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT OS_WORKGROUP_WARN_RESULT
+int
+os_workgroup_copy_port(os_workgroup_t wg, mach_port_t *mach_port_out);
+
+/*!
+ * @function os_workgroup_create_with_port
+ *
+ * @abstract
+ * Create an os_workgroup_t object from a send right returned by a previous
+ * call to os_workgroup_copy_port, potentially in a different process.
+ *
+ * A newly created os_workgroup_t has no initial member threads - in particular
+ * the creating thread does not join the os_workgroup_t implicitly.
+ *
+ * @param name
+ * A client specified string for labelling the workgroup. This parameter is
+ * optional and can be NULL.
+ *
+ * @param mach_port
+ * The send right to create the workgroup from. No reference is consumed
+ * on the specified send right.
+ */
+API_AVAILABLE(macos(11.0))
+API_UNAVAILABLE(ios, tvos, watchos)
+OS_SWIFT_NAME(WorkGroup.init(__name:port:)) OS_WORKGROUP_EXPORT OS_WORKGROUP_RETURNS_RETAINED
+os_workgroup_t _Nullable
+os_workgroup_create_with_port(const char *_Nullable name, mach_port_t mach_port);
+
+/*!
+ * @function os_workgroup_create_with_workgroup
+ *
+ * @abstract
+ * Create a new os_workgroup object from an existing os_workgroup.
+ *
+ * The newly created os_workgroup has no initial member threads - in particular
+ * the creating threaad does not join the os_workgroup_t implicitly.
+ *
+ * @param name
+ * A client specified string for labelling the workgroup. This parameter is
+ * optional and can be NULL.
+ *
+ * @param wg
+ * The existing workgroup to create a new workgroup object from.
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT OS_WORKGROUP_RETURNS_RETAINED
+os_workgroup_t _Nullable
+os_workgroup_create_with_workgroup(const char * _Nullable name, os_workgroup_t wg);
+
+/*!
+ * @typedef os_workgroup_join_token, os_workgroup_join_token_t
+ *
+ * @abstract
+ * An opaque join token which the client needs to pass to os_workgroup_join
+ * and os_workgroup_leave
+ */
+OS_REFINED_FOR_SWIFT
+typedef struct os_workgroup_join_token_opaque_s os_workgroup_join_token_s;
+OS_REFINED_FOR_SWIFT
+typedef struct os_workgroup_join_token_opaque_s *os_workgroup_join_token_t;
+
+
+/*!
+ * @function os_workgroup_join
+ *
+ * @abstract
+ * Joins the current thread to the specified workgroup and populates the join
+ * token that has been passed in. This API is real-time safe.
+ *
+ * @param wg
+ * The workgroup that the current thread would like to join
+ *
+ * @param token_out
+ * Pointer to a client allocated struct which the function will populate
+ * with the join token. This token must be passed in by the thread when it calls
+ * os_workgroup_leave().
+ *
+ * Errors will be returned in the following cases:
+ *
+ * EALREADY The thread is already part of a workgroup that the specified
+ * workgroup does not nest with
+ * EINVAL The workgroup has been cancelled
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT OS_WORKGROUP_WARN_RESULT
+int
+os_workgroup_join(os_workgroup_t wg, os_workgroup_join_token_t token_out);
+
+/*!
+ * @function os_workgroup_leave
+ *
+ * @abstract
+ * This removes the current thread from a workgroup it has previously
+ * joined. Threads must leave all workgroups in the reverse order that they
+ * have joined them. Failing to do so before exiting will result in undefined
+ * behavior.
+ *
+ * If the join token is malformed, the process will be aborted.
+ *
+ * This API is real time safe.
+ *
+ * @param wg
+ * The workgroup that the current thread would like to leave.
+ *
+ * @param token
+ * This is the join token populated by the most recent call to
+ * os_workgroup_join().
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT
+void
+os_workgroup_leave(os_workgroup_t wg, os_workgroup_join_token_t token);
+
+/* Working Arena index of a thread in a workgroup */
+typedef uint32_t os_workgroup_index;
+/* Destructor for Working Arena */
+typedef void (*os_workgroup_working_arena_destructor_t)(void * _Nullable);
+
+/*!
+ * @function os_workgroup_set_working_arena
+ *
+ * @abstract
+ * Associates a client defined working arena with the workgroup. The arena
+ * is local to the workgroup object in the process. This is intended for
+ * distributing a manually managed memory allocation between member threads
+ * of the workgroup.
+ *
+ * This function can be called multiple times and the client specified
+ * destructor will be called on the previously assigned arena, if any. This
+ * function can only be called when no threads have currently joined the
+ * workgroup and all workloops associated with the workgroup are idle.
+ *
+ * @param wg
+ * The workgroup to associate the working arena with
+ *
+ * @param arena
+ * The client managed arena to associate with the workgroup. This value can
+ * be NULL.
+ *
+ * @param max_workers
+ * The maximum number of threads that will ever query the workgroup for the
+ * arena and request an index into it. If the arena is not used to partition
+ * work amongst member threads, then this field can be 0.
+ *
+ * @param destructor
+ * A destructor to call on the previously assigned working arena, if any
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT OS_WORKGROUP_WARN_RESULT
+int
+os_workgroup_set_working_arena(os_workgroup_t wg, void * _Nullable arena,
+ uint32_t max_workers, os_workgroup_working_arena_destructor_t destructor);
+
+/*!
+ * @function os_workgroup_get_working_arena
+ *
+ * @abstract
+ * Returns the working arena associated with the workgroup and the current
+ * thread's index in the workgroup. This function can only be called by a member
+ * of the workgroup. Multiple calls to this API by a member thread will return
+ * the same arena and index until the thread leaves the workgroup.
+ *
+ * For workloops with an associated workgroup, every work item on the workloop
+ * will receive the same index in the arena.
+ *
+ * This method returns NULL if no arena is set on the workgroup. The index
+ * returned by this function is zero-based and is namespaced per workgroup
+ * object in the process. The indices provided are strictly monotonic and never
+ * reused until a future call to os_workgroup_set_working_arena.
+ *
+ * @param wg
+ * The workgroup to get the working arena from.
+ *
+ * @param index_out
+ * A pointer to a os_workgroup_index which will be populated by the caller's
+ * index in the workgroup.
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT
+void * _Nullable
+os_workgroup_get_working_arena(os_workgroup_t wg,
+ os_workgroup_index * _Nullable index_out);
+
+/*!
+ * @function os_workgroup_cancel
+ *
+ * @abstract
+ * This API invalidates a workgroup and indicates to the system that the
+ * workload is no longer relevant to the caller.
+ *
+ * No new work should be initiated for a cancelled workgroup and
+ * work that is already underway should periodically check for
+ * cancellation with os_workgroup_testcancel and initiate cleanup if needed.
+ *
+ * Threads currently in the workgroup continue to be tracked together but no
+ * new threads may join this workgroup - the only possible operation allowed is
+ * to leave the workgroup. Other actions may have undefined behavior or
+ * otherwise fail.
+ *
+ * This API is idempotent. Cancellation is local to the workgroup object
+ * it is called on and does not affect other workgroups.
+ *
+ * @param wg
+ * The workgroup that that the thread would like to cancel
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT
+void
+os_workgroup_cancel(os_workgroup_t wg);
+
+/*!
+ * @function os_workgroup_testcancel
+ *
+ * @abstract
+ * Returns true if the workgroup object has been cancelled. See also
+ * os_workgroup_cancel
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT
+bool
+os_workgroup_testcancel(os_workgroup_t wg);
+
+/*!
+ * @typedef os_workgroup_max_parallel_threads_attr_t
+ *
+ * @abstract
+ * A pointer to a structure describing the set of properties of a workgroup to
+ * override with the explicitly specified values in the structure.
+ *
+ * See also os_workgroup_max_parallel_threads.
+ */
+OS_REFINED_FOR_SWIFT
+typedef struct os_workgroup_max_parallel_threads_attr_s os_workgroup_mpt_attr_s;
+OS_REFINED_FOR_SWIFT
+typedef struct os_workgroup_max_parallel_threads_attr_s *os_workgroup_mpt_attr_t;
+
+/*!
+ * @function os_workgroup_max_parallel_threads
+ *
+ * @abstract
+ * Returns the system's recommendation for maximum number of threads the client
+ * should make for a multi-threaded workload in a given workgroup.
+ *
+ * This API takes into consideration the current hardware the code is running on
+ * and the attributes of the workgroup. It does not take into consideration the
+ * current load of the system and therefore always provides the most optimal
+ * recommendation for the workload.
+ *
+ * @param wg
+ * The workgroup in which the multi-threaded workload will be performed in. The
+ * threads performing the multi-threaded workload are expected to join this
+ * workgroup.
+ *
+ * @param attr
+ * This value is currently unused and should be NULL.
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_REFINED_FOR_SWIFT OS_WORKGROUP_EXPORT
+int
+os_workgroup_max_parallel_threads(os_workgroup_t wg, os_workgroup_mpt_attr_t
+ _Nullable attr);
+
+OS_WORKGROUP_ASSUME_NONNULL_END
+
+__END_DECLS
+
+#endif /* __OS_WORKGROUP_OBJECT__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/os/workgroup_parallel.h b/lib/libc/include/aarch64-macos-gnu/os/workgroup_parallel.h
new file mode 100644
index 0000000000..1a396f3f5d
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/os/workgroup_parallel.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2020 Apple Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#ifndef __OS_WORKGROUP_PARALLEL__
+#define __OS_WORKGROUP_PARALLEL__
+
+#ifndef __OS_WORKGROUP_INDIRECT__
+#error "Please #include <os/workgroup.h> instead of this file directly."
+#include <os/workgroup_base.h> // For header doc
+#endif
+
+#include <os/workgroup_object.h>
+
+__BEGIN_DECLS
+
+OS_WORKGROUP_ASSUME_NONNULL_BEGIN
+
+/*!
+ * @typedef os_workgroup_parallel_t
+ *
+ * @abstract
+ * A subclass of an os_workgroup_t for tracking parallel work.
+ */
+OS_WORKGROUP_SUBCLASS_DECL_PROTO(os_workgroup_parallel, Parallelizable);
+OS_WORKGROUP_SUBCLASS_DECL(os_workgroup_parallel, os_workgroup, WorkGroupParallel);
+
+/*!
+ * @function os_workgroup_parallel_create
+ *
+ * @abstract
+ * Creates an os_workgroup_t which tracks a parallel workload.
+ * A newly created os_workgroup_interval_t has no initial member threads -
+ * in particular the creating thread does not join the os_workgroup_parallel_t
+ * implicitly.
+ *
+ * See also os_workgroup_max_parallel_threads().
+ *
+ * @param name
+ * A client specified string for labelling the workgroup. This parameter is
+ * optional and can be NULL.
+ *
+ * @param attr
+ * The requested set of workgroup attributes. NULL is to be specified for the
+ * default set of attributes.
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+OS_WORKGROUP_EXPORT OS_WORKGROUP_RETURNS_RETAINED
+OS_SWIFT_NAME(WorkGroupParallel.init(__name:attr:))
+os_workgroup_parallel_t _Nullable
+os_workgroup_parallel_create(const char * _Nullable name,
+ os_workgroup_attr_t _Nullable attr);
+
+OS_WORKGROUP_ASSUME_NONNULL_END
+
+__END_DECLS
+
+#endif /* __OS_WORKGROUP_PARALLEL__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/pthread.h b/lib/libc/include/aarch64-macos-gnu/pthread.h
new file mode 100644
index 0000000000..29a64eaea0
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/pthread.h
@@ -0,0 +1,592 @@
+/*
+ * Copyright (c) 2000-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright 1996 1995 by Open Software Foundation, Inc. 1997 1996 1995 1994 1993 1992 1991
+ * All Rights Reserved
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby granted,
+ * provided that the above copyright notice appears in all copies and
+ * that both the copyright notice and this permission notice appear in
+ * supporting documentation.
+ *
+ * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE.
+ *
+ * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
+ * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+/*
+ * MkLinux
+ */
+
+/*
+ * POSIX Threads - IEEE 1003.1c
+ */
+
+#ifndef _PTHREAD_H
+#define _PTHREAD_H
+
+#include <_types.h>
+#include <pthread/sched.h>
+#include <time.h>
+#include <sys/_pthread/_pthread_types.h>
+#include <sys/_pthread/_pthread_attr_t.h>
+#include <sys/_pthread/_pthread_cond_t.h>
+#include <sys/_pthread/_pthread_condattr_t.h>
+#include <sys/_pthread/_pthread_key_t.h>
+#include <sys/_pthread/_pthread_mutex_t.h>
+#include <sys/_pthread/_pthread_mutexattr_t.h>
+#include <sys/_pthread/_pthread_once_t.h>
+#include <sys/_pthread/_pthread_rwlock_t.h>
+#include <sys/_pthread/_pthread_rwlockattr_t.h>
+#include <sys/_pthread/_pthread_t.h>
+
+#include <pthread/qos.h>
+
+#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE) || defined(__cplusplus)
+
+#include <sys/_types/_mach_port_t.h>
+#include <sys/_types/_sigset_t.h>
+
+#endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE || __cplusplus */
+
+/*
+ * These symbols indicate which [optional] features are available
+ * They can be tested at compile time via '#ifdef XXX'
+ * The way to check for pthreads is like so:
+
+ * #include <unistd.h>
+ * #ifdef _POSIX_THREADS
+ * #include <pthread.h>
+ * #endif
+
+ */
+
+/* These will be moved to unistd.h */
+
+/*
+ * Note: These data structures are meant to be opaque. Only enough
+ * structure is exposed to support initializers.
+ * All of the typedefs will be moved to <sys/types.h>
+ */
+
+#include <sys/cdefs.h>
+#include <Availability.h>
+
+#if __has_feature(assume_nonnull)
+_Pragma("clang assume_nonnull begin")
+#endif
+__BEGIN_DECLS
+/*
+ * Threads
+ */
+
+
+/*
+ * Cancel cleanup handler management. Note, since these are implemented as macros,
+ * they *MUST* occur in matched pairs!
+ */
+
+#define pthread_cleanup_push(func, val) \
+ { \
+ struct __darwin_pthread_handler_rec __handler; \
+ pthread_t __self = pthread_self(); \
+ __handler.__routine = func; \
+ __handler.__arg = val; \
+ __handler.__next = __self->__cleanup_stack; \
+ __self->__cleanup_stack = &__handler;
+
+#define pthread_cleanup_pop(execute) \
+ /* Note: 'handler' must be in this same lexical context! */ \
+ __self->__cleanup_stack = __handler.__next; \
+ if (execute) (__handler.__routine)(__handler.__arg); \
+ }
+
+/*
+ * Thread attributes
+ */
+
+#define PTHREAD_CREATE_JOINABLE 1
+#define PTHREAD_CREATE_DETACHED 2
+
+#define PTHREAD_INHERIT_SCHED 1
+#define PTHREAD_EXPLICIT_SCHED 2
+
+#define PTHREAD_CANCEL_ENABLE 0x01 /* Cancel takes place at next cancellation point */
+#define PTHREAD_CANCEL_DISABLE 0x00 /* Cancel postponed */
+#define PTHREAD_CANCEL_DEFERRED 0x02 /* Cancel waits until cancellation point */
+#define PTHREAD_CANCEL_ASYNCHRONOUS 0x00 /* Cancel occurs immediately */
+
+/* Value returned from pthread_join() when a thread is canceled */
+#define PTHREAD_CANCELED ((void *) 1)
+
+/* We only support PTHREAD_SCOPE_SYSTEM */
+#define PTHREAD_SCOPE_SYSTEM 1
+#define PTHREAD_SCOPE_PROCESS 2
+
+#define PTHREAD_PROCESS_SHARED 1
+#define PTHREAD_PROCESS_PRIVATE 2
+
+/*
+ * Mutex protocol attributes
+ */
+#define PTHREAD_PRIO_NONE 0
+#define PTHREAD_PRIO_INHERIT 1
+#define PTHREAD_PRIO_PROTECT 2
+
+/*
+ * Mutex type attributes
+ */
+#define PTHREAD_MUTEX_NORMAL 0
+#define PTHREAD_MUTEX_ERRORCHECK 1
+#define PTHREAD_MUTEX_RECURSIVE 2
+#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
+
+/*
+ * Mutex policy attributes
+ */
+#define PTHREAD_MUTEX_POLICY_FAIRSHARE_NP 1
+#define PTHREAD_MUTEX_POLICY_FIRSTFIT_NP 3
+
+/*
+ * RWLock variables
+ */
+#define PTHREAD_RWLOCK_INITIALIZER {_PTHREAD_RWLOCK_SIG_init, {0}}
+
+/*
+ * Mutex variables
+ */
+#define PTHREAD_MUTEX_INITIALIZER {_PTHREAD_MUTEX_SIG_init, {0}}
+
+/* <rdar://problem/10854763> */
+#if ((__MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070) || (__IPHONE_OS_VERSION_MIN_REQUIRED && __IPHONE_OS_VERSION_MIN_REQUIRED >= 50000)) || defined(__DRIVERKIT_VERSION_MIN_REQUIRED)
+# if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE)
+# define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER {_PTHREAD_ERRORCHECK_MUTEX_SIG_init, {0}}
+# define PTHREAD_RECURSIVE_MUTEX_INITIALIZER {_PTHREAD_RECURSIVE_MUTEX_SIG_init, {0}}
+# endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE */
+#endif
+
+/* <rdar://problem/25944576> */
+#define _PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT \
+ defined(SWIFT_CLASS_EXTRA) && (!defined(SWIFT_SDK_OVERLAY_PTHREAD_EPOCH) || (SWIFT_SDK_OVERLAY_PTHREAD_EPOCH < 1))
+
+/*
+ * Condition variable attributes
+ */
+
+/*
+ * Condition variables
+ */
+
+#define PTHREAD_COND_INITIALIZER {_PTHREAD_COND_SIG_init, {0}}
+
+/*
+ * Initialization control (once) variables
+ */
+
+#define PTHREAD_ONCE_INIT {_PTHREAD_ONCE_SIG_init, {0}}
+
+/*
+ * Prototypes for all PTHREAD interfaces
+ */
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_atfork(void (* _Nullable)(void), void (* _Nullable)(void),
+ void (* _Nullable)(void));
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_destroy(pthread_attr_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getguardsize(const pthread_attr_t * __restrict, size_t * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getinheritsched(const pthread_attr_t * __restrict, int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getschedparam(const pthread_attr_t * __restrict,
+ struct sched_param * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getschedpolicy(const pthread_attr_t * __restrict, int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getscope(const pthread_attr_t * __restrict, int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getstack(const pthread_attr_t * __restrict,
+ void * _Nullable * _Nonnull __restrict, size_t * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getstackaddr(const pthread_attr_t * __restrict,
+ void * _Nullable * _Nonnull __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_getstacksize(const pthread_attr_t * __restrict, size_t * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_init(pthread_attr_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setdetachstate(pthread_attr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setguardsize(pthread_attr_t *, size_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setinheritsched(pthread_attr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setschedparam(pthread_attr_t * __restrict,
+ const struct sched_param * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setschedpolicy(pthread_attr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setscope(pthread_attr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setstack(pthread_attr_t *, void *, size_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setstackaddr(pthread_attr_t *, void *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_attr_setstacksize(pthread_attr_t *, size_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cancel(pthread_t) __DARWIN_ALIAS(pthread_cancel);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cond_broadcast(pthread_cond_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cond_destroy(pthread_cond_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cond_init(
+ pthread_cond_t * __restrict,
+ const pthread_condattr_t * _Nullable __restrict)
+ __DARWIN_ALIAS(pthread_cond_init);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cond_signal(pthread_cond_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cond_timedwait(
+ pthread_cond_t * __restrict, pthread_mutex_t * __restrict,
+ const struct timespec * _Nullable __restrict)
+ __DARWIN_ALIAS_C(pthread_cond_timedwait);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cond_wait(pthread_cond_t * __restrict,
+ pthread_mutex_t * __restrict) __DARWIN_ALIAS_C(pthread_cond_wait);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_condattr_destroy(pthread_condattr_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_condattr_init(pthread_condattr_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_condattr_getpshared(const pthread_condattr_t * __restrict,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_condattr_setpshared(pthread_condattr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+#if !_PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT
+int pthread_create(pthread_t _Nullable * _Nonnull __restrict,
+ const pthread_attr_t * _Nullable __restrict,
+ void * _Nullable (* _Nonnull)(void * _Nullable),
+ void * _Nullable __restrict);
+#else
+int pthread_create(pthread_t * __restrict,
+ const pthread_attr_t * _Nullable __restrict,
+ void *(* _Nonnull)(void *), void * _Nullable __restrict);
+#endif // _PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_detach(pthread_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_equal(pthread_t _Nullable, pthread_t _Nullable);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+void pthread_exit(void * _Nullable) __dead2;
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_getconcurrency(void);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_getschedparam(pthread_t , int * _Nullable __restrict,
+ struct sched_param * _Nullable __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+void* _Nullable pthread_getspecific(pthread_key_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_join(pthread_t , void * _Nullable * _Nullable)
+ __DARWIN_ALIAS_C(pthread_join);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_key_create(pthread_key_t *, void (* _Nullable)(void *));
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_key_delete(pthread_key_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutex_destroy(pthread_mutex_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutex_getprioceiling(const pthread_mutex_t * __restrict,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutex_init(pthread_mutex_t * __restrict,
+ const pthread_mutexattr_t * _Nullable __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutex_lock(pthread_mutex_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutex_setprioceiling(pthread_mutex_t * __restrict, int,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutex_trylock(pthread_mutex_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutex_unlock(pthread_mutex_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_destroy(pthread_mutexattr_t *) __DARWIN_ALIAS(pthread_mutexattr_destroy);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t * __restrict,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_getprotocol(const pthread_mutexattr_t * __restrict,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_getpshared(const pthread_mutexattr_t * __restrict,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_gettype(const pthread_mutexattr_t * __restrict,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.13.4), ios(11.3), watchos(4.3), tvos(11.3))
+int pthread_mutexattr_getpolicy_np(const pthread_mutexattr_t * __restrict,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_init(pthread_mutexattr_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
+
+__API_AVAILABLE(macos(10.7), ios(5.0))
+int pthread_mutexattr_setpolicy_np(pthread_mutexattr_t *, int);
+
+__SWIFT_UNAVAILABLE_MSG("Use lazily initialized globals instead")
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_once(pthread_once_t *, void (* _Nonnull)(void));
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlock_destroy(pthread_rwlock_t * ) __DARWIN_ALIAS(pthread_rwlock_destroy);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlock_init(pthread_rwlock_t * __restrict,
+ const pthread_rwlockattr_t * _Nullable __restrict)
+ __DARWIN_ALIAS(pthread_rwlock_init);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlock_rdlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_rdlock);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlock_tryrdlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_tryrdlock);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlock_trywrlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_trywrlock);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlock_wrlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_wrlock);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlock_unlock(pthread_rwlock_t *) __DARWIN_ALIAS(pthread_rwlock_unlock);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t * __restrict,
+ int * __restrict);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlockattr_init(pthread_rwlockattr_t *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+pthread_t pthread_self(void);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_setcancelstate(int , int * _Nullable)
+ __DARWIN_ALIAS(pthread_setcancelstate);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_setcanceltype(int , int * _Nullable)
+ __DARWIN_ALIAS(pthread_setcanceltype);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_setconcurrency(int);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_setschedparam(pthread_t, int, const struct sched_param *);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_setspecific(pthread_key_t , const void * _Nullable);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+void pthread_testcancel(void) __DARWIN_ALIAS(pthread_testcancel);
+
+#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE) || defined(__cplusplus)
+
+/* returns non-zero if pthread_create or cthread_fork have been called */
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_is_threaded_np(void);
+
+__API_AVAILABLE(macos(10.6), ios(3.2))
+int pthread_threadid_np(pthread_t _Nullable,__uint64_t* _Nullable);
+
+/*SPI to set and get pthread name*/
+__API_AVAILABLE(macos(10.6), ios(3.2))
+int pthread_getname_np(pthread_t,char*,size_t);
+
+__API_AVAILABLE(macos(10.6), ios(3.2))
+int pthread_setname_np(const char*);
+
+/* returns non-zero if the current thread is the main thread */
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_main_np(void);
+
+/* return the mach thread bound to the pthread */
+__API_AVAILABLE(macos(10.4), ios(2.0))
+mach_port_t pthread_mach_thread_np(pthread_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+size_t pthread_get_stacksize_np(pthread_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+void* pthread_get_stackaddr_np(pthread_t);
+
+/* Like pthread_cond_signal(), but only wake up the specified pthread */
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cond_signal_thread_np(pthread_cond_t *, pthread_t _Nullable);
+
+/* Like pthread_cond_timedwait, but use a relative timeout */
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_cond_timedwait_relative_np(pthread_cond_t *, pthread_mutex_t *,
+ const struct timespec * _Nullable);
+
+/* Like pthread_create(), but leaves the thread suspended */
+__API_AVAILABLE(macos(10.4), ios(2.0))
+#if !_PTHREAD_SWIFT_IMPORTER_NULLABILITY_COMPAT
+int pthread_create_suspended_np(
+ pthread_t _Nullable * _Nonnull, const pthread_attr_t * _Nullable,
+ void * _Nullable (* _Nonnull)(void * _Nullable), void * _Nullable);
+#else
+int pthread_create_suspended_np(pthread_t *, const pthread_attr_t * _Nullable,
+ void *(* _Nonnull)(void *), void * _Nullable);
+#endif
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_kill(pthread_t, int);
+
+__API_AVAILABLE(macos(10.5), ios(2.0))
+_Nullable pthread_t pthread_from_mach_thread_np(mach_port_t);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+int pthread_sigmask(int, const sigset_t * _Nullable, sigset_t * _Nullable)
+ __DARWIN_ALIAS(pthread_sigmask);
+
+__API_AVAILABLE(macos(10.4), ios(2.0))
+void pthread_yield_np(void);
+
+__API_AVAILABLE(macos(11.0))
+__API_UNAVAILABLE(ios, tvos, watchos)
+void pthread_jit_write_protect_np(int enabled);
+
+__API_AVAILABLE(macos(11.0))
+__API_UNAVAILABLE(ios, tvos, watchos)
+int pthread_jit_write_protect_supported_np(void);
+
+/*!
+ * @function pthread_cpu_number_np
+ *
+ * @param cpu_number_out
+ * The CPU number that the thread was running on at the time of query.
+ * This cpu number is in the interval [0, ncpus) (from sysctlbyname("hw.ncpu"))
+ *
+ * @result
+ * This function returns 0 or the value of errno if an error occurred.
+ *
+ * @note
+ * Optimizations of per-CPU datastructures based on the result of this function
+ * still require synchronization since it is not guaranteed that the thread will
+ * still be on the same CPU by the time the function returns.
+ */
+__API_AVAILABLE(macos(11.0), ios(14.2), tvos(14.2), watchos(7.1))
+int
+pthread_cpu_number_np(size_t *cpu_number_out);
+
+#endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE || __cplusplus */
+__END_DECLS
+#if __has_feature(assume_nonnull)
+_Pragma("clang assume_nonnull end")
+#endif
+
+#endif /* _PTHREAD_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/pthread/sched.h b/lib/libc/include/aarch64-macos-gnu/pthread/sched.h
new file mode 100644
index 0000000000..88a783127d
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/pthread/sched.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _SCHED_H_
+#define _SCHED_H_
+
+#include <sys/cdefs.h>
+#include <pthread/pthread_impl.h>
+
+__BEGIN_DECLS
+/*
+ * Scheduling paramters
+ */
+#ifndef __POSIX_LIB__
+struct sched_param { int sched_priority; char __opaque[__SCHED_PARAM_SIZE__]; };
+#else
+struct sched_param;
+#endif
+
+extern int sched_yield(void);
+extern int sched_get_priority_min(int);
+extern int sched_get_priority_max(int);
+__END_DECLS
+
+#endif /* _SCHED_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sched.h b/lib/libc/include/aarch64-macos-gnu/sched.h
new file mode 100644
index 0000000000..88a783127d
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sched.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2000-2003 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _SCHED_H_
+#define _SCHED_H_
+
+#include <sys/cdefs.h>
+#include <pthread/pthread_impl.h>
+
+__BEGIN_DECLS
+/*
+ * Scheduling paramters
+ */
+#ifndef __POSIX_LIB__
+struct sched_param { int sched_priority; char __opaque[__SCHED_PARAM_SIZE__]; };
+#else
+struct sched_param;
+#endif
+
+extern int sched_yield(void);
+extern int sched_get_priority_min(int);
+extern int sched_get_priority_max(int);
+__END_DECLS
+
+#endif /* _SCHED_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/signal.h b/lib/libc/include/aarch64-macos-gnu/signal.h
new file mode 100644
index 0000000000..5ae13452c1
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/signal.h
@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*-
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)signal.h 8.3 (Berkeley) 3/30/94
+ */
+
+#ifndef _USER_SIGNAL_H
+#define _USER_SIGNAL_H
+
+#include <sys/cdefs.h>
+#include <_types.h>
+#include <sys/signal.h>
+
+#include <sys/_pthread/_pthread_types.h>
+#include <sys/_pthread/_pthread_t.h>
+
+#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+extern __const char *__const sys_signame[NSIG];
+extern __const char *__const sys_siglist[NSIG];
+#endif
+
+__BEGIN_DECLS
+int raise(int);
+__END_DECLS
+
+#ifndef _ANSI_SOURCE
+__BEGIN_DECLS
+void (* _Nullable bsd_signal(int, void (* _Nullable)(int)))(int);
+int kill(pid_t, int) __DARWIN_ALIAS(kill);
+int killpg(pid_t, int) __DARWIN_ALIAS(killpg);
+int pthread_kill(pthread_t, int);
+int pthread_sigmask(int, const sigset_t *, sigset_t *) __DARWIN_ALIAS(pthread_sigmask);
+int sigaction(int, const struct sigaction * __restrict,
+ struct sigaction * __restrict);
+int sigaddset(sigset_t *, int);
+int sigaltstack(const stack_t * __restrict, stack_t * __restrict) __DARWIN_ALIAS(sigaltstack) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int sigdelset(sigset_t *, int);
+int sigemptyset(sigset_t *);
+int sigfillset(sigset_t *);
+int sighold(int);
+int sigignore(int);
+int siginterrupt(int, int);
+int sigismember(const sigset_t *, int);
+int sigpause(int) __DARWIN_ALIAS_C(sigpause);
+int sigpending(sigset_t *);
+int sigprocmask(int, const sigset_t * __restrict, sigset_t * __restrict);
+int sigrelse(int);
+void (* _Nullable sigset(int, void (* _Nullable)(int)))(int);
+int sigsuspend(const sigset_t *) __DARWIN_ALIAS_C(sigsuspend);
+int sigwait(const sigset_t * __restrict, int * __restrict) __DARWIN_ALIAS_C(sigwait);
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+void psignal(unsigned int, const char *);
+int sigblock(int);
+int sigsetmask(int);
+int sigvec(int, struct sigvec *, struct sigvec *);
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+__END_DECLS
+
+/* List definitions after function declarations, or Reiser cpp gets upset. */
+__header_always_inline int
+__sigbits(int __signo)
+{
+ return __signo > __DARWIN_NSIG ? 0 : (1 << (__signo - 1));
+}
+
+#define sigaddset(set, signo) (*(set) |= __sigbits(signo), 0)
+#define sigdelset(set, signo) (*(set) &= ~__sigbits(signo), 0)
+#define sigismember(set, signo) ((*(set) & __sigbits(signo)) != 0)
+#define sigemptyset(set) (*(set) = 0, 0)
+#define sigfillset(set) (*(set) = ~(sigset_t)0, 0)
+#endif /* !_ANSI_SOURCE */
+
+#endif /* !_USER_SIGNAL_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/simd/common.h b/lib/libc/include/aarch64-macos-gnu/simd/common.h
new file mode 100644
index 0000000000..5408c535fd
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/simd/common.h
@@ -0,0 +1,4458 @@
+/*! @header
+ * The interfaces declared in this header provide "common" elementwise
+ * operations that are neither math nor logic functions. These are available
+ * only for floating-point vectors and scalars, except for min, max, abs,
+ * clamp, and the reduce operations, which also support integer vectors.
+ *
+ * simd_abs(x) Absolute value of x. Also available as fabs
+ * for floating-point vectors. If x is the
+ * smallest signed integer, x is returned.
+ *
+ * simd_max(x,y) Returns the maximum of x and y. Also available
+ * as fmax for floating-point vectors.
+ *
+ * simd_min(x,y) Returns the minimum of x and y. Also available
+ * as fmin for floating-point vectors.
+ *
+ * simd_clamp(x,min,max) x clamped to the range [min, max].
+ *
+ * simd_sign(x) -1 if x is less than zero, 0 if x is zero or
+ * NaN, and +1 if x is greater than zero.
+ *
+ * simd_mix(x,y,t) If t is not in the range [0,1], the result is
+ * undefined. Otherwise the result is x+(y-x)*t,
+ * which linearly interpolates between x and y.
+ *
+ * simd_recip(x) An approximation to 1/x. If x is very near the
+ * limits of representable values, or is infinity
+ * or NaN, the result is undefined. There are
+ * two variants of this function:
+ *
+ * simd_precise_recip(x)
+ *
+ * and
+ *
+ * simd_fast_recip(x).
+ *
+ * The "precise" variant is accurate to a few ULPs,
+ * whereas the "fast" variant may have as little
+ * as 11 bits of accuracy in float and about 22
+ * bits in double.
+ *
+ * The function simd_recip(x) resolves to
+ * simd_precise_recip(x) ordinarily, but to
+ * simd_fast_recip(x) when used in a translation
+ * unit compiled with -ffast-math (when
+ * -ffast-math is in effect, you may still use the
+ * precise version of this function by calling it
+ * explicitly by name).
+ *
+ * simd_rsqrt(x) An approximation to 1/sqrt(x). If x is
+ * infinity or NaN, the result is undefined.
+ * There are two variants of this function:
+ *
+ * simd_precise_rsqrt(x)
+ *
+ * and
+ *
+ * simd_fast_rsqrt(x).
+ *
+ * The "precise" variant is accurate to a few ULPs,
+ * whereas the "fast" variant may have as little
+ * as 11 bits of accuracy in float and about 22
+ * bits in double.
+ *
+ * The function simd_rsqrt(x) resolves to
+ * simd_precise_rsqrt(x) ordinarily, but to
+ * simd_fast_rsqrt(x) when used in a translation
+ * unit compiled with -ffast-math (when
+ * -ffast-math is in effect, you may still use the
+ * precise version of this function by calling it
+ * explicitly by name).
+ *
+ * simd_fract(x) The "fractional part" of x, which lies strictly
+ * in the range [0, 0x1.fffffep-1].
+ *
+ * simd_step(edge,x) 0 if x < edge, and 1 otherwise.
+ *
+ * simd_smoothstep(edge0,edge1,x) 0 if x <= edge0, 1 if x >= edge1, and
+ * a Hermite interpolation between 0 and 1 if
+ * edge0 < x < edge1.
+ *
+ * simd_reduce_add(x) Sum of the elements of x.
+ *
+ * simd_reduce_min(x) Minimum of the elements of x.
+ *
+ * simd_reduce_max(x) Maximum of the elements of x.
+ *
+ * simd_equal(x,y) True if and only if every lane of x is equal
+ * to the corresponding lane of y.
+ *
+ * The following common functions are available in the simd:: namespace:
+ *
+ * C++ Function Equivalent C Function
+ * --------------------------------------------------------------------
+ * simd::abs(x) simd_abs(x)
+ * simd::max(x,y) simd_max(x,y)
+ * simd::min(x,y) simd_min(x,y)
+ * simd::clamp(x,min,max) simd_clamp(x,min,max)
+ * simd::sign(x) simd_sign(x)
+ * simd::mix(x,y,t) simd_mix(x,y,t)
+ * simd::recip(x) simd_recip(x)
+ * simd::rsqrt(x) simd_rsqrt(x)
+ * simd::fract(x) simd_fract(x)
+ * simd::step(edge,x) simd_step(edge,x)
+ * simd::smoothstep(e0,e1,x) simd_smoothstep(e0,e1,x)
+ * simd::reduce_add(x) simd_reduce_add(x)
+ * simd::reduce_max(x) simd_reduce_max(x)
+ * simd::reduce_min(x) simd_reduce_min(x)
+ * simd::equal(x,y) simd_equal(x,y)
+ *
+ * simd::precise::recip(x) simd_precise_recip(x)
+ * simd::precise::rsqrt(x) simd_precise_rsqrt(x)
+ *
+ * simd::fast::recip(x) simd_fast_recip(x)
+ * simd::fast::rsqrt(x) simd_fast_rsqrt(x)
+ *
+ * @copyright 2014-2017 Apple, Inc. All rights reserved.
+ * @unsorted */
+
+#ifndef SIMD_COMMON_HEADER
+#define SIMD_COMMON_HEADER
+
+#include <simd/base.h>
+#if SIMD_COMPILER_HAS_REQUIRED_FEATURES
+#include <simd/vector_make.h>
+#include <simd/logic.h>
+#include <simd/math.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_char2 simd_abs(simd_char2 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_char3 simd_abs(simd_char3 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_char4 simd_abs(simd_char4 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_char8 simd_abs(simd_char8 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_char16 simd_abs(simd_char16 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_char32 simd_abs(simd_char32 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_char64 simd_abs(simd_char64 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_short2 simd_abs(simd_short2 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_short3 simd_abs(simd_short3 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_short4 simd_abs(simd_short4 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_short8 simd_abs(simd_short8 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_short16 simd_abs(simd_short16 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_short32 simd_abs(simd_short32 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_int2 simd_abs(simd_int2 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_int3 simd_abs(simd_int3 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_int4 simd_abs(simd_int4 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_int8 simd_abs(simd_int8 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_int16 simd_abs(simd_int16 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_float2 simd_abs(simd_float2 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_float3 simd_abs(simd_float3 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_float4 simd_abs(simd_float4 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_float8 simd_abs(simd_float8 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_float16 simd_abs(simd_float16 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_long2 simd_abs(simd_long2 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_long3 simd_abs(simd_long3 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_long4 simd_abs(simd_long4 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_long8 simd_abs(simd_long8 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_double2 simd_abs(simd_double2 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_double3 simd_abs(simd_double3 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_double4 simd_abs(simd_double4 x);
+/*! @abstract The elementwise absolute value of x. */
+static inline SIMD_CFUNC simd_double8 simd_abs(simd_double8 x);
+/*! @abstract The elementwise absolute value of x.
+ * @discussion Deprecated. Use simd_abs(x) instead. */
+#define vector_abs simd_abs
+
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_char2 simd_max(simd_char2 x, simd_char2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_char3 simd_max(simd_char3 x, simd_char3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_char4 simd_max(simd_char4 x, simd_char4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_char8 simd_max(simd_char8 x, simd_char8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_char16 simd_max(simd_char16 x, simd_char16 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_char32 simd_max(simd_char32 x, simd_char32 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_char64 simd_max(simd_char64 x, simd_char64 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uchar2 simd_max(simd_uchar2 x, simd_uchar2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uchar3 simd_max(simd_uchar3 x, simd_uchar3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uchar4 simd_max(simd_uchar4 x, simd_uchar4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uchar8 simd_max(simd_uchar8 x, simd_uchar8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uchar16 simd_max(simd_uchar16 x, simd_uchar16 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uchar32 simd_max(simd_uchar32 x, simd_uchar32 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uchar64 simd_max(simd_uchar64 x, simd_uchar64 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_short2 simd_max(simd_short2 x, simd_short2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_short3 simd_max(simd_short3 x, simd_short3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_short4 simd_max(simd_short4 x, simd_short4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_short8 simd_max(simd_short8 x, simd_short8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_short16 simd_max(simd_short16 x, simd_short16 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_short32 simd_max(simd_short32 x, simd_short32 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ushort2 simd_max(simd_ushort2 x, simd_ushort2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ushort3 simd_max(simd_ushort3 x, simd_ushort3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ushort4 simd_max(simd_ushort4 x, simd_ushort4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ushort8 simd_max(simd_ushort8 x, simd_ushort8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ushort16 simd_max(simd_ushort16 x, simd_ushort16 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ushort32 simd_max(simd_ushort32 x, simd_ushort32 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_int2 simd_max(simd_int2 x, simd_int2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_int3 simd_max(simd_int3 x, simd_int3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_int4 simd_max(simd_int4 x, simd_int4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_int8 simd_max(simd_int8 x, simd_int8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_int16 simd_max(simd_int16 x, simd_int16 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uint2 simd_max(simd_uint2 x, simd_uint2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uint3 simd_max(simd_uint3 x, simd_uint3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uint4 simd_max(simd_uint4 x, simd_uint4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uint8 simd_max(simd_uint8 x, simd_uint8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_uint16 simd_max(simd_uint16 x, simd_uint16 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC float simd_max(float x, float y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_float2 simd_max(simd_float2 x, simd_float2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_float3 simd_max(simd_float3 x, simd_float3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_float4 simd_max(simd_float4 x, simd_float4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_float8 simd_max(simd_float8 x, simd_float8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_float16 simd_max(simd_float16 x, simd_float16 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_long2 simd_max(simd_long2 x, simd_long2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_long3 simd_max(simd_long3 x, simd_long3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_long4 simd_max(simd_long4 x, simd_long4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_long8 simd_max(simd_long8 x, simd_long8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ulong2 simd_max(simd_ulong2 x, simd_ulong2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ulong3 simd_max(simd_ulong3 x, simd_ulong3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ulong4 simd_max(simd_ulong4 x, simd_ulong4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_ulong8 simd_max(simd_ulong8 x, simd_ulong8 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC double simd_max(double x, double y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_double2 simd_max(simd_double2 x, simd_double2 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_double3 simd_max(simd_double3 x, simd_double3 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_double4 simd_max(simd_double4 x, simd_double4 y);
+/*! @abstract The elementwise maximum of x and y. */
+static inline SIMD_CFUNC simd_double8 simd_max(simd_double8 x, simd_double8 y);
+/*! @abstract The elementwise maximum of x and y.
+ * @discussion Deprecated. Use simd_max(x,y) instead. */
+#define vector_max simd_max
+
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_char2 simd_min(simd_char2 x, simd_char2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_char3 simd_min(simd_char3 x, simd_char3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_char4 simd_min(simd_char4 x, simd_char4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_char8 simd_min(simd_char8 x, simd_char8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_char16 simd_min(simd_char16 x, simd_char16 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_char32 simd_min(simd_char32 x, simd_char32 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_char64 simd_min(simd_char64 x, simd_char64 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uchar2 simd_min(simd_uchar2 x, simd_uchar2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uchar3 simd_min(simd_uchar3 x, simd_uchar3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uchar4 simd_min(simd_uchar4 x, simd_uchar4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uchar8 simd_min(simd_uchar8 x, simd_uchar8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uchar16 simd_min(simd_uchar16 x, simd_uchar16 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uchar32 simd_min(simd_uchar32 x, simd_uchar32 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uchar64 simd_min(simd_uchar64 x, simd_uchar64 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_short2 simd_min(simd_short2 x, simd_short2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_short3 simd_min(simd_short3 x, simd_short3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_short4 simd_min(simd_short4 x, simd_short4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_short8 simd_min(simd_short8 x, simd_short8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_short16 simd_min(simd_short16 x, simd_short16 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_short32 simd_min(simd_short32 x, simd_short32 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ushort2 simd_min(simd_ushort2 x, simd_ushort2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ushort3 simd_min(simd_ushort3 x, simd_ushort3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ushort4 simd_min(simd_ushort4 x, simd_ushort4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ushort8 simd_min(simd_ushort8 x, simd_ushort8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ushort16 simd_min(simd_ushort16 x, simd_ushort16 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ushort32 simd_min(simd_ushort32 x, simd_ushort32 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_int2 simd_min(simd_int2 x, simd_int2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_int3 simd_min(simd_int3 x, simd_int3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_int4 simd_min(simd_int4 x, simd_int4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_int8 simd_min(simd_int8 x, simd_int8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_int16 simd_min(simd_int16 x, simd_int16 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uint2 simd_min(simd_uint2 x, simd_uint2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uint3 simd_min(simd_uint3 x, simd_uint3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uint4 simd_min(simd_uint4 x, simd_uint4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uint8 simd_min(simd_uint8 x, simd_uint8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_uint16 simd_min(simd_uint16 x, simd_uint16 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC float simd_min(float x, float y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_float2 simd_min(simd_float2 x, simd_float2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_float3 simd_min(simd_float3 x, simd_float3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_float4 simd_min(simd_float4 x, simd_float4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_float8 simd_min(simd_float8 x, simd_float8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_float16 simd_min(simd_float16 x, simd_float16 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_long2 simd_min(simd_long2 x, simd_long2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_long3 simd_min(simd_long3 x, simd_long3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_long4 simd_min(simd_long4 x, simd_long4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_long8 simd_min(simd_long8 x, simd_long8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ulong2 simd_min(simd_ulong2 x, simd_ulong2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ulong3 simd_min(simd_ulong3 x, simd_ulong3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ulong4 simd_min(simd_ulong4 x, simd_ulong4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_ulong8 simd_min(simd_ulong8 x, simd_ulong8 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC double simd_min(double x, double y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_double2 simd_min(simd_double2 x, simd_double2 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_double3 simd_min(simd_double3 x, simd_double3 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_double4 simd_min(simd_double4 x, simd_double4 y);
+/*! @abstract The elementwise minimum of x and y. */
+static inline SIMD_CFUNC simd_double8 simd_min(simd_double8 x, simd_double8 y);
+/*! @abstract The elementwise minimum of x and y.
+ * @discussion Deprecated. Use simd_min(x,y) instead. */
+#define vector_min simd_min
+
+
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_char2 simd_clamp(simd_char2 x, simd_char2 min, simd_char2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_char3 simd_clamp(simd_char3 x, simd_char3 min, simd_char3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_char4 simd_clamp(simd_char4 x, simd_char4 min, simd_char4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_char8 simd_clamp(simd_char8 x, simd_char8 min, simd_char8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_char16 simd_clamp(simd_char16 x, simd_char16 min, simd_char16 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_char32 simd_clamp(simd_char32 x, simd_char32 min, simd_char32 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_char64 simd_clamp(simd_char64 x, simd_char64 min, simd_char64 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uchar2 simd_clamp(simd_uchar2 x, simd_uchar2 min, simd_uchar2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uchar3 simd_clamp(simd_uchar3 x, simd_uchar3 min, simd_uchar3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uchar4 simd_clamp(simd_uchar4 x, simd_uchar4 min, simd_uchar4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uchar8 simd_clamp(simd_uchar8 x, simd_uchar8 min, simd_uchar8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uchar16 simd_clamp(simd_uchar16 x, simd_uchar16 min, simd_uchar16 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uchar32 simd_clamp(simd_uchar32 x, simd_uchar32 min, simd_uchar32 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uchar64 simd_clamp(simd_uchar64 x, simd_uchar64 min, simd_uchar64 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_short2 simd_clamp(simd_short2 x, simd_short2 min, simd_short2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_short3 simd_clamp(simd_short3 x, simd_short3 min, simd_short3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_short4 simd_clamp(simd_short4 x, simd_short4 min, simd_short4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_short8 simd_clamp(simd_short8 x, simd_short8 min, simd_short8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_short16 simd_clamp(simd_short16 x, simd_short16 min, simd_short16 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_short32 simd_clamp(simd_short32 x, simd_short32 min, simd_short32 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ushort2 simd_clamp(simd_ushort2 x, simd_ushort2 min, simd_ushort2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ushort3 simd_clamp(simd_ushort3 x, simd_ushort3 min, simd_ushort3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ushort4 simd_clamp(simd_ushort4 x, simd_ushort4 min, simd_ushort4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ushort8 simd_clamp(simd_ushort8 x, simd_ushort8 min, simd_ushort8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ushort16 simd_clamp(simd_ushort16 x, simd_ushort16 min, simd_ushort16 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ushort32 simd_clamp(simd_ushort32 x, simd_ushort32 min, simd_ushort32 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_int2 simd_clamp(simd_int2 x, simd_int2 min, simd_int2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_int3 simd_clamp(simd_int3 x, simd_int3 min, simd_int3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_int4 simd_clamp(simd_int4 x, simd_int4 min, simd_int4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_int8 simd_clamp(simd_int8 x, simd_int8 min, simd_int8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_int16 simd_clamp(simd_int16 x, simd_int16 min, simd_int16 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uint2 simd_clamp(simd_uint2 x, simd_uint2 min, simd_uint2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uint3 simd_clamp(simd_uint3 x, simd_uint3 min, simd_uint3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uint4 simd_clamp(simd_uint4 x, simd_uint4 min, simd_uint4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uint8 simd_clamp(simd_uint8 x, simd_uint8 min, simd_uint8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_uint16 simd_clamp(simd_uint16 x, simd_uint16 min, simd_uint16 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC float simd_clamp(float x, float min, float max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_float2 simd_clamp(simd_float2 x, simd_float2 min, simd_float2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_float3 simd_clamp(simd_float3 x, simd_float3 min, simd_float3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_float4 simd_clamp(simd_float4 x, simd_float4 min, simd_float4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_float8 simd_clamp(simd_float8 x, simd_float8 min, simd_float8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_float16 simd_clamp(simd_float16 x, simd_float16 min, simd_float16 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_long2 simd_clamp(simd_long2 x, simd_long2 min, simd_long2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_long3 simd_clamp(simd_long3 x, simd_long3 min, simd_long3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_long4 simd_clamp(simd_long4 x, simd_long4 min, simd_long4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_long8 simd_clamp(simd_long8 x, simd_long8 min, simd_long8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ulong2 simd_clamp(simd_ulong2 x, simd_ulong2 min, simd_ulong2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ulong3 simd_clamp(simd_ulong3 x, simd_ulong3 min, simd_ulong3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ulong4 simd_clamp(simd_ulong4 x, simd_ulong4 min, simd_ulong4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_ulong8 simd_clamp(simd_ulong8 x, simd_ulong8 min, simd_ulong8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC double simd_clamp(double x, double min, double max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_double2 simd_clamp(simd_double2 x, simd_double2 min, simd_double2 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_double3 simd_clamp(simd_double3 x, simd_double3 min, simd_double3 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_double4 simd_clamp(simd_double4 x, simd_double4 min, simd_double4 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Note that if you want to clamp all lanes to the same range,
+ * you can use a scalar value for min and max. */
+static inline SIMD_CFUNC simd_double8 simd_clamp(simd_double8 x, simd_double8 min, simd_double8 max);
+/*! @abstract x clamped to the range [min, max].
+ * @discussion Deprecated. Use simd_clamp(x,min,max) instead. */
+#define vector_clamp simd_clamp
+
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC float simd_sign(float x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_float2 simd_sign(simd_float2 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_float3 simd_sign(simd_float3 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_float4 simd_sign(simd_float4 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_float8 simd_sign(simd_float8 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_float16 simd_sign(simd_float16 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC double simd_sign(double x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_double2 simd_sign(simd_double2 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_double3 simd_sign(simd_double3 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_double4 simd_sign(simd_double4 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise. */
+static inline SIMD_CFUNC simd_double8 simd_sign(simd_double8 x);
+/*! @abstract -1 if x is negative, +1 if x is positive, and 0 otherwise.
+ * @discussion Deprecated. Use simd_sign(x) instead. */
+#define vector_sign simd_sign
+
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC float simd_mix(float x, float y, float t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_float2 simd_mix(simd_float2 x, simd_float2 y, simd_float2 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_float3 simd_mix(simd_float3 x, simd_float3 y, simd_float3 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_float4 simd_mix(simd_float4 x, simd_float4 y, simd_float4 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_float8 simd_mix(simd_float8 x, simd_float8 y, simd_float8 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_float16 simd_mix(simd_float16 x, simd_float16 y, simd_float16 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC double simd_mix(double x, double y, double t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_double2 simd_mix(simd_double2 x, simd_double2 y, simd_double2 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_double3 simd_mix(simd_double3 x, simd_double3 y, simd_double3 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_double4 simd_mix(simd_double4 x, simd_double4 y, simd_double4 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1 */
+static inline SIMD_CFUNC simd_double8 simd_mix(simd_double8 x, simd_double8 y, simd_double8 t);
+/*! @abstract Linearly interpolates between x and y, taking the value x when
+ * t=0 and y when t=1
+ * @discussion Deprecated. Use simd_mix(x, y, t) instead. */
+#define vector_mix simd_mix
+
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC float simd_precise_recip(float x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_float2 simd_precise_recip(simd_float2 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_float3 simd_precise_recip(simd_float3 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_float4 simd_precise_recip(simd_float4 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_float8 simd_precise_recip(simd_float8 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_float16 simd_precise_recip(simd_float16 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC double simd_precise_recip(double x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_double2 simd_precise_recip(simd_double2 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_double3 simd_precise_recip(simd_double3 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_double4 simd_precise_recip(simd_double4 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * a few units in the last place (ULPs). */
+static inline SIMD_CFUNC simd_double8 simd_precise_recip(simd_double8 x);
+/*! @abstract A good approximation to 1/x.
+ * @discussion Deprecated. Use simd_precise_recip(x) instead. */
+#define vector_precise_recip simd_precise_recip
+
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC float simd_fast_recip(float x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_float2 simd_fast_recip(simd_float2 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_float3 simd_fast_recip(simd_float3 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_float4 simd_fast_recip(simd_float4 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_float8 simd_fast_recip(simd_float8 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_float16 simd_fast_recip(simd_float16 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC double simd_fast_recip(double x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_double2 simd_fast_recip(simd_double2 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_double3 simd_fast_recip(simd_double3 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_double4 simd_fast_recip(simd_double4 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow; otherwise this function is accurate to
+ * at least 11 bits for float and 22 bits for double. */
+static inline SIMD_CFUNC simd_double8 simd_fast_recip(simd_double8 x);
+/*! @abstract A fast approximation to 1/x.
+ * @discussion Deprecated. Use simd_fast_recip(x) instead. */
+#define vector_fast_recip simd_fast_recip
+
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC float simd_recip(float x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float2 simd_recip(simd_float2 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float3 simd_recip(simd_float3 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float4 simd_recip(simd_float4 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float8 simd_recip(simd_float8 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float16 simd_recip(simd_float16 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC double simd_recip(double x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_double2 simd_recip(simd_double2 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_double3 simd_recip(simd_double3 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_double4 simd_recip(simd_double4 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion If x is very close to the limits of representation, the
+ * result may overflow or underflow. This function maps to
+ * simd_fast_recip(x) if -ffast-math is specified, and to
+ * simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_double8 simd_recip(simd_double8 x);
+/*! @abstract An approximation to 1/x.
+ * @discussion Deprecated. Use simd_recip(x) instead. */
+#define vector_recip simd_recip
+
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC float simd_precise_rsqrt(float x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_float2 simd_precise_rsqrt(simd_float2 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_float3 simd_precise_rsqrt(simd_float3 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_float4 simd_precise_rsqrt(simd_float4 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_float8 simd_precise_rsqrt(simd_float8 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_float16 simd_precise_rsqrt(simd_float16 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC double simd_precise_rsqrt(double x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_double2 simd_precise_rsqrt(simd_double2 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_double3 simd_precise_rsqrt(simd_double3 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_double4 simd_precise_rsqrt(simd_double4 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion This function is accurate to a few units in the last place
+ * (ULPs). */
+static inline SIMD_CFUNC simd_double8 simd_precise_rsqrt(simd_double8 x);
+/*! @abstract A good approximation to 1/sqrt(x).
+ * @discussion Deprecated. Use simd_precise_rsqrt(x) instead. */
+#define vector_precise_rsqrt simd_precise_rsqrt
+
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC float simd_fast_rsqrt(float x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_float2 simd_fast_rsqrt(simd_float2 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_float3 simd_fast_rsqrt(simd_float3 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_float4 simd_fast_rsqrt(simd_float4 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_float8 simd_fast_rsqrt(simd_float8 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_float16 simd_fast_rsqrt(simd_float16 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC double simd_fast_rsqrt(double x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_double2 simd_fast_rsqrt(simd_double2 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_double3 simd_fast_rsqrt(simd_double3 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_double4 simd_fast_rsqrt(simd_double4 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion This function is accurate to at least 11 bits for float and
+ * 22 bits for double. */
+static inline SIMD_CFUNC simd_double8 simd_fast_rsqrt(simd_double8 x);
+/*! @abstract A fast approximation to 1/sqrt(x).
+ * @discussion Deprecated. Use simd_fast_rsqrt(x) instead. */
+#define vector_fast_rsqrt simd_fast_rsqrt
+
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC float simd_rsqrt(float x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float2 simd_rsqrt(simd_float2 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float3 simd_rsqrt(simd_float3 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float4 simd_rsqrt(simd_float4 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float8 simd_rsqrt(simd_float8 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_float16 simd_rsqrt(simd_float16 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC double simd_rsqrt(double x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_double2 simd_rsqrt(simd_double2 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_double3 simd_rsqrt(simd_double3 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_double4 simd_rsqrt(simd_double4 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion This function maps to simd_fast_recip(x) if -ffast-math is
+ * specified, and to simd_precise_recip(x) otherwise. */
+static inline SIMD_CFUNC simd_double8 simd_rsqrt(simd_double8 x);
+/*! @abstract An approximation to 1/sqrt(x).
+ * @discussion Deprecated. Use simd_rsqrt(x) instead. */
+#define vector_rsqrt simd_rsqrt
+
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC float simd_fract(float x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_float2 simd_fract(simd_float2 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_float3 simd_fract(simd_float3 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_float4 simd_fract(simd_float4 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_float8 simd_fract(simd_float8 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_float16 simd_fract(simd_float16 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC double simd_fract(double x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_double2 simd_fract(simd_double2 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_double3 simd_fract(simd_double3 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_double4 simd_fract(simd_double4 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion floor(x) + fract(x) is *approximately* equal to x. If x is
+ * positive and finite, then the two values are exactly equal. */
+static inline SIMD_CFUNC simd_double8 simd_fract(simd_double8 x);
+/*! @abstract The "fractional part" of x, lying in the range [0, 1).
+ * @discussion Deprecated. Use simd_fract(x) instead. */
+#define vector_fract simd_fract
+
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC float simd_step(float edge, float x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_float2 simd_step(simd_float2 edge, simd_float2 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_float3 simd_step(simd_float3 edge, simd_float3 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_float4 simd_step(simd_float4 edge, simd_float4 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_float8 simd_step(simd_float8 edge, simd_float8 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_float16 simd_step(simd_float16 edge, simd_float16 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC double simd_step(double edge, double x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_double2 simd_step(simd_double2 edge, simd_double2 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_double3 simd_step(simd_double3 edge, simd_double3 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_double4 simd_step(simd_double4 edge, simd_double4 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Use a scalar value for edge if you want to apply the same
+ * threshold to all lanes. */
+static inline SIMD_CFUNC simd_double8 simd_step(simd_double8 edge, simd_double8 x);
+/*! @abstract 0 if x < edge, and 1 otherwise.
+ * @discussion Deprecated. Use simd_step(edge, x) instead. */
+#define vector_step simd_step
+
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC float simd_smoothstep(float edge0, float edge1, float x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_float2 simd_smoothstep(simd_float2 edge0, simd_float2 edge1, simd_float2 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_float3 simd_smoothstep(simd_float3 edge0, simd_float3 edge1, simd_float3 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_float4 simd_smoothstep(simd_float4 edge0, simd_float4 edge1, simd_float4 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_float8 simd_smoothstep(simd_float8 edge0, simd_float8 edge1, simd_float8 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_float16 simd_smoothstep(simd_float16 edge0, simd_float16 edge1, simd_float16 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC double simd_smoothstep(double edge0, double edge1, double x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_double2 simd_smoothstep(simd_double2 edge0, simd_double2 edge1, simd_double2 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_double3 simd_smoothstep(simd_double3 edge0, simd_double3 edge1, simd_double3 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_double4 simd_smoothstep(simd_double4 edge0, simd_double4 edge1, simd_double4 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion You can use a scalar value for edge0 and edge1 if you want
+ * to clamp all lanes at the same points. */
+static inline SIMD_CFUNC simd_double8 simd_smoothstep(simd_double8 edge0, simd_double8 edge1, simd_double8 x);
+/*! @abstract Interpolates smoothly between 0 at edge0 and 1 at edge1
+ * @discussion Deprecated. Use simd_smoothstep(edge0, edge1, x) instead. */
+#define vector_smoothstep simd_smoothstep
+
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC char simd_reduce_add(simd_char2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC char simd_reduce_add(simd_char3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC char simd_reduce_add(simd_char4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC char simd_reduce_add(simd_char8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC char simd_reduce_add(simd_char16 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC char simd_reduce_add(simd_char32 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC char simd_reduce_add(simd_char64 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar16 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar32 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar64 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC short simd_reduce_add(simd_short2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC short simd_reduce_add(simd_short3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC short simd_reduce_add(simd_short4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC short simd_reduce_add(simd_short8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC short simd_reduce_add(simd_short16 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC short simd_reduce_add(simd_short32 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort16 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort32 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC int simd_reduce_add(simd_int2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC int simd_reduce_add(simd_int3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC int simd_reduce_add(simd_int4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC int simd_reduce_add(simd_int8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC int simd_reduce_add(simd_int16 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint16 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC float simd_reduce_add(simd_float2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC float simd_reduce_add(simd_float3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC float simd_reduce_add(simd_float4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC float simd_reduce_add(simd_float8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC float simd_reduce_add(simd_float16 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_add(simd_long2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_add(simd_long3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_add(simd_long4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_add(simd_long8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_add(simd_ulong2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_add(simd_ulong3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_add(simd_ulong4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_add(simd_ulong8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC double simd_reduce_add(simd_double2 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC double simd_reduce_add(simd_double3 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC double simd_reduce_add(simd_double4 x);
+/*! @abstract Sum of elements in x.
+ * @discussion This computation may overflow; especial for 8-bit types you
+ * may need to convert to a wider type before reducing. */
+static inline SIMD_CFUNC double simd_reduce_add(simd_double8 x);
+/*! @abstract Sum of elements in x.
+ * @discussion Deprecated. Use simd_add(x) instead. */
+#define vector_reduce_add simd_reduce_add
+
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_min(simd_char2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_min(simd_char3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_min(simd_char4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_min(simd_char8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_min(simd_char16 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_min(simd_char32 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_min(simd_char64 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar16 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar32 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar64 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_min(simd_short2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_min(simd_short3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_min(simd_short4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_min(simd_short8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_min(simd_short16 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_min(simd_short32 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort16 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort32 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_min(simd_int2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_min(simd_int3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_min(simd_int4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_min(simd_int8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_min(simd_int16 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint16 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_min(simd_float2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_min(simd_float3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_min(simd_float4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_min(simd_float8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_min(simd_float16 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_min(simd_long2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_min(simd_long3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_min(simd_long4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_min(simd_long8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_min(simd_ulong2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_min(simd_ulong3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_min(simd_ulong4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_min(simd_ulong8 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC double simd_reduce_min(simd_double2 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC double simd_reduce_min(simd_double3 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC double simd_reduce_min(simd_double4 x);
+/*! @abstract Minimum of elements in x. */
+static inline SIMD_CFUNC double simd_reduce_min(simd_double8 x);
+/*! @abstract Minimum of elements in x.
+ * @discussion Deprecated. Use simd_min(x) instead. */
+#define vector_reduce_min simd_reduce_min
+
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_max(simd_char2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_max(simd_char3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_max(simd_char4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_max(simd_char8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_max(simd_char16 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_max(simd_char32 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC char simd_reduce_max(simd_char64 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar16 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar32 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar64 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_max(simd_short2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_max(simd_short3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_max(simd_short4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_max(simd_short8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_max(simd_short16 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC short simd_reduce_max(simd_short32 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort16 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort32 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_max(simd_int2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_max(simd_int3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_max(simd_int4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_max(simd_int8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC int simd_reduce_max(simd_int16 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint16 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_max(simd_float2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_max(simd_float3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_max(simd_float4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_max(simd_float8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC float simd_reduce_max(simd_float16 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_max(simd_long2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_max(simd_long3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_max(simd_long4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC simd_long1 simd_reduce_max(simd_long8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_max(simd_ulong2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_max(simd_ulong3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_max(simd_ulong4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_max(simd_ulong8 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC double simd_reduce_max(simd_double2 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC double simd_reduce_max(simd_double3 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC double simd_reduce_max(simd_double4 x);
+/*! @abstract Maximum of elements in x. */
+static inline SIMD_CFUNC double simd_reduce_max(simd_double8 x);
+/*! @abstract Maximum of elements in x.
+ * @discussion Deprecated. Use simd_max(x) instead. */
+#define vector_reduce_max simd_reduce_max
+
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_char2 x, simd_char2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_char3 x, simd_char3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_char4 x, simd_char4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_char8 x, simd_char8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_char16 x, simd_char16 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_char32 x, simd_char32 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_char64 x, simd_char64 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uchar2 x, simd_uchar2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uchar3 x, simd_uchar3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uchar4 x, simd_uchar4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uchar8 x, simd_uchar8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uchar16 x, simd_uchar16 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uchar32 x, simd_uchar32 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uchar64 x, simd_uchar64 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_short2 x, simd_short2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_short3 x, simd_short3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_short4 x, simd_short4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_short8 x, simd_short8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_short16 x, simd_short16 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_short32 x, simd_short32 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ushort2 x, simd_ushort2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ushort3 x, simd_ushort3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ushort4 x, simd_ushort4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ushort8 x, simd_ushort8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ushort16 x, simd_ushort16 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ushort32 x, simd_ushort32 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_int2 x, simd_int2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_int3 x, simd_int3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_int4 x, simd_int4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_int8 x, simd_int8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_int16 x, simd_int16 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uint2 x, simd_uint2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uint3 x, simd_uint3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uint4 x, simd_uint4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uint8 x, simd_uint8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_uint16 x, simd_uint16 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_float2 x, simd_float2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_float3 x, simd_float3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_float4 x, simd_float4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_float8 x, simd_float8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_float16 x, simd_float16 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_long2 x, simd_long2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_long3 x, simd_long3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_long4 x, simd_long4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_long8 x, simd_long8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ulong2 x, simd_ulong2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ulong3 x, simd_ulong3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ulong4 x, simd_ulong4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_ulong8 x, simd_ulong8 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_double2 x, simd_double2 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_double3 x, simd_double3 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_double4 x, simd_double4 y) {
+ return simd_all(x == y);
+}
+/*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y. */
+static inline SIMD_CFUNC simd_bool simd_equal(simd_double8 x, simd_double8 y) {
+ return simd_all(x == y);
+}
+
+#ifdef __cplusplus
+} /* extern "C" */
+
+namespace simd {
+ /*! @abstract The lanewise absolute value of x. */
+ template <typename typeN> static SIMD_CPPFUNC typeN abs(const typeN x) { return ::simd_abs(x); }
+ /*! @abstract The lanewise maximum of x and y. */
+ template <typename typeN> static SIMD_CPPFUNC typeN max(const typeN x, const typeN y) { return ::simd_max(x,y); }
+ /*! @abstract The lanewise minimum of x and y. */
+ template <typename typeN> static SIMD_CPPFUNC typeN min(const typeN x, const typeN y) { return ::simd_min(x,y); }
+ /*! @abstract x clamped to the interval [min, max]. */
+ template <typename typeN> static SIMD_CPPFUNC typeN clamp(const typeN x, const typeN min, const typeN max) { return ::simd_clamp(x,min,max); }
+ /*! @abstract -1 if x < 0, +1 if x > 0, and 0 otherwise. */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN sign(const fptypeN x) { return ::simd_sign(x); }
+ /*! @abstract Linearly interpolates between x and y, taking the value x when t=0 and y when t=1 */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN mix(const fptypeN x, const fptypeN y, const fptypeN t) { return ::simd_mix(x,y,t); }
+ /*! @abstract An approximation to 1/x. */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN recip(const fptypeN x) { return simd_recip(x); }
+ /*! @abstract An approximation to 1/sqrt(x). */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN rsqrt(const fptypeN x) { return simd_rsqrt(x); }
+ /*! @abstract The "fracional part" of x, in the range [0,1). */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN fract(const fptypeN x) { return ::simd_fract(x); }
+ /*! @abstract 0 if x < edge, 1 otherwise. */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN step(const fptypeN edge, const fptypeN x) { return ::simd_step(edge,x); }
+ /*! @abstract smoothly interpolates from 0 at edge0 to 1 at edge1. */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN smoothstep(const fptypeN edge0, const fptypeN edge1, const fptypeN x) { return ::simd_smoothstep(edge0,edge1,x); }
+ /*! @abstract True if and only if each lane of x is equal to the
+ * corresponding lane of y.
+ *
+ * @discussion This isn't operator== because that's already defined by
+ * the compiler to return a lane mask. */
+ template <typename fptypeN> static SIMD_CPPFUNC simd_bool equal(const fptypeN x, const fptypeN y) { return ::simd_equal(x, y); }
+#if __cpp_decltype_auto
+ /* If you are targeting an earlier version of the C++ standard that lacks
+ decltype_auto support, you may use the C-style simd_reduce_* functions
+ instead. */
+ /*! @abstract The sum of the elements in x. May overflow. */
+ template <typename typeN> static SIMD_CPPFUNC auto reduce_add(typeN x) { return ::simd_reduce_add(x); }
+ /*! @abstract The least element in x. */
+ template <typename typeN> static SIMD_CPPFUNC auto reduce_min(typeN x) { return ::simd_reduce_min(x); }
+ /*! @abstract The greatest element in x. */
+ template <typename typeN> static SIMD_CPPFUNC auto reduce_max(typeN x) { return ::simd_reduce_max(x); }
+#endif
+ namespace precise {
+ /*! @abstract An approximation to 1/x. */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN recip(const fptypeN x) { return ::simd_precise_recip(x); }
+ /*! @abstract An approximation to 1/sqrt(x). */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN rsqrt(const fptypeN x) { return ::simd_precise_rsqrt(x); }
+ }
+ namespace fast {
+ /*! @abstract An approximation to 1/x. */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN recip(const fptypeN x) { return ::simd_fast_recip(x); }
+ /*! @abstract An approximation to 1/sqrt(x). */
+ template <typename fptypeN> static SIMD_CPPFUNC fptypeN rsqrt(const fptypeN x) { return ::simd_fast_rsqrt(x); }
+ }
+}
+
+extern "C" {
+#endif /* __cplusplus */
+
+#pragma mark - Implementation
+
+static inline SIMD_CFUNC simd_char2 simd_abs(simd_char2 x) {
+ return simd_make_char2(simd_abs(simd_make_char8_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_char3 simd_abs(simd_char3 x) {
+ return simd_make_char3(simd_abs(simd_make_char8_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_char4 simd_abs(simd_char4 x) {
+ return simd_make_char4(simd_abs(simd_make_char8_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_char8 simd_abs(simd_char8 x) {
+#if defined __arm__ || defined __arm64__
+ return vabs_s8(x);
+#else
+ return simd_make_char8(simd_abs(simd_make_char16_undef(x)));
+#endif
+}
+
+static inline SIMD_CFUNC simd_char16 simd_abs(simd_char16 x) {
+#if defined __arm__ || defined __arm64__
+ return vabsq_s8(x);
+#elif defined __SSE4_1__
+ return (simd_char16) _mm_abs_epi8((__m128i)x);
+#else
+ simd_char16 mask = x >> 7; return (x ^ mask) - mask;
+#endif
+}
+
+static inline SIMD_CFUNC simd_char32 simd_abs(simd_char32 x) {
+#if defined __AVX2__
+ return _mm256_abs_epi8(x);
+#else
+ return simd_make_char32(simd_abs(x.lo), simd_abs(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_char64 simd_abs(simd_char64 x) {
+#if defined __AVX512BW__
+ return _mm512_abs_epi8(x);
+#else
+ return simd_make_char64(simd_abs(x.lo), simd_abs(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_short2 simd_abs(simd_short2 x) {
+ return simd_make_short2(simd_abs(simd_make_short4_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_short3 simd_abs(simd_short3 x) {
+ return simd_make_short3(simd_abs(simd_make_short4_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_short4 simd_abs(simd_short4 x) {
+#if defined __arm__ || defined __arm64__
+ return vabs_s16(x);
+#else
+ return simd_make_short4(simd_abs(simd_make_short8_undef(x)));
+#endif
+}
+
+static inline SIMD_CFUNC simd_short8 simd_abs(simd_short8 x) {
+#if defined __arm__ || defined __arm64__
+ return vabsq_s16(x);
+#elif defined __SSE4_1__
+ return (simd_short8) _mm_abs_epi16((__m128i)x);
+#else
+ simd_short8 mask = x >> 15; return (x ^ mask) - mask;
+#endif
+}
+
+static inline SIMD_CFUNC simd_short16 simd_abs(simd_short16 x) {
+#if defined __AVX2__
+ return _mm256_abs_epi16(x);
+#else
+ return simd_make_short16(simd_abs(x.lo), simd_abs(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_short32 simd_abs(simd_short32 x) {
+#if defined __AVX512BW__
+ return _mm512_abs_epi16(x);
+#else
+ return simd_make_short32(simd_abs(x.lo), simd_abs(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_int2 simd_abs(simd_int2 x) {
+#if defined __arm__ || defined __arm64__
+ return vabs_s32(x);
+#else
+ return simd_make_int2(simd_abs(simd_make_int4_undef(x)));
+#endif
+}
+
+static inline SIMD_CFUNC simd_int3 simd_abs(simd_int3 x) {
+ return simd_make_int3(simd_abs(simd_make_int4_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_int4 simd_abs(simd_int4 x) {
+#if defined __arm__ || defined __arm64__
+ return vabsq_s32(x);
+#elif defined __SSE4_1__
+ return (simd_int4) _mm_abs_epi32((__m128i)x);
+#else
+ simd_int4 mask = x >> 31; return (x ^ mask) - mask;
+#endif
+}
+
+static inline SIMD_CFUNC simd_int8 simd_abs(simd_int8 x) {
+#if defined __AVX2__
+ return _mm256_abs_epi32(x);
+#else
+ return simd_make_int8(simd_abs(x.lo), simd_abs(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_int16 simd_abs(simd_int16 x) {
+#if defined __AVX512F__
+ return _mm512_abs_epi32(x);
+#else
+ return simd_make_int16(simd_abs(x.lo), simd_abs(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_float2 simd_abs(simd_float2 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_abs(simd_float3 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_abs(simd_float4 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_abs(simd_float8 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_abs(simd_float16 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_long2 simd_abs(simd_long2 x) {
+#if defined __arm64__
+ return vabsq_s64(x);
+#elif defined __SSE4_1__
+ return (simd_long2) _mm_abs_epi64((__m128i)x);
+#else
+ simd_long2 mask = x >> 63; return (x ^ mask) - mask;
+#endif
+}
+
+static inline SIMD_CFUNC simd_long3 simd_abs(simd_long3 x) {
+ return simd_make_long3(simd_abs(simd_make_long4_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_long4 simd_abs(simd_long4 x) {
+#if defined __AVX2__
+ return _mm256_abs_epi64(x);
+#else
+ return simd_make_long4(simd_abs(x.lo), simd_abs(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_long8 simd_abs(simd_long8 x) {
+#if defined __AVX512F__
+ return _mm512_abs_epi64(x);
+#else
+ return simd_make_long8(simd_abs(x.lo), simd_abs(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_double2 simd_abs(simd_double2 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_abs(simd_double3 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_abs(simd_double4 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_abs(simd_double8 x) {
+ return __tg_fabs(x);
+}
+
+static inline SIMD_CFUNC simd_char2 simd_min(simd_char2 x, simd_char2 y) {
+ return simd_make_char2(simd_min(simd_make_char8_undef(x), simd_make_char8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_char3 simd_min(simd_char3 x, simd_char3 y) {
+ return simd_make_char3(simd_min(simd_make_char8_undef(x), simd_make_char8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_char4 simd_min(simd_char4 x, simd_char4 y) {
+ return simd_make_char4(simd_min(simd_make_char8_undef(x), simd_make_char8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_char8 simd_min(simd_char8 x, simd_char8 y) {
+#if defined __arm__ || defined __arm64__
+ return vmin_s8(x, y);
+#else
+ return simd_make_char8(simd_min(simd_make_char16_undef(x), simd_make_char16_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_char16 simd_min(simd_char16 x, simd_char16 y) {
+#if defined __arm__ || defined __arm64__
+ return vminq_s8(x, y);
+#elif defined __SSE4_1__
+ return (simd_char16) _mm_min_epi8((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_char32 simd_min(simd_char32 x, simd_char32 y) {
+#if defined __AVX2__
+ return _mm256_min_epi8(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_char64 simd_min(simd_char64 x, simd_char64 y) {
+#if defined __AVX512BW__
+ return _mm512_min_epi8(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uchar2 simd_min(simd_uchar2 x, simd_uchar2 y) {
+ return simd_make_uchar2(simd_min(simd_make_uchar8_undef(x), simd_make_uchar8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_uchar3 simd_min(simd_uchar3 x, simd_uchar3 y) {
+ return simd_make_uchar3(simd_min(simd_make_uchar8_undef(x), simd_make_uchar8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_uchar4 simd_min(simd_uchar4 x, simd_uchar4 y) {
+ return simd_make_uchar4(simd_min(simd_make_uchar8_undef(x), simd_make_uchar8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_uchar8 simd_min(simd_uchar8 x, simd_uchar8 y) {
+#if defined __arm__ || defined __arm64__
+ return vmin_u8(x, y);
+#else
+ return simd_make_uchar8(simd_min(simd_make_uchar16_undef(x), simd_make_uchar16_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_uchar16 simd_min(simd_uchar16 x, simd_uchar16 y) {
+#if defined __arm__ || defined __arm64__
+ return vminq_u8(x, y);
+#elif defined __SSE4_1__
+ return (simd_uchar16) _mm_min_epu8((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uchar32 simd_min(simd_uchar32 x, simd_uchar32 y) {
+#if defined __AVX2__
+ return _mm256_min_epu8(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uchar64 simd_min(simd_uchar64 x, simd_uchar64 y) {
+#if defined __AVX512BW__
+ return _mm512_min_epu8(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_short2 simd_min(simd_short2 x, simd_short2 y) {
+ return simd_make_short2(simd_min(simd_make_short4_undef(x), simd_make_short4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_short3 simd_min(simd_short3 x, simd_short3 y) {
+ return simd_make_short3(simd_min(simd_make_short4_undef(x), simd_make_short4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_short4 simd_min(simd_short4 x, simd_short4 y) {
+#if defined __arm__ || defined __arm64__
+ return vmin_s16(x, y);
+#else
+ return simd_make_short4(simd_min(simd_make_short8_undef(x), simd_make_short8_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_short8 simd_min(simd_short8 x, simd_short8 y) {
+#if defined __arm__ || defined __arm64__
+ return vminq_s16(x, y);
+#elif defined __SSE4_1__
+ return (simd_short8) _mm_min_epi16((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_short16 simd_min(simd_short16 x, simd_short16 y) {
+#if defined __AVX2__
+ return _mm256_min_epi16(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_short32 simd_min(simd_short32 x, simd_short32 y) {
+#if defined __AVX512BW__
+ return _mm512_min_epi16(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ushort2 simd_min(simd_ushort2 x, simd_ushort2 y) {
+ return simd_make_ushort2(simd_min(simd_make_ushort4_undef(x), simd_make_ushort4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_ushort3 simd_min(simd_ushort3 x, simd_ushort3 y) {
+ return simd_make_ushort3(simd_min(simd_make_ushort4_undef(x), simd_make_ushort4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_ushort4 simd_min(simd_ushort4 x, simd_ushort4 y) {
+#if defined __arm__ || defined __arm64__
+ return vmin_u16(x, y);
+#else
+ return simd_make_ushort4(simd_min(simd_make_ushort8_undef(x), simd_make_ushort8_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_ushort8 simd_min(simd_ushort8 x, simd_ushort8 y) {
+#if defined __arm__ || defined __arm64__
+ return vminq_u16(x, y);
+#elif defined __SSE4_1__
+ return (simd_ushort8) _mm_min_epu16((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ushort16 simd_min(simd_ushort16 x, simd_ushort16 y) {
+#if defined __AVX2__
+ return _mm256_min_epu16(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ushort32 simd_min(simd_ushort32 x, simd_ushort32 y) {
+#if defined __AVX512BW__
+ return _mm512_min_epu16(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_int2 simd_min(simd_int2 x, simd_int2 y) {
+#if defined __arm__ || defined __arm64__
+ return vmin_s32(x, y);
+#else
+ return simd_make_int2(simd_min(simd_make_int4_undef(x), simd_make_int4_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_int3 simd_min(simd_int3 x, simd_int3 y) {
+ return simd_make_int3(simd_min(simd_make_int4_undef(x), simd_make_int4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_int4 simd_min(simd_int4 x, simd_int4 y) {
+#if defined __arm__ || defined __arm64__
+ return vminq_s32(x, y);
+#elif defined __SSE4_1__
+ return (simd_int4) _mm_min_epi32((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_int8 simd_min(simd_int8 x, simd_int8 y) {
+#if defined __AVX2__
+ return _mm256_min_epi32(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_int16 simd_min(simd_int16 x, simd_int16 y) {
+#if defined __AVX512F__
+ return _mm512_min_epi32(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uint2 simd_min(simd_uint2 x, simd_uint2 y) {
+#if defined __arm__ || defined __arm64__
+ return vmin_u32(x, y);
+#else
+ return simd_make_uint2(simd_min(simd_make_uint4_undef(x), simd_make_uint4_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_uint3 simd_min(simd_uint3 x, simd_uint3 y) {
+ return simd_make_uint3(simd_min(simd_make_uint4_undef(x), simd_make_uint4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_uint4 simd_min(simd_uint4 x, simd_uint4 y) {
+#if defined __arm__ || defined __arm64__
+ return vminq_u32(x, y);
+#elif defined __SSE4_1__
+ return (simd_uint4) _mm_min_epu32((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uint8 simd_min(simd_uint8 x, simd_uint8 y) {
+#if defined __AVX2__
+ return _mm256_min_epu32(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uint16 simd_min(simd_uint16 x, simd_uint16 y) {
+#if defined __AVX512F__
+ return _mm512_min_epu32(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC float simd_min(float x, float y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_min(simd_float2 x, simd_float2 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_min(simd_float3 x, simd_float3 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_min(simd_float4 x, simd_float4 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_min(simd_float8 x, simd_float8 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_min(simd_float16 x, simd_float16 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_long2 simd_min(simd_long2 x, simd_long2 y) {
+#if defined __AVX512VL__
+ return _mm_min_epi64(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_long3 simd_min(simd_long3 x, simd_long3 y) {
+ return simd_make_long3(simd_min(simd_make_long4_undef(x), simd_make_long4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_long4 simd_min(simd_long4 x, simd_long4 y) {
+#if defined __AVX512VL__
+ return _mm256_min_epi64(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_long8 simd_min(simd_long8 x, simd_long8 y) {
+#if defined __AVX512F__
+ return _mm512_min_epi64(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ulong2 simd_min(simd_ulong2 x, simd_ulong2 y) {
+#if defined __AVX512VL__
+ return _mm_min_epu64(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ulong3 simd_min(simd_ulong3 x, simd_ulong3 y) {
+ return simd_make_ulong3(simd_min(simd_make_ulong4_undef(x), simd_make_ulong4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_ulong4 simd_min(simd_ulong4 x, simd_ulong4 y) {
+#if defined __AVX512VL__
+ return _mm256_min_epu64(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ulong8 simd_min(simd_ulong8 x, simd_ulong8 y) {
+#if defined __AVX512F__
+ return _mm512_min_epu64(x, y);
+#else
+ return simd_bitselect(x, y, y < x);
+#endif
+}
+
+static inline SIMD_CFUNC double simd_min(double x, double y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_min(simd_double2 x, simd_double2 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_min(simd_double3 x, simd_double3 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_min(simd_double4 x, simd_double4 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_min(simd_double8 x, simd_double8 y) {
+ return __tg_fmin(x,y);
+}
+
+static inline SIMD_CFUNC simd_char2 simd_max(simd_char2 x, simd_char2 y) {
+ return simd_make_char2(simd_max(simd_make_char8_undef(x), simd_make_char8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_char3 simd_max(simd_char3 x, simd_char3 y) {
+ return simd_make_char3(simd_max(simd_make_char8_undef(x), simd_make_char8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_char4 simd_max(simd_char4 x, simd_char4 y) {
+ return simd_make_char4(simd_max(simd_make_char8_undef(x), simd_make_char8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_char8 simd_max(simd_char8 x, simd_char8 y) {
+#if defined __arm__ || defined __arm64__
+ return vmax_s8(x, y);
+#else
+ return simd_make_char8(simd_max(simd_make_char16_undef(x), simd_make_char16_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_char16 simd_max(simd_char16 x, simd_char16 y) {
+#if defined __arm__ || defined __arm64__
+ return vmaxq_s8(x, y);
+#elif defined __SSE4_1__
+ return (simd_char16) _mm_max_epi8((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_char32 simd_max(simd_char32 x, simd_char32 y) {
+#if defined __AVX2__
+ return _mm256_max_epi8(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_char64 simd_max(simd_char64 x, simd_char64 y) {
+#if defined __AVX512BW__
+ return _mm512_max_epi8(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uchar2 simd_max(simd_uchar2 x, simd_uchar2 y) {
+ return simd_make_uchar2(simd_max(simd_make_uchar8_undef(x), simd_make_uchar8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_uchar3 simd_max(simd_uchar3 x, simd_uchar3 y) {
+ return simd_make_uchar3(simd_max(simd_make_uchar8_undef(x), simd_make_uchar8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_uchar4 simd_max(simd_uchar4 x, simd_uchar4 y) {
+ return simd_make_uchar4(simd_max(simd_make_uchar8_undef(x), simd_make_uchar8_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_uchar8 simd_max(simd_uchar8 x, simd_uchar8 y) {
+#if defined __arm__ || defined __arm64__
+ return vmax_u8(x, y);
+#else
+ return simd_make_uchar8(simd_max(simd_make_uchar16_undef(x), simd_make_uchar16_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_uchar16 simd_max(simd_uchar16 x, simd_uchar16 y) {
+#if defined __arm__ || defined __arm64__
+ return vmaxq_u8(x, y);
+#elif defined __SSE4_1__
+ return (simd_uchar16) _mm_max_epu8((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uchar32 simd_max(simd_uchar32 x, simd_uchar32 y) {
+#if defined __AVX2__
+ return _mm256_max_epu8(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uchar64 simd_max(simd_uchar64 x, simd_uchar64 y) {
+#if defined __AVX512BW__
+ return _mm512_max_epu8(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_short2 simd_max(simd_short2 x, simd_short2 y) {
+ return simd_make_short2(simd_max(simd_make_short4_undef(x), simd_make_short4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_short3 simd_max(simd_short3 x, simd_short3 y) {
+ return simd_make_short3(simd_max(simd_make_short4_undef(x), simd_make_short4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_short4 simd_max(simd_short4 x, simd_short4 y) {
+#if defined __arm__ || defined __arm64__
+ return vmax_s16(x, y);
+#else
+ return simd_make_short4(simd_max(simd_make_short8_undef(x), simd_make_short8_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_short8 simd_max(simd_short8 x, simd_short8 y) {
+#if defined __arm__ || defined __arm64__
+ return vmaxq_s16(x, y);
+#elif defined __SSE4_1__
+ return (simd_short8) _mm_max_epi16((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_short16 simd_max(simd_short16 x, simd_short16 y) {
+#if defined __AVX2__
+ return _mm256_max_epi16(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_short32 simd_max(simd_short32 x, simd_short32 y) {
+#if defined __AVX512BW__
+ return _mm512_max_epi16(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ushort2 simd_max(simd_ushort2 x, simd_ushort2 y) {
+ return simd_make_ushort2(simd_max(simd_make_ushort4_undef(x), simd_make_ushort4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_ushort3 simd_max(simd_ushort3 x, simd_ushort3 y) {
+ return simd_make_ushort3(simd_max(simd_make_ushort4_undef(x), simd_make_ushort4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_ushort4 simd_max(simd_ushort4 x, simd_ushort4 y) {
+#if defined __arm__ || defined __arm64__
+ return vmax_u16(x, y);
+#else
+ return simd_make_ushort4(simd_max(simd_make_ushort8_undef(x), simd_make_ushort8_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_ushort8 simd_max(simd_ushort8 x, simd_ushort8 y) {
+#if defined __arm__ || defined __arm64__
+ return vmaxq_u16(x, y);
+#elif defined __SSE4_1__
+ return (simd_ushort8) _mm_max_epu16((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ushort16 simd_max(simd_ushort16 x, simd_ushort16 y) {
+#if defined __AVX2__
+ return _mm256_max_epu16(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ushort32 simd_max(simd_ushort32 x, simd_ushort32 y) {
+#if defined __AVX512BW__
+ return _mm512_max_epu16(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_int2 simd_max(simd_int2 x, simd_int2 y) {
+#if defined __arm__ || defined __arm64__
+ return vmax_s32(x, y);
+#else
+ return simd_make_int2(simd_max(simd_make_int4_undef(x), simd_make_int4_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_int3 simd_max(simd_int3 x, simd_int3 y) {
+ return simd_make_int3(simd_max(simd_make_int4_undef(x), simd_make_int4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_int4 simd_max(simd_int4 x, simd_int4 y) {
+#if defined __arm__ || defined __arm64__
+ return vmaxq_s32(x, y);
+#elif defined __SSE4_1__
+ return (simd_int4) _mm_max_epi32((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_int8 simd_max(simd_int8 x, simd_int8 y) {
+#if defined __AVX2__
+ return _mm256_max_epi32(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_int16 simd_max(simd_int16 x, simd_int16 y) {
+#if defined __AVX512F__
+ return _mm512_max_epi32(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uint2 simd_max(simd_uint2 x, simd_uint2 y) {
+#if defined __arm__ || defined __arm64__
+ return vmax_u32(x, y);
+#else
+ return simd_make_uint2(simd_max(simd_make_uint4_undef(x), simd_make_uint4_undef(y)));
+#endif
+
+}
+
+static inline SIMD_CFUNC simd_uint3 simd_max(simd_uint3 x, simd_uint3 y) {
+ return simd_make_uint3(simd_max(simd_make_uint4_undef(x), simd_make_uint4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_uint4 simd_max(simd_uint4 x, simd_uint4 y) {
+#if defined __arm__ || defined __arm64__
+ return vmaxq_u32(x, y);
+#elif defined __SSE4_1__
+ return (simd_uint4) _mm_max_epu32((__m128i)x, (__m128i)y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uint8 simd_max(simd_uint8 x, simd_uint8 y) {
+#if defined __AVX2__
+ return _mm256_max_epu32(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_uint16 simd_max(simd_uint16 x, simd_uint16 y) {
+#if defined __AVX512F__
+ return _mm512_max_epu32(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC float simd_max(float x, float y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_max(simd_float2 x, simd_float2 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_max(simd_float3 x, simd_float3 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_max(simd_float4 x, simd_float4 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_max(simd_float8 x, simd_float8 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_max(simd_float16 x, simd_float16 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_long2 simd_max(simd_long2 x, simd_long2 y) {
+#if defined __AVX512VL__
+ return _mm_max_epi64(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_long3 simd_max(simd_long3 x, simd_long3 y) {
+ return simd_make_long3(simd_max(simd_make_long4_undef(x), simd_make_long4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_long4 simd_max(simd_long4 x, simd_long4 y) {
+#if defined __AVX512VL__
+ return _mm256_max_epi64(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_long8 simd_max(simd_long8 x, simd_long8 y) {
+#if defined __AVX512F__
+ return _mm512_max_epi64(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ulong2 simd_max(simd_ulong2 x, simd_ulong2 y) {
+#if defined __AVX512VL__
+ return _mm_max_epu64(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ulong3 simd_max(simd_ulong3 x, simd_ulong3 y) {
+ return simd_make_ulong3(simd_max(simd_make_ulong4_undef(x), simd_make_ulong4_undef(y)));
+}
+
+static inline SIMD_CFUNC simd_ulong4 simd_max(simd_ulong4 x, simd_ulong4 y) {
+#if defined __AVX512VL__
+ return _mm256_max_epu64(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC simd_ulong8 simd_max(simd_ulong8 x, simd_ulong8 y) {
+#if defined __AVX512F__
+ return _mm512_max_epu64(x, y);
+#else
+ return simd_bitselect(x, y, x < y);
+#endif
+}
+
+static inline SIMD_CFUNC double simd_max(double x, double y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_max(simd_double2 x, simd_double2 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_max(simd_double3 x, simd_double3 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_max(simd_double4 x, simd_double4 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_max(simd_double8 x, simd_double8 y) {
+ return __tg_fmax(x,y);
+}
+
+static inline SIMD_CFUNC simd_char2 simd_clamp(simd_char2 x, simd_char2 min, simd_char2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_char3 simd_clamp(simd_char3 x, simd_char3 min, simd_char3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_char4 simd_clamp(simd_char4 x, simd_char4 min, simd_char4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_char8 simd_clamp(simd_char8 x, simd_char8 min, simd_char8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_char16 simd_clamp(simd_char16 x, simd_char16 min, simd_char16 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_char32 simd_clamp(simd_char32 x, simd_char32 min, simd_char32 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_char64 simd_clamp(simd_char64 x, simd_char64 min, simd_char64 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uchar2 simd_clamp(simd_uchar2 x, simd_uchar2 min, simd_uchar2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uchar3 simd_clamp(simd_uchar3 x, simd_uchar3 min, simd_uchar3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uchar4 simd_clamp(simd_uchar4 x, simd_uchar4 min, simd_uchar4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uchar8 simd_clamp(simd_uchar8 x, simd_uchar8 min, simd_uchar8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uchar16 simd_clamp(simd_uchar16 x, simd_uchar16 min, simd_uchar16 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uchar32 simd_clamp(simd_uchar32 x, simd_uchar32 min, simd_uchar32 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uchar64 simd_clamp(simd_uchar64 x, simd_uchar64 min, simd_uchar64 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_short2 simd_clamp(simd_short2 x, simd_short2 min, simd_short2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_short3 simd_clamp(simd_short3 x, simd_short3 min, simd_short3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_short4 simd_clamp(simd_short4 x, simd_short4 min, simd_short4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_short8 simd_clamp(simd_short8 x, simd_short8 min, simd_short8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_short16 simd_clamp(simd_short16 x, simd_short16 min, simd_short16 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_short32 simd_clamp(simd_short32 x, simd_short32 min, simd_short32 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ushort2 simd_clamp(simd_ushort2 x, simd_ushort2 min, simd_ushort2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ushort3 simd_clamp(simd_ushort3 x, simd_ushort3 min, simd_ushort3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ushort4 simd_clamp(simd_ushort4 x, simd_ushort4 min, simd_ushort4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ushort8 simd_clamp(simd_ushort8 x, simd_ushort8 min, simd_ushort8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ushort16 simd_clamp(simd_ushort16 x, simd_ushort16 min, simd_ushort16 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ushort32 simd_clamp(simd_ushort32 x, simd_ushort32 min, simd_ushort32 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_int2 simd_clamp(simd_int2 x, simd_int2 min, simd_int2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_int3 simd_clamp(simd_int3 x, simd_int3 min, simd_int3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_int4 simd_clamp(simd_int4 x, simd_int4 min, simd_int4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_int8 simd_clamp(simd_int8 x, simd_int8 min, simd_int8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_int16 simd_clamp(simd_int16 x, simd_int16 min, simd_int16 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uint2 simd_clamp(simd_uint2 x, simd_uint2 min, simd_uint2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uint3 simd_clamp(simd_uint3 x, simd_uint3 min, simd_uint3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uint4 simd_clamp(simd_uint4 x, simd_uint4 min, simd_uint4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uint8 simd_clamp(simd_uint8 x, simd_uint8 min, simd_uint8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_uint16 simd_clamp(simd_uint16 x, simd_uint16 min, simd_uint16 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC float simd_clamp(float x, float min, float max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_clamp(simd_float2 x, simd_float2 min, simd_float2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_clamp(simd_float3 x, simd_float3 min, simd_float3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_clamp(simd_float4 x, simd_float4 min, simd_float4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_clamp(simd_float8 x, simd_float8 min, simd_float8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_clamp(simd_float16 x, simd_float16 min, simd_float16 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_long2 simd_clamp(simd_long2 x, simd_long2 min, simd_long2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_long3 simd_clamp(simd_long3 x, simd_long3 min, simd_long3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_long4 simd_clamp(simd_long4 x, simd_long4 min, simd_long4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_long8 simd_clamp(simd_long8 x, simd_long8 min, simd_long8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ulong2 simd_clamp(simd_ulong2 x, simd_ulong2 min, simd_ulong2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ulong3 simd_clamp(simd_ulong3 x, simd_ulong3 min, simd_ulong3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ulong4 simd_clamp(simd_ulong4 x, simd_ulong4 min, simd_ulong4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_ulong8 simd_clamp(simd_ulong8 x, simd_ulong8 min, simd_ulong8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC double simd_clamp(double x, double min, double max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_clamp(simd_double2 x, simd_double2 min, simd_double2 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_clamp(simd_double3 x, simd_double3 min, simd_double3 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_clamp(simd_double4 x, simd_double4 min, simd_double4 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_clamp(simd_double8 x, simd_double8 min, simd_double8 max) {
+ return simd_min(simd_max(x, min), max);
+}
+
+
+static inline SIMD_CFUNC float simd_sign(float x) {
+ return (x == 0 | x != x) ? 0 : copysign(1,x);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_sign(simd_float2 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_sign(simd_float3 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_sign(simd_float4 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_sign(simd_float8 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_sign(simd_float16 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC double simd_sign(double x) {
+ return (x == 0 | x != x) ? 0 : copysign(1,x);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_sign(simd_double2 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_sign(simd_double3 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_sign(simd_double4 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_sign(simd_double8 x) {
+ return simd_bitselect(__tg_copysign(1,x), 0, x == 0 | x != x);
+}
+
+static inline SIMD_CFUNC float simd_mix(float x, float y, float t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_mix(simd_float2 x, simd_float2 y, simd_float2 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_mix(simd_float3 x, simd_float3 y, simd_float3 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_mix(simd_float4 x, simd_float4 y, simd_float4 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_mix(simd_float8 x, simd_float8 y, simd_float8 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_mix(simd_float16 x, simd_float16 y, simd_float16 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC double simd_mix(double x, double y, double t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_mix(simd_double2 x, simd_double2 y, simd_double2 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_mix(simd_double3 x, simd_double3 y, simd_double3 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_mix(simd_double4 x, simd_double4 y, simd_double4 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_mix(simd_double8 x, simd_double8 y, simd_double8 t) {
+ return x + t*(y - x);
+}
+
+static inline SIMD_CFUNC float simd_recip(float x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float2 simd_recip(simd_float2 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float3 simd_recip(simd_float3 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float4 simd_recip(simd_float4 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float8 simd_recip(simd_float8 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float16 simd_recip(simd_float16 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC double simd_recip(double x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_double2 simd_recip(simd_double2 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_double3 simd_recip(simd_double3 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_double4 simd_recip(simd_double4 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_double8 simd_recip(simd_double8 x) {
+#if __FAST_MATH__
+ return simd_fast_recip(x);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC float simd_fast_recip(float x) {
+#if defined __AVX512VL__
+ simd_float4 x4 = simd_make_float4(x);
+ return ((simd_float4)_mm_rcp14_ss(x4, x4)).x;
+#elif defined __SSE__
+ return ((simd_float4)_mm_rcp_ss(simd_make_float4(x))).x;
+#elif defined __ARM_NEON__
+ return simd_fast_recip(simd_make_float2_undef(x)).x;
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float2 simd_fast_recip(simd_float2 x) {
+#if defined __SSE__
+ return simd_make_float2(simd_fast_recip(simd_make_float4_undef(x)));
+#elif defined __ARM_NEON__
+ simd_float2 r = vrecpe_f32(x);
+ return r * vrecps_f32(x, r);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float3 simd_fast_recip(simd_float3 x) {
+ return simd_make_float3(simd_fast_recip(simd_make_float4_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_float4 simd_fast_recip(simd_float4 x) {
+#if defined __AVX512VL__
+ return _mm_rcp14_ps(x);
+#elif defined __SSE__
+ return _mm_rcp_ps(x);
+#elif defined __ARM_NEON__
+ simd_float4 r = vrecpeq_f32(x);
+ return r * vrecpsq_f32(x, r);
+#else
+ return simd_precise_recip(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float8 simd_fast_recip(simd_float8 x) {
+#if defined __AVX512VL__
+ return _mm256_rcp14_ps(x);
+#elif defined __AVX__
+ return _mm256_rcp_ps(x);
+#else
+ return simd_make_float8(simd_fast_recip(x.lo), simd_fast_recip(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_float16 simd_fast_recip(simd_float16 x) {
+#if defined __AVX512F__
+ return _mm512_rcp14_ps(x);
+#else
+ return simd_make_float16(simd_fast_recip(x.lo), simd_fast_recip(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC double simd_fast_recip(double x) {
+ return simd_precise_recip(x);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_fast_recip(simd_double2 x) {
+ return simd_precise_recip(x);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_fast_recip(simd_double3 x) {
+ return simd_precise_recip(x);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_fast_recip(simd_double4 x) {
+ return simd_precise_recip(x);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_fast_recip(simd_double8 x) {
+ return simd_precise_recip(x);
+}
+
+static inline SIMD_CFUNC float simd_precise_recip(float x) {
+#if defined __SSE__
+ float r = simd_fast_recip(x);
+ return r*(2 - (x == 0 ? -INFINITY : x)*r);
+#elif defined __ARM_NEON__
+ return simd_precise_recip(simd_make_float2_undef(x)).x;
+#else
+ return 1/x;
+#endif
+}
+
+static inline SIMD_CFUNC simd_float2 simd_precise_recip(simd_float2 x) {
+#if defined __SSE__
+ return simd_make_float2(simd_precise_recip(simd_make_float4_undef(x)));
+#elif defined __ARM_NEON__
+ simd_float2 r = simd_fast_recip(x);
+ return r*vrecps_f32(x, r);
+#else
+ return 1/x;
+#endif
+}
+
+static inline SIMD_CFUNC simd_float3 simd_precise_recip(simd_float3 x) {
+ return simd_make_float3(simd_precise_recip(simd_make_float4_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_float4 simd_precise_recip(simd_float4 x) {
+#if defined __SSE__
+ simd_float4 r = simd_fast_recip(x);
+ return r*(2 - simd_bitselect(x, -INFINITY, x == 0)*r);
+#elif defined __ARM_NEON__
+ simd_float4 r = simd_fast_recip(x);
+ return r*vrecpsq_f32(x, r);
+#else
+ return 1/x;
+#endif
+}
+
+static inline SIMD_CFUNC simd_float8 simd_precise_recip(simd_float8 x) {
+#if defined __AVX__
+ simd_float8 r = simd_fast_recip(x);
+ return r*(2 - simd_bitselect(x, -INFINITY, x == 0)*r);
+#else
+ return simd_make_float8(simd_precise_recip(x.lo), simd_precise_recip(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_float16 simd_precise_recip(simd_float16 x) {
+#if defined __AVX512F__
+ simd_float16 r = simd_fast_recip(x);
+ return r*(2 - simd_bitselect(x, -INFINITY, x == 0)*r);
+#else
+ return simd_make_float16(simd_precise_recip(x.lo), simd_precise_recip(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC double simd_precise_recip(double x) {
+ return 1/x;
+}
+
+static inline SIMD_CFUNC simd_double2 simd_precise_recip(simd_double2 x) {
+ return 1/x;
+}
+
+static inline SIMD_CFUNC simd_double3 simd_precise_recip(simd_double3 x) {
+ return 1/x;
+}
+
+static inline SIMD_CFUNC simd_double4 simd_precise_recip(simd_double4 x) {
+ return 1/x;
+}
+
+static inline SIMD_CFUNC simd_double8 simd_precise_recip(simd_double8 x) {
+ return 1/x;
+}
+
+static inline SIMD_CFUNC float simd_rsqrt(float x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float2 simd_rsqrt(simd_float2 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float3 simd_rsqrt(simd_float3 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float4 simd_rsqrt(simd_float4 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float8 simd_rsqrt(simd_float8 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float16 simd_rsqrt(simd_float16 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC double simd_rsqrt(double x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_double2 simd_rsqrt(simd_double2 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_double3 simd_rsqrt(simd_double3 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_double4 simd_rsqrt(simd_double4 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_double8 simd_rsqrt(simd_double8 x) {
+#if __FAST_MATH__
+ return simd_fast_rsqrt(x);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC float simd_fast_rsqrt(float x) {
+#if defined __AVX512VL__
+ simd_float4 x4 = simd_make_float4(x);
+ return ((simd_float4)_mm_rsqrt14_ss(x4, x4)).x;
+#elif defined __SSE__
+ return ((simd_float4)_mm_rsqrt_ss(simd_make_float4(x))).x;
+#elif defined __ARM_NEON__
+ return simd_fast_rsqrt(simd_make_float2_undef(x)).x;
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float2 simd_fast_rsqrt(simd_float2 x) {
+#if defined __SSE__
+ return simd_make_float2(simd_fast_rsqrt(simd_make_float4_undef(x)));
+#elif defined __ARM_NEON__
+ simd_float2 r = vrsqrte_f32(x);
+ return r * vrsqrts_f32(x, r*r);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float3 simd_fast_rsqrt(simd_float3 x) {
+ return simd_make_float3(simd_fast_rsqrt(simd_make_float4_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_float4 simd_fast_rsqrt(simd_float4 x) {
+#if defined __AVX512VL__
+ return _mm_rsqrt14_ps(x);
+#elif defined __SSE__
+ return _mm_rsqrt_ps(x);
+#elif defined __ARM_NEON__
+ simd_float4 r = vrsqrteq_f32(x);
+ return r * vrsqrtsq_f32(x, r*r);
+#else
+ return simd_precise_rsqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float8 simd_fast_rsqrt(simd_float8 x) {
+#if defined __AVX512VL__
+ return _mm256_rsqrt14_ps(x);
+#elif defined __AVX__
+ return _mm256_rsqrt_ps(x);
+#else
+ return simd_make_float8(simd_fast_rsqrt(x.lo), simd_fast_rsqrt(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_float16 simd_fast_rsqrt(simd_float16 x) {
+#if defined __AVX512F__
+ return _mm512_rsqrt14_ps(x);
+#else
+ return simd_make_float16(simd_fast_rsqrt(x.lo), simd_fast_rsqrt(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC double simd_fast_rsqrt(double x) {
+ return simd_precise_rsqrt(x);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_fast_rsqrt(simd_double2 x) {
+ return simd_precise_rsqrt(x);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_fast_rsqrt(simd_double3 x) {
+ return simd_precise_rsqrt(x);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_fast_rsqrt(simd_double4 x) {
+ return simd_precise_rsqrt(x);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_fast_rsqrt(simd_double8 x) {
+ return simd_precise_rsqrt(x);
+}
+
+static inline SIMD_CFUNC float simd_precise_rsqrt(float x) {
+#if defined __SSE__
+ float r = simd_fast_rsqrt(x);
+ return r*(1.5f - 0.5f*(r == INFINITY ? -INFINITY : x)*r*r);
+#elif defined __ARM_NEON__
+ return simd_precise_rsqrt(simd_make_float2_undef(x)).x;
+#else
+ return 1/sqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float2 simd_precise_rsqrt(simd_float2 x) {
+#if defined __SSE__
+ return simd_make_float2(simd_precise_rsqrt(simd_make_float4_undef(x)));
+#elif defined __ARM_NEON__
+ simd_float2 r = simd_fast_rsqrt(x);
+ return r*vrsqrts_f32(x, r*r);
+#else
+ return 1/__tg_sqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float3 simd_precise_rsqrt(simd_float3 x) {
+ return simd_make_float3(simd_precise_rsqrt(simd_make_float4_undef(x)));
+}
+
+static inline SIMD_CFUNC simd_float4 simd_precise_rsqrt(simd_float4 x) {
+#if defined __SSE__
+ simd_float4 r = simd_fast_rsqrt(x);
+ return r*(1.5 - 0.5*simd_bitselect(x, -INFINITY, r == INFINITY)*r*r);
+#elif defined __ARM_NEON__
+ simd_float4 r = simd_fast_rsqrt(x);
+ return r*vrsqrtsq_f32(x, r*r);
+#else
+ return 1/__tg_sqrt(x);
+#endif
+}
+
+static inline SIMD_CFUNC simd_float8 simd_precise_rsqrt(simd_float8 x) {
+#if defined __AVX__
+ simd_float8 r = simd_fast_rsqrt(x);
+ return r*(1.5 - 0.5*simd_bitselect(x, -INFINITY, r == INFINITY)*r*r);
+#else
+ return simd_make_float8(simd_precise_rsqrt(x.lo), simd_precise_rsqrt(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_float16 simd_precise_rsqrt(simd_float16 x) {
+#if defined __AVX512F__
+ simd_float16 r = simd_fast_rsqrt(x);
+ return r*(1.5 - 0.5*simd_bitselect(x, -INFINITY, r == INFINITY)*r*r);
+#else
+ return simd_make_float16(simd_precise_rsqrt(x.lo), simd_precise_rsqrt(x.hi));
+#endif
+}
+
+static inline SIMD_CFUNC double simd_precise_rsqrt(double x) {
+ return 1/sqrt(x);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_precise_rsqrt(simd_double2 x) {
+ return 1/__tg_sqrt(x);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_precise_rsqrt(simd_double3 x) {
+ return 1/__tg_sqrt(x);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_precise_rsqrt(simd_double4 x) {
+ return 1/__tg_sqrt(x);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_precise_rsqrt(simd_double8 x) {
+ return 1/__tg_sqrt(x);
+}
+
+static inline SIMD_CFUNC float simd_fract(float x) {
+ return fmin(x - floor(x), 0x1.fffffep-1f);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_fract(simd_float2 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffep-1f);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_fract(simd_float3 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffep-1f);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_fract(simd_float4 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffep-1f);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_fract(simd_float8 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffep-1f);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_fract(simd_float16 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffep-1f);
+}
+
+static inline SIMD_CFUNC double simd_fract(double x) {
+ return fmin(x - floor(x), 0x1.fffffffffffffp-1);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_fract(simd_double2 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffffffffffp-1);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_fract(simd_double3 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffffffffffp-1);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_fract(simd_double4 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffffffffffp-1);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_fract(simd_double8 x) {
+ return __tg_fmin(x - __tg_floor(x), 0x1.fffffffffffffp-1);
+}
+
+static inline SIMD_CFUNC float simd_step(float edge, float x) {
+ return !(x < edge);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_step(simd_float2 edge, simd_float2 x) {
+ return simd_bitselect((simd_float2)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_step(simd_float3 edge, simd_float3 x) {
+ return simd_bitselect((simd_float3)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_step(simd_float4 edge, simd_float4 x) {
+ return simd_bitselect((simd_float4)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_step(simd_float8 edge, simd_float8 x) {
+ return simd_bitselect((simd_float8)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_step(simd_float16 edge, simd_float16 x) {
+ return simd_bitselect((simd_float16)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC double simd_step(double edge, double x) {
+ return !(x < edge);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_step(simd_double2 edge, simd_double2 x) {
+ return simd_bitselect((simd_double2)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_step(simd_double3 edge, simd_double3 x) {
+ return simd_bitselect((simd_double3)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_step(simd_double4 edge, simd_double4 x) {
+ return simd_bitselect((simd_double4)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_step(simd_double8 edge, simd_double8 x) {
+ return simd_bitselect((simd_double8)1, 0, x < edge);
+}
+
+static inline SIMD_CFUNC float simd_smoothstep(float edge0, float edge1, float x) {
+ float t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_smoothstep(simd_float2 edge0, simd_float2 edge1, simd_float2 x) {
+ simd_float2 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_smoothstep(simd_float3 edge0, simd_float3 edge1, simd_float3 x) {
+ simd_float3 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_float4 simd_smoothstep(simd_float4 edge0, simd_float4 edge1, simd_float4 x) {
+ simd_float4 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_float8 simd_smoothstep(simd_float8 edge0, simd_float8 edge1, simd_float8 x) {
+ simd_float8 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_float16 simd_smoothstep(simd_float16 edge0, simd_float16 edge1, simd_float16 x) {
+ simd_float16 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC double simd_smoothstep(double edge0, double edge1, double x) {
+ double t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_double2 simd_smoothstep(simd_double2 edge0, simd_double2 edge1, simd_double2 x) {
+ simd_double2 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_smoothstep(simd_double3 edge0, simd_double3 edge1, simd_double3 x) {
+ simd_double3 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_double4 simd_smoothstep(simd_double4 edge0, simd_double4 edge1, simd_double4 x) {
+ simd_double4 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC simd_double8 simd_smoothstep(simd_double8 edge0, simd_double8 edge1, simd_double8 x) {
+ simd_double8 t = simd_clamp((x - edge0)/(edge1 - edge0), 0, 1);
+ return t*t*(3 - 2*t);
+}
+
+static inline SIMD_CFUNC char simd_reduce_add(simd_char2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC char simd_reduce_add(simd_char3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC char simd_reduce_add(simd_char4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC char simd_reduce_add(simd_char8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC char simd_reduce_add(simd_char16 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC char simd_reduce_add(simd_char32 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC char simd_reduce_add(simd_char64 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar16 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar32 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_add(simd_uchar64 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC short simd_reduce_add(simd_short2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC short simd_reduce_add(simd_short3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC short simd_reduce_add(simd_short4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC short simd_reduce_add(simd_short8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC short simd_reduce_add(simd_short16 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC short simd_reduce_add(simd_short32 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort16 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_add(simd_ushort32 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC int simd_reduce_add(simd_int2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC int simd_reduce_add(simd_int3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC int simd_reduce_add(simd_int4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC int simd_reduce_add(simd_int8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC int simd_reduce_add(simd_int16 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_add(simd_uint16 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC float simd_reduce_add(simd_float2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC float simd_reduce_add(simd_float3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC float simd_reduce_add(simd_float4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC float simd_reduce_add(simd_float8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC float simd_reduce_add(simd_float16 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_add(simd_long2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_add(simd_long3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_add(simd_long4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_add(simd_long8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_add(simd_ulong2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_add(simd_ulong3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_add(simd_ulong4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_add(simd_ulong8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC double simd_reduce_add(simd_double2 x) {
+ return x.x + x.y;
+}
+
+static inline SIMD_CFUNC double simd_reduce_add(simd_double3 x) {
+ return x.x + x.y + x.z;
+}
+
+static inline SIMD_CFUNC double simd_reduce_add(simd_double4 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC double simd_reduce_add(simd_double8 x) {
+ return simd_reduce_add(x.lo + x.hi);
+}
+
+static inline SIMD_CFUNC char simd_reduce_min(simd_char2 x) {
+ return x.y < x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC char simd_reduce_min(simd_char3 x) {
+ char t = x.z < x.x ? x.z : x.x;
+ return x.y < t ? x.y : t;
+}
+
+static inline SIMD_CFUNC char simd_reduce_min(simd_char4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_min(simd_char8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_min(simd_char16 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_min(simd_char32 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_min(simd_char64 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar2 x) {
+ return x.y < x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar3 x) {
+ unsigned char t = x.z < x.x ? x.z : x.x;
+ return x.y < t ? x.y : t;
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar16 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar32 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_min(simd_uchar64 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC short simd_reduce_min(simd_short2 x) {
+ return x.y < x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC short simd_reduce_min(simd_short3 x) {
+ short t = x.z < x.x ? x.z : x.x;
+ return x.y < t ? x.y : t;
+}
+
+static inline SIMD_CFUNC short simd_reduce_min(simd_short4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC short simd_reduce_min(simd_short8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC short simd_reduce_min(simd_short16 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC short simd_reduce_min(simd_short32 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort2 x) {
+ return x.y < x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort3 x) {
+ unsigned short t = x.z < x.x ? x.z : x.x;
+ return x.y < t ? x.y : t;
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort16 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_min(simd_ushort32 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC int simd_reduce_min(simd_int2 x) {
+ return x.y < x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC int simd_reduce_min(simd_int3 x) {
+ int t = x.z < x.x ? x.z : x.x;
+ return x.y < t ? x.y : t;
+}
+
+static inline SIMD_CFUNC int simd_reduce_min(simd_int4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC int simd_reduce_min(simd_int8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC int simd_reduce_min(simd_int16 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint2 x) {
+ return x.y < x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint3 x) {
+ unsigned int t = x.z < x.x ? x.z : x.x;
+ return x.y < t ? x.y : t;
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_min(simd_uint16 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC float simd_reduce_min(simd_float2 x) {
+ return fmin(x.x, x.y);
+}
+
+static inline SIMD_CFUNC float simd_reduce_min(simd_float3 x) {
+ return fmin(fmin(x.x, x.z), x.y);
+}
+
+static inline SIMD_CFUNC float simd_reduce_min(simd_float4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC float simd_reduce_min(simd_float8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC float simd_reduce_min(simd_float16 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_min(simd_long2 x) {
+ return x.y < x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_min(simd_long3 x) {
+ simd_long1 t = x.z < x.x ? x.z : x.x;
+ return x.y < t ? x.y : t;
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_min(simd_long4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_min(simd_long8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_min(simd_ulong2 x) {
+ return x.y < x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_min(simd_ulong3 x) {
+ simd_ulong1 t = x.z < x.x ? x.z : x.x;
+ return x.y < t ? x.y : t;
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_min(simd_ulong4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_min(simd_ulong8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC double simd_reduce_min(simd_double2 x) {
+ return fmin(x.x, x.y);
+}
+
+static inline SIMD_CFUNC double simd_reduce_min(simd_double3 x) {
+ return fmin(fmin(x.x, x.z), x.y);
+}
+
+static inline SIMD_CFUNC double simd_reduce_min(simd_double4 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC double simd_reduce_min(simd_double8 x) {
+ return simd_reduce_min(simd_min(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_max(simd_char2 x) {
+ return x.y > x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC char simd_reduce_max(simd_char3 x) {
+ char t = x.z > x.x ? x.z : x.x;
+ return x.y > t ? x.y : t;
+}
+
+static inline SIMD_CFUNC char simd_reduce_max(simd_char4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_max(simd_char8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_max(simd_char16 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_max(simd_char32 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC char simd_reduce_max(simd_char64 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar2 x) {
+ return x.y > x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar3 x) {
+ unsigned char t = x.z > x.x ? x.z : x.x;
+ return x.y > t ? x.y : t;
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar16 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar32 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned char simd_reduce_max(simd_uchar64 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC short simd_reduce_max(simd_short2 x) {
+ return x.y > x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC short simd_reduce_max(simd_short3 x) {
+ short t = x.z > x.x ? x.z : x.x;
+ return x.y > t ? x.y : t;
+}
+
+static inline SIMD_CFUNC short simd_reduce_max(simd_short4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC short simd_reduce_max(simd_short8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC short simd_reduce_max(simd_short16 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC short simd_reduce_max(simd_short32 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort2 x) {
+ return x.y > x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort3 x) {
+ unsigned short t = x.z > x.x ? x.z : x.x;
+ return x.y > t ? x.y : t;
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort16 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned short simd_reduce_max(simd_ushort32 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC int simd_reduce_max(simd_int2 x) {
+ return x.y > x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC int simd_reduce_max(simd_int3 x) {
+ int t = x.z > x.x ? x.z : x.x;
+ return x.y > t ? x.y : t;
+}
+
+static inline SIMD_CFUNC int simd_reduce_max(simd_int4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC int simd_reduce_max(simd_int8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC int simd_reduce_max(simd_int16 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint2 x) {
+ return x.y > x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint3 x) {
+ unsigned int t = x.z > x.x ? x.z : x.x;
+ return x.y > t ? x.y : t;
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC unsigned int simd_reduce_max(simd_uint16 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC float simd_reduce_max(simd_float2 x) {
+ return fmax(x.x, x.y);
+}
+
+static inline SIMD_CFUNC float simd_reduce_max(simd_float3 x) {
+ return fmax(fmax(x.x, x.z), x.y);
+}
+
+static inline SIMD_CFUNC float simd_reduce_max(simd_float4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC float simd_reduce_max(simd_float8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC float simd_reduce_max(simd_float16 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_max(simd_long2 x) {
+ return x.y > x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_max(simd_long3 x) {
+ simd_long1 t = x.z > x.x ? x.z : x.x;
+ return x.y > t ? x.y : t;
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_max(simd_long4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC simd_long1 simd_reduce_max(simd_long8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_max(simd_ulong2 x) {
+ return x.y > x.x ? x.y : x.x;
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_max(simd_ulong3 x) {
+ simd_ulong1 t = x.z > x.x ? x.z : x.x;
+ return x.y > t ? x.y : t;
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_max(simd_ulong4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC simd_ulong1 simd_reduce_max(simd_ulong8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC double simd_reduce_max(simd_double2 x) {
+ return fmax(x.x, x.y);
+}
+
+static inline SIMD_CFUNC double simd_reduce_max(simd_double3 x) {
+ return fmax(fmax(x.x, x.z), x.y);
+}
+
+static inline SIMD_CFUNC double simd_reduce_max(simd_double4 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+static inline SIMD_CFUNC double simd_reduce_max(simd_double8 x) {
+ return simd_reduce_max(simd_max(x.lo, x.hi));
+}
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
+#endif /* SIMD_COMMON_HEADER */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/simd/conversion.h b/lib/libc/include/aarch64-macos-gnu/simd/conversion.h
new file mode 100644
index 0000000000..6379afde05
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/simd/conversion.h
@@ -0,0 +1,1966 @@
+/* Copyright (c) 2014-2017 Apple, Inc. All rights reserved.
+ *
+ * The interfaces declared in this header provide conversions between vector
+ * types. The following functions are available:
+ *
+ * simd_char(x) simd_uchar(x)
+ * simd_short(x) simd_ushort(x)
+ * simd_int(x) simd_uint(x)
+ * simd_long(x) simd_ulong(x)
+ * simd_float(x)
+ * simd_double(x)
+ *
+ * Each of these functions converts x to a vector whose elements have the
+ * type named by the function, with the same number of elements as x. Unlike
+ * a vector cast, these functions convert the elements to the new element
+ * type. These conversions behave exactly as C scalar conversions, except
+ * that conversions from integer vector types to signed integer vector types
+ * are guaranteed to wrap modulo 2^N (where N is the number of bits in an
+ * element of the result type).
+ *
+ * For integer vector types, saturating conversions are also available:
+ *
+ * simd_char_sat(x) simd_uchar_sat(x)
+ * simd_short_sat(x) simd_ushort_sat(x)
+ * simd_int_sat(x) simd_uint_sat(x)
+ * simd_long_sat(x) simd_ulong_sat(x)
+ *
+ * These conversions clamp x to the representable range of the result type
+ * before converting.
+ *
+ * Unlike most vector operations in <simd/>, there are no abbreviated C++
+ * names for these functions in the simd:: namespace.
+ */
+
+#ifndef __SIMD_CONVERSION_HEADER__
+#define __SIMD_CONVERSION_HEADER__
+
+#include <simd/base.h>
+#if SIMD_COMPILER_HAS_REQUIRED_FEATURES
+#include <simd/vector_types.h>
+#include <simd/common.h>
+#include <simd/logic.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+static simd_char2 SIMD_CFUNC simd_char(simd_char2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_char3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_char4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_char8 __x);
+static simd_char16 SIMD_CFUNC simd_char(simd_char16 __x);
+static simd_char32 SIMD_CFUNC simd_char(simd_char32 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_uchar2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_uchar3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_uchar4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_uchar8 __x);
+static simd_char16 SIMD_CFUNC simd_char(simd_uchar16 __x);
+static simd_char32 SIMD_CFUNC simd_char(simd_uchar32 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_short2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_short3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_short4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_short8 __x);
+static simd_char16 SIMD_CFUNC simd_char(simd_short16 __x);
+static simd_char32 SIMD_CFUNC simd_char(simd_short32 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_ushort2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_ushort3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_ushort4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_ushort8 __x);
+static simd_char16 SIMD_CFUNC simd_char(simd_ushort16 __x);
+static simd_char32 SIMD_CFUNC simd_char(simd_ushort32 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_int2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_int3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_int4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_int8 __x);
+static simd_char16 SIMD_CFUNC simd_char(simd_int16 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_uint2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_uint3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_uint4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_uint8 __x);
+static simd_char16 SIMD_CFUNC simd_char(simd_uint16 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_float2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_float3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_float4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_float8 __x);
+static simd_char16 SIMD_CFUNC simd_char(simd_float16 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_long2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_long3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_long4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_long8 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_ulong2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_ulong3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_ulong4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_ulong8 __x);
+static simd_char2 SIMD_CFUNC simd_char(simd_double2 __x);
+static simd_char3 SIMD_CFUNC simd_char(simd_double3 __x);
+static simd_char4 SIMD_CFUNC simd_char(simd_double4 __x);
+static simd_char8 SIMD_CFUNC simd_char(simd_double8 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_char2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_char3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_char4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_char8 __x);
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_char16 __x);
+static simd_char32 SIMD_CFUNC simd_char_sat(simd_char32 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_short2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_short3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_short4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_short8 __x);
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_short16 __x);
+static simd_char32 SIMD_CFUNC simd_char_sat(simd_short32 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_int2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_int3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_int4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_int8 __x);
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_int16 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_float2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_float3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_float4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_float8 __x);
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_float16 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_long2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_long3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_long4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_long8 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_double2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_double3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_double4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_double8 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_uchar2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_uchar3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_uchar4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_uchar8 __x);
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_uchar16 __x);
+static simd_char32 SIMD_CFUNC simd_char_sat(simd_uchar32 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_ushort2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_ushort3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_ushort4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_ushort8 __x);
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_ushort16 __x);
+static simd_char32 SIMD_CFUNC simd_char_sat(simd_ushort32 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_uint2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_uint3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_uint4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_uint8 __x);
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_uint16 __x);
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_ulong2 __x);
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_ulong3 __x);
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_ulong4 __x);
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_ulong8 __x);
+#define vector_char simd_char
+#define vector_char_sat simd_char_sat
+
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_char2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_char3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_char4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_char8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_char16 __x);
+static simd_uchar32 SIMD_CFUNC simd_uchar(simd_char32 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_uchar2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_uchar3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_uchar4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_uchar8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_uchar16 __x);
+static simd_uchar32 SIMD_CFUNC simd_uchar(simd_uchar32 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_short2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_short3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_short4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_short8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_short16 __x);
+static simd_uchar32 SIMD_CFUNC simd_uchar(simd_short32 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_ushort2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_ushort3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_ushort4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_ushort8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_ushort16 __x);
+static simd_uchar32 SIMD_CFUNC simd_uchar(simd_ushort32 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_int2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_int3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_int4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_int8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_int16 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_uint2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_uint3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_uint4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_uint8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_uint16 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_float2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_float3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_float4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_float8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_float16 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_long2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_long3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_long4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_long8 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_ulong2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_ulong3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_ulong4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_ulong8 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_double2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_double3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_double4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_double8 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_char2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_char3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_char4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_char8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_char16 __x);
+static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_char32 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_short2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_short3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_short4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_short8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_short16 __x);
+static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_short32 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_int2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_int3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_int4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_int8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_int16 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_float2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_float3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_float4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_float8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_float16 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_long2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_long3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_long4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_long8 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_double2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_double3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_double4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_double8 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_uchar2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_uchar3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_uchar4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_uchar8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_uchar16 __x);
+static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_uchar32 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_ushort2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_ushort3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_ushort4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_ushort8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_ushort16 __x);
+static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_ushort32 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_uint2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_uint3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_uint4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_uint8 __x);
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_uint16 __x);
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_ulong2 __x);
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_ulong3 __x);
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_ulong4 __x);
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_ulong8 __x);
+#define vector_uchar simd_uchar
+#define vector_uchar_sat simd_uchar_sat
+
+static simd_short2 SIMD_CFUNC simd_short(simd_char2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_char3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_char4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_char8 __x);
+static simd_short16 SIMD_CFUNC simd_short(simd_char16 __x);
+static simd_short32 SIMD_CFUNC simd_short(simd_char32 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_uchar2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_uchar3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_uchar4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_uchar8 __x);
+static simd_short16 SIMD_CFUNC simd_short(simd_uchar16 __x);
+static simd_short32 SIMD_CFUNC simd_short(simd_uchar32 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_short2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_short3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_short4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_short8 __x);
+static simd_short16 SIMD_CFUNC simd_short(simd_short16 __x);
+static simd_short32 SIMD_CFUNC simd_short(simd_short32 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_ushort2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_ushort3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_ushort4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_ushort8 __x);
+static simd_short16 SIMD_CFUNC simd_short(simd_ushort16 __x);
+static simd_short32 SIMD_CFUNC simd_short(simd_ushort32 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_int2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_int3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_int4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_int8 __x);
+static simd_short16 SIMD_CFUNC simd_short(simd_int16 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_uint2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_uint3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_uint4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_uint8 __x);
+static simd_short16 SIMD_CFUNC simd_short(simd_uint16 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_float2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_float3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_float4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_float8 __x);
+static simd_short16 SIMD_CFUNC simd_short(simd_float16 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_long2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_long3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_long4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_long8 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_ulong2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_ulong3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_ulong4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_ulong8 __x);
+static simd_short2 SIMD_CFUNC simd_short(simd_double2 __x);
+static simd_short3 SIMD_CFUNC simd_short(simd_double3 __x);
+static simd_short4 SIMD_CFUNC simd_short(simd_double4 __x);
+static simd_short8 SIMD_CFUNC simd_short(simd_double8 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_char2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_char3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_char4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_char8 __x);
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_char16 __x);
+static simd_short32 SIMD_CFUNC simd_short_sat(simd_char32 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_short2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_short3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_short4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_short8 __x);
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_short16 __x);
+static simd_short32 SIMD_CFUNC simd_short_sat(simd_short32 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_int2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_int3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_int4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_int8 __x);
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_int16 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_float2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_float3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_float4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_float8 __x);
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_float16 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_long2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_long3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_long4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_long8 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_double2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_double3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_double4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_double8 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_uchar2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_uchar3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_uchar4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_uchar8 __x);
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_uchar16 __x);
+static simd_short32 SIMD_CFUNC simd_short_sat(simd_uchar32 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_ushort2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_ushort3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_ushort4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_ushort8 __x);
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_ushort16 __x);
+static simd_short32 SIMD_CFUNC simd_short_sat(simd_ushort32 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_uint2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_uint3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_uint4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_uint8 __x);
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_uint16 __x);
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_ulong2 __x);
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_ulong3 __x);
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_ulong4 __x);
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_ulong8 __x);
+#define vector_short simd_short
+#define vector_short_sat simd_short_sat
+
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_char2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_char3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_char4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_char8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_char16 __x);
+static simd_ushort32 SIMD_CFUNC simd_ushort(simd_char32 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_uchar2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_uchar3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_uchar4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_uchar8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_uchar16 __x);
+static simd_ushort32 SIMD_CFUNC simd_ushort(simd_uchar32 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_short2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_short3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_short4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_short8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_short16 __x);
+static simd_ushort32 SIMD_CFUNC simd_ushort(simd_short32 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_ushort2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_ushort3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_ushort4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_ushort8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_ushort16 __x);
+static simd_ushort32 SIMD_CFUNC simd_ushort(simd_ushort32 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_int2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_int3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_int4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_int8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_int16 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_uint2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_uint3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_uint4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_uint8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_uint16 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_float2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_float3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_float4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_float8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_float16 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_long2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_long3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_long4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_long8 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_ulong2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_ulong3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_ulong4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_ulong8 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_double2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_double3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_double4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_double8 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_char2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_char3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_char4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_char8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_char16 __x);
+static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_char32 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_short2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_short3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_short4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_short8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_short16 __x);
+static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_short32 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_int2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_int3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_int4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_int8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_int16 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_float2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_float3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_float4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_float8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_float16 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_long2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_long3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_long4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_long8 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_double2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_double3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_double4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_double8 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_uchar2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_uchar3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_uchar4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_uchar8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_uchar16 __x);
+static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_uchar32 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_ushort2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_ushort3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_ushort4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_ushort8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_ushort16 __x);
+static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_ushort32 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_uint2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_uint3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_uint4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_uint8 __x);
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_uint16 __x);
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_ulong2 __x);
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_ulong3 __x);
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_ulong4 __x);
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_ulong8 __x);
+#define vector_ushort simd_ushort
+#define vector_ushort_sat simd_ushort_sat
+
+static simd_int2 SIMD_CFUNC simd_int(simd_char2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_char3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_char4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_char8 __x);
+static simd_int16 SIMD_CFUNC simd_int(simd_char16 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_uchar2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_uchar3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_uchar4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_uchar8 __x);
+static simd_int16 SIMD_CFUNC simd_int(simd_uchar16 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_short2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_short3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_short4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_short8 __x);
+static simd_int16 SIMD_CFUNC simd_int(simd_short16 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_ushort2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_ushort3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_ushort4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_ushort8 __x);
+static simd_int16 SIMD_CFUNC simd_int(simd_ushort16 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_int2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_int3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_int4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_int8 __x);
+static simd_int16 SIMD_CFUNC simd_int(simd_int16 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_uint2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_uint3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_uint4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_uint8 __x);
+static simd_int16 SIMD_CFUNC simd_int(simd_uint16 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_float2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_float3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_float4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_float8 __x);
+static simd_int16 SIMD_CFUNC simd_int(simd_float16 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_long2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_long3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_long4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_long8 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_ulong2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_ulong3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_ulong4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_ulong8 __x);
+static simd_int2 SIMD_CFUNC simd_int(simd_double2 __x);
+static simd_int3 SIMD_CFUNC simd_int(simd_double3 __x);
+static simd_int4 SIMD_CFUNC simd_int(simd_double4 __x);
+static simd_int8 SIMD_CFUNC simd_int(simd_double8 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_char2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_char3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_char4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_char8 __x);
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_char16 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_short2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_short3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_short4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_short8 __x);
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_short16 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_int2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_int3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_int4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_int8 __x);
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_int16 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_float2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_float3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_float4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_float8 __x);
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_float16 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_long2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_long3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_long4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_long8 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_double2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_double3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_double4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_double8 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_uchar2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_uchar3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_uchar4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_uchar8 __x);
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_uchar16 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_ushort2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_ushort3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_ushort4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_ushort8 __x);
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_ushort16 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_uint2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_uint3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_uint4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_uint8 __x);
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_uint16 __x);
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_ulong2 __x);
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_ulong3 __x);
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_ulong4 __x);
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_ulong8 __x);
+static simd_int2 SIMD_CFUNC simd_int_rte(simd_float2 __x);
+static simd_int3 SIMD_CFUNC simd_int_rte(simd_float3 __x);
+static simd_int4 SIMD_CFUNC simd_int_rte(simd_float4 __x);
+static simd_int8 SIMD_CFUNC simd_int_rte(simd_float8 __x);
+static simd_int16 SIMD_CFUNC simd_int_rte(simd_float16 __x);
+#define vector_int simd_int
+#define vector_int_sat simd_int_sat
+
+static simd_uint2 SIMD_CFUNC simd_uint(simd_char2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_char3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_char4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_char8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint(simd_char16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_uchar2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_uchar3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_uchar4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_uchar8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint(simd_uchar16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_short2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_short3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_short4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_short8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint(simd_short16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_ushort2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_ushort3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_ushort4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_ushort8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint(simd_ushort16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_int2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_int3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_int4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_int8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint(simd_int16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_uint2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_uint3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_uint4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_uint8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint(simd_uint16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_float2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_float3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_float4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_float8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint(simd_float16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_long2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_long3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_long4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_long8 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_ulong2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_ulong3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_ulong4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_ulong8 __x);
+static simd_uint2 SIMD_CFUNC simd_uint(simd_double2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint(simd_double3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint(simd_double4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint(simd_double8 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_char2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_char3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_char4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_char8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_char16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_short2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_short3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_short4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_short8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_short16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_int2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_int3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_int4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_int8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_int16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_float2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_float3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_float4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_float8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_float16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_long2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_long3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_long4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_long8 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_double2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_double3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_double4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_double8 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_uchar2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_uchar3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_uchar4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_uchar8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_uchar16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_ushort2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_ushort3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_ushort4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_ushort8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_ushort16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_uint2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_uint3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_uint4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_uint8 __x);
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_uint16 __x);
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_ulong2 __x);
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_ulong3 __x);
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_ulong4 __x);
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_ulong8 __x);
+#define vector_uint simd_uint
+#define vector_uint_sat simd_uint_sat
+
+static simd_float2 SIMD_CFUNC simd_float(simd_char2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_char3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_char4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_char8 __x);
+static simd_float16 SIMD_CFUNC simd_float(simd_char16 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_uchar2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_uchar3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_uchar4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_uchar8 __x);
+static simd_float16 SIMD_CFUNC simd_float(simd_uchar16 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_short2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_short3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_short4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_short8 __x);
+static simd_float16 SIMD_CFUNC simd_float(simd_short16 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_ushort2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_ushort3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_ushort4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_ushort8 __x);
+static simd_float16 SIMD_CFUNC simd_float(simd_ushort16 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_int2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_int3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_int4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_int8 __x);
+static simd_float16 SIMD_CFUNC simd_float(simd_int16 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_uint2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_uint3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_uint4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_uint8 __x);
+static simd_float16 SIMD_CFUNC simd_float(simd_uint16 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_float2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_float3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_float4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_float8 __x);
+static simd_float16 SIMD_CFUNC simd_float(simd_float16 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_long2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_long3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_long4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_long8 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_ulong2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_ulong3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_ulong4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_ulong8 __x);
+static simd_float2 SIMD_CFUNC simd_float(simd_double2 __x);
+static simd_float3 SIMD_CFUNC simd_float(simd_double3 __x);
+static simd_float4 SIMD_CFUNC simd_float(simd_double4 __x);
+static simd_float8 SIMD_CFUNC simd_float(simd_double8 __x);
+#define vector_float simd_float
+
+static simd_long2 SIMD_CFUNC simd_long(simd_char2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_char3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_char4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_char8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_uchar2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_uchar3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_uchar4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_uchar8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_short2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_short3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_short4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_short8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_ushort2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_ushort3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_ushort4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_ushort8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_int2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_int3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_int4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_int8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_uint2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_uint3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_uint4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_uint8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_float2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_float3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_float4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_float8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_long2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_long3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_long4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_long8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_ulong2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_ulong3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_ulong4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_ulong8 __x);
+static simd_long2 SIMD_CFUNC simd_long(simd_double2 __x);
+static simd_long3 SIMD_CFUNC simd_long(simd_double3 __x);
+static simd_long4 SIMD_CFUNC simd_long(simd_double4 __x);
+static simd_long8 SIMD_CFUNC simd_long(simd_double8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_char2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_char3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_char4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_char8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_short2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_short3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_short4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_short8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_int2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_int3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_int4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_int8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_float2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_float3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_float4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_float8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_long2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_long3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_long4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_long8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_double2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_double3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_double4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_double8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_uchar2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_uchar3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_uchar4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_uchar8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_ushort2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_ushort3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_ushort4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_ushort8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_uint2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_uint3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_uint4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_uint8 __x);
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_ulong2 __x);
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_ulong3 __x);
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_ulong4 __x);
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_ulong8 __x);
+static simd_long2 SIMD_CFUNC simd_long_rte(simd_double2 __x);
+static simd_long3 SIMD_CFUNC simd_long_rte(simd_double3 __x);
+static simd_long4 SIMD_CFUNC simd_long_rte(simd_double4 __x);
+static simd_long8 SIMD_CFUNC simd_long_rte(simd_double8 __x);
+#define vector_long simd_long
+#define vector_long_sat simd_long_sat
+
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_char2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_char3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_char4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_char8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_uchar2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_uchar3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_uchar4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_uchar8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_short2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_short3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_short4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_short8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_ushort2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_ushort3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_ushort4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_ushort8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_int2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_int3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_int4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_int8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_uint2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_uint3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_uint4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_uint8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_float2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_float3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_float4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_float8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_long2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_long3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_long4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_long8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_ulong2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_ulong3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_ulong4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_ulong8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_double2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_double3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_double4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_double8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_char2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_char3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_char4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_char8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_short2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_short3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_short4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_short8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_int2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_int3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_int4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_int8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_float2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_float3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_float4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_float8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_long2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_long3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_long4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_long8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_double2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_double3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_double4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_double8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_uchar2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_uchar3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_uchar4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_uchar8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_ushort2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_ushort3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_ushort4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_ushort8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_uint2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_uint3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_uint4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_uint8 __x);
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_ulong2 __x);
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_ulong3 __x);
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_ulong4 __x);
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_ulong8 __x);
+#define vector_ulong simd_ulong
+#define vector_ulong_sat simd_ulong_sat
+
+static simd_double2 SIMD_CFUNC simd_double(simd_char2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_char3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_char4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_char8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_uchar2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_uchar3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_uchar4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_uchar8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_short2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_short3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_short4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_short8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_ushort2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_ushort3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_ushort4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_ushort8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_int2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_int3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_int4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_int8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_uint2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_uint3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_uint4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_uint8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_float2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_float3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_float4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_float8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_long2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_long3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_long4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_long8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_ulong2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_ulong3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_ulong4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_ulong8 __x);
+static simd_double2 SIMD_CFUNC simd_double(simd_double2 __x);
+static simd_double3 SIMD_CFUNC simd_double(simd_double3 __x);
+static simd_double4 SIMD_CFUNC simd_double(simd_double4 __x);
+static simd_double8 SIMD_CFUNC simd_double(simd_double8 __x);
+#define vector_double simd_double
+
+static simd_char2 SIMD_CFUNC vector2(char __x, char __y) { return ( simd_char2){__x, __y}; }
+static simd_uchar2 SIMD_CFUNC vector2(unsigned char __x, unsigned char __y) { return ( simd_uchar2){__x, __y}; }
+static simd_short2 SIMD_CFUNC vector2(short __x, short __y) { return ( simd_short2){__x, __y}; }
+static simd_ushort2 SIMD_CFUNC vector2(unsigned short __x, unsigned short __y) { return (simd_ushort2){__x, __y}; }
+static simd_int2 SIMD_CFUNC vector2(int __x, int __y) { return ( simd_int2){__x, __y}; }
+static simd_uint2 SIMD_CFUNC vector2(unsigned int __x, unsigned int __y) { return ( simd_uint2){__x, __y}; }
+static simd_float2 SIMD_CFUNC vector2(float __x, float __y) { return ( simd_float2){__x, __y}; }
+static simd_long2 SIMD_CFUNC vector2(simd_long1 __x, simd_long1 __y) { return ( simd_long2){__x, __y}; }
+static simd_ulong2 SIMD_CFUNC vector2(simd_ulong1 __x, simd_ulong1 __y) { return ( simd_ulong2){__x, __y}; }
+static simd_double2 SIMD_CFUNC vector2(double __x, double __y) { return (simd_double2){__x, __y}; }
+
+static simd_char3 SIMD_CFUNC vector3(char __x, char __y, char __z) { return ( simd_char3){__x, __y, __z}; }
+static simd_uchar3 SIMD_CFUNC vector3(unsigned char __x, unsigned char __y, unsigned char __z) { return ( simd_uchar3){__x, __y, __z}; }
+static simd_short3 SIMD_CFUNC vector3(short __x, short __y, short __z) { return ( simd_short3){__x, __y, __z}; }
+static simd_ushort3 SIMD_CFUNC vector3(unsigned short __x, unsigned short __y, unsigned short __z) { return (simd_ushort3){__x, __y, __z}; }
+static simd_int3 SIMD_CFUNC vector3(int __x, int __y, int __z) { return ( simd_int3){__x, __y, __z}; }
+static simd_uint3 SIMD_CFUNC vector3(unsigned int __x, unsigned int __y, unsigned int __z) { return ( simd_uint3){__x, __y, __z}; }
+static simd_float3 SIMD_CFUNC vector3(float __x, float __y, float __z) { return ( simd_float3){__x, __y, __z}; }
+static simd_long3 SIMD_CFUNC vector3(simd_long1 __x, simd_long1 __y, simd_long1 __z) { return ( simd_long3){__x, __y, __z}; }
+static simd_ulong3 SIMD_CFUNC vector3(simd_ulong1 __x, simd_ulong1 __y, simd_ulong1 __z) { return ( simd_ulong3){__x, __y, __z}; }
+static simd_double3 SIMD_CFUNC vector3(double __x, double __y, double __z) { return (simd_double3){__x, __y, __z}; }
+
+static simd_char3 SIMD_CFUNC vector3(simd_char2 __xy, char __z) { simd_char3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_uchar3 SIMD_CFUNC vector3(simd_uchar2 __xy, unsigned char __z) { simd_uchar3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_short3 SIMD_CFUNC vector3(simd_short2 __xy, short __z) { simd_short3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_ushort3 SIMD_CFUNC vector3(simd_ushort2 __xy, unsigned short __z) { simd_ushort3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_int3 SIMD_CFUNC vector3(simd_int2 __xy, int __z) { simd_int3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_uint3 SIMD_CFUNC vector3(simd_uint2 __xy, unsigned int __z) { simd_uint3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_float3 SIMD_CFUNC vector3(simd_float2 __xy, float __z) { simd_float3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_long3 SIMD_CFUNC vector3(simd_long2 __xy, simd_long1 __z) { simd_long3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_ulong3 SIMD_CFUNC vector3(simd_ulong2 __xy, simd_ulong1 __z) { simd_ulong3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+static simd_double3 SIMD_CFUNC vector3(simd_double2 __xy, double __z) { simd_double3 __r; __r.xy = __xy; __r.z = __z; return __r; }
+
+static simd_char4 SIMD_CFUNC vector4(char __x, char __y, char __z, char __w) { return ( simd_char4){__x, __y, __z, __w}; }
+static simd_uchar4 SIMD_CFUNC vector4(unsigned char __x, unsigned char __y, unsigned char __z, unsigned char __w) { return ( simd_uchar4){__x, __y, __z, __w}; }
+static simd_short4 SIMD_CFUNC vector4(short __x, short __y, short __z, short __w) { return ( simd_short4){__x, __y, __z, __w}; }
+static simd_ushort4 SIMD_CFUNC vector4(unsigned short __x, unsigned short __y, unsigned short __z, unsigned short __w) { return (simd_ushort4){__x, __y, __z, __w}; }
+static simd_int4 SIMD_CFUNC vector4(int __x, int __y, int __z, int __w) { return ( simd_int4){__x, __y, __z, __w}; }
+static simd_uint4 SIMD_CFUNC vector4(unsigned int __x, unsigned int __y, unsigned int __z, unsigned int __w) { return ( simd_uint4){__x, __y, __z, __w}; }
+static simd_float4 SIMD_CFUNC vector4(float __x, float __y, float __z, float __w) { return ( simd_float4){__x, __y, __z, __w}; }
+static simd_long4 SIMD_CFUNC vector4(simd_long1 __x, simd_long1 __y, simd_long1 __z, simd_long1 __w) { return ( simd_long4){__x, __y, __z, __w}; }
+static simd_ulong4 SIMD_CFUNC vector4(simd_ulong1 __x, simd_ulong1 __y, simd_ulong1 __z, simd_ulong1 __w) { return ( simd_ulong4){__x, __y, __z, __w}; }
+static simd_double4 SIMD_CFUNC vector4(double __x, double __y, double __z, double __w) { return (simd_double4){__x, __y, __z, __w}; }
+
+static simd_char4 SIMD_CFUNC vector4(simd_char2 __xy, simd_char2 __zw) { simd_char4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_uchar4 SIMD_CFUNC vector4(simd_uchar2 __xy, simd_uchar2 __zw) { simd_uchar4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_short4 SIMD_CFUNC vector4(simd_short2 __xy, simd_short2 __zw) { simd_short4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_ushort4 SIMD_CFUNC vector4(simd_ushort2 __xy, simd_ushort2 __zw) { simd_ushort4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_int4 SIMD_CFUNC vector4(simd_int2 __xy, simd_int2 __zw) { simd_int4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_uint4 SIMD_CFUNC vector4(simd_uint2 __xy, simd_uint2 __zw) { simd_uint4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_float4 SIMD_CFUNC vector4(simd_float2 __xy, simd_float2 __zw) { simd_float4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_long4 SIMD_CFUNC vector4(simd_long2 __xy, simd_long2 __zw) { simd_long4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_ulong4 SIMD_CFUNC vector4(simd_ulong2 __xy, simd_ulong2 __zw) { simd_ulong4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+static simd_double4 SIMD_CFUNC vector4(simd_double2 __xy, simd_double2 __zw) { simd_double4 __r; __r.xy = __xy; __r.zw = __zw; return __r; }
+
+static simd_char4 SIMD_CFUNC vector4(simd_char3 __xyz, char __w) { simd_char4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_uchar4 SIMD_CFUNC vector4(simd_uchar3 __xyz, unsigned char __w) { simd_uchar4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_short4 SIMD_CFUNC vector4(simd_short3 __xyz, short __w) { simd_short4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_ushort4 SIMD_CFUNC vector4(simd_ushort3 __xyz, unsigned short __w) { simd_ushort4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_int4 SIMD_CFUNC vector4(simd_int3 __xyz, int __w) { simd_int4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_uint4 SIMD_CFUNC vector4(simd_uint3 __xyz, unsigned int __w) { simd_uint4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_float4 SIMD_CFUNC vector4(simd_float3 __xyz, float __w) { simd_float4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_long4 SIMD_CFUNC vector4(simd_long3 __xyz, simd_long1 __w) { simd_long4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_ulong4 SIMD_CFUNC vector4(simd_ulong3 __xyz, simd_ulong1 __w) { simd_ulong4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+static simd_double4 SIMD_CFUNC vector4(simd_double3 __xyz, double __w) { simd_double4 __r; __r.xyz = __xyz; __r.w = __w; return __r; }
+
+static simd_char8 SIMD_CFUNC vector8(simd_char4 __lo, simd_char4 __hi) { simd_char8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_uchar8 SIMD_CFUNC vector8(simd_uchar4 __lo, simd_uchar4 __hi) { simd_uchar8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_short8 SIMD_CFUNC vector8(simd_short4 __lo, simd_short4 __hi) { simd_short8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_ushort8 SIMD_CFUNC vector8(simd_ushort4 __lo, simd_ushort4 __hi) { simd_ushort8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_int8 SIMD_CFUNC vector8(simd_int4 __lo, simd_int4 __hi) { simd_int8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_uint8 SIMD_CFUNC vector8(simd_uint4 __lo, simd_uint4 __hi) { simd_uint8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_float8 SIMD_CFUNC vector8(simd_float4 __lo, simd_float4 __hi) { simd_float8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_long8 SIMD_CFUNC vector8(simd_long4 __lo, simd_long4 __hi) { simd_long8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_ulong8 SIMD_CFUNC vector8(simd_ulong4 __lo, simd_ulong4 __hi) { simd_ulong8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_double8 SIMD_CFUNC vector8(simd_double4 __lo, simd_double4 __hi) { simd_double8 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+
+static simd_char16 SIMD_CFUNC vector16(simd_char8 __lo, simd_char8 __hi) { simd_char16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_uchar16 SIMD_CFUNC vector16(simd_uchar8 __lo, simd_uchar8 __hi) { simd_uchar16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_short16 SIMD_CFUNC vector16(simd_short8 __lo, simd_short8 __hi) { simd_short16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_ushort16 SIMD_CFUNC vector16(simd_ushort8 __lo, simd_ushort8 __hi) { simd_ushort16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_int16 SIMD_CFUNC vector16(simd_int8 __lo, simd_int8 __hi) { simd_int16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_uint16 SIMD_CFUNC vector16(simd_uint8 __lo, simd_uint8 __hi) { simd_uint16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_float16 SIMD_CFUNC vector16(simd_float8 __lo, simd_float8 __hi) { simd_float16 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+
+static simd_char32 SIMD_CFUNC vector32(simd_char16 __lo, simd_char16 __hi) { simd_char32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_uchar32 SIMD_CFUNC vector32(simd_uchar16 __lo, simd_uchar16 __hi) { simd_uchar32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_short32 SIMD_CFUNC vector32(simd_short16 __lo, simd_short16 __hi) { simd_short32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+static simd_ushort32 SIMD_CFUNC vector32(simd_ushort16 __lo, simd_ushort16 __hi) { simd_ushort32 __r; __r.lo = __lo; __r.hi = __hi; return __r; }
+
+#pragma mark - Implementation
+
+static simd_char2 SIMD_CFUNC simd_char(simd_char2 __x) { return __x; }
+static simd_char3 SIMD_CFUNC simd_char(simd_char3 __x) { return __x; }
+static simd_char4 SIMD_CFUNC simd_char(simd_char4 __x) { return __x; }
+static simd_char8 SIMD_CFUNC simd_char(simd_char8 __x) { return __x; }
+static simd_char16 SIMD_CFUNC simd_char(simd_char16 __x) { return __x; }
+static simd_char32 SIMD_CFUNC simd_char(simd_char32 __x) { return __x; }
+static simd_char2 SIMD_CFUNC simd_char(simd_uchar2 __x) { return (simd_char2)__x; }
+static simd_char3 SIMD_CFUNC simd_char(simd_uchar3 __x) { return (simd_char3)__x; }
+static simd_char4 SIMD_CFUNC simd_char(simd_uchar4 __x) { return (simd_char4)__x; }
+static simd_char8 SIMD_CFUNC simd_char(simd_uchar8 __x) { return (simd_char8)__x; }
+static simd_char16 SIMD_CFUNC simd_char(simd_uchar16 __x) { return (simd_char16)__x; }
+static simd_char32 SIMD_CFUNC simd_char(simd_uchar32 __x) { return (simd_char32)__x; }
+static simd_char2 SIMD_CFUNC simd_char(simd_short2 __x) { return __builtin_convertvector(__x & 0xff, simd_char2); }
+static simd_char3 SIMD_CFUNC simd_char(simd_short3 __x) { return __builtin_convertvector(__x & 0xff, simd_char3); }
+static simd_char4 SIMD_CFUNC simd_char(simd_short4 __x) { return __builtin_convertvector(__x & 0xff, simd_char4); }
+static simd_char8 SIMD_CFUNC simd_char(simd_short8 __x) { return __builtin_convertvector(__x & 0xff, simd_char8); }
+static simd_char16 SIMD_CFUNC simd_char(simd_short16 __x) { return __builtin_convertvector(__x & 0xff, simd_char16); }
+static simd_char32 SIMD_CFUNC simd_char(simd_short32 __x) { return __builtin_convertvector(__x & 0xff, simd_char32); }
+static simd_char2 SIMD_CFUNC simd_char(simd_ushort2 __x) { return simd_char(simd_short(__x)); }
+static simd_char3 SIMD_CFUNC simd_char(simd_ushort3 __x) { return simd_char(simd_short(__x)); }
+static simd_char4 SIMD_CFUNC simd_char(simd_ushort4 __x) { return simd_char(simd_short(__x)); }
+static simd_char8 SIMD_CFUNC simd_char(simd_ushort8 __x) { return simd_char(simd_short(__x)); }
+static simd_char16 SIMD_CFUNC simd_char(simd_ushort16 __x) { return simd_char(simd_short(__x)); }
+static simd_char32 SIMD_CFUNC simd_char(simd_ushort32 __x) { return simd_char(simd_short(__x)); }
+static simd_char2 SIMD_CFUNC simd_char(simd_int2 __x) { return simd_char(simd_short(__x)); }
+static simd_char3 SIMD_CFUNC simd_char(simd_int3 __x) { return simd_char(simd_short(__x)); }
+static simd_char4 SIMD_CFUNC simd_char(simd_int4 __x) { return simd_char(simd_short(__x)); }
+static simd_char8 SIMD_CFUNC simd_char(simd_int8 __x) { return simd_char(simd_short(__x)); }
+static simd_char16 SIMD_CFUNC simd_char(simd_int16 __x) { return simd_char(simd_short(__x)); }
+static simd_char2 SIMD_CFUNC simd_char(simd_uint2 __x) { return simd_char(simd_short(__x)); }
+static simd_char3 SIMD_CFUNC simd_char(simd_uint3 __x) { return simd_char(simd_short(__x)); }
+static simd_char4 SIMD_CFUNC simd_char(simd_uint4 __x) { return simd_char(simd_short(__x)); }
+static simd_char8 SIMD_CFUNC simd_char(simd_uint8 __x) { return simd_char(simd_short(__x)); }
+static simd_char16 SIMD_CFUNC simd_char(simd_uint16 __x) { return simd_char(simd_short(__x)); }
+static simd_char2 SIMD_CFUNC simd_char(simd_float2 __x) { return simd_char(simd_short(__x)); }
+static simd_char3 SIMD_CFUNC simd_char(simd_float3 __x) { return simd_char(simd_short(__x)); }
+static simd_char4 SIMD_CFUNC simd_char(simd_float4 __x) { return simd_char(simd_short(__x)); }
+static simd_char8 SIMD_CFUNC simd_char(simd_float8 __x) { return simd_char(simd_short(__x)); }
+static simd_char16 SIMD_CFUNC simd_char(simd_float16 __x) { return simd_char(simd_short(__x)); }
+static simd_char2 SIMD_CFUNC simd_char(simd_long2 __x) { return simd_char(simd_short(__x)); }
+static simd_char3 SIMD_CFUNC simd_char(simd_long3 __x) { return simd_char(simd_short(__x)); }
+static simd_char4 SIMD_CFUNC simd_char(simd_long4 __x) { return simd_char(simd_short(__x)); }
+static simd_char8 SIMD_CFUNC simd_char(simd_long8 __x) { return simd_char(simd_short(__x)); }
+static simd_char2 SIMD_CFUNC simd_char(simd_ulong2 __x) { return simd_char(simd_short(__x)); }
+static simd_char3 SIMD_CFUNC simd_char(simd_ulong3 __x) { return simd_char(simd_short(__x)); }
+static simd_char4 SIMD_CFUNC simd_char(simd_ulong4 __x) { return simd_char(simd_short(__x)); }
+static simd_char8 SIMD_CFUNC simd_char(simd_ulong8 __x) { return simd_char(simd_short(__x)); }
+static simd_char2 SIMD_CFUNC simd_char(simd_double2 __x) { return simd_char(simd_short(__x)); }
+static simd_char3 SIMD_CFUNC simd_char(simd_double3 __x) { return simd_char(simd_short(__x)); }
+static simd_char4 SIMD_CFUNC simd_char(simd_double4 __x) { return simd_char(simd_short(__x)); }
+static simd_char8 SIMD_CFUNC simd_char(simd_double8 __x) { return simd_char(simd_short(__x)); }
+
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_char2 __x) { return __x; }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_char3 __x) { return __x; }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_char4 __x) { return __x; }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_char8 __x) { return __x; }
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_char16 __x) { return __x; }
+static simd_char32 SIMD_CFUNC simd_char_sat(simd_char32 __x) { return __x; }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_short2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_short3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_short4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_short8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_short16 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char32 SIMD_CFUNC simd_char_sat(simd_short32 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_int2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_int3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_int4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_int8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_int16 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_float2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_float3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_float4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_float8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_float16 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_long2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_long3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_long4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_long8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_double2 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_double3 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_double4 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_double8 __x) { return simd_char(simd_clamp(__x,-0x80,0x7f)); }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_uchar2 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_uchar3 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_uchar4 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_uchar8 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_uchar16 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char32 SIMD_CFUNC simd_char_sat(simd_uchar32 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_ushort2 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_ushort3 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_ushort4 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_ushort8 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_ushort16 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char32 SIMD_CFUNC simd_char_sat(simd_ushort32 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_uint2 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_uint3 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_uint4 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_uint8 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char16 SIMD_CFUNC simd_char_sat(simd_uint16 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char2 SIMD_CFUNC simd_char_sat(simd_ulong2 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char3 SIMD_CFUNC simd_char_sat(simd_ulong3 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char4 SIMD_CFUNC simd_char_sat(simd_ulong4 __x) { return simd_char(simd_min(__x,0x7f)); }
+static simd_char8 SIMD_CFUNC simd_char_sat(simd_ulong8 __x) { return simd_char(simd_min(__x,0x7f)); }
+
+
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_char2 __x) { return (simd_uchar2)__x; }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_char3 __x) { return (simd_uchar3)__x; }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_char4 __x) { return (simd_uchar4)__x; }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_char8 __x) { return (simd_uchar8)__x; }
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_char16 __x) { return (simd_uchar16)__x; }
+static simd_uchar32 SIMD_CFUNC simd_uchar(simd_char32 __x) { return (simd_uchar32)__x; }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_uchar2 __x) { return __x; }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_uchar3 __x) { return __x; }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_uchar4 __x) { return __x; }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_uchar8 __x) { return __x; }
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_uchar16 __x) { return __x; }
+static simd_uchar32 SIMD_CFUNC simd_uchar(simd_uchar32 __x) { return __x; }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_short2 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_short3 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_short4 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_short8 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_short16 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar32 SIMD_CFUNC simd_uchar(simd_short32 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_ushort2 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_ushort3 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_ushort4 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_ushort8 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_ushort16 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar32 SIMD_CFUNC simd_uchar(simd_ushort32 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_int2 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_int3 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_int4 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_int8 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_int16 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_uint2 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_uint3 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_uint4 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_uint8 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_uint16 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_float2 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_float3 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_float4 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_float8 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar(simd_float16 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_long2 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_long3 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_long4 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_long8 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_ulong2 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_ulong3 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_ulong4 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_ulong8 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar(simd_double2 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar(simd_double3 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar(simd_double4 __x) { return simd_uchar(simd_char(__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar(simd_double8 __x) { return simd_uchar(simd_char(__x)); }
+
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_char2 __x) { return simd_uchar(simd_max(0,__x)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_char3 __x) { return simd_uchar(simd_max(0,__x)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_char4 __x) { return simd_uchar(simd_max(0,__x)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_char8 __x) { return simd_uchar(simd_max(0,__x)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_char16 __x) { return simd_uchar(simd_max(0,__x)); }
+static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_char32 __x) { return simd_uchar(simd_max(0,__x)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_short2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_short3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_short4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_short8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_short16 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_short32 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_int2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_int3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_int4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_int8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_int16 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_float2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_float3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_float4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_float8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_float16 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_long2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_long3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_long4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_long8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_double2 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_double3 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_double4 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_double8 __x) { return simd_uchar(simd_clamp(__x,0,0xff)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_uchar2 __x) { return __x; }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_uchar3 __x) { return __x; }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_uchar4 __x) { return __x; }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_uchar8 __x) { return __x; }
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_uchar16 __x) { return __x; }
+static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_uchar32 __x) { return __x; }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_ushort2 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_ushort3 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_ushort4 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_ushort8 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_ushort16 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar32 SIMD_CFUNC simd_uchar_sat(simd_ushort32 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_uint2 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_uint3 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_uint4 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_uint8 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar16 SIMD_CFUNC simd_uchar_sat(simd_uint16 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar2 SIMD_CFUNC simd_uchar_sat(simd_ulong2 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar3 SIMD_CFUNC simd_uchar_sat(simd_ulong3 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar4 SIMD_CFUNC simd_uchar_sat(simd_ulong4 __x) { return simd_uchar(simd_min(__x,0xff)); }
+static simd_uchar8 SIMD_CFUNC simd_uchar_sat(simd_ulong8 __x) { return simd_uchar(simd_min(__x,0xff)); }
+
+
+static simd_short2 SIMD_CFUNC simd_short(simd_char2 __x) { return __builtin_convertvector(__x, simd_short2); }
+static simd_short3 SIMD_CFUNC simd_short(simd_char3 __x) { return __builtin_convertvector(__x, simd_short3); }
+static simd_short4 SIMD_CFUNC simd_short(simd_char4 __x) { return __builtin_convertvector(__x, simd_short4); }
+static simd_short8 SIMD_CFUNC simd_short(simd_char8 __x) { return __builtin_convertvector(__x, simd_short8); }
+static simd_short16 SIMD_CFUNC simd_short(simd_char16 __x) { return __builtin_convertvector(__x, simd_short16); }
+static simd_short32 SIMD_CFUNC simd_short(simd_char32 __x) { return __builtin_convertvector(__x, simd_short32); }
+static simd_short2 SIMD_CFUNC simd_short(simd_uchar2 __x) { return __builtin_convertvector(__x, simd_short2); }
+static simd_short3 SIMD_CFUNC simd_short(simd_uchar3 __x) { return __builtin_convertvector(__x, simd_short3); }
+static simd_short4 SIMD_CFUNC simd_short(simd_uchar4 __x) { return __builtin_convertvector(__x, simd_short4); }
+static simd_short8 SIMD_CFUNC simd_short(simd_uchar8 __x) { return __builtin_convertvector(__x, simd_short8); }
+static simd_short16 SIMD_CFUNC simd_short(simd_uchar16 __x) { return __builtin_convertvector(__x, simd_short16); }
+static simd_short32 SIMD_CFUNC simd_short(simd_uchar32 __x) { return __builtin_convertvector(__x, simd_short32); }
+static simd_short2 SIMD_CFUNC simd_short(simd_short2 __x) { return __x; }
+static simd_short3 SIMD_CFUNC simd_short(simd_short3 __x) { return __x; }
+static simd_short4 SIMD_CFUNC simd_short(simd_short4 __x) { return __x; }
+static simd_short8 SIMD_CFUNC simd_short(simd_short8 __x) { return __x; }
+static simd_short16 SIMD_CFUNC simd_short(simd_short16 __x) { return __x; }
+static simd_short32 SIMD_CFUNC simd_short(simd_short32 __x) { return __x; }
+static simd_short2 SIMD_CFUNC simd_short(simd_ushort2 __x) { return (simd_short2)__x; }
+static simd_short3 SIMD_CFUNC simd_short(simd_ushort3 __x) { return (simd_short3)__x; }
+static simd_short4 SIMD_CFUNC simd_short(simd_ushort4 __x) { return (simd_short4)__x; }
+static simd_short8 SIMD_CFUNC simd_short(simd_ushort8 __x) { return (simd_short8)__x; }
+static simd_short16 SIMD_CFUNC simd_short(simd_ushort16 __x) { return (simd_short16)__x; }
+static simd_short32 SIMD_CFUNC simd_short(simd_ushort32 __x) { return (simd_short32)__x; }
+static simd_short2 SIMD_CFUNC simd_short(simd_int2 __x) { return __builtin_convertvector(__x & 0xffff, simd_short2); }
+static simd_short3 SIMD_CFUNC simd_short(simd_int3 __x) { return __builtin_convertvector(__x & 0xffff, simd_short3); }
+static simd_short4 SIMD_CFUNC simd_short(simd_int4 __x) { return __builtin_convertvector(__x & 0xffff, simd_short4); }
+static simd_short8 SIMD_CFUNC simd_short(simd_int8 __x) { return __builtin_convertvector(__x & 0xffff, simd_short8); }
+static simd_short16 SIMD_CFUNC simd_short(simd_int16 __x) { return __builtin_convertvector(__x & 0xffff, simd_short16); }
+static simd_short2 SIMD_CFUNC simd_short(simd_uint2 __x) { return simd_short(simd_int(__x)); }
+static simd_short3 SIMD_CFUNC simd_short(simd_uint3 __x) { return simd_short(simd_int(__x)); }
+static simd_short4 SIMD_CFUNC simd_short(simd_uint4 __x) { return simd_short(simd_int(__x)); }
+static simd_short8 SIMD_CFUNC simd_short(simd_uint8 __x) { return simd_short(simd_int(__x)); }
+static simd_short16 SIMD_CFUNC simd_short(simd_uint16 __x) { return simd_short(simd_int(__x)); }
+static simd_short2 SIMD_CFUNC simd_short(simd_float2 __x) { return simd_short(simd_int(__x)); }
+static simd_short3 SIMD_CFUNC simd_short(simd_float3 __x) { return simd_short(simd_int(__x)); }
+static simd_short4 SIMD_CFUNC simd_short(simd_float4 __x) { return simd_short(simd_int(__x)); }
+static simd_short8 SIMD_CFUNC simd_short(simd_float8 __x) { return simd_short(simd_int(__x)); }
+static simd_short16 SIMD_CFUNC simd_short(simd_float16 __x) { return simd_short(simd_int(__x)); }
+static simd_short2 SIMD_CFUNC simd_short(simd_long2 __x) { return simd_short(simd_int(__x)); }
+static simd_short3 SIMD_CFUNC simd_short(simd_long3 __x) { return simd_short(simd_int(__x)); }
+static simd_short4 SIMD_CFUNC simd_short(simd_long4 __x) { return simd_short(simd_int(__x)); }
+static simd_short8 SIMD_CFUNC simd_short(simd_long8 __x) { return simd_short(simd_int(__x)); }
+static simd_short2 SIMD_CFUNC simd_short(simd_ulong2 __x) { return simd_short(simd_int(__x)); }
+static simd_short3 SIMD_CFUNC simd_short(simd_ulong3 __x) { return simd_short(simd_int(__x)); }
+static simd_short4 SIMD_CFUNC simd_short(simd_ulong4 __x) { return simd_short(simd_int(__x)); }
+static simd_short8 SIMD_CFUNC simd_short(simd_ulong8 __x) { return simd_short(simd_int(__x)); }
+static simd_short2 SIMD_CFUNC simd_short(simd_double2 __x) { return simd_short(simd_int(__x)); }
+static simd_short3 SIMD_CFUNC simd_short(simd_double3 __x) { return simd_short(simd_int(__x)); }
+static simd_short4 SIMD_CFUNC simd_short(simd_double4 __x) { return simd_short(simd_int(__x)); }
+static simd_short8 SIMD_CFUNC simd_short(simd_double8 __x) { return simd_short(simd_int(__x)); }
+
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_char2 __x) { return simd_short(__x); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_char3 __x) { return simd_short(__x); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_char4 __x) { return simd_short(__x); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_char8 __x) { return simd_short(__x); }
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_char16 __x) { return simd_short(__x); }
+static simd_short32 SIMD_CFUNC simd_short_sat(simd_char32 __x) { return simd_short(__x); }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_short2 __x) { return __x; }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_short3 __x) { return __x; }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_short4 __x) { return __x; }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_short8 __x) { return __x; }
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_short16 __x) { return __x; }
+static simd_short32 SIMD_CFUNC simd_short_sat(simd_short32 __x) { return __x; }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_int2 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_int3 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_int4 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_int8 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_int16 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_float2 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_float3 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_float4 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_float8 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_float16 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_long2 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_long3 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_long4 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_long8 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_double2 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_double3 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_double4 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_double8 __x) { return simd_short(simd_clamp(__x,-0x8000,0x7fff)); }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_uchar2 __x) { return simd_short(__x); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_uchar3 __x) { return simd_short(__x); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_uchar4 __x) { return simd_short(__x); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_uchar8 __x) { return simd_short(__x); }
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_uchar16 __x) { return simd_short(__x); }
+static simd_short32 SIMD_CFUNC simd_short_sat(simd_uchar32 __x) { return simd_short(__x); }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_ushort2 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_ushort3 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_ushort4 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_ushort8 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_ushort16 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short32 SIMD_CFUNC simd_short_sat(simd_ushort32 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_uint2 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_uint3 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_uint4 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_uint8 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short16 SIMD_CFUNC simd_short_sat(simd_uint16 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short2 SIMD_CFUNC simd_short_sat(simd_ulong2 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short3 SIMD_CFUNC simd_short_sat(simd_ulong3 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short4 SIMD_CFUNC simd_short_sat(simd_ulong4 __x) { return simd_short(simd_min(__x,0x7fff)); }
+static simd_short8 SIMD_CFUNC simd_short_sat(simd_ulong8 __x) { return simd_short(simd_min(__x,0x7fff)); }
+
+
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_char2 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_char3 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_char4 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_char8 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_char16 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort32 SIMD_CFUNC simd_ushort(simd_char32 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_uchar2 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_uchar3 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_uchar4 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_uchar8 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_uchar16 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort32 SIMD_CFUNC simd_ushort(simd_uchar32 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_short2 __x) { return (simd_ushort2)__x; }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_short3 __x) { return (simd_ushort3)__x; }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_short4 __x) { return (simd_ushort4)__x; }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_short8 __x) { return (simd_ushort8)__x; }
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_short16 __x) { return (simd_ushort16)__x; }
+static simd_ushort32 SIMD_CFUNC simd_ushort(simd_short32 __x) { return (simd_ushort32)__x; }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_ushort2 __x) { return __x; }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_ushort3 __x) { return __x; }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_ushort4 __x) { return __x; }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_ushort8 __x) { return __x; }
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_ushort16 __x) { return __x; }
+static simd_ushort32 SIMD_CFUNC simd_ushort(simd_ushort32 __x) { return __x; }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_int2 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_int3 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_int4 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_int8 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_int16 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_uint2 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_uint3 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_uint4 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_uint8 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_uint16 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_float2 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_float3 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_float4 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_float8 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort(simd_float16 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_long2 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_long3 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_long4 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_long8 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_ulong2 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_ulong3 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_ulong4 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_ulong8 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort(simd_double2 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort(simd_double3 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort(simd_double4 __x) { return simd_ushort(simd_short(__x)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort(simd_double8 __x) { return simd_ushort(simd_short(__x)); }
+
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_char2 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_char3 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_char4 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_char8 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_char16 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_char32 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_short2 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_short3 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_short4 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_short8 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_short16 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_short32 __x) { return simd_ushort(simd_max(__x, 0)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_int2 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_int3 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_int4 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_int8 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_int16 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_float2 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_float3 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_float4 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_float8 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_float16 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_long2 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_long3 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_long4 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_long8 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_double2 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_double3 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_double4 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_double8 __x) { return simd_ushort(simd_clamp(__x, 0, 0xffff)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_uchar2 __x) { return simd_ushort(__x); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_uchar3 __x) { return simd_ushort(__x); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_uchar4 __x) { return simd_ushort(__x); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_uchar8 __x) { return simd_ushort(__x); }
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_uchar16 __x) { return simd_ushort(__x); }
+static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_uchar32 __x) { return simd_ushort(__x); }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_ushort2 __x) { return __x; }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_ushort3 __x) { return __x; }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_ushort4 __x) { return __x; }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_ushort8 __x) { return __x; }
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_ushort16 __x) { return __x; }
+static simd_ushort32 SIMD_CFUNC simd_ushort_sat(simd_ushort32 __x) { return __x; }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_uint2 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_uint3 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_uint4 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_uint8 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+static simd_ushort16 SIMD_CFUNC simd_ushort_sat(simd_uint16 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+static simd_ushort2 SIMD_CFUNC simd_ushort_sat(simd_ulong2 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+static simd_ushort3 SIMD_CFUNC simd_ushort_sat(simd_ulong3 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+static simd_ushort4 SIMD_CFUNC simd_ushort_sat(simd_ulong4 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+static simd_ushort8 SIMD_CFUNC simd_ushort_sat(simd_ulong8 __x) { return simd_ushort(simd_min(__x, 0xffff)); }
+
+
+static simd_int2 SIMD_CFUNC simd_int(simd_char2 __x) { return __builtin_convertvector(__x, simd_int2); }
+static simd_int3 SIMD_CFUNC simd_int(simd_char3 __x) { return __builtin_convertvector(__x, simd_int3); }
+static simd_int4 SIMD_CFUNC simd_int(simd_char4 __x) { return __builtin_convertvector(__x, simd_int4); }
+static simd_int8 SIMD_CFUNC simd_int(simd_char8 __x) { return __builtin_convertvector(__x, simd_int8); }
+static simd_int16 SIMD_CFUNC simd_int(simd_char16 __x) { return __builtin_convertvector(__x, simd_int16); }
+static simd_int2 SIMD_CFUNC simd_int(simd_uchar2 __x) { return __builtin_convertvector(__x, simd_int2); }
+static simd_int3 SIMD_CFUNC simd_int(simd_uchar3 __x) { return __builtin_convertvector(__x, simd_int3); }
+static simd_int4 SIMD_CFUNC simd_int(simd_uchar4 __x) { return __builtin_convertvector(__x, simd_int4); }
+static simd_int8 SIMD_CFUNC simd_int(simd_uchar8 __x) { return __builtin_convertvector(__x, simd_int8); }
+static simd_int16 SIMD_CFUNC simd_int(simd_uchar16 __x) { return __builtin_convertvector(__x, simd_int16); }
+static simd_int2 SIMD_CFUNC simd_int(simd_short2 __x) { return __builtin_convertvector(__x, simd_int2); }
+static simd_int3 SIMD_CFUNC simd_int(simd_short3 __x) { return __builtin_convertvector(__x, simd_int3); }
+static simd_int4 SIMD_CFUNC simd_int(simd_short4 __x) { return __builtin_convertvector(__x, simd_int4); }
+static simd_int8 SIMD_CFUNC simd_int(simd_short8 __x) { return __builtin_convertvector(__x, simd_int8); }
+static simd_int16 SIMD_CFUNC simd_int(simd_short16 __x) { return __builtin_convertvector(__x, simd_int16); }
+static simd_int2 SIMD_CFUNC simd_int(simd_ushort2 __x) { return __builtin_convertvector(__x, simd_int2); }
+static simd_int3 SIMD_CFUNC simd_int(simd_ushort3 __x) { return __builtin_convertvector(__x, simd_int3); }
+static simd_int4 SIMD_CFUNC simd_int(simd_ushort4 __x) { return __builtin_convertvector(__x, simd_int4); }
+static simd_int8 SIMD_CFUNC simd_int(simd_ushort8 __x) { return __builtin_convertvector(__x, simd_int8); }
+static simd_int16 SIMD_CFUNC simd_int(simd_ushort16 __x) { return __builtin_convertvector(__x, simd_int16); }
+static simd_int2 SIMD_CFUNC simd_int(simd_int2 __x) { return __x; }
+static simd_int3 SIMD_CFUNC simd_int(simd_int3 __x) { return __x; }
+static simd_int4 SIMD_CFUNC simd_int(simd_int4 __x) { return __x; }
+static simd_int8 SIMD_CFUNC simd_int(simd_int8 __x) { return __x; }
+static simd_int16 SIMD_CFUNC simd_int(simd_int16 __x) { return __x; }
+static simd_int2 SIMD_CFUNC simd_int(simd_uint2 __x) { return (simd_int2)__x; }
+static simd_int3 SIMD_CFUNC simd_int(simd_uint3 __x) { return (simd_int3)__x; }
+static simd_int4 SIMD_CFUNC simd_int(simd_uint4 __x) { return (simd_int4)__x; }
+static simd_int8 SIMD_CFUNC simd_int(simd_uint8 __x) { return (simd_int8)__x; }
+static simd_int16 SIMD_CFUNC simd_int(simd_uint16 __x) { return (simd_int16)__x; }
+static simd_int2 SIMD_CFUNC simd_int(simd_float2 __x) { return __builtin_convertvector(__x, simd_int2); }
+static simd_int3 SIMD_CFUNC simd_int(simd_float3 __x) { return __builtin_convertvector(__x, simd_int3); }
+static simd_int4 SIMD_CFUNC simd_int(simd_float4 __x) { return __builtin_convertvector(__x, simd_int4); }
+static simd_int8 SIMD_CFUNC simd_int(simd_float8 __x) { return __builtin_convertvector(__x, simd_int8); }
+static simd_int16 SIMD_CFUNC simd_int(simd_float16 __x) { return __builtin_convertvector(__x, simd_int16); }
+static simd_int2 SIMD_CFUNC simd_int(simd_long2 __x) { return __builtin_convertvector(__x & 0xffffffff, simd_int2); }
+static simd_int3 SIMD_CFUNC simd_int(simd_long3 __x) { return __builtin_convertvector(__x & 0xffffffff, simd_int3); }
+static simd_int4 SIMD_CFUNC simd_int(simd_long4 __x) { return __builtin_convertvector(__x & 0xffffffff, simd_int4); }
+static simd_int8 SIMD_CFUNC simd_int(simd_long8 __x) { return __builtin_convertvector(__x & 0xffffffff, simd_int8); }
+static simd_int2 SIMD_CFUNC simd_int(simd_ulong2 __x) { return simd_int(simd_long(__x)); }
+static simd_int3 SIMD_CFUNC simd_int(simd_ulong3 __x) { return simd_int(simd_long(__x)); }
+static simd_int4 SIMD_CFUNC simd_int(simd_ulong4 __x) { return simd_int(simd_long(__x)); }
+static simd_int8 SIMD_CFUNC simd_int(simd_ulong8 __x) { return simd_int(simd_long(__x)); }
+static simd_int2 SIMD_CFUNC simd_int(simd_double2 __x) { return __builtin_convertvector(__x, simd_int2); }
+static simd_int3 SIMD_CFUNC simd_int(simd_double3 __x) { return __builtin_convertvector(__x, simd_int3); }
+static simd_int4 SIMD_CFUNC simd_int(simd_double4 __x) { return __builtin_convertvector(__x, simd_int4); }
+static simd_int8 SIMD_CFUNC simd_int(simd_double8 __x) { return __builtin_convertvector(__x, simd_int8); }
+
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_char2 __x) { return simd_int(__x); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_char3 __x) { return simd_int(__x); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_char4 __x) { return simd_int(__x); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_char8 __x) { return simd_int(__x); }
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_char16 __x) { return simd_int(__x); }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_short2 __x) { return simd_int(__x); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_short3 __x) { return simd_int(__x); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_short4 __x) { return simd_int(__x); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_short8 __x) { return simd_int(__x); }
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_short16 __x) { return simd_int(__x); }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_int2 __x) { return __x; }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_int3 __x) { return __x; }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_int4 __x) { return __x; }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_int8 __x) { return __x; }
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_int16 __x) { return __x; }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_float2 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_float3 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_float4 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_float8 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_float16 __x) { return simd_bitselect(simd_int(simd_max(__x,-0x1.0p31f)), 0x7fffffff, __x >= 0x1.0p31f); }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_long2 __x) { return simd_int(simd_clamp(__x,-0x80000000LL,0x7fffffffLL)); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_long3 __x) { return simd_int(simd_clamp(__x,-0x80000000LL,0x7fffffffLL)); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_long4 __x) { return simd_int(simd_clamp(__x,-0x80000000LL,0x7fffffffLL)); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_long8 __x) { return simd_int(simd_clamp(__x,-0x80000000LL,0x7fffffffLL)); }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_double2 __x) { return simd_int(simd_clamp(__x,-0x1.0p31,0x1.fffffffcp30)); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_double3 __x) { return simd_int(simd_clamp(__x,-0x1.0p31,0x1.fffffffcp30)); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_double4 __x) { return simd_int(simd_clamp(__x,-0x1.0p31,0x1.fffffffcp30)); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_double8 __x) { return simd_int(simd_clamp(__x,-0x1.0p31,0x1.fffffffcp30)); }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_uchar2 __x) { return simd_int(__x); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_uchar3 __x) { return simd_int(__x); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_uchar4 __x) { return simd_int(__x); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_uchar8 __x) { return simd_int(__x); }
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_uchar16 __x) { return simd_int(__x); }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_ushort2 __x) { return simd_int(__x); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_ushort3 __x) { return simd_int(__x); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_ushort4 __x) { return simd_int(__x); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_ushort8 __x) { return simd_int(__x); }
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_ushort16 __x) { return simd_int(__x); }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_uint2 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_uint3 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_uint4 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_uint8 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+static simd_int16 SIMD_CFUNC simd_int_sat(simd_uint16 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+static simd_int2 SIMD_CFUNC simd_int_sat(simd_ulong2 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+static simd_int3 SIMD_CFUNC simd_int_sat(simd_ulong3 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+static simd_int4 SIMD_CFUNC simd_int_sat(simd_ulong4 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+static simd_int8 SIMD_CFUNC simd_int_sat(simd_ulong8 __x) { return simd_int(simd_min(__x,0x7fffffff)); }
+
+static simd_int2 SIMD_CFUNC simd_int_rte(simd_float2 __x) {
+#if defined __arm64__
+ return vcvtn_s32_f32(__x);
+#else
+ return simd_make_int2(simd_int_rte(simd_make_float4_undef(__x)));
+#endif
+}
+
+static simd_int3 SIMD_CFUNC simd_int_rte(simd_float3 __x) {
+ return simd_make_int3(simd_int_rte(simd_make_float4_undef(__x)));
+}
+
+static simd_int4 SIMD_CFUNC simd_int_rte(simd_float4 __x) {
+#if defined __SSE2__
+ return _mm_cvtps_epi32(__x);
+#elif defined __arm64__
+ return vcvtnq_s32_f32(__x);
+#else
+ simd_float4 magic = __tg_copysign(0x1.0p23, __x);
+ simd_int4 x_is_small = __tg_fabs(__x) < 0x1.0p23;
+ return __builtin_convertvector(simd_bitselect(__x, (__x + magic) - magic, x_is_small & 0x7fffffff), simd_int4);
+#endif
+}
+
+static simd_int8 SIMD_CFUNC simd_int_rte(simd_float8 __x) {
+#if defined __AVX__
+ return _mm256_cvtps_epi32(__x);
+#else
+ return simd_make_int8(simd_int_rte(__x.lo), simd_int_rte(__x.hi));
+#endif
+}
+
+static simd_int16 SIMD_CFUNC simd_int_rte(simd_float16 __x) {
+#if defined __AVX512F__
+ return _mm512_cvt_roundps_epi32(__x, _MM_FROUND_RINT);
+#else
+ return simd_make_int16(simd_int_rte(__x.lo), simd_int_rte(__x.hi));
+#endif
+}
+
+static simd_uint2 SIMD_CFUNC simd_uint(simd_char2 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_char3 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_char4 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_char8 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint16 SIMD_CFUNC simd_uint(simd_char16 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_uchar2 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_uchar3 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_uchar4 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_uchar8 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint16 SIMD_CFUNC simd_uint(simd_uchar16 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_short2 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_short3 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_short4 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_short8 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint16 SIMD_CFUNC simd_uint(simd_short16 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_ushort2 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_ushort3 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_ushort4 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_ushort8 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint16 SIMD_CFUNC simd_uint(simd_ushort16 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_int2 __x) { return (simd_uint2)__x; }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_int3 __x) { return (simd_uint3)__x; }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_int4 __x) { return (simd_uint4)__x; }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_int8 __x) { return (simd_uint8)__x; }
+static simd_uint16 SIMD_CFUNC simd_uint(simd_int16 __x) { return (simd_uint16)__x; }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_uint2 __x) { return __x; }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_uint3 __x) { return __x; }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_uint4 __x) { return __x; }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_uint8 __x) { return __x; }
+static simd_uint16 SIMD_CFUNC simd_uint(simd_uint16 __x) { return __x; }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_float2 __x) { simd_int2 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float2)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint2)0,0x80000000,__big); }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_float3 __x) { simd_int3 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float3)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint3)0,0x80000000,__big); }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_float4 __x) { simd_int4 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float4)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint4)0,0x80000000,__big); }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_float8 __x) { simd_int8 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float8)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint8)0,0x80000000,__big); }
+static simd_uint16 SIMD_CFUNC simd_uint(simd_float16 __x) { simd_int16 __big = __x > 0x1.0p31f; return simd_uint(simd_int(__x - simd_bitselect((simd_float16)0,0x1.0p31f,__big))) + simd_bitselect((simd_uint16)0,0x80000000,__big); }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_long2 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_long3 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_long4 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_long8 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_ulong2 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_ulong3 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_ulong4 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_ulong8 __x) { return simd_uint(simd_int(__x)); }
+static simd_uint2 SIMD_CFUNC simd_uint(simd_double2 __x) { simd_long2 __big = __x > 0x1.fffffffcp30; return simd_uint(simd_int(__x - simd_bitselect((simd_double2)0,0x1.0p31,__big))) + simd_bitselect((simd_uint2)0,0x80000000,simd_int(__big)); }
+static simd_uint3 SIMD_CFUNC simd_uint(simd_double3 __x) { simd_long3 __big = __x > 0x1.fffffffcp30; return simd_uint(simd_int(__x - simd_bitselect((simd_double3)0,0x1.0p31,__big))) + simd_bitselect((simd_uint3)0,0x80000000,simd_int(__big)); }
+static simd_uint4 SIMD_CFUNC simd_uint(simd_double4 __x) { simd_long4 __big = __x > 0x1.fffffffcp30; return simd_uint(simd_int(__x - simd_bitselect((simd_double4)0,0x1.0p31,__big))) + simd_bitselect((simd_uint4)0,0x80000000,simd_int(__big)); }
+static simd_uint8 SIMD_CFUNC simd_uint(simd_double8 __x) { simd_long8 __big = __x > 0x1.fffffffcp30; return simd_uint(simd_int(__x - simd_bitselect((simd_double8)0,0x1.0p31,__big))) + simd_bitselect((simd_uint8)0,0x80000000,simd_int(__big)); }
+
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_char2 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_char3 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_char4 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_char8 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_char16 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_short2 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_short3 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_short4 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_short8 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_short16 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_int2 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_int3 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_int4 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_int8 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_int16 __x) { return simd_uint(simd_max(__x,0)); }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_float2 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_float3 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_float4 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_float8 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_float16 __x) { return simd_bitselect(simd_uint(simd_max(__x,0)), 0xffffffff, __x >= 0x1.0p32f); }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_long2 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_long3 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_long4 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_long8 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_double2 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_double3 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_double4 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_double8 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_uchar2 __x) { return simd_uint(__x); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_uchar3 __x) { return simd_uint(__x); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_uchar4 __x) { return simd_uint(__x); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_uchar8 __x) { return simd_uint(__x); }
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_uchar16 __x) { return simd_uint(__x); }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_ushort2 __x) { return simd_uint(__x); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_ushort3 __x) { return simd_uint(__x); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_ushort4 __x) { return simd_uint(__x); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_ushort8 __x) { return simd_uint(__x); }
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_ushort16 __x) { return simd_uint(__x); }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_uint2 __x) { return __x; }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_uint3 __x) { return __x; }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_uint4 __x) { return __x; }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_uint8 __x) { return __x; }
+static simd_uint16 SIMD_CFUNC simd_uint_sat(simd_uint16 __x) { return __x; }
+static simd_uint2 SIMD_CFUNC simd_uint_sat(simd_ulong2 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint3 SIMD_CFUNC simd_uint_sat(simd_ulong3 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint4 SIMD_CFUNC simd_uint_sat(simd_ulong4 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+static simd_uint8 SIMD_CFUNC simd_uint_sat(simd_ulong8 __x) { return simd_uint(simd_clamp(__x,0,0xffffffff)); }
+
+
+static simd_float2 SIMD_CFUNC simd_float(simd_char2 __x) { return (simd_float2)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float3 SIMD_CFUNC simd_float(simd_char3 __x) { return (simd_float3)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float4 SIMD_CFUNC simd_float(simd_char4 __x) { return (simd_float4)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float8 SIMD_CFUNC simd_float(simd_char8 __x) { return (simd_float8)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float16 SIMD_CFUNC simd_float(simd_char16 __x) { return (simd_float16)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float2 SIMD_CFUNC simd_float(simd_uchar2 __x) { return (simd_float2)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float3 SIMD_CFUNC simd_float(simd_uchar3 __x) { return (simd_float3)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float4 SIMD_CFUNC simd_float(simd_uchar4 __x) { return (simd_float4)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float8 SIMD_CFUNC simd_float(simd_uchar8 __x) { return (simd_float8)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float16 SIMD_CFUNC simd_float(simd_uchar16 __x) { return (simd_float16)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float2 SIMD_CFUNC simd_float(simd_short2 __x) { return (simd_float2)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float3 SIMD_CFUNC simd_float(simd_short3 __x) { return (simd_float3)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float4 SIMD_CFUNC simd_float(simd_short4 __x) { return (simd_float4)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float8 SIMD_CFUNC simd_float(simd_short8 __x) { return (simd_float8)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float16 SIMD_CFUNC simd_float(simd_short16 __x) { return (simd_float16)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float2 SIMD_CFUNC simd_float(simd_ushort2 __x) { return (simd_float2)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float3 SIMD_CFUNC simd_float(simd_ushort3 __x) { return (simd_float3)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float4 SIMD_CFUNC simd_float(simd_ushort4 __x) { return (simd_float4)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float8 SIMD_CFUNC simd_float(simd_ushort8 __x) { return (simd_float8)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float16 SIMD_CFUNC simd_float(simd_ushort16 __x) { return (simd_float16)(simd_int(__x) + 0x4b400000) - 0x1.8p23f; }
+static simd_float2 SIMD_CFUNC simd_float(simd_int2 __x) { return __builtin_convertvector(__x,simd_float2); }
+static simd_float3 SIMD_CFUNC simd_float(simd_int3 __x) { return __builtin_convertvector(__x,simd_float3); }
+static simd_float4 SIMD_CFUNC simd_float(simd_int4 __x) { return __builtin_convertvector(__x,simd_float4); }
+static simd_float8 SIMD_CFUNC simd_float(simd_int8 __x) { return __builtin_convertvector(__x,simd_float8); }
+static simd_float16 SIMD_CFUNC simd_float(simd_int16 __x) { return __builtin_convertvector(__x,simd_float16); }
+static simd_float2 SIMD_CFUNC simd_float(simd_uint2 __x) { return __builtin_convertvector(__x,simd_float2); }
+static simd_float3 SIMD_CFUNC simd_float(simd_uint3 __x) { return __builtin_convertvector(__x,simd_float3); }
+static simd_float4 SIMD_CFUNC simd_float(simd_uint4 __x) { return __builtin_convertvector(__x,simd_float4); }
+static simd_float8 SIMD_CFUNC simd_float(simd_uint8 __x) { return __builtin_convertvector(__x,simd_float8); }
+static simd_float16 SIMD_CFUNC simd_float(simd_uint16 __x) { return __builtin_convertvector(__x,simd_float16); }
+static simd_float2 SIMD_CFUNC simd_float(simd_float2 __x) { return __x; }
+static simd_float3 SIMD_CFUNC simd_float(simd_float3 __x) { return __x; }
+static simd_float4 SIMD_CFUNC simd_float(simd_float4 __x) { return __x; }
+static simd_float8 SIMD_CFUNC simd_float(simd_float8 __x) { return __x; }
+static simd_float16 SIMD_CFUNC simd_float(simd_float16 __x) { return __x; }
+static simd_float2 SIMD_CFUNC simd_float(simd_long2 __x) { return __builtin_convertvector(__x,simd_float2); }
+static simd_float3 SIMD_CFUNC simd_float(simd_long3 __x) { return __builtin_convertvector(__x,simd_float3); }
+static simd_float4 SIMD_CFUNC simd_float(simd_long4 __x) { return __builtin_convertvector(__x,simd_float4); }
+static simd_float8 SIMD_CFUNC simd_float(simd_long8 __x) { return __builtin_convertvector(__x,simd_float8); }
+static simd_float2 SIMD_CFUNC simd_float(simd_ulong2 __x) { return __builtin_convertvector(__x,simd_float2); }
+static simd_float3 SIMD_CFUNC simd_float(simd_ulong3 __x) { return __builtin_convertvector(__x,simd_float3); }
+static simd_float4 SIMD_CFUNC simd_float(simd_ulong4 __x) { return __builtin_convertvector(__x,simd_float4); }
+static simd_float8 SIMD_CFUNC simd_float(simd_ulong8 __x) { return __builtin_convertvector(__x,simd_float8); }
+static simd_float2 SIMD_CFUNC simd_float(simd_double2 __x) { return __builtin_convertvector(__x,simd_float2); }
+static simd_float3 SIMD_CFUNC simd_float(simd_double3 __x) { return __builtin_convertvector(__x,simd_float3); }
+static simd_float4 SIMD_CFUNC simd_float(simd_double4 __x) { return __builtin_convertvector(__x,simd_float4); }
+static simd_float8 SIMD_CFUNC simd_float(simd_double8 __x) { return __builtin_convertvector(__x,simd_float8); }
+
+
+static simd_long2 SIMD_CFUNC simd_long(simd_char2 __x) { return __builtin_convertvector(__x,simd_long2); }
+static simd_long3 SIMD_CFUNC simd_long(simd_char3 __x) { return __builtin_convertvector(__x,simd_long3); }
+static simd_long4 SIMD_CFUNC simd_long(simd_char4 __x) { return __builtin_convertvector(__x,simd_long4); }
+static simd_long8 SIMD_CFUNC simd_long(simd_char8 __x) { return __builtin_convertvector(__x,simd_long8); }
+static simd_long2 SIMD_CFUNC simd_long(simd_uchar2 __x) { return __builtin_convertvector(__x,simd_long2); }
+static simd_long3 SIMD_CFUNC simd_long(simd_uchar3 __x) { return __builtin_convertvector(__x,simd_long3); }
+static simd_long4 SIMD_CFUNC simd_long(simd_uchar4 __x) { return __builtin_convertvector(__x,simd_long4); }
+static simd_long8 SIMD_CFUNC simd_long(simd_uchar8 __x) { return __builtin_convertvector(__x,simd_long8); }
+static simd_long2 SIMD_CFUNC simd_long(simd_short2 __x) { return __builtin_convertvector(__x,simd_long2); }
+static simd_long3 SIMD_CFUNC simd_long(simd_short3 __x) { return __builtin_convertvector(__x,simd_long3); }
+static simd_long4 SIMD_CFUNC simd_long(simd_short4 __x) { return __builtin_convertvector(__x,simd_long4); }
+static simd_long8 SIMD_CFUNC simd_long(simd_short8 __x) { return __builtin_convertvector(__x,simd_long8); }
+static simd_long2 SIMD_CFUNC simd_long(simd_ushort2 __x) { return __builtin_convertvector(__x,simd_long2); }
+static simd_long3 SIMD_CFUNC simd_long(simd_ushort3 __x) { return __builtin_convertvector(__x,simd_long3); }
+static simd_long4 SIMD_CFUNC simd_long(simd_ushort4 __x) { return __builtin_convertvector(__x,simd_long4); }
+static simd_long8 SIMD_CFUNC simd_long(simd_ushort8 __x) { return __builtin_convertvector(__x,simd_long8); }
+static simd_long2 SIMD_CFUNC simd_long(simd_int2 __x) { return __builtin_convertvector(__x,simd_long2); }
+static simd_long3 SIMD_CFUNC simd_long(simd_int3 __x) { return __builtin_convertvector(__x,simd_long3); }
+static simd_long4 SIMD_CFUNC simd_long(simd_int4 __x) { return __builtin_convertvector(__x,simd_long4); }
+static simd_long8 SIMD_CFUNC simd_long(simd_int8 __x) { return __builtin_convertvector(__x,simd_long8); }
+static simd_long2 SIMD_CFUNC simd_long(simd_uint2 __x) { return __builtin_convertvector(__x,simd_long2); }
+static simd_long3 SIMD_CFUNC simd_long(simd_uint3 __x) { return __builtin_convertvector(__x,simd_long3); }
+static simd_long4 SIMD_CFUNC simd_long(simd_uint4 __x) { return __builtin_convertvector(__x,simd_long4); }
+static simd_long8 SIMD_CFUNC simd_long(simd_uint8 __x) { return __builtin_convertvector(__x,simd_long8); }
+static simd_long2 SIMD_CFUNC simd_long(simd_float2 __x) { return __builtin_convertvector(__x,simd_long2); }
+static simd_long3 SIMD_CFUNC simd_long(simd_float3 __x) { return __builtin_convertvector(__x,simd_long3); }
+static simd_long4 SIMD_CFUNC simd_long(simd_float4 __x) { return __builtin_convertvector(__x,simd_long4); }
+static simd_long8 SIMD_CFUNC simd_long(simd_float8 __x) { return __builtin_convertvector(__x,simd_long8); }
+static simd_long2 SIMD_CFUNC simd_long(simd_long2 __x) { return __x; }
+static simd_long3 SIMD_CFUNC simd_long(simd_long3 __x) { return __x; }
+static simd_long4 SIMD_CFUNC simd_long(simd_long4 __x) { return __x; }
+static simd_long8 SIMD_CFUNC simd_long(simd_long8 __x) { return __x; }
+static simd_long2 SIMD_CFUNC simd_long(simd_ulong2 __x) { return (simd_long2)__x; }
+static simd_long3 SIMD_CFUNC simd_long(simd_ulong3 __x) { return (simd_long3)__x; }
+static simd_long4 SIMD_CFUNC simd_long(simd_ulong4 __x) { return (simd_long4)__x; }
+static simd_long8 SIMD_CFUNC simd_long(simd_ulong8 __x) { return (simd_long8)__x; }
+static simd_long2 SIMD_CFUNC simd_long(simd_double2 __x) { return __builtin_convertvector(__x,simd_long2); }
+static simd_long3 SIMD_CFUNC simd_long(simd_double3 __x) { return __builtin_convertvector(__x,simd_long3); }
+static simd_long4 SIMD_CFUNC simd_long(simd_double4 __x) { return __builtin_convertvector(__x,simd_long4); }
+static simd_long8 SIMD_CFUNC simd_long(simd_double8 __x) { return __builtin_convertvector(__x,simd_long8); }
+
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_char2 __x) { return simd_long(__x); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_char3 __x) { return simd_long(__x); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_char4 __x) { return simd_long(__x); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_char8 __x) { return simd_long(__x); }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_short2 __x) { return simd_long(__x); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_short3 __x) { return simd_long(__x); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_short4 __x) { return simd_long(__x); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_short8 __x) { return simd_long(__x); }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_int2 __x) { return simd_long(__x); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_int3 __x) { return simd_long(__x); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_int4 __x) { return simd_long(__x); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_int8 __x) { return simd_long(__x); }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_float2 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63f)), 0x7fffffffffffffff, simd_long(__x >= 0x1.0p63f)); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_float3 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63f)), 0x7fffffffffffffff, simd_long(__x >= 0x1.0p63f)); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_float4 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63f)), 0x7fffffffffffffff, simd_long(__x >= 0x1.0p63f)); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_float8 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63f)), 0x7fffffffffffffff, simd_long(__x >= 0x1.0p63f)); }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_long2 __x) { return __x; }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_long3 __x) { return __x; }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_long4 __x) { return __x; }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_long8 __x) { return __x; }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_double2 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63)), 0x7fffffffffffffff, __x >= 0x1.0p63); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_double3 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63)), 0x7fffffffffffffff, __x >= 0x1.0p63); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_double4 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63)), 0x7fffffffffffffff, __x >= 0x1.0p63); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_double8 __x) { return simd_bitselect(simd_long(simd_max(__x,-0x1.0p63)), 0x7fffffffffffffff, __x >= 0x1.0p63); }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_uchar2 __x) { return simd_long(__x); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_uchar3 __x) { return simd_long(__x); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_uchar4 __x) { return simd_long(__x); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_uchar8 __x) { return simd_long(__x); }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_ushort2 __x) { return simd_long(__x); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_ushort3 __x) { return simd_long(__x); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_ushort4 __x) { return simd_long(__x); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_ushort8 __x) { return simd_long(__x); }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_uint2 __x) { return simd_long(__x); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_uint3 __x) { return simd_long(__x); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_uint4 __x) { return simd_long(__x); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_uint8 __x) { return simd_long(__x); }
+static simd_long2 SIMD_CFUNC simd_long_sat(simd_ulong2 __x) { return simd_long(simd_min(__x,0x7fffffffffffffff)); }
+static simd_long3 SIMD_CFUNC simd_long_sat(simd_ulong3 __x) { return simd_long(simd_min(__x,0x7fffffffffffffff)); }
+static simd_long4 SIMD_CFUNC simd_long_sat(simd_ulong4 __x) { return simd_long(simd_min(__x,0x7fffffffffffffff)); }
+static simd_long8 SIMD_CFUNC simd_long_sat(simd_ulong8 __x) { return simd_long(simd_min(__x,0x7fffffffffffffff)); }
+
+static simd_long2 SIMD_CFUNC simd_long_rte(simd_double2 __x) {
+#if defined __AVX512F__
+ return _mm_cvtpd_epi64(__x);
+#elif defined __arm64__
+ return vcvtnq_s64_f64(__x);
+#else
+ simd_double2 magic = __tg_copysign(0x1.0p52, __x);
+ simd_long2 x_is_small = __tg_fabs(__x) < 0x1.0p52;
+ return __builtin_convertvector(simd_bitselect(__x, (__x + magic) - magic, x_is_small & 0x7fffffffffffffff), simd_long2);
+#endif
+}
+
+static simd_long3 SIMD_CFUNC simd_long_rte(simd_double3 __x) {
+ return simd_make_long3(simd_long_rte(simd_make_double4_undef(__x)));
+}
+
+static simd_long4 SIMD_CFUNC simd_long_rte(simd_double4 __x) {
+#if defined __AVX512F__
+ return _mm256_cvtpd_epi64(__x);
+#else
+ return simd_make_long4(simd_long_rte(__x.lo), simd_long_rte(__x.hi));
+#endif
+}
+
+static simd_long8 SIMD_CFUNC simd_long_rte(simd_double8 __x) {
+#if defined __AVX512F__
+ return _mm512_cvt_roundpd_epi64(__x, _MM_FROUND_RINT);
+#else
+ return simd_make_long8(simd_long_rte(__x.lo), simd_long_rte(__x.hi));
+#endif
+}
+
+
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_char2 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_char3 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_char4 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_char8 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_uchar2 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_uchar3 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_uchar4 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_uchar8 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_short2 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_short3 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_short4 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_short8 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_ushort2 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_ushort3 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_ushort4 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_ushort8 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_int2 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_int3 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_int4 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_int8 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_uint2 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_uint3 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_uint4 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_uint8 __x) { return simd_ulong(simd_long(__x)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_float2 __x) { simd_int2 __big = __x >= 0x1.0p63f; return simd_ulong(simd_long(__x - simd_bitselect((simd_float2)0,0x1.0p63f,__big))) + simd_bitselect((simd_ulong2)0,0x8000000000000000,simd_long(__big)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_float3 __x) { simd_int3 __big = __x >= 0x1.0p63f; return simd_ulong(simd_long(__x - simd_bitselect((simd_float3)0,0x1.0p63f,__big))) + simd_bitselect((simd_ulong3)0,0x8000000000000000,simd_long(__big)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_float4 __x) { simd_int4 __big = __x >= 0x1.0p63f; return simd_ulong(simd_long(__x - simd_bitselect((simd_float4)0,0x1.0p63f,__big))) + simd_bitselect((simd_ulong4)0,0x8000000000000000,simd_long(__big)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_float8 __x) { simd_int8 __big = __x >= 0x1.0p63f; return simd_ulong(simd_long(__x - simd_bitselect((simd_float8)0,0x1.0p63f,__big))) + simd_bitselect((simd_ulong8)0,0x8000000000000000,simd_long(__big)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_long2 __x) { return (simd_ulong2)__x; }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_long3 __x) { return (simd_ulong3)__x; }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_long4 __x) { return (simd_ulong4)__x; }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_long8 __x) { return (simd_ulong8)__x; }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_ulong2 __x) { return __x; }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_ulong3 __x) { return __x; }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_ulong4 __x) { return __x; }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_ulong8 __x) { return __x; }
+static simd_ulong2 SIMD_CFUNC simd_ulong(simd_double2 __x) { simd_long2 __big = __x >= 0x1.0p63; return simd_ulong(simd_long(__x - simd_bitselect((simd_double2)0,0x1.0p63,__big))) + simd_bitselect((simd_ulong2)0,0x8000000000000000,__big); }
+static simd_ulong3 SIMD_CFUNC simd_ulong(simd_double3 __x) { simd_long3 __big = __x >= 0x1.0p63; return simd_ulong(simd_long(__x - simd_bitselect((simd_double3)0,0x1.0p63,__big))) + simd_bitselect((simd_ulong3)0,0x8000000000000000,__big); }
+static simd_ulong4 SIMD_CFUNC simd_ulong(simd_double4 __x) { simd_long4 __big = __x >= 0x1.0p63; return simd_ulong(simd_long(__x - simd_bitselect((simd_double4)0,0x1.0p63,__big))) + simd_bitselect((simd_ulong4)0,0x8000000000000000,__big); }
+static simd_ulong8 SIMD_CFUNC simd_ulong(simd_double8 __x) { simd_long8 __big = __x >= 0x1.0p63; return simd_ulong(simd_long(__x - simd_bitselect((simd_double8)0,0x1.0p63,__big))) + simd_bitselect((simd_ulong8)0,0x8000000000000000,__big); }
+
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_char2 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_char3 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_char4 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_char8 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_short2 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_short3 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_short4 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_short8 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_int2 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_int3 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_int4 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_int8 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_float2 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.f)), 0xffffffffffffffff, simd_long(__x >= 0x1.0p64f)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_float3 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.f)), 0xffffffffffffffff, simd_long(__x >= 0x1.0p64f)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_float4 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.f)), 0xffffffffffffffff, simd_long(__x >= 0x1.0p64f)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_float8 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.f)), 0xffffffffffffffff, simd_long(__x >= 0x1.0p64f)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_long2 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_long3 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_long4 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_long8 __x) { return simd_ulong(simd_max(__x,0)); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_double2 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.0)), 0xffffffffffffffff, __x >= 0x1.0p64); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_double3 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.0)), 0xffffffffffffffff, __x >= 0x1.0p64); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_double4 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.0)), 0xffffffffffffffff, __x >= 0x1.0p64); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_double8 __x) { return simd_bitselect(simd_ulong(simd_max(__x,0.0)), 0xffffffffffffffff, __x >= 0x1.0p64); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_uchar2 __x) { return simd_ulong(__x); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_uchar3 __x) { return simd_ulong(__x); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_uchar4 __x) { return simd_ulong(__x); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_uchar8 __x) { return simd_ulong(__x); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_ushort2 __x) { return simd_ulong(__x); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_ushort3 __x) { return simd_ulong(__x); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_ushort4 __x) { return simd_ulong(__x); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_ushort8 __x) { return simd_ulong(__x); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_uint2 __x) { return simd_ulong(__x); }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_uint3 __x) { return simd_ulong(__x); }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_uint4 __x) { return simd_ulong(__x); }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_uint8 __x) { return simd_ulong(__x); }
+static simd_ulong2 SIMD_CFUNC simd_ulong_sat(simd_ulong2 __x) { return __x; }
+static simd_ulong3 SIMD_CFUNC simd_ulong_sat(simd_ulong3 __x) { return __x; }
+static simd_ulong4 SIMD_CFUNC simd_ulong_sat(simd_ulong4 __x) { return __x; }
+static simd_ulong8 SIMD_CFUNC simd_ulong_sat(simd_ulong8 __x) { return __x; }
+
+
+static simd_double2 SIMD_CFUNC simd_double(simd_char2 __x) { return simd_double(simd_int(__x)); }
+static simd_double3 SIMD_CFUNC simd_double(simd_char3 __x) { return simd_double(simd_int(__x)); }
+static simd_double4 SIMD_CFUNC simd_double(simd_char4 __x) { return simd_double(simd_int(__x)); }
+static simd_double8 SIMD_CFUNC simd_double(simd_char8 __x) { return simd_double(simd_int(__x)); }
+static simd_double2 SIMD_CFUNC simd_double(simd_uchar2 __x) { return simd_double(simd_int(__x)); }
+static simd_double3 SIMD_CFUNC simd_double(simd_uchar3 __x) { return simd_double(simd_int(__x)); }
+static simd_double4 SIMD_CFUNC simd_double(simd_uchar4 __x) { return simd_double(simd_int(__x)); }
+static simd_double8 SIMD_CFUNC simd_double(simd_uchar8 __x) { return simd_double(simd_int(__x)); }
+static simd_double2 SIMD_CFUNC simd_double(simd_short2 __x) { return simd_double(simd_int(__x)); }
+static simd_double3 SIMD_CFUNC simd_double(simd_short3 __x) { return simd_double(simd_int(__x)); }
+static simd_double4 SIMD_CFUNC simd_double(simd_short4 __x) { return simd_double(simd_int(__x)); }
+static simd_double8 SIMD_CFUNC simd_double(simd_short8 __x) { return simd_double(simd_int(__x)); }
+static simd_double2 SIMD_CFUNC simd_double(simd_ushort2 __x) { return simd_double(simd_int(__x)); }
+static simd_double3 SIMD_CFUNC simd_double(simd_ushort3 __x) { return simd_double(simd_int(__x)); }
+static simd_double4 SIMD_CFUNC simd_double(simd_ushort4 __x) { return simd_double(simd_int(__x)); }
+static simd_double8 SIMD_CFUNC simd_double(simd_ushort8 __x) { return simd_double(simd_int(__x)); }
+static simd_double2 SIMD_CFUNC simd_double(simd_int2 __x) { return __builtin_convertvector(__x, simd_double2); }
+static simd_double3 SIMD_CFUNC simd_double(simd_int3 __x) { return __builtin_convertvector(__x, simd_double3); }
+static simd_double4 SIMD_CFUNC simd_double(simd_int4 __x) { return __builtin_convertvector(__x, simd_double4); }
+static simd_double8 SIMD_CFUNC simd_double(simd_int8 __x) { return __builtin_convertvector(__x, simd_double8); }
+static simd_double2 SIMD_CFUNC simd_double(simd_uint2 __x) { return __builtin_convertvector(__x, simd_double2); }
+static simd_double3 SIMD_CFUNC simd_double(simd_uint3 __x) { return __builtin_convertvector(__x, simd_double3); }
+static simd_double4 SIMD_CFUNC simd_double(simd_uint4 __x) { return __builtin_convertvector(__x, simd_double4); }
+static simd_double8 SIMD_CFUNC simd_double(simd_uint8 __x) { return __builtin_convertvector(__x, simd_double8); }
+static simd_double2 SIMD_CFUNC simd_double(simd_float2 __x) { return __builtin_convertvector(__x, simd_double2); }
+static simd_double3 SIMD_CFUNC simd_double(simd_float3 __x) { return __builtin_convertvector(__x, simd_double3); }
+static simd_double4 SIMD_CFUNC simd_double(simd_float4 __x) { return __builtin_convertvector(__x, simd_double4); }
+static simd_double8 SIMD_CFUNC simd_double(simd_float8 __x) { return __builtin_convertvector(__x, simd_double8); }
+static simd_double2 SIMD_CFUNC simd_double(simd_long2 __x) { return __builtin_convertvector(__x, simd_double2); }
+static simd_double3 SIMD_CFUNC simd_double(simd_long3 __x) { return __builtin_convertvector(__x, simd_double3); }
+static simd_double4 SIMD_CFUNC simd_double(simd_long4 __x) { return __builtin_convertvector(__x, simd_double4); }
+static simd_double8 SIMD_CFUNC simd_double(simd_long8 __x) { return __builtin_convertvector(__x, simd_double8); }
+static simd_double2 SIMD_CFUNC simd_double(simd_ulong2 __x) { return __builtin_convertvector(__x, simd_double2); }
+static simd_double3 SIMD_CFUNC simd_double(simd_ulong3 __x) { return __builtin_convertvector(__x, simd_double3); }
+static simd_double4 SIMD_CFUNC simd_double(simd_ulong4 __x) { return __builtin_convertvector(__x, simd_double4); }
+static simd_double8 SIMD_CFUNC simd_double(simd_ulong8 __x) { return __builtin_convertvector(__x, simd_double8); }
+static simd_double2 SIMD_CFUNC simd_double(simd_double2 __x) { return __builtin_convertvector(__x, simd_double2); }
+static simd_double3 SIMD_CFUNC simd_double(simd_double3 __x) { return __builtin_convertvector(__x, simd_double3); }
+static simd_double4 SIMD_CFUNC simd_double(simd_double4 __x) { return __builtin_convertvector(__x, simd_double4); }
+static simd_double8 SIMD_CFUNC simd_double(simd_double8 __x) { return __builtin_convertvector(__x, simd_double8); }
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif // SIMD_COMPILER_HAS_REQUIRED_FEATURES
+#endif // __SIMD_CONVERSION_HEADER__ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/simd/logic.h b/lib/libc/include/aarch64-macos-gnu/simd/logic.h
new file mode 100644
index 0000000000..fdefcb632d
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/simd/logic.h
@@ -0,0 +1,1315 @@
+/*! @header
+ * The interfaces declared in this header provide logical and bitwise
+ * operations on vectors. Some of these function operate elementwise,
+ * and some produce a scalar result that depends on all lanes of the input.
+ *
+ * For functions returning a boolean value, the return type in C and
+ * Objective-C is _Bool; for C++ it is bool.
+ *
+ * Function Result
+ * ------------------------------------------------------------------
+ * simd_all(comparison) True if and only if the comparison is true
+ * in every vector lane. e.g.:
+ *
+ * if (simd_all(x == 0.0f)) {
+ * // executed if every lane of x
+ * // contains zero.
+ * }
+ *
+ * The precise function of simd_all is to
+ * return the high-order bit of the result
+ * of a horizontal bitwise AND of all vector
+ * lanes.
+ *
+ * simd_any(comparison) True if and only if the comparison is true
+ * in at least one vector lane. e.g.:
+ *
+ * if (simd_any(x < 0.0f)) {
+ * // executed if any lane of x
+ * // contains a negative value.
+ * }
+ *
+ * The precise function of simd_all is to
+ * return the high-order bit of the result
+ * of a horizontal bitwise OR of all vector
+ * lanes.
+ *
+ * simd_select(x,y,mask) For each lane in the result, selects the
+ * corresponding element of x if the high-
+ * order bit of the corresponding element of
+ * mask is 0, and the corresponding element
+ * of y otherwise.
+ *
+ * simd_bitselect(x,y,mask) For each bit in the result, selects the
+ * corresponding bit of x if the corresponding
+ * bit of mask is clear, and the corresponding
+ * of y otherwise.
+ *
+ * In C++, these functions are available under the simd:: namespace:
+ *
+ * C++ Function Equivalent C Function
+ * --------------------------------------------------------------------
+ * simd::all(comparison) simd_all(comparison)
+ * simd::any(comparison) simd_any(comparison)
+ * simd::select(x,y,mask) simd_select(x,y,mask)
+ * simd::bitselect(x,y,mask) simd_bitselect(x,y,mask)
+ *
+ * @copyright 2014-2017 Apple, Inc. All rights reserved.
+ * @unsorted */
+
+#ifndef SIMD_LOGIC_HEADER
+#define SIMD_LOGIC_HEADER
+
+#include <simd/base.h>
+#if SIMD_COMPILER_HAS_REQUIRED_FEATURES
+#include <simd/vector_make.h>
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_char2 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_char3 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_char4 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_char8 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_char16 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_char32 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_char64 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar2 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar3 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar4 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar8 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar16 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar32 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar64 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_short2 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_short3 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_short4 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_short8 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_short16 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_short32 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort2 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort3 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort4 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort8 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort16 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort32 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_int2 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_int3 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_int4 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_int8 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_int16 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint2 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint3 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint4 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint8 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint16 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_long2 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_long3 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_long4 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_long8 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ulong2 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ulong3 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ulong4 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_any(simd_ulong8 x);
+/*! @abstract True if and only if the high-order bit of any lane of the
+ * vector is set.
+ * @discussion Deprecated. Use simd_any instead. */
+#define vector_any simd_any
+
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_char2 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_char3 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_char4 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_char8 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_char16 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_char32 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_char64 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar2 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar3 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar4 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar8 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar16 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar32 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar64 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_short2 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_short3 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_short4 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_short8 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_short16 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_short32 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort2 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort3 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort4 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort8 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort16 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort32 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_int2 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_int3 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_int4 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_int8 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_int16 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint2 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint3 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint4 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint8 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint16 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_long2 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_long3 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_long4 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_long8 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ulong2 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ulong3 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ulong4 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set. */
+static inline SIMD_CFUNC simd_bool simd_all(simd_ulong8 x);
+/*! @abstract True if and only if the high-order bit of every lane of the
+ * vector is set.
+ * @discussion Deprecated. Use simd_all instead. */
+#define vector_all simd_all
+
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_float2 simd_select(simd_float2 x, simd_float2 y, simd_int2 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_float3 simd_select(simd_float3 x, simd_float3 y, simd_int3 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_float4 simd_select(simd_float4 x, simd_float4 y, simd_int4 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_float8 simd_select(simd_float8 x, simd_float8 y, simd_int8 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_float16 simd_select(simd_float16 x, simd_float16 y, simd_int16 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_double2 simd_select(simd_double2 x, simd_double2 y, simd_long2 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_double3 simd_select(simd_double3 x, simd_double3 y, simd_long3 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_double4 simd_select(simd_double4 x, simd_double4 y, simd_long4 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+static inline SIMD_CFUNC simd_double8 simd_select(simd_double8 x, simd_double8 y, simd_long8 mask);
+/*! @abstract For each lane in the result, selects the corresponding element
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively.
+ * @discussion Deprecated. Use simd_select instead. */
+#define vector_select simd_select
+
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_char2 simd_bitselect(simd_char2 x, simd_char2 y, simd_char2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_char3 simd_bitselect(simd_char3 x, simd_char3 y, simd_char3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_char4 simd_bitselect(simd_char4 x, simd_char4 y, simd_char4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_char8 simd_bitselect(simd_char8 x, simd_char8 y, simd_char8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_char16 simd_bitselect(simd_char16 x, simd_char16 y, simd_char16 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_char32 simd_bitselect(simd_char32 x, simd_char32 y, simd_char32 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_char64 simd_bitselect(simd_char64 x, simd_char64 y, simd_char64 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uchar2 simd_bitselect(simd_uchar2 x, simd_uchar2 y, simd_char2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uchar3 simd_bitselect(simd_uchar3 x, simd_uchar3 y, simd_char3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uchar4 simd_bitselect(simd_uchar4 x, simd_uchar4 y, simd_char4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uchar8 simd_bitselect(simd_uchar8 x, simd_uchar8 y, simd_char8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uchar16 simd_bitselect(simd_uchar16 x, simd_uchar16 y, simd_char16 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uchar32 simd_bitselect(simd_uchar32 x, simd_uchar32 y, simd_char32 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uchar64 simd_bitselect(simd_uchar64 x, simd_uchar64 y, simd_char64 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_short2 simd_bitselect(simd_short2 x, simd_short2 y, simd_short2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_short3 simd_bitselect(simd_short3 x, simd_short3 y, simd_short3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_short4 simd_bitselect(simd_short4 x, simd_short4 y, simd_short4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_short8 simd_bitselect(simd_short8 x, simd_short8 y, simd_short8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_short16 simd_bitselect(simd_short16 x, simd_short16 y, simd_short16 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_short32 simd_bitselect(simd_short32 x, simd_short32 y, simd_short32 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ushort2 simd_bitselect(simd_ushort2 x, simd_ushort2 y, simd_short2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ushort3 simd_bitselect(simd_ushort3 x, simd_ushort3 y, simd_short3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ushort4 simd_bitselect(simd_ushort4 x, simd_ushort4 y, simd_short4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ushort8 simd_bitselect(simd_ushort8 x, simd_ushort8 y, simd_short8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ushort16 simd_bitselect(simd_ushort16 x, simd_ushort16 y, simd_short16 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ushort32 simd_bitselect(simd_ushort32 x, simd_ushort32 y, simd_short32 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_int2 simd_bitselect(simd_int2 x, simd_int2 y, simd_int2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_int3 simd_bitselect(simd_int3 x, simd_int3 y, simd_int3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_int4 simd_bitselect(simd_int4 x, simd_int4 y, simd_int4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_int8 simd_bitselect(simd_int8 x, simd_int8 y, simd_int8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_int16 simd_bitselect(simd_int16 x, simd_int16 y, simd_int16 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uint2 simd_bitselect(simd_uint2 x, simd_uint2 y, simd_int2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uint3 simd_bitselect(simd_uint3 x, simd_uint3 y, simd_int3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uint4 simd_bitselect(simd_uint4 x, simd_uint4 y, simd_int4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uint8 simd_bitselect(simd_uint8 x, simd_uint8 y, simd_int8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_uint16 simd_bitselect(simd_uint16 x, simd_uint16 y, simd_int16 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_float2 simd_bitselect(simd_float2 x, simd_float2 y, simd_int2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_float3 simd_bitselect(simd_float3 x, simd_float3 y, simd_int3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_float4 simd_bitselect(simd_float4 x, simd_float4 y, simd_int4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_float8 simd_bitselect(simd_float8 x, simd_float8 y, simd_int8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_float16 simd_bitselect(simd_float16 x, simd_float16 y, simd_int16 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_long2 simd_bitselect(simd_long2 x, simd_long2 y, simd_long2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_long3 simd_bitselect(simd_long3 x, simd_long3 y, simd_long3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_long4 simd_bitselect(simd_long4 x, simd_long4 y, simd_long4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_long8 simd_bitselect(simd_long8 x, simd_long8 y, simd_long8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ulong2 simd_bitselect(simd_ulong2 x, simd_ulong2 y, simd_long2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ulong3 simd_bitselect(simd_ulong3 x, simd_ulong3 y, simd_long3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ulong4 simd_bitselect(simd_ulong4 x, simd_ulong4 y, simd_long4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_ulong8 simd_bitselect(simd_ulong8 x, simd_ulong8 y, simd_long8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_double2 simd_bitselect(simd_double2 x, simd_double2 y, simd_long2 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_double3 simd_bitselect(simd_double3 x, simd_double3 y, simd_long3 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_double4 simd_bitselect(simd_double4 x, simd_double4 y, simd_long4 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+static inline SIMD_CFUNC simd_double8 simd_bitselect(simd_double8 x, simd_double8 y, simd_long8 mask);
+/*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively.
+ * @discussion Deprecated. Use simd_bitselect instead. */
+#define vector_bitselect simd_bitselect
+
+#ifdef __cplusplus
+} /* extern "C" */
+
+namespace simd {
+ /*! @abstract True if and only if the high-order bit of every lane is set. */
+ template <typename inttypeN> static SIMD_CPPFUNC simd_bool all(const inttypeN predicate) { return ::simd_all(predicate); }
+ /*! @abstract True if and only if the high-order bit of any lane is set. */
+ template <typename inttypeN> static SIMD_CPPFUNC simd_bool any(const inttypeN predicate) { return ::simd_any(predicate); }
+ /*! @abstract Each lane of the result is selected from the corresponding lane
+ * of x or y according to whether the high-order bit of the corresponding
+ * lane of mask is 0 or 1, respectively. */
+ template <typename inttypeN, typename fptypeN> static SIMD_CPPFUNC fptypeN select(const fptypeN x, const fptypeN y, const inttypeN predicate) { return ::simd_select(x,y,predicate); }
+ /*! @abstract For each bit in the result, selects the corresponding bit of x
+ * or y according to whether the corresponding bit of mask is 0 or 1,
+ * respectively. */
+ template <typename inttypeN, typename typeN> static SIMD_CPPFUNC typeN bitselect(const typeN x, const typeN y, const inttypeN mask) { return ::simd_bitselect(x,y,mask); }
+}
+
+extern "C" {
+#endif /* __cplusplus */
+
+#pragma mark - Implementations
+
+static inline SIMD_CFUNC simd_bool simd_any(simd_char2 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_char16_undef(x)) & 0x3);
+#elif defined __arm64__
+ return simd_any(x.xyxy);
+#else
+ union { uint16_t i; simd_char2 v; } u = { .v = x };
+ return (u.i & 0x8080);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_char3 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_char16_undef(x)) & 0x7);
+#elif defined __arm64__
+ return simd_any(x.xyzz);
+#else
+ union { uint32_t i; simd_char3 v; } u = { .v = x };
+ return (u.i & 0x808080);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_char4 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_char16_undef(x)) & 0xf);
+#elif defined __arm64__
+ return simd_any(x.xyzwxyzw);
+#else
+ union { uint32_t i; simd_char4 v; } u = { .v = x };
+ return (u.i & 0x80808080);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_char8 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_char16_undef(x)) & 0xff);
+#elif defined __arm64__
+ return vmaxv_u8(x) & 0x80;
+#else
+ union { uint64_t i; simd_char8 v; } u = { .v = x };
+ return (u.i & 0x8080808080808080);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_char16 x) {
+#if defined __SSE2__
+ return _mm_movemask_epi8((__m128i)x);
+#elif defined __arm64__
+ return vmaxvq_u8(x) & 0x80;
+#else
+ return simd_any(x.lo | x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_char32 x) {
+#if defined __AVX2__
+ return _mm256_movemask_epi8(x);
+#else
+ return simd_any(x.lo | x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_char64 x) {
+ return simd_any(x.lo | x.hi);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar2 x) {
+ return simd_any((simd_char2)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar3 x) {
+ return simd_any((simd_char3)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar4 x) {
+ return simd_any((simd_char4)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar8 x) {
+ return simd_any((simd_char8)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar16 x) {
+ return simd_any((simd_char16)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar32 x) {
+ return simd_any((simd_char32)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uchar64 x) {
+ return simd_any((simd_char64)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_short2 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_short8_undef(x)) & 0xa);
+#elif defined __arm64__
+ return simd_any(x.xyxy);
+#else
+ union { uint32_t i; simd_short2 v; } u = { .v = x };
+ return (u.i & 0x80008000);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_short3 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_short8_undef(x)) & 0x2a);
+#elif defined __arm64__
+ return simd_any(x.xyzz);
+#else
+ union { uint64_t i; simd_short3 v; } u = { .v = x };
+ return (u.i & 0x800080008000);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_short4 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_short8_undef(x)) & 0xaa);
+#elif defined __arm64__
+ return vmaxv_u16(x) & 0x8000;
+#else
+ union { uint64_t i; simd_short4 v; } u = { .v = x };
+ return (u.i & 0x8000800080008000);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_short8 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)x) & 0xaaaa);
+#elif defined __arm64__
+ return vmaxvq_u16(x) & 0x8000;
+#else
+ return simd_any(x.lo | x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_short16 x) {
+#if defined __AVX2__
+ return (_mm256_movemask_epi8(x) & 0xaaaaaaaa);
+#else
+ return simd_any(x.lo | x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_short32 x) {
+ return simd_any(x.lo | x.hi);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort2 x) {
+ return simd_any((simd_short2)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort3 x) {
+ return simd_any((simd_short3)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort4 x) {
+ return simd_any((simd_short4)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort8 x) {
+ return simd_any((simd_short8)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort16 x) {
+ return simd_any((simd_short16)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ushort32 x) {
+ return simd_any((simd_short32)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_int2 x) {
+#if defined __SSE2__
+ return (_mm_movemask_ps((__m128)simd_make_int4_undef(x)) & 0x3);
+#elif defined __arm64__
+ return vmaxv_u32(x) & 0x80000000;
+#else
+ union { uint64_t i; simd_int2 v; } u = { .v = x };
+ return (u.i & 0x8000000080000000);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_int3 x) {
+#if defined __SSE2__
+ return (_mm_movemask_ps((__m128)simd_make_int4_undef(x)) & 0x7);
+#elif defined __arm64__
+ return simd_any(x.xyzz);
+#else
+ return (x.x | x.y | x.z) & 0x80000000;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_int4 x) {
+#if defined __SSE2__
+ return _mm_movemask_ps((__m128)x);
+#elif defined __arm64__
+ return vmaxvq_u32(x) & 0x80000000;
+#else
+ return simd_any(x.lo | x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_int8 x) {
+#if defined __AVX__
+ return _mm256_movemask_ps(x);
+#else
+ return simd_any(x.lo | x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_int16 x) {
+ return simd_any(x.lo | x.hi);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint2 x) {
+ return simd_any((simd_int2)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint3 x) {
+ return simd_any((simd_int3)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint4 x) {
+ return simd_any((simd_int4)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint8 x) {
+ return simd_any((simd_int8)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_uint16 x) {
+ return simd_any((simd_int16)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_long2 x) {
+#if defined __SSE2__
+ return _mm_movemask_pd((__m128d)x);
+#elif defined __arm64__
+ return (x.x | x.y) & 0x8000000000000000U;
+#else
+ return (x.x | x.y) & 0x8000000000000000U;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_long3 x) {
+#if defined __AVX__
+ return (_mm256_movemask_pd(simd_make_long4_undef(x)) & 0x7);
+#else
+ return (x.x | x.y | x.z) & 0x8000000000000000U;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_long4 x) {
+#if defined __AVX__
+ return _mm256_movemask_pd(x);
+#else
+ return simd_any(x.lo | x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_long8 x) {
+ return simd_any(x.lo | x.hi);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ulong2 x) {
+ return simd_any((simd_long2)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ulong3 x) {
+ return simd_any((simd_long3)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ulong4 x) {
+ return simd_any((simd_long4)x);
+}
+static inline SIMD_CFUNC simd_bool simd_any(simd_ulong8 x) {
+ return simd_any((simd_long8)x);
+}
+
+static inline SIMD_CFUNC simd_bool simd_all(simd_char2 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_char16_undef(x)) & 0x3) == 0x3;
+#elif defined __arm64__
+ return simd_all(x.xyxy);
+#else
+ union { uint16_t i; simd_char2 v; } u = { .v = x };
+ return (u.i & 0x8080) == 0x8080;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_char3 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_char16_undef(x)) & 0x7) == 0x7;
+#elif defined __arm64__
+ return simd_all(x.xyzz);
+#else
+ union { uint32_t i; simd_char3 v; } u = { .v = x };
+ return (u.i & 0x808080) == 0x808080;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_char4 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_char16_undef(x)) & 0xf) == 0xf;
+#elif defined __arm64__
+ return simd_all(x.xyzwxyzw);
+#else
+ union { uint32_t i; simd_char4 v; } u = { .v = x };
+ return (u.i & 0x80808080) == 0x80808080;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_char8 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_char16_undef(x)) & 0xff) == 0xff;
+#elif defined __arm64__
+ return vminv_u8(x) & 0x80;
+#else
+ union { uint64_t i; simd_char8 v; } u = { .v = x };
+ return (u.i & 0x8080808080808080) == 0x8080808080808080;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_char16 x) {
+#if defined __SSE2__
+ return _mm_movemask_epi8((__m128i)x) == 0xffff;
+#elif defined __arm64__
+ return vminvq_u8(x) & 0x80;
+#else
+ return simd_all(x.lo & x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_char32 x) {
+#if defined __AVX2__
+ return _mm256_movemask_epi8(x) == 0xffffffff;
+#else
+ return simd_all(x.lo & x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_char64 x) {
+ return simd_all(x.lo & x.hi);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar2 x) {
+ return simd_all((simd_char2)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar3 x) {
+ return simd_all((simd_char3)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar4 x) {
+ return simd_all((simd_char4)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar8 x) {
+ return simd_all((simd_char8)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar16 x) {
+ return simd_all((simd_char16)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar32 x) {
+ return simd_all((simd_char32)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uchar64 x) {
+ return simd_all((simd_char64)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_short2 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_short8_undef(x)) & 0xa) == 0xa;
+#elif defined __arm64__
+ return simd_all(x.xyxy);
+#else
+ union { uint32_t i; simd_short2 v; } u = { .v = x };
+ return (u.i & 0x80008000) == 0x80008000;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_short3 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_short8_undef(x)) & 0x2a) == 0x2a;
+#elif defined __arm64__
+ return simd_all(x.xyzz);
+#else
+ union { uint64_t i; simd_short3 v; } u = { .v = x };
+ return (u.i & 0x800080008000) == 0x800080008000;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_short4 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)simd_make_short8_undef(x)) & 0xaa) == 0xaa;
+#elif defined __arm64__
+ return vminv_u16(x) & 0x8000;
+#else
+ union { uint64_t i; simd_short4 v; } u = { .v = x };
+ return (u.i & 0x8000800080008000) == 0x8000800080008000;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_short8 x) {
+#if defined __SSE2__
+ return (_mm_movemask_epi8((__m128i)x) & 0xaaaa) == 0xaaaa;
+#elif defined __arm64__
+ return vminvq_u16(x) & 0x8000;
+#else
+ return simd_all(x.lo & x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_short16 x) {
+#if defined __AVX2__
+ return (_mm256_movemask_epi8(x) & 0xaaaaaaaa) == 0xaaaaaaaa;
+#else
+ return simd_all(x.lo & x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_short32 x) {
+ return simd_all(x.lo & x.hi);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort2 x) {
+ return simd_all((simd_short2)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort3 x) {
+ return simd_all((simd_short3)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort4 x) {
+ return simd_all((simd_short4)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort8 x) {
+ return simd_all((simd_short8)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort16 x) {
+ return simd_all((simd_short16)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ushort32 x) {
+ return simd_all((simd_short32)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_int2 x) {
+#if defined __SSE2__
+ return (_mm_movemask_ps((__m128)simd_make_int4_undef(x)) & 0x3) == 0x3;
+#elif defined __arm64__
+ return vminv_u32(x) & 0x80000000;
+#else
+ union { uint64_t i; simd_int2 v; } u = { .v = x };
+ return (u.i & 0x8000000080000000) == 0x8000000080000000;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_int3 x) {
+#if defined __SSE2__
+ return (_mm_movemask_ps((__m128)simd_make_int4_undef(x)) & 0x7) == 0x7;
+#elif defined __arm64__
+ return simd_all(x.xyzz);
+#else
+ return (x.x & x.y & x.z) & 0x80000000;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_int4 x) {
+#if defined __SSE2__
+ return _mm_movemask_ps((__m128)x) == 0xf;
+#elif defined __arm64__
+ return vminvq_u32(x) & 0x80000000;
+#else
+ return simd_all(x.lo & x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_int8 x) {
+#if defined __AVX__
+ return _mm256_movemask_ps(x) == 0xff;
+#else
+ return simd_all(x.lo & x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_int16 x) {
+ return simd_all(x.lo & x.hi);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint2 x) {
+ return simd_all((simd_int2)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint3 x) {
+ return simd_all((simd_int3)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint4 x) {
+ return simd_all((simd_int4)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint8 x) {
+ return simd_all((simd_int8)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_uint16 x) {
+ return simd_all((simd_int16)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_long2 x) {
+#if defined __SSE2__
+ return _mm_movemask_pd((__m128d)x) == 0x3;
+#elif defined __arm64__
+ return (x.x & x.y) & 0x8000000000000000U;
+#else
+ return (x.x & x.y) & 0x8000000000000000U;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_long3 x) {
+#if defined __AVX__
+ return (_mm256_movemask_pd(simd_make_long4_undef(x)) & 0x7) == 0x7;
+#else
+ return (x.x & x.y & x.z) & 0x8000000000000000U;
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_long4 x) {
+#if defined __AVX__
+ return _mm256_movemask_pd(x) == 0xf;
+#else
+ return simd_all(x.lo & x.hi);
+#endif
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_long8 x) {
+ return simd_all(x.lo & x.hi);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ulong2 x) {
+ return simd_all((simd_long2)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ulong3 x) {
+ return simd_all((simd_long3)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ulong4 x) {
+ return simd_all((simd_long4)x);
+}
+static inline SIMD_CFUNC simd_bool simd_all(simd_ulong8 x) {
+ return simd_all((simd_long8)x);
+}
+
+static inline SIMD_CFUNC simd_float2 simd_select(simd_float2 x, simd_float2 y, simd_int2 mask) {
+ return simd_make_float2(simd_select(simd_make_float4_undef(x), simd_make_float4_undef(y), simd_make_int4_undef(mask)));
+}
+static inline SIMD_CFUNC simd_float3 simd_select(simd_float3 x, simd_float3 y, simd_int3 mask) {
+ return simd_make_float3(simd_select(simd_make_float4_undef(x), simd_make_float4_undef(y), simd_make_int4_undef(mask)));
+}
+static inline SIMD_CFUNC simd_float4 simd_select(simd_float4 x, simd_float4 y, simd_int4 mask) {
+#if defined __SSE4_1__
+ return _mm_blendv_ps(x, y, (__m128)mask);
+#else
+ return simd_bitselect(x, y, mask >> 31);
+#endif
+}
+static inline SIMD_CFUNC simd_float8 simd_select(simd_float8 x, simd_float8 y, simd_int8 mask) {
+#if defined __AVX__
+ return _mm256_blendv_ps(x, y, mask);
+#else
+ return simd_bitselect(x, y, mask >> 31);
+#endif
+}
+static inline SIMD_CFUNC simd_float16 simd_select(simd_float16 x, simd_float16 y, simd_int16 mask) {
+ return simd_bitselect(x, y, mask >> 31);
+}
+static inline SIMD_CFUNC simd_double2 simd_select(simd_double2 x, simd_double2 y, simd_long2 mask) {
+#if defined __SSE4_1__
+ return _mm_blendv_pd(x, y, (__m128d)mask);
+#else
+ return simd_bitselect(x, y, mask >> 63);
+#endif
+}
+static inline SIMD_CFUNC simd_double3 simd_select(simd_double3 x, simd_double3 y, simd_long3 mask) {
+ return simd_make_double3(simd_select(simd_make_double4_undef(x), simd_make_double4_undef(y), simd_make_long4_undef(mask)));
+}
+static inline SIMD_CFUNC simd_double4 simd_select(simd_double4 x, simd_double4 y, simd_long4 mask) {
+#if defined __AVX__
+ return _mm256_blendv_pd(x, y, mask);
+#else
+ return simd_bitselect(x, y, mask >> 63);
+#endif
+}
+static inline SIMD_CFUNC simd_double8 simd_select(simd_double8 x, simd_double8 y, simd_long8 mask) {
+ return simd_bitselect(x, y, mask >> 63);
+}
+
+static inline SIMD_CFUNC simd_char2 simd_bitselect(simd_char2 x, simd_char2 y, simd_char2 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_char3 simd_bitselect(simd_char3 x, simd_char3 y, simd_char3 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_char4 simd_bitselect(simd_char4 x, simd_char4 y, simd_char4 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_char8 simd_bitselect(simd_char8 x, simd_char8 y, simd_char8 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_char16 simd_bitselect(simd_char16 x, simd_char16 y, simd_char16 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_char32 simd_bitselect(simd_char32 x, simd_char32 y, simd_char32 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_char64 simd_bitselect(simd_char64 x, simd_char64 y, simd_char64 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_uchar2 simd_bitselect(simd_uchar2 x, simd_uchar2 y, simd_char2 mask) {
+ return (simd_uchar2)simd_bitselect((simd_char2)x, (simd_char2)y, mask);
+}
+static inline SIMD_CFUNC simd_uchar3 simd_bitselect(simd_uchar3 x, simd_uchar3 y, simd_char3 mask) {
+ return (simd_uchar3)simd_bitselect((simd_char3)x, (simd_char3)y, mask);
+}
+static inline SIMD_CFUNC simd_uchar4 simd_bitselect(simd_uchar4 x, simd_uchar4 y, simd_char4 mask) {
+ return (simd_uchar4)simd_bitselect((simd_char4)x, (simd_char4)y, mask);
+}
+static inline SIMD_CFUNC simd_uchar8 simd_bitselect(simd_uchar8 x, simd_uchar8 y, simd_char8 mask) {
+ return (simd_uchar8)simd_bitselect((simd_char8)x, (simd_char8)y, mask);
+}
+static inline SIMD_CFUNC simd_uchar16 simd_bitselect(simd_uchar16 x, simd_uchar16 y, simd_char16 mask) {
+ return (simd_uchar16)simd_bitselect((simd_char16)x, (simd_char16)y, mask);
+}
+static inline SIMD_CFUNC simd_uchar32 simd_bitselect(simd_uchar32 x, simd_uchar32 y, simd_char32 mask) {
+ return (simd_uchar32)simd_bitselect((simd_char32)x, (simd_char32)y, mask);
+}
+static inline SIMD_CFUNC simd_uchar64 simd_bitselect(simd_uchar64 x, simd_uchar64 y, simd_char64 mask) {
+ return (simd_uchar64)simd_bitselect((simd_char64)x, (simd_char64)y, mask);
+}
+static inline SIMD_CFUNC simd_short2 simd_bitselect(simd_short2 x, simd_short2 y, simd_short2 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_short3 simd_bitselect(simd_short3 x, simd_short3 y, simd_short3 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_short4 simd_bitselect(simd_short4 x, simd_short4 y, simd_short4 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_short8 simd_bitselect(simd_short8 x, simd_short8 y, simd_short8 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_short16 simd_bitselect(simd_short16 x, simd_short16 y, simd_short16 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_short32 simd_bitselect(simd_short32 x, simd_short32 y, simd_short32 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_ushort2 simd_bitselect(simd_ushort2 x, simd_ushort2 y, simd_short2 mask) {
+ return (simd_ushort2)simd_bitselect((simd_short2)x, (simd_short2)y, mask);
+}
+static inline SIMD_CFUNC simd_ushort3 simd_bitselect(simd_ushort3 x, simd_ushort3 y, simd_short3 mask) {
+ return (simd_ushort3)simd_bitselect((simd_short3)x, (simd_short3)y, mask);
+}
+static inline SIMD_CFUNC simd_ushort4 simd_bitselect(simd_ushort4 x, simd_ushort4 y, simd_short4 mask) {
+ return (simd_ushort4)simd_bitselect((simd_short4)x, (simd_short4)y, mask);
+}
+static inline SIMD_CFUNC simd_ushort8 simd_bitselect(simd_ushort8 x, simd_ushort8 y, simd_short8 mask) {
+ return (simd_ushort8)simd_bitselect((simd_short8)x, (simd_short8)y, mask);
+}
+static inline SIMD_CFUNC simd_ushort16 simd_bitselect(simd_ushort16 x, simd_ushort16 y, simd_short16 mask) {
+ return (simd_ushort16)simd_bitselect((simd_short16)x, (simd_short16)y, mask);
+}
+static inline SIMD_CFUNC simd_ushort32 simd_bitselect(simd_ushort32 x, simd_ushort32 y, simd_short32 mask) {
+ return (simd_ushort32)simd_bitselect((simd_short32)x, (simd_short32)y, mask);
+}
+static inline SIMD_CFUNC simd_int2 simd_bitselect(simd_int2 x, simd_int2 y, simd_int2 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_int3 simd_bitselect(simd_int3 x, simd_int3 y, simd_int3 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_int4 simd_bitselect(simd_int4 x, simd_int4 y, simd_int4 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_int8 simd_bitselect(simd_int8 x, simd_int8 y, simd_int8 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_int16 simd_bitselect(simd_int16 x, simd_int16 y, simd_int16 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_uint2 simd_bitselect(simd_uint2 x, simd_uint2 y, simd_int2 mask) {
+ return (simd_uint2)simd_bitselect((simd_int2)x, (simd_int2)y, mask);
+}
+static inline SIMD_CFUNC simd_uint3 simd_bitselect(simd_uint3 x, simd_uint3 y, simd_int3 mask) {
+ return (simd_uint3)simd_bitselect((simd_int3)x, (simd_int3)y, mask);
+}
+static inline SIMD_CFUNC simd_uint4 simd_bitselect(simd_uint4 x, simd_uint4 y, simd_int4 mask) {
+ return (simd_uint4)simd_bitselect((simd_int4)x, (simd_int4)y, mask);
+}
+static inline SIMD_CFUNC simd_uint8 simd_bitselect(simd_uint8 x, simd_uint8 y, simd_int8 mask) {
+ return (simd_uint8)simd_bitselect((simd_int8)x, (simd_int8)y, mask);
+}
+static inline SIMD_CFUNC simd_uint16 simd_bitselect(simd_uint16 x, simd_uint16 y, simd_int16 mask) {
+ return (simd_uint16)simd_bitselect((simd_int16)x, (simd_int16)y, mask);
+}
+static inline SIMD_CFUNC simd_float2 simd_bitselect(simd_float2 x, simd_float2 y, simd_int2 mask) {
+ return (simd_float2)simd_bitselect((simd_int2)x, (simd_int2)y, mask);
+}
+static inline SIMD_CFUNC simd_float3 simd_bitselect(simd_float3 x, simd_float3 y, simd_int3 mask) {
+ return (simd_float3)simd_bitselect((simd_int3)x, (simd_int3)y, mask);
+}
+static inline SIMD_CFUNC simd_float4 simd_bitselect(simd_float4 x, simd_float4 y, simd_int4 mask) {
+ return (simd_float4)simd_bitselect((simd_int4)x, (simd_int4)y, mask);
+}
+static inline SIMD_CFUNC simd_float8 simd_bitselect(simd_float8 x, simd_float8 y, simd_int8 mask) {
+ return (simd_float8)simd_bitselect((simd_int8)x, (simd_int8)y, mask);
+}
+static inline SIMD_CFUNC simd_float16 simd_bitselect(simd_float16 x, simd_float16 y, simd_int16 mask) {
+ return (simd_float16)simd_bitselect((simd_int16)x, (simd_int16)y, mask);
+}
+static inline SIMD_CFUNC simd_long2 simd_bitselect(simd_long2 x, simd_long2 y, simd_long2 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_long3 simd_bitselect(simd_long3 x, simd_long3 y, simd_long3 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_long4 simd_bitselect(simd_long4 x, simd_long4 y, simd_long4 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_long8 simd_bitselect(simd_long8 x, simd_long8 y, simd_long8 mask) {
+ return (x & ~mask) | (y & mask);
+}
+static inline SIMD_CFUNC simd_ulong2 simd_bitselect(simd_ulong2 x, simd_ulong2 y, simd_long2 mask) {
+ return (simd_ulong2)simd_bitselect((simd_long2)x, (simd_long2)y, mask);
+}
+static inline SIMD_CFUNC simd_ulong3 simd_bitselect(simd_ulong3 x, simd_ulong3 y, simd_long3 mask) {
+ return (simd_ulong3)simd_bitselect((simd_long3)x, (simd_long3)y, mask);
+}
+static inline SIMD_CFUNC simd_ulong4 simd_bitselect(simd_ulong4 x, simd_ulong4 y, simd_long4 mask) {
+ return (simd_ulong4)simd_bitselect((simd_long4)x, (simd_long4)y, mask);
+}
+static inline SIMD_CFUNC simd_ulong8 simd_bitselect(simd_ulong8 x, simd_ulong8 y, simd_long8 mask) {
+ return (simd_ulong8)simd_bitselect((simd_long8)x, (simd_long8)y, mask);
+}
+static inline SIMD_CFUNC simd_double2 simd_bitselect(simd_double2 x, simd_double2 y, simd_long2 mask) {
+ return (simd_double2)simd_bitselect((simd_long2)x, (simd_long2)y, mask);
+}
+static inline SIMD_CFUNC simd_double3 simd_bitselect(simd_double3 x, simd_double3 y, simd_long3 mask) {
+ return (simd_double3)simd_bitselect((simd_long3)x, (simd_long3)y, mask);
+}
+static inline SIMD_CFUNC simd_double4 simd_bitselect(simd_double4 x, simd_double4 y, simd_long4 mask) {
+ return (simd_double4)simd_bitselect((simd_long4)x, (simd_long4)y, mask);
+}
+static inline SIMD_CFUNC simd_double8 simd_bitselect(simd_double8 x, simd_double8 y, simd_long8 mask) {
+ return (simd_double8)simd_bitselect((simd_long8)x, (simd_long8)y, mask);
+}
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
+#endif /* __SIMD_LOGIC_HEADER__ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/simd/math.h b/lib/libc/include/aarch64-macos-gnu/simd/math.h
new file mode 100644
index 0000000000..4d5c654f69
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/simd/math.h
@@ -0,0 +1,5380 @@
+/*! @header
+ * The interfaces declared in this header provide elementwise math operations
+ * on vectors; each lane of the result vector depends only on the data in the
+ * corresponding lane of the argument(s) to the function.
+ *
+ * You should not use the C functions declared in this header directly (these
+ * are functions with names like `__tg_cos(x)`). These are merely
+ * implementation details of <tgmath.h> overloading; instead of calling
+ * `__tg_cos(x)`, call `cos(x)`. If you are writing C++, use `simd::cos(x)`.
+ *
+ * Note that while these vector functions are relatively recent additions,
+ * scalar fallback is provided for all of them, so they are available even
+ * when targeting older OS versions.
+ *
+ * The following functions are available:
+ *
+ * C name C++ name Notes
+ * ----------------------------------------------------------------------
+ * acos(x) simd::acos(x)
+ * asin(x) simd::asin(x)
+ * atan(x) simd::atan(x)
+ * atan2(y,x) simd::atan2(y,x) The argument order matches the scalar
+ * atan2 function, which gives the angle
+ * of a line with slope y/x.
+ * cos(x) simd::cos(x)
+ * sin(x) simd::sin(x)
+ * tan(x) simd::tan(x)
+ *
+ * cospi(x) simd::cospi(x) Returns cos(pi*x), sin(pi*x), tan(pi*x)
+ * sinpi(x) simd::sinpi(x) more efficiently and accurately than
+ * tanpi(x) simd::tanpi(x) would otherwise be possible
+ *
+ * acosh(x) simd::acosh(x)
+ * asinh(x) simd::asinh(x)
+ * atanh(x) simd::atanh(x)
+ *
+ * cosh(x) simd::cosh(x)
+ * sinh(x) simd::sinh(x)
+ * tanh(x) simd::tanh(x)
+ *
+ * exp(x) simd::exp(x)
+ * exp2(x) simd::exp2(x)
+ * exp10(x) simd::exp10(x) More efficient that pow(10,x).
+ * expm1(x) simd::expm1(x) exp(x)-1, accurate even for tiny x.
+ *
+ * log(x) simd::log(x)
+ * log2(x) simd::log2(x)
+ * log10(x) simd::log10(x)
+ * log1p(x) simd::log1p(x) log(1+x), accurate even for tiny x.
+ *
+ * fabs(x) simd::fabs(x)
+ * cbrt(x) simd::cbrt(x)
+ * sqrt(x) simd::sqrt(x)
+ * pow(x,y) simd::pow(x,y)
+ * copysign(x,y) simd::copysign(x,y)
+ * hypot(x,y) simd::hypot(x,y) sqrt(x*x + y*y), computed without
+ * overflow.1
+ * erf(x) simd::erf(x)
+ * erfc(x) simd::erfc(x)
+ * tgamma(x) simd::tgamma(x)
+ *
+ * fmod(x,y) simd::fmod(x,y)
+ * remainder(x,y) simd::remainder(x,y)
+ *
+ * ceil(x) simd::ceil(x)
+ * floor(x) simd::floor(x)
+ * rint(x) simd::rint(x)
+ * round(x) simd::round(x)
+ * trunc(x) simd::trunc(x)
+ *
+ * fdim(x,y) simd::fdim(x,y)
+ * fmax(x,y) simd::fmax(x,y) When one argument to fmin or fmax is
+ * fmin(x,y) simd::fmin(x,y) constant, use it as the *second* (y)
+ * argument to get better codegen on some
+ * architectures. E.g., write fmin(x,2)
+ * instead of fmin(2,x).
+ * fma(x,y,z) simd::fma(x,y,z) Fast on arm64 and when targeting AVX2
+ * and later; may be quite expensive on
+ * older hardware.
+ * simd_muladd(x,y,z) simd::muladd(x,y,z)
+ *
+ * @copyright 2014-2017 Apple, Inc. All rights reserved.
+ * @unsorted */
+
+#ifndef SIMD_MATH_HEADER
+#define SIMD_MATH_HEADER
+
+#include <simd/base.h>
+#if SIMD_COMPILER_HAS_REQUIRED_FEATURES
+#include <simd/vector_make.h>
+#include <simd/logic.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_acos(simd_float2 x);
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_acos(simd_float3 x);
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_acos(simd_float4 x);
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_acos(simd_float8 x);
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_acos(simd_float16 x);
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_acos(simd_double2 x);
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_acos(simd_double3 x);
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_acos(simd_double4 x);
+/*! @abstract Do not call this function; instead use `acos` in C and
+ * Objective-C, and `simd::acos` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_acos(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_asin(simd_float2 x);
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_asin(simd_float3 x);
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_asin(simd_float4 x);
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_asin(simd_float8 x);
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_asin(simd_float16 x);
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_asin(simd_double2 x);
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_asin(simd_double3 x);
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_asin(simd_double4 x);
+/*! @abstract Do not call this function; instead use `asin` in C and
+ * Objective-C, and `simd::asin` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_asin(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_atan(simd_float2 x);
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_atan(simd_float3 x);
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_atan(simd_float4 x);
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_atan(simd_float8 x);
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_atan(simd_float16 x);
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_atan(simd_double2 x);
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_atan(simd_double3 x);
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_atan(simd_double4 x);
+/*! @abstract Do not call this function; instead use `atan` in C and
+ * Objective-C, and `simd::atan` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_atan(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_cos(simd_float2 x);
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_cos(simd_float3 x);
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_cos(simd_float4 x);
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_cos(simd_float8 x);
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_cos(simd_float16 x);
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_cos(simd_double2 x);
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_cos(simd_double3 x);
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_cos(simd_double4 x);
+/*! @abstract Do not call this function; instead use `cos` in C and
+ * Objective-C, and `simd::cos` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_cos(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_sin(simd_float2 x);
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_sin(simd_float3 x);
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_sin(simd_float4 x);
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_sin(simd_float8 x);
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_sin(simd_float16 x);
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_sin(simd_double2 x);
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_sin(simd_double3 x);
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_sin(simd_double4 x);
+/*! @abstract Do not call this function; instead use `sin` in C and
+ * Objective-C, and `simd::sin` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_sin(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_tan(simd_float2 x);
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_tan(simd_float3 x);
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_tan(simd_float4 x);
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_tan(simd_float8 x);
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_tan(simd_float16 x);
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_tan(simd_double2 x);
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_tan(simd_double3 x);
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_tan(simd_double4 x);
+/*! @abstract Do not call this function; instead use `tan` in C and
+ * Objective-C, and `simd::tan` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_tan(simd_double8 x);
+
+#if SIMD_LIBRARY_VERSION >= 1
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_cospi(simd_float2 x);
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_cospi(simd_float3 x);
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_cospi(simd_float4 x);
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_cospi(simd_float8 x);
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_cospi(simd_float16 x);
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_cospi(simd_double2 x);
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_cospi(simd_double3 x);
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_cospi(simd_double4 x);
+/*! @abstract Do not call this function; instead use `cospi` in C and
+ * Objective-C, and `simd::cospi` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_cospi(simd_double8 x);
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 1
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_sinpi(simd_float2 x);
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_sinpi(simd_float3 x);
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_sinpi(simd_float4 x);
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_sinpi(simd_float8 x);
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_sinpi(simd_float16 x);
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_sinpi(simd_double2 x);
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_sinpi(simd_double3 x);
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_sinpi(simd_double4 x);
+/*! @abstract Do not call this function; instead use `sinpi` in C and
+ * Objective-C, and `simd::sinpi` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_sinpi(simd_double8 x);
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 1
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_tanpi(simd_float2 x);
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_tanpi(simd_float3 x);
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_tanpi(simd_float4 x);
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_tanpi(simd_float8 x);
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_tanpi(simd_float16 x);
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_tanpi(simd_double2 x);
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_tanpi(simd_double3 x);
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_tanpi(simd_double4 x);
+/*! @abstract Do not call this function; instead use `tanpi` in C and
+ * Objective-C, and `simd::tanpi` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_tanpi(simd_double8 x);
+#endif
+
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_acosh(simd_float2 x);
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_acosh(simd_float3 x);
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_acosh(simd_float4 x);
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_acosh(simd_float8 x);
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_acosh(simd_float16 x);
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_acosh(simd_double2 x);
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_acosh(simd_double3 x);
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_acosh(simd_double4 x);
+/*! @abstract Do not call this function; instead use `acosh` in C and
+ * Objective-C, and `simd::acosh` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_acosh(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_asinh(simd_float2 x);
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_asinh(simd_float3 x);
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_asinh(simd_float4 x);
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_asinh(simd_float8 x);
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_asinh(simd_float16 x);
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_asinh(simd_double2 x);
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_asinh(simd_double3 x);
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_asinh(simd_double4 x);
+/*! @abstract Do not call this function; instead use `asinh` in C and
+ * Objective-C, and `simd::asinh` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_asinh(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_atanh(simd_float2 x);
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_atanh(simd_float3 x);
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_atanh(simd_float4 x);
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_atanh(simd_float8 x);
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_atanh(simd_float16 x);
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_atanh(simd_double2 x);
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_atanh(simd_double3 x);
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_atanh(simd_double4 x);
+/*! @abstract Do not call this function; instead use `atanh` in C and
+ * Objective-C, and `simd::atanh` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_atanh(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_cosh(simd_float2 x);
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_cosh(simd_float3 x);
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_cosh(simd_float4 x);
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_cosh(simd_float8 x);
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_cosh(simd_float16 x);
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_cosh(simd_double2 x);
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_cosh(simd_double3 x);
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_cosh(simd_double4 x);
+/*! @abstract Do not call this function; instead use `cosh` in C and
+ * Objective-C, and `simd::cosh` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_cosh(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_sinh(simd_float2 x);
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_sinh(simd_float3 x);
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_sinh(simd_float4 x);
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_sinh(simd_float8 x);
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_sinh(simd_float16 x);
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_sinh(simd_double2 x);
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_sinh(simd_double3 x);
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_sinh(simd_double4 x);
+/*! @abstract Do not call this function; instead use `sinh` in C and
+ * Objective-C, and `simd::sinh` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_sinh(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_tanh(simd_float2 x);
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_tanh(simd_float3 x);
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_tanh(simd_float4 x);
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_tanh(simd_float8 x);
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_tanh(simd_float16 x);
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_tanh(simd_double2 x);
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_tanh(simd_double3 x);
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_tanh(simd_double4 x);
+/*! @abstract Do not call this function; instead use `tanh` in C and
+ * Objective-C, and `simd::tanh` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_tanh(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_exp(simd_float2 x);
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_exp(simd_float3 x);
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_exp(simd_float4 x);
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_exp(simd_float8 x);
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_exp(simd_float16 x);
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_exp(simd_double2 x);
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_exp(simd_double3 x);
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_exp(simd_double4 x);
+/*! @abstract Do not call this function; instead use `exp` in C and
+ * Objective-C, and `simd::exp` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_exp(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_exp2(simd_float2 x);
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_exp2(simd_float3 x);
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_exp2(simd_float4 x);
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_exp2(simd_float8 x);
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_exp2(simd_float16 x);
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_exp2(simd_double2 x);
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_exp2(simd_double3 x);
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_exp2(simd_double4 x);
+/*! @abstract Do not call this function; instead use `exp2` in C and
+ * Objective-C, and `simd::exp2` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_exp2(simd_double8 x);
+
+#if SIMD_LIBRARY_VERSION >= 1
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_exp10(simd_float2 x);
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_exp10(simd_float3 x);
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_exp10(simd_float4 x);
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_exp10(simd_float8 x);
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_exp10(simd_float16 x);
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_exp10(simd_double2 x);
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_exp10(simd_double3 x);
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_exp10(simd_double4 x);
+/*! @abstract Do not call this function; instead use `exp10` in C and
+ * Objective-C, and `simd::exp10` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_exp10(simd_double8 x);
+#endif
+
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_expm1(simd_float2 x);
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_expm1(simd_float3 x);
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_expm1(simd_float4 x);
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_expm1(simd_float8 x);
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_expm1(simd_float16 x);
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_expm1(simd_double2 x);
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_expm1(simd_double3 x);
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_expm1(simd_double4 x);
+/*! @abstract Do not call this function; instead use `expm1` in C and
+ * Objective-C, and `simd::expm1` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_expm1(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_log(simd_float2 x);
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_log(simd_float3 x);
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_log(simd_float4 x);
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_log(simd_float8 x);
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_log(simd_float16 x);
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_log(simd_double2 x);
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_log(simd_double3 x);
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_log(simd_double4 x);
+/*! @abstract Do not call this function; instead use `log` in C and
+ * Objective-C, and `simd::log` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_log(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_log2(simd_float2 x);
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_log2(simd_float3 x);
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_log2(simd_float4 x);
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_log2(simd_float8 x);
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_log2(simd_float16 x);
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_log2(simd_double2 x);
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_log2(simd_double3 x);
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_log2(simd_double4 x);
+/*! @abstract Do not call this function; instead use `log2` in C and
+ * Objective-C, and `simd::log2` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_log2(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_log10(simd_float2 x);
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_log10(simd_float3 x);
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_log10(simd_float4 x);
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_log10(simd_float8 x);
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_log10(simd_float16 x);
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_log10(simd_double2 x);
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_log10(simd_double3 x);
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_log10(simd_double4 x);
+/*! @abstract Do not call this function; instead use `log10` in C and
+ * Objective-C, and `simd::log10` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_log10(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_log1p(simd_float2 x);
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_log1p(simd_float3 x);
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_log1p(simd_float4 x);
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_log1p(simd_float8 x);
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_log1p(simd_float16 x);
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_log1p(simd_double2 x);
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_log1p(simd_double3 x);
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_log1p(simd_double4 x);
+/*! @abstract Do not call this function; instead use `log1p` in C and
+ * Objective-C, and `simd::log1p` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_log1p(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_fabs(simd_float2 x);
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_fabs(simd_float3 x);
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_fabs(simd_float4 x);
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_fabs(simd_float8 x);
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_fabs(simd_float16 x);
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_fabs(simd_double2 x);
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_fabs(simd_double3 x);
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_fabs(simd_double4 x);
+/*! @abstract Do not call this function; instead use `fabs` in C and
+ * Objective-C, and `simd::fabs` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_fabs(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_cbrt(simd_float2 x);
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_cbrt(simd_float3 x);
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_cbrt(simd_float4 x);
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_cbrt(simd_float8 x);
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_cbrt(simd_float16 x);
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_cbrt(simd_double2 x);
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_cbrt(simd_double3 x);
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_cbrt(simd_double4 x);
+/*! @abstract Do not call this function; instead use `cbrt` in C and
+ * Objective-C, and `simd::cbrt` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_cbrt(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_sqrt(simd_float2 x);
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_sqrt(simd_float3 x);
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_sqrt(simd_float4 x);
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_sqrt(simd_float8 x);
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_sqrt(simd_float16 x);
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_sqrt(simd_double2 x);
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_sqrt(simd_double3 x);
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_sqrt(simd_double4 x);
+/*! @abstract Do not call this function; instead use `sqrt` in C and
+ * Objective-C, and `simd::sqrt` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_sqrt(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_erf(simd_float2 x);
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_erf(simd_float3 x);
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_erf(simd_float4 x);
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_erf(simd_float8 x);
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_erf(simd_float16 x);
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_erf(simd_double2 x);
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_erf(simd_double3 x);
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_erf(simd_double4 x);
+/*! @abstract Do not call this function; instead use `erf` in C and
+ * Objective-C, and `simd::erf` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_erf(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_erfc(simd_float2 x);
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_erfc(simd_float3 x);
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_erfc(simd_float4 x);
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_erfc(simd_float8 x);
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_erfc(simd_float16 x);
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_erfc(simd_double2 x);
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_erfc(simd_double3 x);
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_erfc(simd_double4 x);
+/*! @abstract Do not call this function; instead use `erfc` in C and
+ * Objective-C, and `simd::erfc` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_erfc(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_tgamma(simd_float2 x);
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_tgamma(simd_float3 x);
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_tgamma(simd_float4 x);
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_tgamma(simd_float8 x);
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_tgamma(simd_float16 x);
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_tgamma(simd_double2 x);
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_tgamma(simd_double3 x);
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_tgamma(simd_double4 x);
+/*! @abstract Do not call this function; instead use `tgamma` in C and
+ * Objective-C, and `simd::tgamma` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_tgamma(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_ceil(simd_float2 x);
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_ceil(simd_float3 x);
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_ceil(simd_float4 x);
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_ceil(simd_float8 x);
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_ceil(simd_float16 x);
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_ceil(simd_double2 x);
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_ceil(simd_double3 x);
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_ceil(simd_double4 x);
+/*! @abstract Do not call this function; instead use `ceil` in C and
+ * Objective-C, and `simd::ceil` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_ceil(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_floor(simd_float2 x);
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_floor(simd_float3 x);
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_floor(simd_float4 x);
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_floor(simd_float8 x);
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_floor(simd_float16 x);
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_floor(simd_double2 x);
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_floor(simd_double3 x);
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_floor(simd_double4 x);
+/*! @abstract Do not call this function; instead use `floor` in C and
+ * Objective-C, and `simd::floor` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_floor(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_rint(simd_float2 x);
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_rint(simd_float3 x);
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_rint(simd_float4 x);
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_rint(simd_float8 x);
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_rint(simd_float16 x);
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_rint(simd_double2 x);
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_rint(simd_double3 x);
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_rint(simd_double4 x);
+/*! @abstract Do not call this function; instead use `rint` in C and
+ * Objective-C, and `simd::rint` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_rint(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_round(simd_float2 x);
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_round(simd_float3 x);
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_round(simd_float4 x);
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_round(simd_float8 x);
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_round(simd_float16 x);
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_round(simd_double2 x);
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_round(simd_double3 x);
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_round(simd_double4 x);
+/*! @abstract Do not call this function; instead use `round` in C and
+ * Objective-C, and `simd::round` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_round(simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_trunc(simd_float2 x);
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_trunc(simd_float3 x);
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_trunc(simd_float4 x);
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_trunc(simd_float8 x);
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_trunc(simd_float16 x);
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_trunc(simd_double2 x);
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_trunc(simd_double3 x);
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_trunc(simd_double4 x);
+/*! @abstract Do not call this function; instead use `trunc` in C and
+ * Objective-C, and `simd::trunc` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_trunc(simd_double8 x);
+
+
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_atan2(simd_float2 y, simd_float2 x);
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_atan2(simd_float3 y, simd_float3 x);
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_atan2(simd_float4 y, simd_float4 x);
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_atan2(simd_float8 y, simd_float8 x);
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_atan2(simd_float16 y, simd_float16 x);
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_atan2(simd_double2 y, simd_double2 x);
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_atan2(simd_double3 y, simd_double3 x);
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_atan2(simd_double4 y, simd_double4 x);
+/*! @abstract Do not call this function; instead use `atan2` in C and
+ * Objective-C, and `simd::atan2` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_atan2(simd_double8 y, simd_double8 x);
+
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_hypot(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_hypot(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_hypot(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_hypot(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_hypot(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_hypot(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_hypot(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_hypot(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `hypot` in C and
+ * Objective-C, and `simd::hypot` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_hypot(simd_double8 x, simd_double8 y);
+
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_pow(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_pow(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_pow(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_pow(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_pow(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_pow(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_pow(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_pow(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `pow` in C and
+ * Objective-C, and `simd::pow` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_pow(simd_double8 x, simd_double8 y);
+
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_fmod(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_fmod(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_fmod(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_fmod(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_fmod(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_fmod(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_fmod(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_fmod(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `fmod` in C and
+ * Objective-C, and `simd::fmod` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_fmod(simd_double8 x, simd_double8 y);
+
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_remainder(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_remainder(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_remainder(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_remainder(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_remainder(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_remainder(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_remainder(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_remainder(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `remainder` in C and
+ * Objective-C, and `simd::remainder` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_remainder(simd_double8 x, simd_double8 y);
+
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_copysign(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_copysign(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_copysign(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_copysign(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_copysign(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_copysign(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_copysign(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_copysign(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `copysign` in C and
+ * Objective-C, and `simd::copysign` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_copysign(simd_double8 x, simd_double8 y);
+
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_nextafter(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_nextafter(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_nextafter(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_nextafter(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_nextafter(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_nextafter(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_nextafter(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_nextafter(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `nextafter` in C and
+ * Objective-C, and `simd::nextafter` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_nextafter(simd_double8 x, simd_double8 y);
+
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_fdim(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_fdim(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_fdim(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_fdim(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_fdim(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_fdim(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_fdim(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_fdim(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `fdim` in C and
+ * Objective-C, and `simd::fdim` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_fdim(simd_double8 x, simd_double8 y);
+
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_fmax(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_fmax(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_fmax(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_fmax(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_fmax(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_fmax(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_fmax(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_fmax(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `fmax` in C and
+ * Objective-C, and `simd::fmax` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_fmax(simd_double8 x, simd_double8 y);
+
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_fmin(simd_float2 x, simd_float2 y);
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_fmin(simd_float3 x, simd_float3 y);
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_fmin(simd_float4 x, simd_float4 y);
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_fmin(simd_float8 x, simd_float8 y);
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_fmin(simd_float16 x, simd_float16 y);
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_fmin(simd_double2 x, simd_double2 y);
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_fmin(simd_double3 x, simd_double3 y);
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_fmin(simd_double4 x, simd_double4 y);
+/*! @abstract Do not call this function; instead use `fmin` in C and
+ * Objective-C, and `simd::fmin` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_fmin(simd_double8 x, simd_double8 y);
+
+
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_float2 __tg_fma(simd_float2 x, simd_float2 y, simd_float2 z);
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_float3 __tg_fma(simd_float3 x, simd_float3 y, simd_float3 z);
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_float4 __tg_fma(simd_float4 x, simd_float4 y, simd_float4 z);
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_float8 __tg_fma(simd_float8 x, simd_float8 y, simd_float8 z);
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_float16 __tg_fma(simd_float16 x, simd_float16 y, simd_float16 z);
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_double2 __tg_fma(simd_double2 x, simd_double2 y, simd_double2 z);
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_double3 __tg_fma(simd_double3 x, simd_double3 y, simd_double3 z);
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_double4 __tg_fma(simd_double4 x, simd_double4 y, simd_double4 z);
+/*! @abstract Do not call this function; instead use `fma` in C and Objective-C,
+ * and `simd::fma` in C++. */
+static inline SIMD_CFUNC simd_double8 __tg_fma(simd_double8 x, simd_double8 y, simd_double8 z);
+
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC float simd_muladd(float x, float y, float z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_float2 simd_muladd(simd_float2 x, simd_float2 y, simd_float2 z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_float3 simd_muladd(simd_float3 x, simd_float3 y, simd_float3 z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_float4 simd_muladd(simd_float4 x, simd_float4 y, simd_float4 z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_float8 simd_muladd(simd_float8 x, simd_float8 y, simd_float8 z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_float16 simd_muladd(simd_float16 x, simd_float16 y, simd_float16 z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC double simd_muladd(double x, double y, double z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_double2 simd_muladd(simd_double2 x, simd_double2 y, simd_double2 z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_double3 simd_muladd(simd_double3 x, simd_double3 y, simd_double3 z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_double4 simd_muladd(simd_double4 x, simd_double4 y, simd_double4 z);
+/*! @abstract Computes accum + x*y by the most efficient means available;
+ * either a fused multiply add or separate multiply and add instructions. */
+static inline SIMD_CFUNC simd_double8 simd_muladd(simd_double8 x, simd_double8 y, simd_double8 z);
+
+#ifdef __cplusplus
+} /* extern "C" */
+
+#include <cmath>
+/*! @abstract Do not call this function directly; use simd::acos instead. */
+static SIMD_CPPFUNC float __tg_acos(float x) { return ::acos(x); }
+/*! @abstract Do not call this function directly; use simd::acos instead. */
+static SIMD_CPPFUNC double __tg_acos(double x) { return ::acos(x); }
+/*! @abstract Do not call this function directly; use simd::asin instead. */
+static SIMD_CPPFUNC float __tg_asin(float x) { return ::asin(x); }
+/*! @abstract Do not call this function directly; use simd::asin instead. */
+static SIMD_CPPFUNC double __tg_asin(double x) { return ::asin(x); }
+/*! @abstract Do not call this function directly; use simd::atan instead. */
+static SIMD_CPPFUNC float __tg_atan(float x) { return ::atan(x); }
+/*! @abstract Do not call this function directly; use simd::atan instead. */
+static SIMD_CPPFUNC double __tg_atan(double x) { return ::atan(x); }
+/*! @abstract Do not call this function directly; use simd::cos instead. */
+static SIMD_CPPFUNC float __tg_cos(float x) { return ::cos(x); }
+/*! @abstract Do not call this function directly; use simd::cos instead. */
+static SIMD_CPPFUNC double __tg_cos(double x) { return ::cos(x); }
+/*! @abstract Do not call this function directly; use simd::sin instead. */
+static SIMD_CPPFUNC float __tg_sin(float x) { return ::sin(x); }
+/*! @abstract Do not call this function directly; use simd::sin instead. */
+static SIMD_CPPFUNC double __tg_sin(double x) { return ::sin(x); }
+/*! @abstract Do not call this function directly; use simd::tan instead. */
+static SIMD_CPPFUNC float __tg_tan(float x) { return ::tan(x); }
+/*! @abstract Do not call this function directly; use simd::tan instead. */
+static SIMD_CPPFUNC double __tg_tan(double x) { return ::tan(x); }
+/*! @abstract Do not call this function directly; use simd::cospi instead. */
+static SIMD_CPPFUNC float __tg_cospi(float x) { return ::__cospi(x); }
+/*! @abstract Do not call this function directly; use simd::cospi instead. */
+static SIMD_CPPFUNC double __tg_cospi(double x) { return ::__cospi(x); }
+/*! @abstract Do not call this function directly; use simd::sinpi instead. */
+static SIMD_CPPFUNC float __tg_sinpi(float x) { return ::__sinpi(x); }
+/*! @abstract Do not call this function directly; use simd::sinpi instead. */
+static SIMD_CPPFUNC double __tg_sinpi(double x) { return ::__sinpi(x); }
+/*! @abstract Do not call this function directly; use simd::tanpi instead. */
+static SIMD_CPPFUNC float __tg_tanpi(float x) { return ::__tanpi(x); }
+/*! @abstract Do not call this function directly; use simd::tanpi instead. */
+static SIMD_CPPFUNC double __tg_tanpi(double x) { return ::__tanpi(x); }
+/*! @abstract Do not call this function directly; use simd::acosh instead. */
+static SIMD_CPPFUNC float __tg_acosh(float x) { return ::acosh(x); }
+/*! @abstract Do not call this function directly; use simd::acosh instead. */
+static SIMD_CPPFUNC double __tg_acosh(double x) { return ::acosh(x); }
+/*! @abstract Do not call this function directly; use simd::asinh instead. */
+static SIMD_CPPFUNC float __tg_asinh(float x) { return ::asinh(x); }
+/*! @abstract Do not call this function directly; use simd::asinh instead. */
+static SIMD_CPPFUNC double __tg_asinh(double x) { return ::asinh(x); }
+/*! @abstract Do not call this function directly; use simd::atanh instead. */
+static SIMD_CPPFUNC float __tg_atanh(float x) { return ::atanh(x); }
+/*! @abstract Do not call this function directly; use simd::atanh instead. */
+static SIMD_CPPFUNC double __tg_atanh(double x) { return ::atanh(x); }
+/*! @abstract Do not call this function directly; use simd::cosh instead. */
+static SIMD_CPPFUNC float __tg_cosh(float x) { return ::cosh(x); }
+/*! @abstract Do not call this function directly; use simd::cosh instead. */
+static SIMD_CPPFUNC double __tg_cosh(double x) { return ::cosh(x); }
+/*! @abstract Do not call this function directly; use simd::sinh instead. */
+static SIMD_CPPFUNC float __tg_sinh(float x) { return ::sinh(x); }
+/*! @abstract Do not call this function directly; use simd::sinh instead. */
+static SIMD_CPPFUNC double __tg_sinh(double x) { return ::sinh(x); }
+/*! @abstract Do not call this function directly; use simd::tanh instead. */
+static SIMD_CPPFUNC float __tg_tanh(float x) { return ::tanh(x); }
+/*! @abstract Do not call this function directly; use simd::tanh instead. */
+static SIMD_CPPFUNC double __tg_tanh(double x) { return ::tanh(x); }
+/*! @abstract Do not call this function directly; use simd::exp instead. */
+static SIMD_CPPFUNC float __tg_exp(float x) { return ::exp(x); }
+/*! @abstract Do not call this function directly; use simd::exp instead. */
+static SIMD_CPPFUNC double __tg_exp(double x) { return ::exp(x); }
+/*! @abstract Do not call this function directly; use simd::exp2 instead. */
+static SIMD_CPPFUNC float __tg_exp2(float x) { return ::exp2(x); }
+/*! @abstract Do not call this function directly; use simd::exp2 instead. */
+static SIMD_CPPFUNC double __tg_exp2(double x) { return ::exp2(x); }
+/*! @abstract Do not call this function directly; use simd::exp10 instead. */
+static SIMD_CPPFUNC float __tg_exp10(float x) { return ::__exp10(x); }
+/*! @abstract Do not call this function directly; use simd::exp10 instead. */
+static SIMD_CPPFUNC double __tg_exp10(double x) { return ::__exp10(x); }
+/*! @abstract Do not call this function directly; use simd::expm1 instead. */
+static SIMD_CPPFUNC float __tg_expm1(float x) { return ::expm1(x); }
+/*! @abstract Do not call this function directly; use simd::expm1 instead. */
+static SIMD_CPPFUNC double __tg_expm1(double x) { return ::expm1(x); }
+/*! @abstract Do not call this function directly; use simd::log instead. */
+static SIMD_CPPFUNC float __tg_log(float x) { return ::log(x); }
+/*! @abstract Do not call this function directly; use simd::log instead. */
+static SIMD_CPPFUNC double __tg_log(double x) { return ::log(x); }
+/*! @abstract Do not call this function directly; use simd::log2 instead. */
+static SIMD_CPPFUNC float __tg_log2(float x) { return ::log2(x); }
+/*! @abstract Do not call this function directly; use simd::log2 instead. */
+static SIMD_CPPFUNC double __tg_log2(double x) { return ::log2(x); }
+/*! @abstract Do not call this function directly; use simd::log10 instead. */
+static SIMD_CPPFUNC float __tg_log10(float x) { return ::log10(x); }
+/*! @abstract Do not call this function directly; use simd::log10 instead. */
+static SIMD_CPPFUNC double __tg_log10(double x) { return ::log10(x); }
+/*! @abstract Do not call this function directly; use simd::log1p instead. */
+static SIMD_CPPFUNC float __tg_log1p(float x) { return ::log1p(x); }
+/*! @abstract Do not call this function directly; use simd::log1p instead. */
+static SIMD_CPPFUNC double __tg_log1p(double x) { return ::log1p(x); }
+/*! @abstract Do not call this function directly; use simd::fabs instead. */
+static SIMD_CPPFUNC float __tg_fabs(float x) { return ::fabs(x); }
+/*! @abstract Do not call this function directly; use simd::fabs instead. */
+static SIMD_CPPFUNC double __tg_fabs(double x) { return ::fabs(x); }
+/*! @abstract Do not call this function directly; use simd::cbrt instead. */
+static SIMD_CPPFUNC float __tg_cbrt(float x) { return ::cbrt(x); }
+/*! @abstract Do not call this function directly; use simd::cbrt instead. */
+static SIMD_CPPFUNC double __tg_cbrt(double x) { return ::cbrt(x); }
+/*! @abstract Do not call this function directly; use simd::sqrt instead. */
+static SIMD_CPPFUNC float __tg_sqrt(float x) { return ::sqrt(x); }
+/*! @abstract Do not call this function directly; use simd::sqrt instead. */
+static SIMD_CPPFUNC double __tg_sqrt(double x) { return ::sqrt(x); }
+/*! @abstract Do not call this function directly; use simd::erf instead. */
+static SIMD_CPPFUNC float __tg_erf(float x) { return ::erf(x); }
+/*! @abstract Do not call this function directly; use simd::erf instead. */
+static SIMD_CPPFUNC double __tg_erf(double x) { return ::erf(x); }
+/*! @abstract Do not call this function directly; use simd::erfc instead. */
+static SIMD_CPPFUNC float __tg_erfc(float x) { return ::erfc(x); }
+/*! @abstract Do not call this function directly; use simd::erfc instead. */
+static SIMD_CPPFUNC double __tg_erfc(double x) { return ::erfc(x); }
+/*! @abstract Do not call this function directly; use simd::tgamma instead. */
+static SIMD_CPPFUNC float __tg_tgamma(float x) { return ::tgamma(x); }
+/*! @abstract Do not call this function directly; use simd::tgamma instead. */
+static SIMD_CPPFUNC double __tg_tgamma(double x) { return ::tgamma(x); }
+/*! @abstract Do not call this function directly; use simd::ceil instead. */
+static SIMD_CPPFUNC float __tg_ceil(float x) { return ::ceil(x); }
+/*! @abstract Do not call this function directly; use simd::ceil instead. */
+static SIMD_CPPFUNC double __tg_ceil(double x) { return ::ceil(x); }
+/*! @abstract Do not call this function directly; use simd::floor instead. */
+static SIMD_CPPFUNC float __tg_floor(float x) { return ::floor(x); }
+/*! @abstract Do not call this function directly; use simd::floor instead. */
+static SIMD_CPPFUNC double __tg_floor(double x) { return ::floor(x); }
+/*! @abstract Do not call this function directly; use simd::rint instead. */
+static SIMD_CPPFUNC float __tg_rint(float x) { return ::rint(x); }
+/*! @abstract Do not call this function directly; use simd::rint instead. */
+static SIMD_CPPFUNC double __tg_rint(double x) { return ::rint(x); }
+/*! @abstract Do not call this function directly; use simd::round instead. */
+static SIMD_CPPFUNC float __tg_round(float x) { return ::round(x); }
+/*! @abstract Do not call this function directly; use simd::round instead. */
+static SIMD_CPPFUNC double __tg_round(double x) { return ::round(x); }
+/*! @abstract Do not call this function directly; use simd::trunc instead. */
+static SIMD_CPPFUNC float __tg_trunc(float x) { return ::trunc(x); }
+/*! @abstract Do not call this function directly; use simd::trunc instead. */
+static SIMD_CPPFUNC double __tg_trunc(double x) { return ::trunc(x); }
+/*! @abstract Do not call this function directly; use simd::atan2 instead. */
+static SIMD_CPPFUNC float __tg_atan2(float x, float y) { return ::atan2(x, y); }
+/*! @abstract Do not call this function directly; use simd::atan2 instead. */
+static SIMD_CPPFUNC double __tg_atan2(double x, float y) { return ::atan2(x, y); }
+/*! @abstract Do not call this function directly; use simd::hypot instead. */
+static SIMD_CPPFUNC float __tg_hypot(float x, float y) { return ::hypot(x, y); }
+/*! @abstract Do not call this function directly; use simd::hypot instead. */
+static SIMD_CPPFUNC double __tg_hypot(double x, float y) { return ::hypot(x, y); }
+/*! @abstract Do not call this function directly; use simd::pow instead. */
+static SIMD_CPPFUNC float __tg_pow(float x, float y) { return ::pow(x, y); }
+/*! @abstract Do not call this function directly; use simd::pow instead. */
+static SIMD_CPPFUNC double __tg_pow(double x, float y) { return ::pow(x, y); }
+/*! @abstract Do not call this function directly; use simd::fmod instead. */
+static SIMD_CPPFUNC float __tg_fmod(float x, float y) { return ::fmod(x, y); }
+/*! @abstract Do not call this function directly; use simd::fmod instead. */
+static SIMD_CPPFUNC double __tg_fmod(double x, float y) { return ::fmod(x, y); }
+/*! @abstract Do not call this function directly; use simd::remainder
+ * instead. */
+static SIMD_CPPFUNC float __tg_remainder(float x, float y) { return ::remainder(x, y); }
+/*! @abstract Do not call this function directly; use simd::remainder
+ * instead. */
+static SIMD_CPPFUNC double __tg_remainder(double x, float y) { return ::remainder(x, y); }
+/*! @abstract Do not call this function directly; use simd::copysign
+ * instead. */
+static SIMD_CPPFUNC float __tg_copysign(float x, float y) { return ::copysign(x, y); }
+/*! @abstract Do not call this function directly; use simd::copysign
+ * instead. */
+static SIMD_CPPFUNC double __tg_copysign(double x, float y) { return ::copysign(x, y); }
+/*! @abstract Do not call this function directly; use simd::nextafter
+ * instead. */
+static SIMD_CPPFUNC float __tg_nextafter(float x, float y) { return ::nextafter(x, y); }
+/*! @abstract Do not call this function directly; use simd::nextafter
+ * instead. */
+static SIMD_CPPFUNC double __tg_nextafter(double x, float y) { return ::nextafter(x, y); }
+/*! @abstract Do not call this function directly; use simd::fdim instead. */
+static SIMD_CPPFUNC float __tg_fdim(float x, float y) { return ::fdim(x, y); }
+/*! @abstract Do not call this function directly; use simd::fdim instead. */
+static SIMD_CPPFUNC double __tg_fdim(double x, float y) { return ::fdim(x, y); }
+/*! @abstract Do not call this function directly; use simd::fmax instead. */
+static SIMD_CPPFUNC float __tg_fmax(float x, float y) { return ::fmax(x, y); }
+/*! @abstract Do not call this function directly; use simd::fmax instead. */
+static SIMD_CPPFUNC double __tg_fmax(double x, float y) { return ::fmax(x, y); }
+/*! @abstract Do not call this function directly; use simd::fmin instead. */
+static SIMD_CPPFUNC float __tg_fmin(float x, float y) { return ::fmin(x, y); }
+/*! @abstract Do not call this function directly; use simd::fmin instead. */
+static SIMD_CPPFUNC double __tg_fmin(double x, float y) { return ::fmin(x, y); }
+/*! @abstract Do not call this function directly; use simd::fma instead. */
+static SIMD_CPPFUNC float __tg_fma(float x, float y, float z) { return ::fma(x, y, z); }
+/*! @abstract Do not call this function directly; use simd::fma instead. */
+static SIMD_CPPFUNC double __tg_fma(double x, double y, double z) { return ::fma(x, y, z); }
+
+namespace simd {
+/*! @abstract Generalizes the <cmath> function acos to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN acos(fptypeN x) { return ::__tg_acos(x); }
+
+/*! @abstract Generalizes the <cmath> function asin to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN asin(fptypeN x) { return ::__tg_asin(x); }
+
+/*! @abstract Generalizes the <cmath> function atan to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN atan(fptypeN x) { return ::__tg_atan(x); }
+
+/*! @abstract Generalizes the <cmath> function cos to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN cos(fptypeN x) { return ::__tg_cos(x); }
+
+/*! @abstract Generalizes the <cmath> function sin to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN sin(fptypeN x) { return ::__tg_sin(x); }
+
+/*! @abstract Generalizes the <cmath> function tan to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN tan(fptypeN x) { return ::__tg_tan(x); }
+
+#if SIMD_LIBRARY_VERSION >= 1
+/*! @abstract Generalizes the <cmath> function cospi to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN cospi(fptypeN x) { return ::__tg_cospi(x); }
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 1
+/*! @abstract Generalizes the <cmath> function sinpi to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN sinpi(fptypeN x) { return ::__tg_sinpi(x); }
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 1
+/*! @abstract Generalizes the <cmath> function tanpi to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN tanpi(fptypeN x) { return ::__tg_tanpi(x); }
+#endif
+
+/*! @abstract Generalizes the <cmath> function acosh to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN acosh(fptypeN x) { return ::__tg_acosh(x); }
+
+/*! @abstract Generalizes the <cmath> function asinh to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN asinh(fptypeN x) { return ::__tg_asinh(x); }
+
+/*! @abstract Generalizes the <cmath> function atanh to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN atanh(fptypeN x) { return ::__tg_atanh(x); }
+
+/*! @abstract Generalizes the <cmath> function cosh to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN cosh(fptypeN x) { return ::__tg_cosh(x); }
+
+/*! @abstract Generalizes the <cmath> function sinh to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN sinh(fptypeN x) { return ::__tg_sinh(x); }
+
+/*! @abstract Generalizes the <cmath> function tanh to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN tanh(fptypeN x) { return ::__tg_tanh(x); }
+
+/*! @abstract Generalizes the <cmath> function exp to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN exp(fptypeN x) { return ::__tg_exp(x); }
+
+/*! @abstract Generalizes the <cmath> function exp2 to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN exp2(fptypeN x) { return ::__tg_exp2(x); }
+
+#if SIMD_LIBRARY_VERSION >= 1
+/*! @abstract Generalizes the <cmath> function exp10 to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN exp10(fptypeN x) { return ::__tg_exp10(x); }
+#endif
+
+/*! @abstract Generalizes the <cmath> function expm1 to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN expm1(fptypeN x) { return ::__tg_expm1(x); }
+
+/*! @abstract Generalizes the <cmath> function log to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN log(fptypeN x) { return ::__tg_log(x); }
+
+/*! @abstract Generalizes the <cmath> function log2 to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN log2(fptypeN x) { return ::__tg_log2(x); }
+
+/*! @abstract Generalizes the <cmath> function log10 to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN log10(fptypeN x) { return ::__tg_log10(x); }
+
+/*! @abstract Generalizes the <cmath> function log1p to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN log1p(fptypeN x) { return ::__tg_log1p(x); }
+
+/*! @abstract Generalizes the <cmath> function fabs to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN fabs(fptypeN x) { return ::__tg_fabs(x); }
+
+/*! @abstract Generalizes the <cmath> function cbrt to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN cbrt(fptypeN x) { return ::__tg_cbrt(x); }
+
+/*! @abstract Generalizes the <cmath> function sqrt to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN sqrt(fptypeN x) { return ::__tg_sqrt(x); }
+
+/*! @abstract Generalizes the <cmath> function erf to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN erf(fptypeN x) { return ::__tg_erf(x); }
+
+/*! @abstract Generalizes the <cmath> function erfc to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN erfc(fptypeN x) { return ::__tg_erfc(x); }
+
+/*! @abstract Generalizes the <cmath> function tgamma to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN tgamma(fptypeN x) { return ::__tg_tgamma(x); }
+
+/*! @abstract Generalizes the <cmath> function ceil to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN ceil(fptypeN x) { return ::__tg_ceil(x); }
+
+/*! @abstract Generalizes the <cmath> function floor to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN floor(fptypeN x) { return ::__tg_floor(x); }
+
+/*! @abstract Generalizes the <cmath> function rint to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN rint(fptypeN x) { return ::__tg_rint(x); }
+
+/*! @abstract Generalizes the <cmath> function round to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN round(fptypeN x) { return ::__tg_round(x); }
+
+/*! @abstract Generalizes the <cmath> function trunc to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN trunc(fptypeN x) { return ::__tg_trunc(x); }
+
+/*! @abstract Generalizes the <cmath> function atan2 to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN atan2(fptypeN y, fptypeN x) { return ::__tg_atan2(y, x); }
+
+/*! @abstract Generalizes the <cmath> function hypot to operate on vectors
+ * of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN hypot(fptypeN x, fptypeN y) { return ::__tg_hypot(x, y); }
+
+/*! @abstract Generalizes the <cmath> function pow to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN pow(fptypeN x, fptypeN y) { return ::__tg_pow(x, y); }
+
+/*! @abstract Generalizes the <cmath> function fmod to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN fmod(fptypeN x, fptypeN y) { return ::__tg_fmod(x, y); }
+
+/*! @abstract Generalizes the <cmath> function remainder to operate on
+ * vectors of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN remainder(fptypeN x, fptypeN y) { return ::__tg_remainder(x, y); }
+
+/*! @abstract Generalizes the <cmath> function copysign to operate on
+ * vectors of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN copysign(fptypeN x, fptypeN y) { return ::__tg_copysign(x, y); }
+
+/*! @abstract Generalizes the <cmath> function nextafter to operate on
+ * vectors of floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN nextafter(fptypeN x, fptypeN y) { return ::__tg_nextafter(x, y); }
+
+/*! @abstract Generalizes the <cmath> function fdim to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN fdim(fptypeN x, fptypeN y) { return ::__tg_fdim(x, y); }
+
+/*! @abstract Generalizes the <cmath> function fmax to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN fmax(fptypeN x, fptypeN y) { return ::__tg_fmax(x, y); }
+
+/*! @abstract Generalizes the <cmath> function fmin to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN fmin(fptypeN x, fptypeN y) { return ::__tg_fmin(x, y); }
+
+/*! @abstract Generalizes the <cmath> function fma to operate on vectors of
+ * floats and doubles. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN fma(fptypeN x, fptypeN y, fptypeN z) { return ::__tg_fma(x, y, z); }
+
+/*! @abstract Computes x*y + z by the most efficient means available; either
+ * a fused multiply add or separate multiply and add. */
+ template <typename fptypeN>
+ static SIMD_CPPFUNC fptypeN muladd(fptypeN x, fptypeN y, fptypeN z) { return ::simd_muladd(x, y, z); }
+};
+
+extern "C" {
+#else
+#include <tgmath.h>
+/* C and Objective-C, we need some infrastructure to piggyback on tgmath.h */
+static SIMD_OVERLOAD simd_float2 __tg_promote(simd_float2);
+static SIMD_OVERLOAD simd_float3 __tg_promote(simd_float3);
+static SIMD_OVERLOAD simd_float4 __tg_promote(simd_float4);
+static SIMD_OVERLOAD simd_float8 __tg_promote(simd_float8);
+static SIMD_OVERLOAD simd_float16 __tg_promote(simd_float16);
+static SIMD_OVERLOAD simd_double2 __tg_promote(simd_double2);
+static SIMD_OVERLOAD simd_double3 __tg_promote(simd_double3);
+static SIMD_OVERLOAD simd_double4 __tg_promote(simd_double4);
+static SIMD_OVERLOAD simd_double8 __tg_promote(simd_double8);
+
+/* Apple extensions to <math.h>, added in macOS 10.9 and iOS 7.0 */
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_9 || \
+ __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_7_0 || \
+ __DRIVERKIT_VERSION_MIN_REQUIRED >= __DRIVERKIT_19_0
+static inline SIMD_CFUNC float __tg_cospi(float x) { return __cospif(x); }
+static inline SIMD_CFUNC double __tg_cospi(double x) { return __cospi(x); }
+#undef cospi
+/*! @abstract `cospi(x)` computes `cos(pi * x)` without intermediate rounding.
+ *
+ * @discussion Both faster and more accurate than multiplying by `pi` and then
+ * calling `cos`. Defined for `float` and `double` as well as vectors of
+ * floats and doubles as provided by `<simd/simd.h>`. */
+#define cospi(__x) __tg_cospi(__tg_promote1((__x))(__x))
+
+static inline SIMD_CFUNC float __tg_sinpi(float x) { return __sinpif(x); }
+static inline SIMD_CFUNC double __tg_sinpi(double x) { return __sinpi(x); }
+#undef sinpi
+/*! @abstract `sinpi(x)` computes `sin(pi * x)` without intermediate rounding.
+ *
+ * @discussion Both faster and more accurate than multiplying by `pi` and then
+ * calling `sin`. Defined for `float` and `double` as well as vectors
+ * of floats and doubles as provided by `<simd/simd.h>`. */
+#define sinpi(__x) __tg_sinpi(__tg_promote1((__x))(__x))
+
+static inline SIMD_CFUNC float __tg_tanpi(float x) { return __tanpif(x); }
+static inline SIMD_CFUNC double __tg_tanpi(double x) { return __tanpi(x); }
+#undef tanpi
+/*! @abstract `tanpi(x)` computes `tan(pi * x)` without intermediate rounding.
+ *
+ * @discussion Both faster and more accurate than multiplying by `pi` and then
+ * calling `tan`. Defined for `float` and `double` as well as vectors of
+ * floats and doubles as provided by `<simd/simd.h>`. */
+#define tanpi(__x) __tg_tanpi(__tg_promote1((__x))(__x))
+
+static inline SIMD_CFUNC float __tg_exp10(float x) { return __exp10f(x); }
+static inline SIMD_CFUNC double __tg_exp10(double x) { return __exp10(x); }
+#undef exp10
+/*! @abstract `exp10(x)` computes `10**x` more efficiently and accurately
+ * than `pow(10, x)`.
+ *
+ * @discussion Defined for `float` and `double` as well as vectors of floats
+ * and doubles as provided by `<simd/simd.h>`. */
+#define exp10(__x) __tg_exp10(__tg_promote1((__x))(__x))
+#endif
+
+
+#endif /* !__cplusplus */
+
+#pragma mark - fabs implementation
+static inline SIMD_CFUNC simd_float2 __tg_fabs(simd_float2 x) { return simd_bitselect(0.0, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_float3 __tg_fabs(simd_float3 x) { return simd_bitselect(0.0, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_float4 __tg_fabs(simd_float4 x) { return simd_bitselect(0.0, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_float8 __tg_fabs(simd_float8 x) { return simd_bitselect(0.0, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_float16 __tg_fabs(simd_float16 x) { return simd_bitselect(0.0, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_double2 __tg_fabs(simd_double2 x) { return simd_bitselect(0.0, x, 0x7fffffffffffffffL); }
+static inline SIMD_CFUNC simd_double3 __tg_fabs(simd_double3 x) { return simd_bitselect(0.0, x, 0x7fffffffffffffffL); }
+static inline SIMD_CFUNC simd_double4 __tg_fabs(simd_double4 x) { return simd_bitselect(0.0, x, 0x7fffffffffffffffL); }
+static inline SIMD_CFUNC simd_double8 __tg_fabs(simd_double8 x) { return simd_bitselect(0.0, x, 0x7fffffffffffffffL); }
+
+#pragma mark - fmin, fmax implementation
+static SIMD_CFUNC simd_float2 __tg_fmin(simd_float2 x, simd_float2 y) {
+#if defined __SSE2__
+ return simd_make_float2(__tg_fmin(simd_make_float4_undef(x), simd_make_float4_undef(y)));
+#elif defined __arm64__
+ return vminnm_f32(x, y);
+#elif defined __arm__ && __FINITE_MATH_ONLY__
+ return vmin_f32(x, y);
+#else
+ return simd_bitselect(y, x, (x <= y) | (y != y));
+#endif
+}
+
+static SIMD_CFUNC simd_float3 __tg_fmin(simd_float3 x, simd_float3 y) {
+ return simd_make_float3(__tg_fmin(simd_make_float4_undef(x), simd_make_float4_undef(y)));
+}
+
+static SIMD_CFUNC simd_float4 __tg_fmin(simd_float4 x, simd_float4 y) {
+#if defined __AVX512DQ__ && defined __AVX512VL__ && !__FINITE_MATH_ONLY__
+ return _mm_range_ps(x, y, 4);
+#elif defined __SSE2__ && __FINITE_MATH_ONLY__
+ return _mm_min_ps(x, y);
+#elif defined __SSE2__
+ return simd_bitselect(_mm_min_ps(x, y), x, y != y);
+#elif defined __arm64__
+ return vminnmq_f32(x, y);
+#elif defined __arm__ && __FINITE_MATH_ONLY__
+ return vminq_f32(x, y);
+#else
+ return simd_bitselect(y, x, (x <= y) | (y != y));
+#endif
+}
+
+static SIMD_CFUNC simd_float8 __tg_fmin(simd_float8 x, simd_float8 y) {
+#if defined __AVX512DQ__ && defined __AVX512VL__ && !__FINITE_MATH_ONLY__
+ return _mm256_range_ps(x, y, 4);
+#elif defined __AVX__ && __FINITE_MATH_ONLY__
+ return _mm256_min_ps(x, y);
+#elif defined __AVX__
+ return simd_bitselect(_mm256_min_ps(x, y), x, y != y);
+#else
+ return simd_make_float8(__tg_fmin(x.lo, y.lo), __tg_fmin(x.hi, y.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float16 __tg_fmin(simd_float16 x, simd_float16 y) {
+#if defined __x86_64__ && defined __AVX512DQ__ && !__FINITE_MATH_ONLY__
+ return _mm512_range_ps(x, y, 4);
+#elif defined __x86_64__ && defined __AVX512F__ && __FINITE_MATH_ONLY__
+ return _mm512_min_ps(x, y);
+#elif defined __x86_64__ && defined __AVX512F__
+ return simd_bitselect(_mm512_min_ps(x, y), x, y != y);
+#else
+ return simd_make_float16(__tg_fmin(x.lo, y.lo), __tg_fmin(x.hi, y.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double2 __tg_fmin(simd_double2 x, simd_double2 y) {
+#if defined __AVX512DQ__ && defined __AVX512VL__
+ return _mm_range_pd(x, y, 4);
+#elif defined __SSE2__ && __FINITE_MATH_ONLY__
+ return _mm_min_pd(x, y);
+#elif defined __SSE2__
+ return simd_bitselect(_mm_min_pd(x, y), x, y != y);
+#elif defined __arm64__
+ return vminnmq_f64(x, y);
+#else
+ return simd_bitselect(y, x, (x <= y) | (y != y));
+#endif
+}
+
+static SIMD_CFUNC simd_double3 __tg_fmin(simd_double3 x, simd_double3 y) {
+ return simd_make_double3(__tg_fmin(simd_make_double4_undef(x), simd_make_double4_undef(y)));
+}
+
+static SIMD_CFUNC simd_double4 __tg_fmin(simd_double4 x, simd_double4 y) {
+#if defined __AVX512DQ__ && defined __AVX512VL__
+ return _mm256_range_pd(x, y, 4);
+#elif defined __AVX__ && __FINITE_MATH_ONLY__
+ return _mm256_min_pd(x, y);
+#elif defined __AVX__
+ return simd_bitselect(_mm256_min_pd(x, y), x, y != y);
+#else
+ return simd_make_double4(__tg_fmin(x.lo, y.lo), __tg_fmin(x.hi, y.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double8 __tg_fmin(simd_double8 x, simd_double8 y) {
+#if defined __x86_64__ && defined __AVX512DQ__
+ return _mm512_range_pd(x, y, 4);
+#elif defined __x86_64__ && defined __AVX512F__ && __FINITE_MATH_ONLY__
+ return _mm512_min_pd(x, y);
+#elif defined __x86_64__ && defined __AVX512F__
+ return simd_bitselect(_mm512_min_pd(x, y), x, y != y);
+#else
+ return simd_make_double8(__tg_fmin(x.lo, y.lo), __tg_fmin(x.hi, y.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float2 __tg_fmax(simd_float2 x, simd_float2 y) {
+#if defined __SSE2__
+ return simd_make_float2(__tg_fmax(simd_make_float4_undef(x), simd_make_float4_undef(y)));
+#elif defined __arm64__
+ return vmaxnm_f32(x, y);
+#elif defined __arm__ && __FINITE_MATH_ONLY__
+ return vmax_f32(x, y);
+#else
+ return simd_bitselect(y, x, (x >= y) | (y != y));
+#endif
+}
+
+static SIMD_CFUNC simd_float3 __tg_fmax(simd_float3 x, simd_float3 y) {
+ return simd_make_float3(__tg_fmax(simd_make_float4_undef(x), simd_make_float4_undef(y)));
+}
+
+static SIMD_CFUNC simd_float4 __tg_fmax(simd_float4 x, simd_float4 y) {
+#if defined __AVX512DQ__ && defined __AVX512VL__ && !__FINITE_MATH_ONLY__
+ return _mm_range_ps(x, y, 5);
+#elif defined __SSE2__ && __FINITE_MATH_ONLY__
+ return _mm_max_ps(x, y);
+#elif defined __SSE2__
+ return simd_bitselect(_mm_max_ps(x, y), x, y != y);
+#elif defined __arm64__
+ return vmaxnmq_f32(x, y);
+#elif defined __arm__ && __FINITE_MATH_ONLY__
+ return vmaxq_f32(x, y);
+#else
+ return simd_bitselect(y, x, (x >= y) | (y != y));
+#endif
+}
+
+static SIMD_CFUNC simd_float8 __tg_fmax(simd_float8 x, simd_float8 y) {
+#if defined __AVX512DQ__ && defined __AVX512VL__ && !__FINITE_MATH_ONLY__
+ return _mm256_range_ps(x, y, 5);
+#elif defined __AVX__ && __FINITE_MATH_ONLY__
+ return _mm256_max_ps(x, y);
+#elif defined __AVX__
+ return simd_bitselect(_mm256_max_ps(x, y), x, y != y);
+#else
+ return simd_make_float8(__tg_fmax(x.lo, y.lo), __tg_fmax(x.hi, y.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float16 __tg_fmax(simd_float16 x, simd_float16 y) {
+#if defined __x86_64__ && defined __AVX512DQ__ && !__FINITE_MATH_ONLY__
+ return _mm512_range_ps(x, y, 5);
+#elif defined __x86_64__ && defined __AVX512F__ && __FINITE_MATH_ONLY__
+ return _mm512_max_ps(x, y);
+#elif defined __x86_64__ && defined __AVX512F__
+ return simd_bitselect(_mm512_max_ps(x, y), x, y != y);
+#else
+ return simd_make_float16(__tg_fmax(x.lo, y.lo), __tg_fmax(x.hi, y.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double2 __tg_fmax(simd_double2 x, simd_double2 y) {
+#if defined __AVX512DQ__ && defined __AVX512VL__
+ return _mm_range_pd(x, y, 5);
+#elif defined __SSE2__ && __FINITE_MATH_ONLY__
+ return _mm_max_pd(x, y);
+#elif defined __SSE2__
+ return simd_bitselect(_mm_max_pd(x, y), x, y != y);
+#elif defined __arm64__
+ return vmaxnmq_f64(x, y);
+#else
+ return simd_bitselect(y, x, (x >= y) | (y != y));
+#endif
+}
+
+static SIMD_CFUNC simd_double3 __tg_fmax(simd_double3 x, simd_double3 y) {
+ return simd_make_double3(__tg_fmax(simd_make_double4_undef(x), simd_make_double4_undef(y)));
+}
+
+static SIMD_CFUNC simd_double4 __tg_fmax(simd_double4 x, simd_double4 y) {
+#if defined __AVX512DQ__ && defined __AVX512VL__
+ return _mm256_range_pd(x, y, 5);
+#elif defined __AVX__ && __FINITE_MATH_ONLY__
+ return _mm256_max_pd(x, y);
+#elif defined __AVX__
+ return simd_bitselect(_mm256_max_pd(x, y), x, y != y);
+#else
+ return simd_make_double4(__tg_fmax(x.lo, y.lo), __tg_fmax(x.hi, y.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double8 __tg_fmax(simd_double8 x, simd_double8 y) {
+#if defined __x86_64__ && defined __AVX512DQ__
+ return _mm512_range_pd(x, y, 5);
+#elif defined __x86_64__ && defined __AVX512F__ && __FINITE_MATH_ONLY__
+ return _mm512_max_pd(x, y);
+#elif defined __x86_64__ && defined __AVX512F__
+ return simd_bitselect(_mm512_max_pd(x, y), x, y != y);
+#else
+ return simd_make_double8(__tg_fmax(x.lo, y.lo), __tg_fmax(x.hi, y.hi));
+#endif
+}
+
+#pragma mark - copysign implementation
+static inline SIMD_CFUNC simd_float2 __tg_copysign(simd_float2 x, simd_float2 y) { return simd_bitselect(y, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_float3 __tg_copysign(simd_float3 x, simd_float3 y) { return simd_bitselect(y, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_float4 __tg_copysign(simd_float4 x, simd_float4 y) { return simd_bitselect(y, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_float8 __tg_copysign(simd_float8 x, simd_float8 y) { return simd_bitselect(y, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_float16 __tg_copysign(simd_float16 x, simd_float16 y) { return simd_bitselect(y, x, 0x7fffffff); }
+static inline SIMD_CFUNC simd_double2 __tg_copysign(simd_double2 x, simd_double2 y) { return simd_bitselect(y, x, 0x7fffffffffffffffL); }
+static inline SIMD_CFUNC simd_double3 __tg_copysign(simd_double3 x, simd_double3 y) { return simd_bitselect(y, x, 0x7fffffffffffffffL); }
+static inline SIMD_CFUNC simd_double4 __tg_copysign(simd_double4 x, simd_double4 y) { return simd_bitselect(y, x, 0x7fffffffffffffffL); }
+static inline SIMD_CFUNC simd_double8 __tg_copysign(simd_double8 x, simd_double8 y) { return simd_bitselect(y, x, 0x7fffffffffffffffL); }
+
+#pragma mark - sqrt implementation
+static SIMD_CFUNC simd_float2 __tg_sqrt(simd_float2 x) {
+#if defined __SSE2__
+ return simd_make_float2(__tg_sqrt(simd_make_float4_undef(x)));
+#elif defined __arm64__
+ return vsqrt_f32(x);
+#else
+ return simd_make_float2(sqrt(x.x), sqrt(x.y));
+#endif
+}
+
+static SIMD_CFUNC simd_float3 __tg_sqrt(simd_float3 x) {
+ return simd_make_float3(__tg_sqrt(simd_make_float4_undef(x)));
+}
+
+static SIMD_CFUNC simd_float4 __tg_sqrt(simd_float4 x) {
+#if defined __SSE2__
+ return _mm_sqrt_ps(x);
+#elif defined __arm64__
+ return vsqrtq_f32(x);
+#else
+ return simd_make_float4(__tg_sqrt(x.lo), __tg_sqrt(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float8 __tg_sqrt(simd_float8 x) {
+#if defined __AVX__
+ return _mm256_sqrt_ps(x);
+#else
+ return simd_make_float8(__tg_sqrt(x.lo), __tg_sqrt(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float16 __tg_sqrt(simd_float16 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_sqrt_ps(x);
+#else
+ return simd_make_float16(__tg_sqrt(x.lo), __tg_sqrt(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double2 __tg_sqrt(simd_double2 x) {
+#if defined __SSE2__
+ return _mm_sqrt_pd(x);
+#elif defined __arm64__
+ return vsqrtq_f64(x);
+#else
+ return simd_make_double2(sqrt(x.x), sqrt(x.y));
+#endif
+}
+
+static SIMD_CFUNC simd_double3 __tg_sqrt(simd_double3 x) {
+ return simd_make_double3(__tg_sqrt(simd_make_double4_undef(x)));
+}
+
+static SIMD_CFUNC simd_double4 __tg_sqrt(simd_double4 x) {
+#if defined __AVX__
+ return _mm256_sqrt_pd(x);
+#else
+ return simd_make_double4(__tg_sqrt(x.lo), __tg_sqrt(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double8 __tg_sqrt(simd_double8 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_sqrt_pd(x);
+#else
+ return simd_make_double8(__tg_sqrt(x.lo), __tg_sqrt(x.hi));
+#endif
+}
+
+#pragma mark - ceil, floor, rint, trunc implementation
+static SIMD_CFUNC simd_float2 __tg_ceil(simd_float2 x) {
+#if defined __arm64__
+ return vrndp_f32(x);
+#else
+ return simd_make_float2(__tg_ceil(simd_make_float4_undef(x)));
+#endif
+}
+
+static SIMD_CFUNC simd_float3 __tg_ceil(simd_float3 x) {
+ return simd_make_float3(__tg_ceil(simd_make_float4_undef(x)));
+}
+
+#if defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_ceil_f4(simd_float4 x);
+#endif
+
+static SIMD_CFUNC simd_float4 __tg_ceil(simd_float4 x) {
+#if defined __SSE4_1__
+ return _mm_round_ps(x, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+#elif defined __arm64__
+ return vrndpq_f32(x);
+#elif defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+ return _simd_ceil_f4(x);
+#else
+ simd_float4 truncated = __tg_trunc(x);
+ simd_float4 adjust = simd_bitselect((simd_float4)0, 1, truncated < x);
+ return __tg_copysign(truncated + adjust, x);
+#endif
+}
+
+static SIMD_CFUNC simd_float8 __tg_ceil(simd_float8 x) {
+#if defined __AVX__
+ return _mm256_round_ps(x, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_float8(__tg_ceil(x.lo), __tg_ceil(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float16 __tg_ceil(simd_float16 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_roundscale_ps(x, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_float16(__tg_ceil(x.lo), __tg_ceil(x.hi));
+#endif
+}
+
+#if defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_ceil_d2(simd_double2 x);
+#endif
+
+static SIMD_CFUNC simd_double2 __tg_ceil(simd_double2 x) {
+#if defined __SSE4_1__
+ return _mm_round_pd(x, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+#elif defined __arm64__
+ return vrndpq_f64(x);
+#elif defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+ return _simd_ceil_d2(x);
+#else
+ simd_double2 truncated = __tg_trunc(x);
+ simd_double2 adjust = simd_bitselect((simd_double2)0, 1, truncated < x);
+ return __tg_copysign(truncated + adjust, x);
+#endif
+}
+
+static SIMD_CFUNC simd_double3 __tg_ceil(simd_double3 x) {
+ return simd_make_double3(__tg_ceil(simd_make_double4_undef(x)));
+}
+
+static SIMD_CFUNC simd_double4 __tg_ceil(simd_double4 x) {
+#if defined __AVX__
+ return _mm256_round_pd(x, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_double4(__tg_ceil(x.lo), __tg_ceil(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double8 __tg_ceil(simd_double8 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_roundscale_pd(x, _MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_double8(__tg_ceil(x.lo), __tg_ceil(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float2 __tg_floor(simd_float2 x) {
+#if defined __arm64__
+ return vrndm_f32(x);
+#else
+ return simd_make_float2(__tg_floor(simd_make_float4_undef(x)));
+#endif
+}
+
+static SIMD_CFUNC simd_float3 __tg_floor(simd_float3 x) {
+ return simd_make_float3(__tg_floor(simd_make_float4_undef(x)));
+}
+
+#if defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_floor_f4(simd_float4 x);
+#endif
+
+static SIMD_CFUNC simd_float4 __tg_floor(simd_float4 x) {
+#if defined __SSE4_1__
+ return _mm_round_ps(x, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
+#elif defined __arm64__
+ return vrndmq_f32(x);
+#elif defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+ return _simd_floor_f4(x);
+#else
+ simd_float4 truncated = __tg_trunc(x);
+ simd_float4 adjust = simd_bitselect((simd_float4)0, 1, truncated > x);
+ return truncated - adjust;
+#endif
+}
+
+static SIMD_CFUNC simd_float8 __tg_floor(simd_float8 x) {
+#if defined __AVX__
+ return _mm256_round_ps(x, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_float8(__tg_floor(x.lo), __tg_floor(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float16 __tg_floor(simd_float16 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_roundscale_ps(x, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_float16(__tg_floor(x.lo), __tg_floor(x.hi));
+#endif
+}
+
+#if defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_floor_d2(simd_double2 x);
+#endif
+
+static SIMD_CFUNC simd_double2 __tg_floor(simd_double2 x) {
+#if defined __SSE4_1__
+ return _mm_round_pd(x, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
+#elif defined __arm64__
+ return vrndmq_f64(x);
+#elif defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+ return _simd_floor_d2(x);
+#else
+ simd_double2 truncated = __tg_trunc(x);
+ simd_double2 adjust = simd_bitselect((simd_double2)0, 1, truncated > x);
+ return truncated - adjust;
+#endif
+}
+
+static SIMD_CFUNC simd_double3 __tg_floor(simd_double3 x) {
+ return simd_make_double3(__tg_floor(simd_make_double4_undef(x)));
+}
+
+static SIMD_CFUNC simd_double4 __tg_floor(simd_double4 x) {
+#if defined __AVX__
+ return _mm256_round_pd(x, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_double4(__tg_floor(x.lo), __tg_floor(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double8 __tg_floor(simd_double8 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_roundscale_pd(x, _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_double8(__tg_floor(x.lo), __tg_floor(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float2 __tg_rint(simd_float2 x) {
+#if defined __arm64__
+ return vrndx_f32(x);
+#else
+ return simd_make_float2(__tg_rint(simd_make_float4_undef(x)));
+#endif
+}
+
+static SIMD_CFUNC simd_float3 __tg_rint(simd_float3 x) {
+ return simd_make_float3(__tg_rint(simd_make_float4_undef(x)));
+}
+
+#if defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_rint_f4(simd_float4 x);
+#endif
+
+static SIMD_CFUNC simd_float4 __tg_rint(simd_float4 x) {
+#if defined __SSE4_1__
+ return _mm_round_ps(x, _MM_FROUND_RINT);
+#elif defined __arm64__
+ return vrndxq_f32(x);
+#elif defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+ return _simd_rint_f4(x);
+#else
+ simd_float4 magic = __tg_copysign(0x1.0p23, x);
+ simd_int4 x_is_small = __tg_fabs(x) < 0x1.0p23;
+ return simd_bitselect(x, (x + magic) - magic, x_is_small & 0x7fffffff);
+#endif
+}
+
+static SIMD_CFUNC simd_float8 __tg_rint(simd_float8 x) {
+#if defined __AVX__
+ return _mm256_round_ps(x, _MM_FROUND_RINT);
+#else
+ return simd_make_float8(__tg_rint(x.lo), __tg_rint(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float16 __tg_rint(simd_float16 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_roundscale_ps(x, _MM_FROUND_RINT);
+#else
+ return simd_make_float16(__tg_rint(x.lo), __tg_rint(x.hi));
+#endif
+}
+
+#if defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_rint_d2(simd_double2 x);
+#endif
+
+static SIMD_CFUNC simd_double2 __tg_rint(simd_double2 x) {
+#if defined __SSE4_1__
+ return _mm_round_pd(x, _MM_FROUND_RINT);
+#elif defined __arm64__
+ return vrndxq_f64(x);
+#elif defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+ return _simd_rint_d2(x);
+#else
+ simd_double2 magic = __tg_copysign(0x1.0p52, x);
+ simd_long2 x_is_small = __tg_fabs(x) < 0x1.0p52;
+ return simd_bitselect(x, (x + magic) - magic, x_is_small & 0x7fffffffffffffff);
+#endif
+}
+
+static SIMD_CFUNC simd_double3 __tg_rint(simd_double3 x) {
+ return simd_make_double3(__tg_rint(simd_make_double4_undef(x)));
+}
+
+static SIMD_CFUNC simd_double4 __tg_rint(simd_double4 x) {
+#if defined __AVX__
+ return _mm256_round_pd(x, _MM_FROUND_RINT);
+#else
+ return simd_make_double4(__tg_rint(x.lo), __tg_rint(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double8 __tg_rint(simd_double8 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_roundscale_pd(x, _MM_FROUND_RINT);
+#else
+ return simd_make_double8(__tg_rint(x.lo), __tg_rint(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float2 __tg_trunc(simd_float2 x) {
+#if defined __arm64__
+ return vrnd_f32(x);
+#else
+ return simd_make_float2(__tg_trunc(simd_make_float4_undef(x)));
+#endif
+}
+
+static SIMD_CFUNC simd_float3 __tg_trunc(simd_float3 x) {
+ return simd_make_float3(__tg_trunc(simd_make_float4_undef(x)));
+}
+
+#if defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_trunc_f4(simd_float4 x);
+#endif
+
+static SIMD_CFUNC simd_float4 __tg_trunc(simd_float4 x) {
+#if defined __SSE4_1__
+ return _mm_round_ps(x, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+#elif defined __arm64__
+ return vrndq_f32(x);
+#elif defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+ return _simd_trunc_f4(x);
+#else
+ simd_float4 binade = simd_bitselect(0, x, 0x7f800000);
+ simd_int4 mask = (simd_int4)__tg_fmin(-2*binade + 1, -0);
+ simd_float4 result = simd_bitselect(0, x, mask);
+ return simd_bitselect(x, result, binade < 0x1.0p23);
+#endif
+}
+
+static SIMD_CFUNC simd_float8 __tg_trunc(simd_float8 x) {
+#if defined __AVX__
+ return _mm256_round_ps(x, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_float8(__tg_trunc(x.lo), __tg_trunc(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_float16 __tg_trunc(simd_float16 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_roundscale_ps(x, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_float16(__tg_trunc(x.lo), __tg_trunc(x.hi));
+#endif
+}
+
+#if defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_trunc_d2(simd_double2 x);
+#endif
+
+static SIMD_CFUNC simd_double2 __tg_trunc(simd_double2 x) {
+#if defined __SSE4_1__
+ return _mm_round_pd(x, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+#elif defined __arm64__
+ return vrndq_f64(x);
+#elif defined __arm__ && SIMD_LIBRARY_VERSION >= 3
+ return _simd_trunc_d2(x);
+#else
+ simd_double2 binade = simd_bitselect(0, x, 0x7ff0000000000000);
+ simd_long2 mask = (simd_long2)__tg_fmin(-2*binade + 1, -0);
+ simd_double2 result = simd_bitselect(0, x, mask);
+ return simd_bitselect(x, result, binade < 0x1.0p52);
+#endif
+}
+
+static SIMD_CFUNC simd_double3 __tg_trunc(simd_double3 x) {
+ return simd_make_double3(__tg_trunc(simd_make_double4_undef(x)));
+}
+
+static SIMD_CFUNC simd_double4 __tg_trunc(simd_double4 x) {
+#if defined __AVX__
+ return _mm256_round_pd(x, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_double4(__tg_trunc(x.lo), __tg_trunc(x.hi));
+#endif
+}
+
+static SIMD_CFUNC simd_double8 __tg_trunc(simd_double8 x) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_roundscale_pd(x, _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC);
+#else
+ return simd_make_double8(__tg_trunc(x.lo), __tg_trunc(x.hi));
+#endif
+}
+
+#pragma mark - sine, cosine implementation
+static inline SIMD_CFUNC simd_float2 __tg_sin(simd_float2 x) {
+ return simd_make_float2(__tg_sin(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_sin(simd_float3 x) {
+ return simd_make_float3(__tg_sin(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_sin_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_sin(simd_float4 x) {
+ return _simd_sin_f4(x);
+}
+#elif SIMD_LIBRARY_VERSION == 1
+extern simd_float4 __sin_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_sin(simd_float4 x) {
+ return __sin_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_sin(simd_float4 x) {
+ return simd_make_float4(sin(x.x), sin(x.y), sin(x.z), sin(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_sin_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_sin(simd_float8 x) {
+ return _simd_sin_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_sin(simd_float8 x) {
+ return simd_make_float8(__tg_sin(x.lo), __tg_sin(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_sin_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_sin(simd_float16 x) {
+ return _simd_sin_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_sin(simd_float16 x) {
+ return simd_make_float16(__tg_sin(x.lo), __tg_sin(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_sin_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_sin(simd_double2 x) {
+ return _simd_sin_d2(x);
+}
+#elif SIMD_LIBRARY_VERSION == 1
+extern simd_double2 __sin_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_sin(simd_double2 x) {
+ return __sin_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_sin(simd_double2 x) {
+ return simd_make_double2(sin(x.x), sin(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_sin(simd_double3 x) {
+ return simd_make_double3(__tg_sin(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_sin_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_sin(simd_double4 x) {
+ return _simd_sin_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_sin(simd_double4 x) {
+ return simd_make_double4(__tg_sin(x.lo), __tg_sin(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_sin_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_sin(simd_double8 x) {
+ return _simd_sin_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_sin(simd_double8 x) {
+ return simd_make_double8(__tg_sin(x.lo), __tg_sin(x.hi));
+}
+#endif
+
+static inline SIMD_CFUNC simd_float2 __tg_cos(simd_float2 x) {
+ return simd_make_float2(__tg_cos(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_cos(simd_float3 x) {
+ return simd_make_float3(__tg_cos(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_cos_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_cos(simd_float4 x) {
+ return _simd_cos_f4(x);
+}
+#elif SIMD_LIBRARY_VERSION == 1
+extern simd_float4 __cos_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_cos(simd_float4 x) {
+ return __cos_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_cos(simd_float4 x) {
+ return simd_make_float4(cos(x.x), cos(x.y), cos(x.z), cos(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_cos_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_cos(simd_float8 x) {
+ return _simd_cos_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_cos(simd_float8 x) {
+ return simd_make_float8(__tg_cos(x.lo), __tg_cos(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_cos_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_cos(simd_float16 x) {
+ return _simd_cos_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_cos(simd_float16 x) {
+ return simd_make_float16(__tg_cos(x.lo), __tg_cos(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_cos_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_cos(simd_double2 x) {
+ return _simd_cos_d2(x);
+}
+#elif SIMD_LIBRARY_VERSION == 1
+extern simd_double2 __cos_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_cos(simd_double2 x) {
+ return __cos_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_cos(simd_double2 x) {
+ return simd_make_double2(cos(x.x), cos(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_cos(simd_double3 x) {
+ return simd_make_double3(__tg_cos(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_cos_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_cos(simd_double4 x) {
+ return _simd_cos_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_cos(simd_double4 x) {
+ return simd_make_double4(__tg_cos(x.lo), __tg_cos(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_cos_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_cos(simd_double8 x) {
+ return _simd_cos_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_cos(simd_double8 x) {
+ return simd_make_double8(__tg_cos(x.lo), __tg_cos(x.hi));
+}
+#endif
+
+
+#pragma mark - acos implementation
+static inline SIMD_CFUNC simd_float2 __tg_acos(simd_float2 x) {
+ return simd_make_float2(__tg_acos(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_acos(simd_float3 x) {
+ return simd_make_float3(__tg_acos(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_acos_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_acos(simd_float4 x) {
+ return _simd_acos_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_acos(simd_float4 x) {
+ return simd_make_float4(acos(x.x), acos(x.y), acos(x.z), acos(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_acos_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_acos(simd_float8 x) {
+ return _simd_acos_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_acos(simd_float8 x) {
+ return simd_make_float8(__tg_acos(x.lo), __tg_acos(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_acos_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_acos(simd_float16 x) {
+ return _simd_acos_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_acos(simd_float16 x) {
+ return simd_make_float16(__tg_acos(x.lo), __tg_acos(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_acos_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_acos(simd_double2 x) {
+ return _simd_acos_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_acos(simd_double2 x) {
+ return simd_make_double2(acos(x.x), acos(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_acos(simd_double3 x) {
+ return simd_make_double3(__tg_acos(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_acos_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_acos(simd_double4 x) {
+ return _simd_acos_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_acos(simd_double4 x) {
+ return simd_make_double4(__tg_acos(x.lo), __tg_acos(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_acos_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_acos(simd_double8 x) {
+ return _simd_acos_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_acos(simd_double8 x) {
+ return simd_make_double8(__tg_acos(x.lo), __tg_acos(x.hi));
+}
+#endif
+
+#pragma mark - asin implementation
+static inline SIMD_CFUNC simd_float2 __tg_asin(simd_float2 x) {
+ return simd_make_float2(__tg_asin(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_asin(simd_float3 x) {
+ return simd_make_float3(__tg_asin(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_asin_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_asin(simd_float4 x) {
+ return _simd_asin_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_asin(simd_float4 x) {
+ return simd_make_float4(asin(x.x), asin(x.y), asin(x.z), asin(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_asin_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_asin(simd_float8 x) {
+ return _simd_asin_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_asin(simd_float8 x) {
+ return simd_make_float8(__tg_asin(x.lo), __tg_asin(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_asin_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_asin(simd_float16 x) {
+ return _simd_asin_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_asin(simd_float16 x) {
+ return simd_make_float16(__tg_asin(x.lo), __tg_asin(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_asin_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_asin(simd_double2 x) {
+ return _simd_asin_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_asin(simd_double2 x) {
+ return simd_make_double2(asin(x.x), asin(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_asin(simd_double3 x) {
+ return simd_make_double3(__tg_asin(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_asin_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_asin(simd_double4 x) {
+ return _simd_asin_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_asin(simd_double4 x) {
+ return simd_make_double4(__tg_asin(x.lo), __tg_asin(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_asin_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_asin(simd_double8 x) {
+ return _simd_asin_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_asin(simd_double8 x) {
+ return simd_make_double8(__tg_asin(x.lo), __tg_asin(x.hi));
+}
+#endif
+
+#pragma mark - atan implementation
+static inline SIMD_CFUNC simd_float2 __tg_atan(simd_float2 x) {
+ return simd_make_float2(__tg_atan(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_atan(simd_float3 x) {
+ return simd_make_float3(__tg_atan(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_atan_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_atan(simd_float4 x) {
+ return _simd_atan_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_atan(simd_float4 x) {
+ return simd_make_float4(atan(x.x), atan(x.y), atan(x.z), atan(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_atan_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_atan(simd_float8 x) {
+ return _simd_atan_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_atan(simd_float8 x) {
+ return simd_make_float8(__tg_atan(x.lo), __tg_atan(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_atan_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_atan(simd_float16 x) {
+ return _simd_atan_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_atan(simd_float16 x) {
+ return simd_make_float16(__tg_atan(x.lo), __tg_atan(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_atan_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_atan(simd_double2 x) {
+ return _simd_atan_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_atan(simd_double2 x) {
+ return simd_make_double2(atan(x.x), atan(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_atan(simd_double3 x) {
+ return simd_make_double3(__tg_atan(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_atan_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_atan(simd_double4 x) {
+ return _simd_atan_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_atan(simd_double4 x) {
+ return simd_make_double4(__tg_atan(x.lo), __tg_atan(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_atan_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_atan(simd_double8 x) {
+ return _simd_atan_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_atan(simd_double8 x) {
+ return simd_make_double8(__tg_atan(x.lo), __tg_atan(x.hi));
+}
+#endif
+
+#pragma mark - tan implementation
+static inline SIMD_CFUNC simd_float2 __tg_tan(simd_float2 x) {
+ return simd_make_float2(__tg_tan(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_tan(simd_float3 x) {
+ return simd_make_float3(__tg_tan(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_tan_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_tan(simd_float4 x) {
+ return _simd_tan_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_tan(simd_float4 x) {
+ return simd_make_float4(tan(x.x), tan(x.y), tan(x.z), tan(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_tan_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_tan(simd_float8 x) {
+ return _simd_tan_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_tan(simd_float8 x) {
+ return simd_make_float8(__tg_tan(x.lo), __tg_tan(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_tan_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_tan(simd_float16 x) {
+ return _simd_tan_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_tan(simd_float16 x) {
+ return simd_make_float16(__tg_tan(x.lo), __tg_tan(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_tan_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_tan(simd_double2 x) {
+ return _simd_tan_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_tan(simd_double2 x) {
+ return simd_make_double2(tan(x.x), tan(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_tan(simd_double3 x) {
+ return simd_make_double3(__tg_tan(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_tan_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_tan(simd_double4 x) {
+ return _simd_tan_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_tan(simd_double4 x) {
+ return simd_make_double4(__tg_tan(x.lo), __tg_tan(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_tan_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_tan(simd_double8 x) {
+ return _simd_tan_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_tan(simd_double8 x) {
+ return simd_make_double8(__tg_tan(x.lo), __tg_tan(x.hi));
+}
+#endif
+
+#pragma mark - cospi implementation
+#if SIMD_LIBRARY_VERSION >= 1
+static inline SIMD_CFUNC simd_float2 __tg_cospi(simd_float2 x) {
+ return simd_make_float2(__tg_cospi(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_cospi(simd_float3 x) {
+ return simd_make_float3(__tg_cospi(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_cospi_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_cospi(simd_float4 x) {
+ return _simd_cospi_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_cospi(simd_float4 x) {
+ return simd_make_float4(__cospi(x.x), __cospi(x.y), __cospi(x.z), __cospi(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_cospi_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_cospi(simd_float8 x) {
+ return _simd_cospi_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_cospi(simd_float8 x) {
+ return simd_make_float8(__tg_cospi(x.lo), __tg_cospi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_cospi_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_cospi(simd_float16 x) {
+ return _simd_cospi_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_cospi(simd_float16 x) {
+ return simd_make_float16(__tg_cospi(x.lo), __tg_cospi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_cospi_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_cospi(simd_double2 x) {
+ return _simd_cospi_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_cospi(simd_double2 x) {
+ return simd_make_double2(__cospi(x.x), __cospi(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_cospi(simd_double3 x) {
+ return simd_make_double3(__tg_cospi(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_cospi_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_cospi(simd_double4 x) {
+ return _simd_cospi_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_cospi(simd_double4 x) {
+ return simd_make_double4(__tg_cospi(x.lo), __tg_cospi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_cospi_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_cospi(simd_double8 x) {
+ return _simd_cospi_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_cospi(simd_double8 x) {
+ return simd_make_double8(__tg_cospi(x.lo), __tg_cospi(x.hi));
+}
+#endif
+
+#endif /* SIMD_LIBRARY_VERSION */
+#pragma mark - sinpi implementation
+#if SIMD_LIBRARY_VERSION >= 1
+static inline SIMD_CFUNC simd_float2 __tg_sinpi(simd_float2 x) {
+ return simd_make_float2(__tg_sinpi(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_sinpi(simd_float3 x) {
+ return simd_make_float3(__tg_sinpi(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_sinpi_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_sinpi(simd_float4 x) {
+ return _simd_sinpi_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_sinpi(simd_float4 x) {
+ return simd_make_float4(__sinpi(x.x), __sinpi(x.y), __sinpi(x.z), __sinpi(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_sinpi_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_sinpi(simd_float8 x) {
+ return _simd_sinpi_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_sinpi(simd_float8 x) {
+ return simd_make_float8(__tg_sinpi(x.lo), __tg_sinpi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_sinpi_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_sinpi(simd_float16 x) {
+ return _simd_sinpi_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_sinpi(simd_float16 x) {
+ return simd_make_float16(__tg_sinpi(x.lo), __tg_sinpi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_sinpi_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_sinpi(simd_double2 x) {
+ return _simd_sinpi_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_sinpi(simd_double2 x) {
+ return simd_make_double2(__sinpi(x.x), __sinpi(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_sinpi(simd_double3 x) {
+ return simd_make_double3(__tg_sinpi(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_sinpi_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_sinpi(simd_double4 x) {
+ return _simd_sinpi_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_sinpi(simd_double4 x) {
+ return simd_make_double4(__tg_sinpi(x.lo), __tg_sinpi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_sinpi_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_sinpi(simd_double8 x) {
+ return _simd_sinpi_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_sinpi(simd_double8 x) {
+ return simd_make_double8(__tg_sinpi(x.lo), __tg_sinpi(x.hi));
+}
+#endif
+
+#endif /* SIMD_LIBRARY_VERSION */
+#pragma mark - tanpi implementation
+#if SIMD_LIBRARY_VERSION >= 1
+static inline SIMD_CFUNC simd_float2 __tg_tanpi(simd_float2 x) {
+ return simd_make_float2(__tg_tanpi(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_tanpi(simd_float3 x) {
+ return simd_make_float3(__tg_tanpi(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_tanpi_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_tanpi(simd_float4 x) {
+ return _simd_tanpi_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_tanpi(simd_float4 x) {
+ return simd_make_float4(__tanpi(x.x), __tanpi(x.y), __tanpi(x.z), __tanpi(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_tanpi_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_tanpi(simd_float8 x) {
+ return _simd_tanpi_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_tanpi(simd_float8 x) {
+ return simd_make_float8(__tg_tanpi(x.lo), __tg_tanpi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_tanpi_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_tanpi(simd_float16 x) {
+ return _simd_tanpi_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_tanpi(simd_float16 x) {
+ return simd_make_float16(__tg_tanpi(x.lo), __tg_tanpi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_tanpi_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_tanpi(simd_double2 x) {
+ return _simd_tanpi_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_tanpi(simd_double2 x) {
+ return simd_make_double2(__tanpi(x.x), __tanpi(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_tanpi(simd_double3 x) {
+ return simd_make_double3(__tg_tanpi(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_tanpi_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_tanpi(simd_double4 x) {
+ return _simd_tanpi_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_tanpi(simd_double4 x) {
+ return simd_make_double4(__tg_tanpi(x.lo), __tg_tanpi(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_tanpi_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_tanpi(simd_double8 x) {
+ return _simd_tanpi_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_tanpi(simd_double8 x) {
+ return simd_make_double8(__tg_tanpi(x.lo), __tg_tanpi(x.hi));
+}
+#endif
+
+#endif /* SIMD_LIBRARY_VERSION */
+#pragma mark - acosh implementation
+static inline SIMD_CFUNC simd_float2 __tg_acosh(simd_float2 x) {
+ return simd_make_float2(__tg_acosh(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_acosh(simd_float3 x) {
+ return simd_make_float3(__tg_acosh(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_acosh_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_acosh(simd_float4 x) {
+ return _simd_acosh_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_acosh(simd_float4 x) {
+ return simd_make_float4(acosh(x.x), acosh(x.y), acosh(x.z), acosh(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_acosh_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_acosh(simd_float8 x) {
+ return _simd_acosh_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_acosh(simd_float8 x) {
+ return simd_make_float8(__tg_acosh(x.lo), __tg_acosh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_acosh_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_acosh(simd_float16 x) {
+ return _simd_acosh_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_acosh(simd_float16 x) {
+ return simd_make_float16(__tg_acosh(x.lo), __tg_acosh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_acosh_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_acosh(simd_double2 x) {
+ return _simd_acosh_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_acosh(simd_double2 x) {
+ return simd_make_double2(acosh(x.x), acosh(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_acosh(simd_double3 x) {
+ return simd_make_double3(__tg_acosh(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_acosh_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_acosh(simd_double4 x) {
+ return _simd_acosh_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_acosh(simd_double4 x) {
+ return simd_make_double4(__tg_acosh(x.lo), __tg_acosh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_acosh_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_acosh(simd_double8 x) {
+ return _simd_acosh_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_acosh(simd_double8 x) {
+ return simd_make_double8(__tg_acosh(x.lo), __tg_acosh(x.hi));
+}
+#endif
+
+#pragma mark - asinh implementation
+static inline SIMD_CFUNC simd_float2 __tg_asinh(simd_float2 x) {
+ return simd_make_float2(__tg_asinh(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_asinh(simd_float3 x) {
+ return simd_make_float3(__tg_asinh(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_asinh_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_asinh(simd_float4 x) {
+ return _simd_asinh_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_asinh(simd_float4 x) {
+ return simd_make_float4(asinh(x.x), asinh(x.y), asinh(x.z), asinh(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_asinh_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_asinh(simd_float8 x) {
+ return _simd_asinh_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_asinh(simd_float8 x) {
+ return simd_make_float8(__tg_asinh(x.lo), __tg_asinh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_asinh_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_asinh(simd_float16 x) {
+ return _simd_asinh_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_asinh(simd_float16 x) {
+ return simd_make_float16(__tg_asinh(x.lo), __tg_asinh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_asinh_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_asinh(simd_double2 x) {
+ return _simd_asinh_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_asinh(simd_double2 x) {
+ return simd_make_double2(asinh(x.x), asinh(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_asinh(simd_double3 x) {
+ return simd_make_double3(__tg_asinh(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_asinh_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_asinh(simd_double4 x) {
+ return _simd_asinh_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_asinh(simd_double4 x) {
+ return simd_make_double4(__tg_asinh(x.lo), __tg_asinh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_asinh_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_asinh(simd_double8 x) {
+ return _simd_asinh_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_asinh(simd_double8 x) {
+ return simd_make_double8(__tg_asinh(x.lo), __tg_asinh(x.hi));
+}
+#endif
+
+#pragma mark - atanh implementation
+static inline SIMD_CFUNC simd_float2 __tg_atanh(simd_float2 x) {
+ return simd_make_float2(__tg_atanh(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_atanh(simd_float3 x) {
+ return simd_make_float3(__tg_atanh(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_atanh_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_atanh(simd_float4 x) {
+ return _simd_atanh_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_atanh(simd_float4 x) {
+ return simd_make_float4(atanh(x.x), atanh(x.y), atanh(x.z), atanh(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_atanh_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_atanh(simd_float8 x) {
+ return _simd_atanh_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_atanh(simd_float8 x) {
+ return simd_make_float8(__tg_atanh(x.lo), __tg_atanh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_atanh_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_atanh(simd_float16 x) {
+ return _simd_atanh_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_atanh(simd_float16 x) {
+ return simd_make_float16(__tg_atanh(x.lo), __tg_atanh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_atanh_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_atanh(simd_double2 x) {
+ return _simd_atanh_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_atanh(simd_double2 x) {
+ return simd_make_double2(atanh(x.x), atanh(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_atanh(simd_double3 x) {
+ return simd_make_double3(__tg_atanh(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_atanh_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_atanh(simd_double4 x) {
+ return _simd_atanh_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_atanh(simd_double4 x) {
+ return simd_make_double4(__tg_atanh(x.lo), __tg_atanh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_atanh_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_atanh(simd_double8 x) {
+ return _simd_atanh_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_atanh(simd_double8 x) {
+ return simd_make_double8(__tg_atanh(x.lo), __tg_atanh(x.hi));
+}
+#endif
+
+#pragma mark - cosh implementation
+static inline SIMD_CFUNC simd_float2 __tg_cosh(simd_float2 x) {
+ return simd_make_float2(__tg_cosh(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_cosh(simd_float3 x) {
+ return simd_make_float3(__tg_cosh(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_cosh_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_cosh(simd_float4 x) {
+ return _simd_cosh_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_cosh(simd_float4 x) {
+ return simd_make_float4(cosh(x.x), cosh(x.y), cosh(x.z), cosh(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_cosh_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_cosh(simd_float8 x) {
+ return _simd_cosh_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_cosh(simd_float8 x) {
+ return simd_make_float8(__tg_cosh(x.lo), __tg_cosh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_cosh_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_cosh(simd_float16 x) {
+ return _simd_cosh_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_cosh(simd_float16 x) {
+ return simd_make_float16(__tg_cosh(x.lo), __tg_cosh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_cosh_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_cosh(simd_double2 x) {
+ return _simd_cosh_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_cosh(simd_double2 x) {
+ return simd_make_double2(cosh(x.x), cosh(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_cosh(simd_double3 x) {
+ return simd_make_double3(__tg_cosh(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_cosh_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_cosh(simd_double4 x) {
+ return _simd_cosh_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_cosh(simd_double4 x) {
+ return simd_make_double4(__tg_cosh(x.lo), __tg_cosh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_cosh_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_cosh(simd_double8 x) {
+ return _simd_cosh_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_cosh(simd_double8 x) {
+ return simd_make_double8(__tg_cosh(x.lo), __tg_cosh(x.hi));
+}
+#endif
+
+#pragma mark - sinh implementation
+static inline SIMD_CFUNC simd_float2 __tg_sinh(simd_float2 x) {
+ return simd_make_float2(__tg_sinh(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_sinh(simd_float3 x) {
+ return simd_make_float3(__tg_sinh(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_sinh_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_sinh(simd_float4 x) {
+ return _simd_sinh_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_sinh(simd_float4 x) {
+ return simd_make_float4(sinh(x.x), sinh(x.y), sinh(x.z), sinh(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_sinh_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_sinh(simd_float8 x) {
+ return _simd_sinh_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_sinh(simd_float8 x) {
+ return simd_make_float8(__tg_sinh(x.lo), __tg_sinh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_sinh_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_sinh(simd_float16 x) {
+ return _simd_sinh_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_sinh(simd_float16 x) {
+ return simd_make_float16(__tg_sinh(x.lo), __tg_sinh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_sinh_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_sinh(simd_double2 x) {
+ return _simd_sinh_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_sinh(simd_double2 x) {
+ return simd_make_double2(sinh(x.x), sinh(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_sinh(simd_double3 x) {
+ return simd_make_double3(__tg_sinh(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_sinh_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_sinh(simd_double4 x) {
+ return _simd_sinh_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_sinh(simd_double4 x) {
+ return simd_make_double4(__tg_sinh(x.lo), __tg_sinh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_sinh_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_sinh(simd_double8 x) {
+ return _simd_sinh_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_sinh(simd_double8 x) {
+ return simd_make_double8(__tg_sinh(x.lo), __tg_sinh(x.hi));
+}
+#endif
+
+#pragma mark - tanh implementation
+static inline SIMD_CFUNC simd_float2 __tg_tanh(simd_float2 x) {
+ return simd_make_float2(__tg_tanh(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_tanh(simd_float3 x) {
+ return simd_make_float3(__tg_tanh(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_tanh_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_tanh(simd_float4 x) {
+ return _simd_tanh_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_tanh(simd_float4 x) {
+ return simd_make_float4(tanh(x.x), tanh(x.y), tanh(x.z), tanh(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_tanh_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_tanh(simd_float8 x) {
+ return _simd_tanh_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_tanh(simd_float8 x) {
+ return simd_make_float8(__tg_tanh(x.lo), __tg_tanh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_tanh_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_tanh(simd_float16 x) {
+ return _simd_tanh_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_tanh(simd_float16 x) {
+ return simd_make_float16(__tg_tanh(x.lo), __tg_tanh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_tanh_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_tanh(simd_double2 x) {
+ return _simd_tanh_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_tanh(simd_double2 x) {
+ return simd_make_double2(tanh(x.x), tanh(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_tanh(simd_double3 x) {
+ return simd_make_double3(__tg_tanh(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_tanh_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_tanh(simd_double4 x) {
+ return _simd_tanh_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_tanh(simd_double4 x) {
+ return simd_make_double4(__tg_tanh(x.lo), __tg_tanh(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_tanh_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_tanh(simd_double8 x) {
+ return _simd_tanh_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_tanh(simd_double8 x) {
+ return simd_make_double8(__tg_tanh(x.lo), __tg_tanh(x.hi));
+}
+#endif
+
+#pragma mark - exp implementation
+static inline SIMD_CFUNC simd_float2 __tg_exp(simd_float2 x) {
+ return simd_make_float2(__tg_exp(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_exp(simd_float3 x) {
+ return simd_make_float3(__tg_exp(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_exp_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_exp(simd_float4 x) {
+ return _simd_exp_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_exp(simd_float4 x) {
+ return simd_make_float4(exp(x.x), exp(x.y), exp(x.z), exp(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_exp_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_exp(simd_float8 x) {
+ return _simd_exp_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_exp(simd_float8 x) {
+ return simd_make_float8(__tg_exp(x.lo), __tg_exp(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_exp_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_exp(simd_float16 x) {
+ return _simd_exp_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_exp(simd_float16 x) {
+ return simd_make_float16(__tg_exp(x.lo), __tg_exp(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_exp_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_exp(simd_double2 x) {
+ return _simd_exp_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_exp(simd_double2 x) {
+ return simd_make_double2(exp(x.x), exp(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_exp(simd_double3 x) {
+ return simd_make_double3(__tg_exp(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_exp_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_exp(simd_double4 x) {
+ return _simd_exp_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_exp(simd_double4 x) {
+ return simd_make_double4(__tg_exp(x.lo), __tg_exp(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_exp_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_exp(simd_double8 x) {
+ return _simd_exp_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_exp(simd_double8 x) {
+ return simd_make_double8(__tg_exp(x.lo), __tg_exp(x.hi));
+}
+#endif
+
+#pragma mark - exp2 implementation
+static inline SIMD_CFUNC simd_float2 __tg_exp2(simd_float2 x) {
+ return simd_make_float2(__tg_exp2(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_exp2(simd_float3 x) {
+ return simd_make_float3(__tg_exp2(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_exp2_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_exp2(simd_float4 x) {
+ return _simd_exp2_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_exp2(simd_float4 x) {
+ return simd_make_float4(exp2(x.x), exp2(x.y), exp2(x.z), exp2(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_exp2_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_exp2(simd_float8 x) {
+ return _simd_exp2_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_exp2(simd_float8 x) {
+ return simd_make_float8(__tg_exp2(x.lo), __tg_exp2(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_exp2_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_exp2(simd_float16 x) {
+ return _simd_exp2_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_exp2(simd_float16 x) {
+ return simd_make_float16(__tg_exp2(x.lo), __tg_exp2(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_exp2_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_exp2(simd_double2 x) {
+ return _simd_exp2_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_exp2(simd_double2 x) {
+ return simd_make_double2(exp2(x.x), exp2(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_exp2(simd_double3 x) {
+ return simd_make_double3(__tg_exp2(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_exp2_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_exp2(simd_double4 x) {
+ return _simd_exp2_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_exp2(simd_double4 x) {
+ return simd_make_double4(__tg_exp2(x.lo), __tg_exp2(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_exp2_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_exp2(simd_double8 x) {
+ return _simd_exp2_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_exp2(simd_double8 x) {
+ return simd_make_double8(__tg_exp2(x.lo), __tg_exp2(x.hi));
+}
+#endif
+
+#pragma mark - exp10 implementation
+#if SIMD_LIBRARY_VERSION >= 1
+static inline SIMD_CFUNC simd_float2 __tg_exp10(simd_float2 x) {
+ return simd_make_float2(__tg_exp10(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_exp10(simd_float3 x) {
+ return simd_make_float3(__tg_exp10(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_exp10_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_exp10(simd_float4 x) {
+ return _simd_exp10_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_exp10(simd_float4 x) {
+ return simd_make_float4(__exp10(x.x), __exp10(x.y), __exp10(x.z), __exp10(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_exp10_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_exp10(simd_float8 x) {
+ return _simd_exp10_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_exp10(simd_float8 x) {
+ return simd_make_float8(__tg_exp10(x.lo), __tg_exp10(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_exp10_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_exp10(simd_float16 x) {
+ return _simd_exp10_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_exp10(simd_float16 x) {
+ return simd_make_float16(__tg_exp10(x.lo), __tg_exp10(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_exp10_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_exp10(simd_double2 x) {
+ return _simd_exp10_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_exp10(simd_double2 x) {
+ return simd_make_double2(__exp10(x.x), __exp10(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_exp10(simd_double3 x) {
+ return simd_make_double3(__tg_exp10(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_exp10_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_exp10(simd_double4 x) {
+ return _simd_exp10_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_exp10(simd_double4 x) {
+ return simd_make_double4(__tg_exp10(x.lo), __tg_exp10(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_exp10_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_exp10(simd_double8 x) {
+ return _simd_exp10_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_exp10(simd_double8 x) {
+ return simd_make_double8(__tg_exp10(x.lo), __tg_exp10(x.hi));
+}
+#endif
+
+#endif /* SIMD_LIBRARY_VERSION */
+#pragma mark - expm1 implementation
+static inline SIMD_CFUNC simd_float2 __tg_expm1(simd_float2 x) {
+ return simd_make_float2(__tg_expm1(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_expm1(simd_float3 x) {
+ return simd_make_float3(__tg_expm1(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_expm1_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_expm1(simd_float4 x) {
+ return _simd_expm1_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_expm1(simd_float4 x) {
+ return simd_make_float4(expm1(x.x), expm1(x.y), expm1(x.z), expm1(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_expm1_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_expm1(simd_float8 x) {
+ return _simd_expm1_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_expm1(simd_float8 x) {
+ return simd_make_float8(__tg_expm1(x.lo), __tg_expm1(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_expm1_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_expm1(simd_float16 x) {
+ return _simd_expm1_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_expm1(simd_float16 x) {
+ return simd_make_float16(__tg_expm1(x.lo), __tg_expm1(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_expm1_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_expm1(simd_double2 x) {
+ return _simd_expm1_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_expm1(simd_double2 x) {
+ return simd_make_double2(expm1(x.x), expm1(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_expm1(simd_double3 x) {
+ return simd_make_double3(__tg_expm1(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_expm1_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_expm1(simd_double4 x) {
+ return _simd_expm1_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_expm1(simd_double4 x) {
+ return simd_make_double4(__tg_expm1(x.lo), __tg_expm1(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_expm1_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_expm1(simd_double8 x) {
+ return _simd_expm1_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_expm1(simd_double8 x) {
+ return simd_make_double8(__tg_expm1(x.lo), __tg_expm1(x.hi));
+}
+#endif
+
+#pragma mark - log implementation
+static inline SIMD_CFUNC simd_float2 __tg_log(simd_float2 x) {
+ return simd_make_float2(__tg_log(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_log(simd_float3 x) {
+ return simd_make_float3(__tg_log(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_log_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_log(simd_float4 x) {
+ return _simd_log_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_log(simd_float4 x) {
+ return simd_make_float4(log(x.x), log(x.y), log(x.z), log(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_log_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_log(simd_float8 x) {
+ return _simd_log_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_log(simd_float8 x) {
+ return simd_make_float8(__tg_log(x.lo), __tg_log(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_log_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_log(simd_float16 x) {
+ return _simd_log_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_log(simd_float16 x) {
+ return simd_make_float16(__tg_log(x.lo), __tg_log(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_log_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_log(simd_double2 x) {
+ return _simd_log_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_log(simd_double2 x) {
+ return simd_make_double2(log(x.x), log(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_log(simd_double3 x) {
+ return simd_make_double3(__tg_log(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_log_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_log(simd_double4 x) {
+ return _simd_log_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_log(simd_double4 x) {
+ return simd_make_double4(__tg_log(x.lo), __tg_log(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_log_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_log(simd_double8 x) {
+ return _simd_log_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_log(simd_double8 x) {
+ return simd_make_double8(__tg_log(x.lo), __tg_log(x.hi));
+}
+#endif
+
+#pragma mark - log2 implementation
+static inline SIMD_CFUNC simd_float2 __tg_log2(simd_float2 x) {
+ return simd_make_float2(__tg_log2(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_log2(simd_float3 x) {
+ return simd_make_float3(__tg_log2(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_log2_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_log2(simd_float4 x) {
+ return _simd_log2_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_log2(simd_float4 x) {
+ return simd_make_float4(log2(x.x), log2(x.y), log2(x.z), log2(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_log2_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_log2(simd_float8 x) {
+ return _simd_log2_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_log2(simd_float8 x) {
+ return simd_make_float8(__tg_log2(x.lo), __tg_log2(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_log2_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_log2(simd_float16 x) {
+ return _simd_log2_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_log2(simd_float16 x) {
+ return simd_make_float16(__tg_log2(x.lo), __tg_log2(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_log2_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_log2(simd_double2 x) {
+ return _simd_log2_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_log2(simd_double2 x) {
+ return simd_make_double2(log2(x.x), log2(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_log2(simd_double3 x) {
+ return simd_make_double3(__tg_log2(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_log2_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_log2(simd_double4 x) {
+ return _simd_log2_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_log2(simd_double4 x) {
+ return simd_make_double4(__tg_log2(x.lo), __tg_log2(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_log2_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_log2(simd_double8 x) {
+ return _simd_log2_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_log2(simd_double8 x) {
+ return simd_make_double8(__tg_log2(x.lo), __tg_log2(x.hi));
+}
+#endif
+
+#pragma mark - log10 implementation
+static inline SIMD_CFUNC simd_float2 __tg_log10(simd_float2 x) {
+ return simd_make_float2(__tg_log10(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_log10(simd_float3 x) {
+ return simd_make_float3(__tg_log10(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_log10_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_log10(simd_float4 x) {
+ return _simd_log10_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_log10(simd_float4 x) {
+ return simd_make_float4(log10(x.x), log10(x.y), log10(x.z), log10(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_log10_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_log10(simd_float8 x) {
+ return _simd_log10_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_log10(simd_float8 x) {
+ return simd_make_float8(__tg_log10(x.lo), __tg_log10(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_log10_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_log10(simd_float16 x) {
+ return _simd_log10_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_log10(simd_float16 x) {
+ return simd_make_float16(__tg_log10(x.lo), __tg_log10(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_log10_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_log10(simd_double2 x) {
+ return _simd_log10_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_log10(simd_double2 x) {
+ return simd_make_double2(log10(x.x), log10(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_log10(simd_double3 x) {
+ return simd_make_double3(__tg_log10(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_log10_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_log10(simd_double4 x) {
+ return _simd_log10_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_log10(simd_double4 x) {
+ return simd_make_double4(__tg_log10(x.lo), __tg_log10(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_log10_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_log10(simd_double8 x) {
+ return _simd_log10_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_log10(simd_double8 x) {
+ return simd_make_double8(__tg_log10(x.lo), __tg_log10(x.hi));
+}
+#endif
+
+#pragma mark - log1p implementation
+static inline SIMD_CFUNC simd_float2 __tg_log1p(simd_float2 x) {
+ return simd_make_float2(__tg_log1p(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_log1p(simd_float3 x) {
+ return simd_make_float3(__tg_log1p(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_log1p_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_log1p(simd_float4 x) {
+ return _simd_log1p_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_log1p(simd_float4 x) {
+ return simd_make_float4(log1p(x.x), log1p(x.y), log1p(x.z), log1p(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_log1p_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_log1p(simd_float8 x) {
+ return _simd_log1p_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_log1p(simd_float8 x) {
+ return simd_make_float8(__tg_log1p(x.lo), __tg_log1p(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_log1p_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_log1p(simd_float16 x) {
+ return _simd_log1p_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_log1p(simd_float16 x) {
+ return simd_make_float16(__tg_log1p(x.lo), __tg_log1p(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_log1p_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_log1p(simd_double2 x) {
+ return _simd_log1p_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_log1p(simd_double2 x) {
+ return simd_make_double2(log1p(x.x), log1p(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_log1p(simd_double3 x) {
+ return simd_make_double3(__tg_log1p(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_log1p_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_log1p(simd_double4 x) {
+ return _simd_log1p_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_log1p(simd_double4 x) {
+ return simd_make_double4(__tg_log1p(x.lo), __tg_log1p(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_log1p_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_log1p(simd_double8 x) {
+ return _simd_log1p_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_log1p(simd_double8 x) {
+ return simd_make_double8(__tg_log1p(x.lo), __tg_log1p(x.hi));
+}
+#endif
+
+#pragma mark - cbrt implementation
+static inline SIMD_CFUNC simd_float2 __tg_cbrt(simd_float2 x) {
+ return simd_make_float2(__tg_cbrt(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_cbrt(simd_float3 x) {
+ return simd_make_float3(__tg_cbrt(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_cbrt_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_cbrt(simd_float4 x) {
+ return _simd_cbrt_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_cbrt(simd_float4 x) {
+ return simd_make_float4(cbrt(x.x), cbrt(x.y), cbrt(x.z), cbrt(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_cbrt_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_cbrt(simd_float8 x) {
+ return _simd_cbrt_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_cbrt(simd_float8 x) {
+ return simd_make_float8(__tg_cbrt(x.lo), __tg_cbrt(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_cbrt_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_cbrt(simd_float16 x) {
+ return _simd_cbrt_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_cbrt(simd_float16 x) {
+ return simd_make_float16(__tg_cbrt(x.lo), __tg_cbrt(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_cbrt_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_cbrt(simd_double2 x) {
+ return _simd_cbrt_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_cbrt(simd_double2 x) {
+ return simd_make_double2(cbrt(x.x), cbrt(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_cbrt(simd_double3 x) {
+ return simd_make_double3(__tg_cbrt(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_cbrt_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_cbrt(simd_double4 x) {
+ return _simd_cbrt_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_cbrt(simd_double4 x) {
+ return simd_make_double4(__tg_cbrt(x.lo), __tg_cbrt(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_cbrt_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_cbrt(simd_double8 x) {
+ return _simd_cbrt_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_cbrt(simd_double8 x) {
+ return simd_make_double8(__tg_cbrt(x.lo), __tg_cbrt(x.hi));
+}
+#endif
+
+#pragma mark - erf implementation
+static inline SIMD_CFUNC simd_float2 __tg_erf(simd_float2 x) {
+ return simd_make_float2(__tg_erf(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_erf(simd_float3 x) {
+ return simd_make_float3(__tg_erf(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_erf_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_erf(simd_float4 x) {
+ return _simd_erf_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_erf(simd_float4 x) {
+ return simd_make_float4(erf(x.x), erf(x.y), erf(x.z), erf(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_erf_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_erf(simd_float8 x) {
+ return _simd_erf_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_erf(simd_float8 x) {
+ return simd_make_float8(__tg_erf(x.lo), __tg_erf(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_erf_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_erf(simd_float16 x) {
+ return _simd_erf_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_erf(simd_float16 x) {
+ return simd_make_float16(__tg_erf(x.lo), __tg_erf(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_erf_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_erf(simd_double2 x) {
+ return _simd_erf_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_erf(simd_double2 x) {
+ return simd_make_double2(erf(x.x), erf(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_erf(simd_double3 x) {
+ return simd_make_double3(__tg_erf(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_erf_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_erf(simd_double4 x) {
+ return _simd_erf_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_erf(simd_double4 x) {
+ return simd_make_double4(__tg_erf(x.lo), __tg_erf(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_erf_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_erf(simd_double8 x) {
+ return _simd_erf_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_erf(simd_double8 x) {
+ return simd_make_double8(__tg_erf(x.lo), __tg_erf(x.hi));
+}
+#endif
+
+#pragma mark - erfc implementation
+static inline SIMD_CFUNC simd_float2 __tg_erfc(simd_float2 x) {
+ return simd_make_float2(__tg_erfc(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_erfc(simd_float3 x) {
+ return simd_make_float3(__tg_erfc(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_erfc_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_erfc(simd_float4 x) {
+ return _simd_erfc_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_erfc(simd_float4 x) {
+ return simd_make_float4(erfc(x.x), erfc(x.y), erfc(x.z), erfc(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_erfc_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_erfc(simd_float8 x) {
+ return _simd_erfc_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_erfc(simd_float8 x) {
+ return simd_make_float8(__tg_erfc(x.lo), __tg_erfc(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_erfc_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_erfc(simd_float16 x) {
+ return _simd_erfc_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_erfc(simd_float16 x) {
+ return simd_make_float16(__tg_erfc(x.lo), __tg_erfc(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_erfc_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_erfc(simd_double2 x) {
+ return _simd_erfc_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_erfc(simd_double2 x) {
+ return simd_make_double2(erfc(x.x), erfc(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_erfc(simd_double3 x) {
+ return simd_make_double3(__tg_erfc(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_erfc_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_erfc(simd_double4 x) {
+ return _simd_erfc_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_erfc(simd_double4 x) {
+ return simd_make_double4(__tg_erfc(x.lo), __tg_erfc(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_erfc_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_erfc(simd_double8 x) {
+ return _simd_erfc_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_erfc(simd_double8 x) {
+ return simd_make_double8(__tg_erfc(x.lo), __tg_erfc(x.hi));
+}
+#endif
+
+#pragma mark - tgamma implementation
+static inline SIMD_CFUNC simd_float2 __tg_tgamma(simd_float2 x) {
+ return simd_make_float2(__tg_tgamma(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_tgamma(simd_float3 x) {
+ return simd_make_float3(__tg_tgamma(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_tgamma_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_tgamma(simd_float4 x) {
+ return _simd_tgamma_f4(x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_tgamma(simd_float4 x) {
+ return simd_make_float4(tgamma(x.x), tgamma(x.y), tgamma(x.z), tgamma(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_tgamma_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_tgamma(simd_float8 x) {
+ return _simd_tgamma_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_tgamma(simd_float8 x) {
+ return simd_make_float8(__tg_tgamma(x.lo), __tg_tgamma(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_tgamma_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_tgamma(simd_float16 x) {
+ return _simd_tgamma_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_tgamma(simd_float16 x) {
+ return simd_make_float16(__tg_tgamma(x.lo), __tg_tgamma(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_tgamma_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_tgamma(simd_double2 x) {
+ return _simd_tgamma_d2(x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_tgamma(simd_double2 x) {
+ return simd_make_double2(tgamma(x.x), tgamma(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_tgamma(simd_double3 x) {
+ return simd_make_double3(__tg_tgamma(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_tgamma_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_tgamma(simd_double4 x) {
+ return _simd_tgamma_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_tgamma(simd_double4 x) {
+ return simd_make_double4(__tg_tgamma(x.lo), __tg_tgamma(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_tgamma_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_tgamma(simd_double8 x) {
+ return _simd_tgamma_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_tgamma(simd_double8 x) {
+ return simd_make_double8(__tg_tgamma(x.lo), __tg_tgamma(x.hi));
+}
+#endif
+
+#pragma mark - round implementation
+static inline SIMD_CFUNC simd_float2 __tg_round(simd_float2 x) {
+ return simd_make_float2(__tg_round(simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_round(simd_float3 x) {
+ return simd_make_float3(__tg_round(simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_round_f4(simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_round(simd_float4 x) {
+#if defined __arm64__
+ return vrndaq_f32(x);
+#else
+ return _simd_round_f4(x);
+#endif
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_round(simd_float4 x) {
+ return simd_make_float4(round(x.x), round(x.y), round(x.z), round(x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_round_f8(simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_round(simd_float8 x) {
+ return _simd_round_f8(x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_round(simd_float8 x) {
+ return simd_make_float8(__tg_round(x.lo), __tg_round(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_round_f16(simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_round(simd_float16 x) {
+ return _simd_round_f16(x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_round(simd_float16 x) {
+ return simd_make_float16(__tg_round(x.lo), __tg_round(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_round_d2(simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_round(simd_double2 x) {
+#if defined __arm64__
+ return vrndaq_f64(x);
+#else
+ return _simd_round_d2(x);
+#endif
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_round(simd_double2 x) {
+ return simd_make_double2(round(x.x), round(x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_round(simd_double3 x) {
+ return simd_make_double3(__tg_round(simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_round_d4(simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_round(simd_double4 x) {
+ return _simd_round_d4(x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_round(simd_double4 x) {
+ return simd_make_double4(__tg_round(x.lo), __tg_round(x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_round_d8(simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_round(simd_double8 x) {
+ return _simd_round_d8(x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_round(simd_double8 x) {
+ return simd_make_double8(__tg_round(x.lo), __tg_round(x.hi));
+}
+#endif
+
+#pragma mark - atan2 implementation
+static inline SIMD_CFUNC simd_float2 __tg_atan2(simd_float2 y, simd_float2 x) {
+ return simd_make_float2(__tg_atan2(simd_make_float4(y), simd_make_float4(x)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_atan2(simd_float3 y, simd_float3 x) {
+ return simd_make_float3(__tg_atan2(simd_make_float4(y), simd_make_float4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_atan2_f4(simd_float4 y, simd_float4 x);
+static inline SIMD_CFUNC simd_float4 __tg_atan2(simd_float4 y, simd_float4 x) {
+ return _simd_atan2_f4(y, x);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_atan2(simd_float4 y, simd_float4 x) {
+ return simd_make_float4(atan2(y.x, x.x), atan2(y.y, x.y), atan2(y.z, x.z), atan2(y.w, x.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_atan2_f8(simd_float8 y, simd_float8 x);
+static inline SIMD_CFUNC simd_float8 __tg_atan2(simd_float8 y, simd_float8 x) {
+ return _simd_atan2_f8(y, x);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_atan2(simd_float8 y, simd_float8 x) {
+ return simd_make_float8(__tg_atan2(y.lo, x.lo), __tg_atan2(y.hi, x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_atan2_f16(simd_float16 y, simd_float16 x);
+static inline SIMD_CFUNC simd_float16 __tg_atan2(simd_float16 y, simd_float16 x) {
+ return _simd_atan2_f16(y, x);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_atan2(simd_float16 y, simd_float16 x) {
+ return simd_make_float16(__tg_atan2(y.lo, x.lo), __tg_atan2(y.hi, x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_atan2_d2(simd_double2 y, simd_double2 x);
+static inline SIMD_CFUNC simd_double2 __tg_atan2(simd_double2 y, simd_double2 x) {
+ return _simd_atan2_d2(y, x);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_atan2(simd_double2 y, simd_double2 x) {
+ return simd_make_double2(atan2(y.x, x.x), atan2(y.y, x.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_atan2(simd_double3 y, simd_double3 x) {
+ return simd_make_double3(__tg_atan2(simd_make_double4(y), simd_make_double4(x)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_atan2_d4(simd_double4 y, simd_double4 x);
+static inline SIMD_CFUNC simd_double4 __tg_atan2(simd_double4 y, simd_double4 x) {
+ return _simd_atan2_d4(y, x);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_atan2(simd_double4 y, simd_double4 x) {
+ return simd_make_double4(__tg_atan2(y.lo, x.lo), __tg_atan2(y.hi, x.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_atan2_d8(simd_double8 y, simd_double8 x);
+static inline SIMD_CFUNC simd_double8 __tg_atan2(simd_double8 y, simd_double8 x) {
+ return _simd_atan2_d8(y, x);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_atan2(simd_double8 y, simd_double8 x) {
+ return simd_make_double8(__tg_atan2(y.lo, x.lo), __tg_atan2(y.hi, x.hi));
+}
+#endif
+
+#pragma mark - hypot implementation
+static inline SIMD_CFUNC simd_float2 __tg_hypot(simd_float2 x, simd_float2 y) {
+ return simd_make_float2(__tg_hypot(simd_make_float4(x), simd_make_float4(y)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_hypot(simd_float3 x, simd_float3 y) {
+ return simd_make_float3(__tg_hypot(simd_make_float4(x), simd_make_float4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_hypot_f4(simd_float4 x, simd_float4 y);
+static inline SIMD_CFUNC simd_float4 __tg_hypot(simd_float4 x, simd_float4 y) {
+ return _simd_hypot_f4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_hypot(simd_float4 x, simd_float4 y) {
+ return simd_make_float4(hypot(x.x, y.x), hypot(x.y, y.y), hypot(x.z, y.z), hypot(x.w, y.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_hypot_f8(simd_float8 x, simd_float8 y);
+static inline SIMD_CFUNC simd_float8 __tg_hypot(simd_float8 x, simd_float8 y) {
+ return _simd_hypot_f8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_hypot(simd_float8 x, simd_float8 y) {
+ return simd_make_float8(__tg_hypot(x.lo, y.lo), __tg_hypot(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_hypot_f16(simd_float16 x, simd_float16 y);
+static inline SIMD_CFUNC simd_float16 __tg_hypot(simd_float16 x, simd_float16 y) {
+ return _simd_hypot_f16(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_hypot(simd_float16 x, simd_float16 y) {
+ return simd_make_float16(__tg_hypot(x.lo, y.lo), __tg_hypot(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_hypot_d2(simd_double2 x, simd_double2 y);
+static inline SIMD_CFUNC simd_double2 __tg_hypot(simd_double2 x, simd_double2 y) {
+ return _simd_hypot_d2(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_hypot(simd_double2 x, simd_double2 y) {
+ return simd_make_double2(hypot(x.x, y.x), hypot(x.y, y.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_hypot(simd_double3 x, simd_double3 y) {
+ return simd_make_double3(__tg_hypot(simd_make_double4(x), simd_make_double4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_hypot_d4(simd_double4 x, simd_double4 y);
+static inline SIMD_CFUNC simd_double4 __tg_hypot(simd_double4 x, simd_double4 y) {
+ return _simd_hypot_d4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_hypot(simd_double4 x, simd_double4 y) {
+ return simd_make_double4(__tg_hypot(x.lo, y.lo), __tg_hypot(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_hypot_d8(simd_double8 x, simd_double8 y);
+static inline SIMD_CFUNC simd_double8 __tg_hypot(simd_double8 x, simd_double8 y) {
+ return _simd_hypot_d8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_hypot(simd_double8 x, simd_double8 y) {
+ return simd_make_double8(__tg_hypot(x.lo, y.lo), __tg_hypot(x.hi, y.hi));
+}
+#endif
+
+#pragma mark - pow implementation
+static inline SIMD_CFUNC simd_float2 __tg_pow(simd_float2 x, simd_float2 y) {
+ return simd_make_float2(__tg_pow(simd_make_float4(x), simd_make_float4(y)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_pow(simd_float3 x, simd_float3 y) {
+ return simd_make_float3(__tg_pow(simd_make_float4(x), simd_make_float4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_pow_f4(simd_float4 x, simd_float4 y);
+static inline SIMD_CFUNC simd_float4 __tg_pow(simd_float4 x, simd_float4 y) {
+ return _simd_pow_f4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_pow(simd_float4 x, simd_float4 y) {
+ return simd_make_float4(pow(x.x, y.x), pow(x.y, y.y), pow(x.z, y.z), pow(x.w, y.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_pow_f8(simd_float8 x, simd_float8 y);
+static inline SIMD_CFUNC simd_float8 __tg_pow(simd_float8 x, simd_float8 y) {
+ return _simd_pow_f8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_pow(simd_float8 x, simd_float8 y) {
+ return simd_make_float8(__tg_pow(x.lo, y.lo), __tg_pow(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_pow_f16(simd_float16 x, simd_float16 y);
+static inline SIMD_CFUNC simd_float16 __tg_pow(simd_float16 x, simd_float16 y) {
+ return _simd_pow_f16(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_pow(simd_float16 x, simd_float16 y) {
+ return simd_make_float16(__tg_pow(x.lo, y.lo), __tg_pow(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_pow_d2(simd_double2 x, simd_double2 y);
+static inline SIMD_CFUNC simd_double2 __tg_pow(simd_double2 x, simd_double2 y) {
+ return _simd_pow_d2(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_pow(simd_double2 x, simd_double2 y) {
+ return simd_make_double2(pow(x.x, y.x), pow(x.y, y.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_pow(simd_double3 x, simd_double3 y) {
+ return simd_make_double3(__tg_pow(simd_make_double4(x), simd_make_double4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_pow_d4(simd_double4 x, simd_double4 y);
+static inline SIMD_CFUNC simd_double4 __tg_pow(simd_double4 x, simd_double4 y) {
+ return _simd_pow_d4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_pow(simd_double4 x, simd_double4 y) {
+ return simd_make_double4(__tg_pow(x.lo, y.lo), __tg_pow(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_pow_d8(simd_double8 x, simd_double8 y);
+static inline SIMD_CFUNC simd_double8 __tg_pow(simd_double8 x, simd_double8 y) {
+ return _simd_pow_d8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_pow(simd_double8 x, simd_double8 y) {
+ return simd_make_double8(__tg_pow(x.lo, y.lo), __tg_pow(x.hi, y.hi));
+}
+#endif
+
+#pragma mark - fmod implementation
+static inline SIMD_CFUNC simd_float2 __tg_fmod(simd_float2 x, simd_float2 y) {
+ return simd_make_float2(__tg_fmod(simd_make_float4(x), simd_make_float4(y)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_fmod(simd_float3 x, simd_float3 y) {
+ return simd_make_float3(__tg_fmod(simd_make_float4(x), simd_make_float4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_fmod_f4(simd_float4 x, simd_float4 y);
+static inline SIMD_CFUNC simd_float4 __tg_fmod(simd_float4 x, simd_float4 y) {
+ return _simd_fmod_f4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_fmod(simd_float4 x, simd_float4 y) {
+ return simd_make_float4(fmod(x.x, y.x), fmod(x.y, y.y), fmod(x.z, y.z), fmod(x.w, y.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_fmod_f8(simd_float8 x, simd_float8 y);
+static inline SIMD_CFUNC simd_float8 __tg_fmod(simd_float8 x, simd_float8 y) {
+ return _simd_fmod_f8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_fmod(simd_float8 x, simd_float8 y) {
+ return simd_make_float8(__tg_fmod(x.lo, y.lo), __tg_fmod(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_fmod_f16(simd_float16 x, simd_float16 y);
+static inline SIMD_CFUNC simd_float16 __tg_fmod(simd_float16 x, simd_float16 y) {
+ return _simd_fmod_f16(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_fmod(simd_float16 x, simd_float16 y) {
+ return simd_make_float16(__tg_fmod(x.lo, y.lo), __tg_fmod(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_fmod_d2(simd_double2 x, simd_double2 y);
+static inline SIMD_CFUNC simd_double2 __tg_fmod(simd_double2 x, simd_double2 y) {
+ return _simd_fmod_d2(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_fmod(simd_double2 x, simd_double2 y) {
+ return simd_make_double2(fmod(x.x, y.x), fmod(x.y, y.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_fmod(simd_double3 x, simd_double3 y) {
+ return simd_make_double3(__tg_fmod(simd_make_double4(x), simd_make_double4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_fmod_d4(simd_double4 x, simd_double4 y);
+static inline SIMD_CFUNC simd_double4 __tg_fmod(simd_double4 x, simd_double4 y) {
+ return _simd_fmod_d4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_fmod(simd_double4 x, simd_double4 y) {
+ return simd_make_double4(__tg_fmod(x.lo, y.lo), __tg_fmod(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_fmod_d8(simd_double8 x, simd_double8 y);
+static inline SIMD_CFUNC simd_double8 __tg_fmod(simd_double8 x, simd_double8 y) {
+ return _simd_fmod_d8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_fmod(simd_double8 x, simd_double8 y) {
+ return simd_make_double8(__tg_fmod(x.lo, y.lo), __tg_fmod(x.hi, y.hi));
+}
+#endif
+
+#pragma mark - remainder implementation
+static inline SIMD_CFUNC simd_float2 __tg_remainder(simd_float2 x, simd_float2 y) {
+ return simd_make_float2(__tg_remainder(simd_make_float4(x), simd_make_float4(y)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_remainder(simd_float3 x, simd_float3 y) {
+ return simd_make_float3(__tg_remainder(simd_make_float4(x), simd_make_float4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_remainder_f4(simd_float4 x, simd_float4 y);
+static inline SIMD_CFUNC simd_float4 __tg_remainder(simd_float4 x, simd_float4 y) {
+ return _simd_remainder_f4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_remainder(simd_float4 x, simd_float4 y) {
+ return simd_make_float4(remainder(x.x, y.x), remainder(x.y, y.y), remainder(x.z, y.z), remainder(x.w, y.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_remainder_f8(simd_float8 x, simd_float8 y);
+static inline SIMD_CFUNC simd_float8 __tg_remainder(simd_float8 x, simd_float8 y) {
+ return _simd_remainder_f8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_remainder(simd_float8 x, simd_float8 y) {
+ return simd_make_float8(__tg_remainder(x.lo, y.lo), __tg_remainder(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_remainder_f16(simd_float16 x, simd_float16 y);
+static inline SIMD_CFUNC simd_float16 __tg_remainder(simd_float16 x, simd_float16 y) {
+ return _simd_remainder_f16(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_remainder(simd_float16 x, simd_float16 y) {
+ return simd_make_float16(__tg_remainder(x.lo, y.lo), __tg_remainder(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_remainder_d2(simd_double2 x, simd_double2 y);
+static inline SIMD_CFUNC simd_double2 __tg_remainder(simd_double2 x, simd_double2 y) {
+ return _simd_remainder_d2(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_remainder(simd_double2 x, simd_double2 y) {
+ return simd_make_double2(remainder(x.x, y.x), remainder(x.y, y.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_remainder(simd_double3 x, simd_double3 y) {
+ return simd_make_double3(__tg_remainder(simd_make_double4(x), simd_make_double4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_remainder_d4(simd_double4 x, simd_double4 y);
+static inline SIMD_CFUNC simd_double4 __tg_remainder(simd_double4 x, simd_double4 y) {
+ return _simd_remainder_d4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_remainder(simd_double4 x, simd_double4 y) {
+ return simd_make_double4(__tg_remainder(x.lo, y.lo), __tg_remainder(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_remainder_d8(simd_double8 x, simd_double8 y);
+static inline SIMD_CFUNC simd_double8 __tg_remainder(simd_double8 x, simd_double8 y) {
+ return _simd_remainder_d8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_remainder(simd_double8 x, simd_double8 y) {
+ return simd_make_double8(__tg_remainder(x.lo, y.lo), __tg_remainder(x.hi, y.hi));
+}
+#endif
+
+#pragma mark - nextafter implementation
+static inline SIMD_CFUNC simd_float2 __tg_nextafter(simd_float2 x, simd_float2 y) {
+ return simd_make_float2(__tg_nextafter(simd_make_float4(x), simd_make_float4(y)));
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_nextafter(simd_float3 x, simd_float3 y) {
+ return simd_make_float3(__tg_nextafter(simd_make_float4(x), simd_make_float4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_nextafter_f4(simd_float4 x, simd_float4 y);
+static inline SIMD_CFUNC simd_float4 __tg_nextafter(simd_float4 x, simd_float4 y) {
+ return _simd_nextafter_f4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float4 __tg_nextafter(simd_float4 x, simd_float4 y) {
+ return simd_make_float4(nextafter(x.x, y.x), nextafter(x.y, y.y), nextafter(x.z, y.z), nextafter(x.w, y.w));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_float8 _simd_nextafter_f8(simd_float8 x, simd_float8 y);
+static inline SIMD_CFUNC simd_float8 __tg_nextafter(simd_float8 x, simd_float8 y) {
+ return _simd_nextafter_f8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float8 __tg_nextafter(simd_float8 x, simd_float8 y) {
+ return simd_make_float8(__tg_nextafter(x.lo, y.lo), __tg_nextafter(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_float16 _simd_nextafter_f16(simd_float16 x, simd_float16 y);
+static inline SIMD_CFUNC simd_float16 __tg_nextafter(simd_float16 x, simd_float16 y) {
+ return _simd_nextafter_f16(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_float16 __tg_nextafter(simd_float16 x, simd_float16 y) {
+ return simd_make_float16(__tg_nextafter(x.lo, y.lo), __tg_nextafter(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_nextafter_d2(simd_double2 x, simd_double2 y);
+static inline SIMD_CFUNC simd_double2 __tg_nextafter(simd_double2 x, simd_double2 y) {
+ return _simd_nextafter_d2(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double2 __tg_nextafter(simd_double2 x, simd_double2 y) {
+ return simd_make_double2(nextafter(x.x, y.x), nextafter(x.y, y.y));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 __tg_nextafter(simd_double3 x, simd_double3 y) {
+ return simd_make_double3(__tg_nextafter(simd_make_double4(x), simd_make_double4(y)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX2__
+extern simd_double4 _simd_nextafter_d4(simd_double4 x, simd_double4 y);
+static inline SIMD_CFUNC simd_double4 __tg_nextafter(simd_double4 x, simd_double4 y) {
+ return _simd_nextafter_d4(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double4 __tg_nextafter(simd_double4 x, simd_double4 y) {
+ return simd_make_double4(__tg_nextafter(x.lo, y.lo), __tg_nextafter(x.hi, y.hi));
+}
+#endif
+
+#if SIMD_LIBRARY_VERSION >= 3 && defined __x86_64__ && defined __AVX512F__
+extern simd_double8 _simd_nextafter_d8(simd_double8 x, simd_double8 y);
+static inline SIMD_CFUNC simd_double8 __tg_nextafter(simd_double8 x, simd_double8 y) {
+ return _simd_nextafter_d8(x, y);
+}
+#else
+static inline SIMD_CFUNC simd_double8 __tg_nextafter(simd_double8 x, simd_double8 y) {
+ return simd_make_double8(__tg_nextafter(x.lo, y.lo), __tg_nextafter(x.hi, y.hi));
+}
+#endif
+
+static inline SIMD_CFUNC simd_float2 __tg_fdim(simd_float2 x, simd_float2 y) { return simd_bitselect(x-y, 0, x<y); }
+static inline SIMD_CFUNC simd_float3 __tg_fdim(simd_float3 x, simd_float3 y) { return simd_bitselect(x-y, 0, x<y); }
+static inline SIMD_CFUNC simd_float4 __tg_fdim(simd_float4 x, simd_float4 y) { return simd_bitselect(x-y, 0, x<y); }
+static inline SIMD_CFUNC simd_float8 __tg_fdim(simd_float8 x, simd_float8 y) { return simd_bitselect(x-y, 0, x<y); }
+static inline SIMD_CFUNC simd_float16 __tg_fdim(simd_float16 x, simd_float16 y) { return simd_bitselect(x-y, 0, x<y); }
+static inline SIMD_CFUNC simd_double2 __tg_fdim(simd_double2 x, simd_double2 y) { return simd_bitselect(x-y, 0, x<y); }
+static inline SIMD_CFUNC simd_double3 __tg_fdim(simd_double3 x, simd_double3 y) { return simd_bitselect(x-y, 0, x<y); }
+static inline SIMD_CFUNC simd_double4 __tg_fdim(simd_double4 x, simd_double4 y) { return simd_bitselect(x-y, 0, x<y); }
+static inline SIMD_CFUNC simd_double8 __tg_fdim(simd_double8 x, simd_double8 y) { return simd_bitselect(x-y, 0, x<y); }
+
+static inline SIMD_CFUNC simd_float2 __tg_fma(simd_float2 x, simd_float2 y, simd_float2 z) {
+#if defined __arm64__ || defined __ARM_VFPV4__
+ return vfma_f32(z, x, y);
+#else
+ return simd_make_float2(__tg_fma(simd_make_float4_undef(x), simd_make_float4_undef(y), simd_make_float4_undef(z)));
+#endif
+}
+
+static inline SIMD_CFUNC simd_float3 __tg_fma(simd_float3 x, simd_float3 y, simd_float3 z) {
+ return simd_make_float3(__tg_fma(simd_make_float4(x), simd_make_float4(y), simd_make_float4(z)));
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_float4 _simd_fma_f4(simd_float4 x, simd_float4 y, simd_float4 z);
+#endif
+static inline SIMD_CFUNC simd_float4 __tg_fma(simd_float4 x, simd_float4 y, simd_float4 z) {
+#if defined __arm64__ || defined __ARM_VFPV4__
+ return vfmaq_f32(z, x, y);
+#elif (defined __i386__ || defined __x86_64__) && defined __FMA__
+ return _mm_fmadd_ps(x, y, z);
+#elif SIMD_LIBRARY_VERSION >= 3
+ return _simd_fma_f4(x, y, z);
+#else
+ return simd_make_float4(fma(x.x, y.x, z.x), fma(x.y, y.y, z.y), fma(x.z, y.z, z.z), fma(x.w, y.w, z.w));
+#endif
+}
+
+static inline SIMD_CFUNC simd_float8 __tg_fma(simd_float8 x, simd_float8 y, simd_float8 z) {
+#if (defined __i386__ || defined __x86_64__) && defined __FMA__
+ return _mm256_fmadd_ps(x, y, z);
+#else
+ return simd_make_float8(__tg_fma(x.lo, y.lo, z.lo), __tg_fma(x.hi, y.hi, z.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_float16 __tg_fma(simd_float16 x, simd_float16 y, simd_float16 z) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_fmadd_ps(x, y, z);
+#else
+ return simd_make_float16(__tg_fma(x.lo, y.lo, z.lo), __tg_fma(x.hi, y.hi, z.hi));
+#endif
+}
+
+#if SIMD_LIBRARY_VERSION >= 3
+extern simd_double2 _simd_fma_d2(simd_double2 x, simd_double2 y, simd_double2 z);
+#endif
+static inline SIMD_CFUNC simd_double2 __tg_fma(simd_double2 x, simd_double2 y, simd_double2 z) {
+#if defined __arm64__
+ return vfmaq_f64(z, x, y);
+#elif (defined __i386__ || defined __x86_64__) && defined __FMA__
+ return _mm_fmadd_pd(x, y, z);
+#elif SIMD_LIBRARY_VERSION >= 3
+ return _simd_fma_d2(x, y, z);
+#else
+ return simd_make_double2(fma(x.x, y.x, z.x), fma(x.y, y.y, z.y));
+#endif
+}
+
+static inline SIMD_CFUNC simd_double3 __tg_fma(simd_double3 x, simd_double3 y, simd_double3 z) {
+ return simd_make_double3(__tg_fma(simd_make_double4(x), simd_make_double4(y), simd_make_double4(z)));
+}
+
+static inline SIMD_CFUNC simd_double4 __tg_fma(simd_double4 x, simd_double4 y, simd_double4 z) {
+#if (defined __i386__ || defined __x86_64__) && defined __FMA__
+ return _mm256_fmadd_pd(x, y, z);
+#else
+ return simd_make_double4(__tg_fma(x.lo, y.lo, z.lo), __tg_fma(x.hi, y.hi, z.hi));
+#endif
+}
+
+static inline SIMD_CFUNC simd_double8 __tg_fma(simd_double8 x, simd_double8 y, simd_double8 z) {
+#if defined __x86_64__ && defined __AVX512F__
+ return _mm512_fmadd_pd(x, y, z);
+#else
+ return simd_make_double8(__tg_fma(x.lo, y.lo, z.lo), __tg_fma(x.hi, y.hi, z.hi));
+#endif
+}
+
+static inline SIMD_CFUNC float simd_muladd(float x, float y, float z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_float2 simd_muladd(simd_float2 x, simd_float2 y, simd_float2 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_float3 simd_muladd(simd_float3 x, simd_float3 y, simd_float3 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_float4 simd_muladd(simd_float4 x, simd_float4 y, simd_float4 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_float8 simd_muladd(simd_float8 x, simd_float8 y, simd_float8 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_float16 simd_muladd(simd_float16 x, simd_float16 y, simd_float16 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC double simd_muladd(double x, double y, double z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_double2 simd_muladd(simd_double2 x, simd_double2 y, simd_double2 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_double3 simd_muladd(simd_double3 x, simd_double3 y, simd_double3 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_double4 simd_muladd(simd_double4 x, simd_double4 y, simd_double4 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+static inline SIMD_CFUNC simd_double8 simd_muladd(simd_double8 x, simd_double8 y, simd_double8 z) {
+#pragma STDC FP_CONTRACT ON
+ return x*y + z;
+}
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
+#endif /* SIMD_MATH_HEADER */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/simd/packed.h b/lib/libc/include/aarch64-macos-gnu/simd/packed.h
new file mode 100644
index 0000000000..ddbd861090
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/simd/packed.h
@@ -0,0 +1,1031 @@
+/*! @header
+ * This header defines fixed size vector types with relaxed alignment. For
+ * each vector type defined by <simd/vector_types.h> that is not a 1- or 3-
+ * element vector, there is a corresponding type defined by this header that
+ * requires only the alignment matching that of the underlying scalar type.
+ *
+ * These types should be used to access buffers that may not be sufficiently
+ * aligned to allow them to be accessed using the "normal" simd vector types.
+ * As an example of this usage, suppose that you want to load a vector of
+ * four floats from an array of floats. The type simd_float4 has sixteen byte
+ * alignment, whereas an array of floats has only four byte alignment.
+ * Thus, naively casting a pointer into the array to (simd_float4 *) would
+ * invoke undefined behavior, and likely produce an alignment fault at
+ * runtime. Instead, use the corresponding packed type to load from the array:
+ *
+ * <pre>
+ * @textblock
+ * simd_float4 vector = *(packed_simd_float4 *)&array[i];
+ * // do something with vector ...
+ * @/textblock
+ * </pre>
+ *
+ * It's important to note that the packed_ types are only needed to work with
+ * memory; once the data is loaded, we simply operate on it as usual using
+ * the simd_float4 type, as illustrated above.
+ *
+ * @copyright 2014-2017 Apple, Inc. All rights reserved.
+ * @unsorted */
+
+#ifndef SIMD_PACKED_TYPES
+#define SIMD_PACKED_TYPES
+
+# include <simd/vector_types.h>
+# if SIMD_COMPILER_HAS_REQUIRED_FEATURES
+/*! @abstract A vector of two 8-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::char2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(2),__aligned__(1))) char simd_packed_char2;
+
+/*! @abstract A vector of four 8-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::char4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(4),__aligned__(1))) char simd_packed_char4;
+
+/*! @abstract A vector of eight 8-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ this type is also available as simd::packed::char8.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(8),__aligned__(1))) char simd_packed_char8;
+
+/*! @abstract A vector of sixteen 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C++ this type is also available as simd::packed::char16.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(16),__aligned__(1))) char simd_packed_char16;
+
+/*! @abstract A vector of thirty-two 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C++ this type is also available as simd::packed::char32.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(32),__aligned__(1))) char simd_packed_char32;
+
+/*! @abstract A vector of sixty-four 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C++ this type is also available as simd::packed::char64.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(64),__aligned__(1))) char simd_packed_char64;
+
+/*! @abstract A vector of two 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::uchar2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(2),__aligned__(1))) unsigned char simd_packed_uchar2;
+
+/*! @abstract A vector of four 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::uchar4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(4),__aligned__(1))) unsigned char simd_packed_uchar4;
+
+/*! @abstract A vector of eight 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as simd::packed::uchar8.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(8),__aligned__(1))) unsigned char simd_packed_uchar8;
+
+/*! @abstract A vector of sixteen 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::uchar16. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(16),__aligned__(1))) unsigned char simd_packed_uchar16;
+
+/*! @abstract A vector of thirty-two 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::uchar32. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(32),__aligned__(1))) unsigned char simd_packed_uchar32;
+
+/*! @abstract A vector of sixty-four 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::uchar64. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(64),__aligned__(1))) unsigned char simd_packed_uchar64;
+
+/*! @abstract A vector of two 16-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::short2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(2),__aligned__(2))) short simd_packed_short2;
+
+/*! @abstract A vector of four 16-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::short4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(4),__aligned__(2))) short simd_packed_short4;
+
+/*! @abstract A vector of eight 16-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C++ this type is also available as simd::packed::short8.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(8),__aligned__(2))) short simd_packed_short8;
+
+/*! @abstract A vector of sixteen 16-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::short16. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(16),__aligned__(2))) short simd_packed_short16;
+
+/*! @abstract A vector of thirty-two 16-bit signed (twos-complement)
+ * integers with relaxed alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::short32. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(32),__aligned__(2))) short simd_packed_short32;
+
+/*! @abstract A vector of two 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::ushort2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(2),__aligned__(2))) unsigned short simd_packed_ushort2;
+
+/*! @abstract A vector of four 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::ushort4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(4),__aligned__(2))) unsigned short simd_packed_ushort4;
+
+/*! @abstract A vector of eight 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::ushort8. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(8),__aligned__(2))) unsigned short simd_packed_ushort8;
+
+/*! @abstract A vector of sixteen 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::ushort16. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(16),__aligned__(2))) unsigned short simd_packed_ushort16;
+
+/*! @abstract A vector of thirty-two 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::ushort32. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(32),__aligned__(2))) unsigned short simd_packed_ushort32;
+
+/*! @abstract A vector of two 32-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::int2. The alignment of this type is that of the underlying
+ * scalar element type, so you can use it to load or store from an array of
+ * that type. */
+typedef __attribute__((__ext_vector_type__(2),__aligned__(4))) int simd_packed_int2;
+
+/*! @abstract A vector of four 32-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::int4. The alignment of this type is that of the underlying
+ * scalar element type, so you can use it to load or store from an array of
+ * that type. */
+typedef __attribute__((__ext_vector_type__(4),__aligned__(4))) int simd_packed_int4;
+
+/*! @abstract A vector of eight 32-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C++ this type is also available as simd::packed::int8.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(8),__aligned__(4))) int simd_packed_int8;
+
+/*! @abstract A vector of sixteen 32-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C++ this type is also available as simd::packed::int16.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(16),__aligned__(4))) int simd_packed_int16;
+
+/*! @abstract A vector of two 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::uint2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(2),__aligned__(4))) unsigned int simd_packed_uint2;
+
+/*! @abstract A vector of four 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::uint4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(4),__aligned__(4))) unsigned int simd_packed_uint4;
+
+/*! @abstract A vector of eight 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as simd::packed::uint8.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(8),__aligned__(4))) unsigned int simd_packed_uint8;
+
+/*! @abstract A vector of sixteen 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as simd::packed::uint16.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(16),__aligned__(4))) unsigned int simd_packed_uint16;
+
+/*! @abstract A vector of two 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::float2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(2),__aligned__(4))) float simd_packed_float2;
+
+/*! @abstract A vector of four 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::float4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+typedef __attribute__((__ext_vector_type__(4),__aligned__(4))) float simd_packed_float4;
+
+/*! @abstract A vector of eight 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as simd::packed::float8.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(8),__aligned__(4))) float simd_packed_float8;
+
+/*! @abstract A vector of sixteen 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::float16. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef __attribute__((__ext_vector_type__(16),__aligned__(4))) float simd_packed_float16;
+
+/*! @abstract A vector of two 64-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::long2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(2),__aligned__(8))) simd_long1 simd_packed_long2;
+#else
+typedef __attribute__((__ext_vector_type__(2),__aligned__(4))) simd_long1 simd_packed_long2;
+#endif
+
+/*! @abstract A vector of four 64-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::long4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(4),__aligned__(8))) simd_long1 simd_packed_long4;
+#else
+typedef __attribute__((__ext_vector_type__(4),__aligned__(4))) simd_long1 simd_packed_long4;
+#endif
+
+/*! @abstract A vector of eight 64-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C++ this type is also available as simd::packed::long8.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(8),__aligned__(8))) simd_long1 simd_packed_long8;
+#else
+typedef __attribute__((__ext_vector_type__(8),__aligned__(4))) simd_long1 simd_packed_long8;
+#endif
+
+/*! @abstract A vector of two 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::ulong2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(2),__aligned__(8))) simd_ulong1 simd_packed_ulong2;
+#else
+typedef __attribute__((__ext_vector_type__(2),__aligned__(4))) simd_ulong1 simd_packed_ulong2;
+#endif
+
+/*! @abstract A vector of four 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::ulong4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(4),__aligned__(8))) simd_ulong1 simd_packed_ulong4;
+#else
+typedef __attribute__((__ext_vector_type__(4),__aligned__(4))) simd_ulong1 simd_packed_ulong4;
+#endif
+
+/*! @abstract A vector of eight 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as simd::packed::ulong8.
+ * This type is not available in Metal. The alignment of this type is only
+ * that of the underlying scalar element type, so you can use it to load or
+ * store from an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(8),__aligned__(8))) simd_ulong1 simd_packed_ulong8;
+#else
+typedef __attribute__((__ext_vector_type__(8),__aligned__(4))) simd_ulong1 simd_packed_ulong8;
+#endif
+
+/*! @abstract A vector of two 64-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::double2. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(2),__aligned__(8))) double simd_packed_double2;
+#else
+typedef __attribute__((__ext_vector_type__(2),__aligned__(4))) double simd_packed_double2;
+#endif
+
+/*! @abstract A vector of four 64-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C++ and Metal, this type is also available as
+ * simd::packed::double4. The alignment of this type is that of the
+ * underlying scalar element type, so you can use it to load or store from
+ * an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(4),__aligned__(8))) double simd_packed_double4;
+#else
+typedef __attribute__((__ext_vector_type__(4),__aligned__(4))) double simd_packed_double4;
+#endif
+
+/*! @abstract A vector of eight 64-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C++ this type is also available as
+ * simd::packed::double8. This type is not available in Metal. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+#if defined __LP64__
+typedef __attribute__((__ext_vector_type__(8),__aligned__(8))) double simd_packed_double8;
+#else
+typedef __attribute__((__ext_vector_type__(8),__aligned__(4))) double simd_packed_double8;
+#endif
+
+/* MARK: C++ vector types */
+#if defined __cplusplus
+namespace simd {
+ namespace packed {
+ /*! @abstract A vector of two 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_char2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_char2 char2;
+
+ /*! @abstract A vector of four 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_char4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_char4 char4;
+
+ /*! @abstract A vector of eight 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_char8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_char8 char8;
+
+ /*! @abstract A vector of sixteen 8-bit signed (twos-complement)
+ * integers with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_char16. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_char16 char16;
+
+ /*! @abstract A vector of thirty-two 8-bit signed (twos-complement)
+ * integers with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_char32. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_char32 char32;
+
+ /*! @abstract A vector of sixty-four 8-bit signed (twos-complement)
+ * integers with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_char64. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_char64 char64;
+
+ /*! @abstract A vector of two 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_uchar2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_uchar2 uchar2;
+
+ /*! @abstract A vector of four 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_uchar4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_uchar4 uchar4;
+
+ /*! @abstract A vector of eight 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_uchar8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_uchar8 uchar8;
+
+ /*! @abstract A vector of sixteen 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_uchar16. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_uchar16 uchar16;
+
+ /*! @abstract A vector of thirty-two 8-bit unsigned integers with
+ * relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_uchar32. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_uchar32 uchar32;
+
+ /*! @abstract A vector of sixty-four 8-bit unsigned integers with
+ * relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_uchar64. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_uchar64 uchar64;
+
+ /*! @abstract A vector of two 16-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_short2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_short2 short2;
+
+ /*! @abstract A vector of four 16-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_short4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_short4 short4;
+
+ /*! @abstract A vector of eight 16-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_short8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_short8 short8;
+
+ /*! @abstract A vector of sixteen 16-bit signed (twos-complement)
+ * integers with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_short16. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_short16 short16;
+
+ /*! @abstract A vector of thirty-two 16-bit signed (twos-complement)
+ * integers with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_short32. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_short32 short32;
+
+ /*! @abstract A vector of two 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_ushort2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_ushort2 ushort2;
+
+ /*! @abstract A vector of four 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_ushort4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_ushort4 ushort4;
+
+ /*! @abstract A vector of eight 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_ushort8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_ushort8 ushort8;
+
+ /*! @abstract A vector of sixteen 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_ushort16. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_ushort16 ushort16;
+
+ /*! @abstract A vector of thirty-two 16-bit unsigned integers with
+ * relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_ushort32. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_ushort32 ushort32;
+
+ /*! @abstract A vector of two 32-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_int2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_int2 int2;
+
+ /*! @abstract A vector of four 32-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_int4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_int4 int4;
+
+ /*! @abstract A vector of eight 32-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_int8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_int8 int8;
+
+ /*! @abstract A vector of sixteen 32-bit signed (twos-complement)
+ * integers with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_int16. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_int16 int16;
+
+ /*! @abstract A vector of two 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_uint2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_uint2 uint2;
+
+ /*! @abstract A vector of four 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_uint4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_uint4 uint4;
+
+ /*! @abstract A vector of eight 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_uint8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_uint8 uint8;
+
+ /*! @abstract A vector of sixteen 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_uint16. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_uint16 uint16;
+
+ /*! @abstract A vector of two 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_float2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_float2 float2;
+
+ /*! @abstract A vector of four 32-bit floating-point numbers with
+ * relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_float4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_float4 float4;
+
+ /*! @abstract A vector of eight 32-bit floating-point numbers with
+ * relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_float8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_float8 float8;
+
+ /*! @abstract A vector of sixteen 32-bit floating-point numbers with
+ * relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_float16. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_float16 float16;
+
+ /*! @abstract A vector of two 64-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_long2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_long2 long2;
+
+ /*! @abstract A vector of four 64-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_long4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_long4 long4;
+
+ /*! @abstract A vector of eight 64-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_long8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_long8 long8;
+
+ /*! @abstract A vector of two 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_ulong2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_ulong2 ulong2;
+
+ /*! @abstract A vector of four 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_ulong4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_ulong4 ulong4;
+
+ /*! @abstract A vector of eight 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_ulong8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_ulong8 ulong8;
+
+ /*! @abstract A vector of two 64-bit floating-point numbers with relaxed
+ * alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_double2. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_double2 double2;
+
+ /*! @abstract A vector of four 64-bit floating-point numbers with
+ * relaxed alignment.
+ * @description In C or Objective-C, this type is available as
+ * simd_packed_double4. The alignment of this type is only that of the
+ * underlying scalar element type, so you can use it to load or store
+ * from an array of that type. */
+typedef ::simd_packed_double4 double4;
+
+ /*! @abstract A vector of eight 64-bit floating-point numbers with
+ * relaxed alignment.
+ * @description This type is not available in Metal. In C or
+ * Objective-C, this type is available as simd_packed_double8. The
+ * alignment of this type is only that of the underlying scalar element
+ * type, so you can use it to load or store from an array of that type. */
+typedef ::simd_packed_double8 double8;
+
+ } /* namespace simd::packed:: */
+} /* namespace simd:: */
+#endif /* __cplusplus */
+
+/* MARK: Deprecated vector types */
+/*! @group Deprecated vector types
+ * @discussion These are the original types used by earlier versions of the
+ * simd library; they are provided here for compatability with existing source
+ * files. Use the new ("simd_"-prefixed) types for future development. */
+/*! @abstract A vector of two 8-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_char2
+ * or simd::packed::char2 instead. */
+typedef simd_packed_char2 packed_char2;
+
+/*! @abstract A vector of four 8-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_char4
+ * or simd::packed::char4 instead. */
+typedef simd_packed_char4 packed_char4;
+
+/*! @abstract A vector of eight 8-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_char8
+ * or simd::packed::char8 instead. */
+typedef simd_packed_char8 packed_char8;
+
+/*! @abstract A vector of sixteen 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_char16
+ * or simd::packed::char16 instead. */
+typedef simd_packed_char16 packed_char16;
+
+/*! @abstract A vector of thirty-two 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_char32
+ * or simd::packed::char32 instead. */
+typedef simd_packed_char32 packed_char32;
+
+/*! @abstract A vector of sixty-four 8-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_char64
+ * or simd::packed::char64 instead. */
+typedef simd_packed_char64 packed_char64;
+
+/*! @abstract A vector of two 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uchar2
+ * or simd::packed::uchar2 instead. */
+typedef simd_packed_uchar2 packed_uchar2;
+
+/*! @abstract A vector of four 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uchar4
+ * or simd::packed::uchar4 instead. */
+typedef simd_packed_uchar4 packed_uchar4;
+
+/*! @abstract A vector of eight 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uchar8
+ * or simd::packed::uchar8 instead. */
+typedef simd_packed_uchar8 packed_uchar8;
+
+/*! @abstract A vector of sixteen 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uchar16
+ * or simd::packed::uchar16 instead. */
+typedef simd_packed_uchar16 packed_uchar16;
+
+/*! @abstract A vector of thirty-two 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uchar32
+ * or simd::packed::uchar32 instead. */
+typedef simd_packed_uchar32 packed_uchar32;
+
+/*! @abstract A vector of sixty-four 8-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uchar64
+ * or simd::packed::uchar64 instead. */
+typedef simd_packed_uchar64 packed_uchar64;
+
+/*! @abstract A vector of two 16-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_short2
+ * or simd::packed::short2 instead. */
+typedef simd_packed_short2 packed_short2;
+
+/*! @abstract A vector of four 16-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_short4
+ * or simd::packed::short4 instead. */
+typedef simd_packed_short4 packed_short4;
+
+/*! @abstract A vector of eight 16-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_short8
+ * or simd::packed::short8 instead. */
+typedef simd_packed_short8 packed_short8;
+
+/*! @abstract A vector of sixteen 16-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_short16
+ * or simd::packed::short16 instead. */
+typedef simd_packed_short16 packed_short16;
+
+/*! @abstract A vector of thirty-two 16-bit signed (twos-complement)
+ * integers with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_short32
+ * or simd::packed::short32 instead. */
+typedef simd_packed_short32 packed_short32;
+
+/*! @abstract A vector of two 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_ushort2
+ * or simd::packed::ushort2 instead. */
+typedef simd_packed_ushort2 packed_ushort2;
+
+/*! @abstract A vector of four 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_ushort4
+ * or simd::packed::ushort4 instead. */
+typedef simd_packed_ushort4 packed_ushort4;
+
+/*! @abstract A vector of eight 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_ushort8
+ * or simd::packed::ushort8 instead. */
+typedef simd_packed_ushort8 packed_ushort8;
+
+/*! @abstract A vector of sixteen 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use
+ * simd_packed_ushort16 or simd::packed::ushort16 instead. */
+typedef simd_packed_ushort16 packed_ushort16;
+
+/*! @abstract A vector of thirty-two 16-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use
+ * simd_packed_ushort32 or simd::packed::ushort32 instead. */
+typedef simd_packed_ushort32 packed_ushort32;
+
+/*! @abstract A vector of two 32-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_int2 or
+ * simd::packed::int2 instead. */
+typedef simd_packed_int2 packed_int2;
+
+/*! @abstract A vector of four 32-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_int4 or
+ * simd::packed::int4 instead. */
+typedef simd_packed_int4 packed_int4;
+
+/*! @abstract A vector of eight 32-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_int8 or
+ * simd::packed::int8 instead. */
+typedef simd_packed_int8 packed_int8;
+
+/*! @abstract A vector of sixteen 32-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_int16
+ * or simd::packed::int16 instead. */
+typedef simd_packed_int16 packed_int16;
+
+/*! @abstract A vector of two 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uint2
+ * or simd::packed::uint2 instead. */
+typedef simd_packed_uint2 packed_uint2;
+
+/*! @abstract A vector of four 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uint4
+ * or simd::packed::uint4 instead. */
+typedef simd_packed_uint4 packed_uint4;
+
+/*! @abstract A vector of eight 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uint8
+ * or simd::packed::uint8 instead. */
+typedef simd_packed_uint8 packed_uint8;
+
+/*! @abstract A vector of sixteen 32-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_uint16
+ * or simd::packed::uint16 instead. */
+typedef simd_packed_uint16 packed_uint16;
+
+/*! @abstract A vector of two 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_float2
+ * or simd::packed::float2 instead. */
+typedef simd_packed_float2 packed_float2;
+
+/*! @abstract A vector of four 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_float4
+ * or simd::packed::float4 instead. */
+typedef simd_packed_float4 packed_float4;
+
+/*! @abstract A vector of eight 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_float8
+ * or simd::packed::float8 instead. */
+typedef simd_packed_float8 packed_float8;
+
+/*! @abstract A vector of sixteen 32-bit floating-point numbers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_float16
+ * or simd::packed::float16 instead. */
+typedef simd_packed_float16 packed_float16;
+
+/*! @abstract A vector of two 64-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_long2
+ * or simd::packed::long2 instead. */
+typedef simd_packed_long2 packed_long2;
+
+/*! @abstract A vector of four 64-bit signed (twos-complement) integers with
+ * relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_long4
+ * or simd::packed::long4 instead. */
+typedef simd_packed_long4 packed_long4;
+
+/*! @abstract A vector of eight 64-bit signed (twos-complement) integers
+ * with relaxed alignment.
+ * @description This type is deprecated; you should use simd_packed_long8
+ * or simd::packed::long8 instead. */
+typedef simd_packed_long8 packed_long8;
+
+/*! @abstract A vector of two 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_ulong2
+ * or simd::packed::ulong2 instead. */
+typedef simd_packed_ulong2 packed_ulong2;
+
+/*! @abstract A vector of four 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_ulong4
+ * or simd::packed::ulong4 instead. */
+typedef simd_packed_ulong4 packed_ulong4;
+
+/*! @abstract A vector of eight 64-bit unsigned integers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_ulong8
+ * or simd::packed::ulong8 instead. */
+typedef simd_packed_ulong8 packed_ulong8;
+
+/*! @abstract A vector of two 64-bit floating-point numbers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_double2
+ * or simd::packed::double2 instead. */
+typedef simd_packed_double2 packed_double2;
+
+/*! @abstract A vector of four 64-bit floating-point numbers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_double4
+ * or simd::packed::double4 instead. */
+typedef simd_packed_double4 packed_double4;
+
+/*! @abstract A vector of eight 64-bit floating-point numbers with relaxed
+ * alignment.
+ * @description This type is deprecated; you should use simd_packed_double8
+ * or simd::packed::double8 instead. */
+typedef simd_packed_double8 packed_double8;
+
+# endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/simd/quaternion.h b/lib/libc/include/aarch64-macos-gnu/simd/quaternion.h
new file mode 100644
index 0000000000..b7c5e2909d
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/simd/quaternion.h
@@ -0,0 +1,1194 @@
+/*! @header
+ * This header defines functions for constructing and using quaternions.
+ * @copyright 2015-2016 Apple, Inc. All rights reserved.
+ * @unsorted */
+
+#ifndef SIMD_QUATERNIONS
+#define SIMD_QUATERNIONS
+
+#include <simd/base.h>
+#if SIMD_COMPILER_HAS_REQUIRED_FEATURES
+#include <simd/vector.h>
+#include <simd/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MARK: - C and Objective-C float interfaces */
+
+/*! @abstract Constructs a quaternion from four scalar values.
+ *
+ * @param ix The first component of the imaginary (vector) part.
+ * @param iy The second component of the imaginary (vector) part.
+ * @param iz The third component of the imaginary (vector) part.
+ *
+ * @param r The real (scalar) part. */
+static inline SIMD_CFUNC simd_quatf simd_quaternion(float ix, float iy, float iz, float r) {
+ return (simd_quatf){ { ix, iy, iz, r } };
+}
+
+/*! @abstract Constructs a quaternion from an array of four scalars.
+ *
+ * @discussion Note that the imaginary part of the quaternion comes from
+ * array elements 0, 1, and 2, and the real part comes from element 3. */
+static inline SIMD_NONCONST simd_quatf simd_quaternion(const float xyzr[4]) {
+ return (simd_quatf){ *(const simd_packed_float4 *)xyzr };
+}
+
+/*! @abstract Constructs a quaternion from a four-element vector.
+ *
+ * @discussion Note that the imaginary (vector) part of the quaternion comes
+ * from lanes 0, 1, and 2 of the vector, and the real (scalar) part comes from
+ * lane 3. */
+static inline SIMD_CFUNC simd_quatf simd_quaternion(simd_float4 xyzr) {
+ return (simd_quatf){ xyzr };
+}
+
+/*! @abstract Constructs a quaternion that rotates by `angle` radians about
+ * `axis`. */
+static inline SIMD_CFUNC simd_quatf simd_quaternion(float angle, simd_float3 axis);
+
+/*! @abstract Construct a quaternion that rotates from one vector to another.
+ *
+ * @param from A normalized three-element vector.
+ * @param to A normalized three-element vector.
+ *
+ * @discussion The rotation axis is `simd_cross(from, to)`. If `from` and
+ * `to` point in opposite directions (to within machine precision), an
+ * arbitrary rotation axis is chosen, and the angle is pi radians. */
+static SIMD_NOINLINE simd_quatf simd_quaternion(simd_float3 from, simd_float3 to);
+
+/*! @abstract Construct a quaternion from a 3x3 rotation `matrix`.
+ *
+ * @discussion If `matrix` is not orthogonal with determinant 1, the result
+ * is undefined. */
+static SIMD_NOINLINE simd_quatf simd_quaternion(simd_float3x3 matrix);
+
+/*! @abstract Construct a quaternion from a 4x4 rotation `matrix`.
+ *
+ * @discussion The last row and column of the matrix are ignored. This
+ * function is equivalent to calling simd_quaternion with the upper-left 3x3
+ * submatrix . */
+static SIMD_NOINLINE simd_quatf simd_quaternion(simd_float4x4 matrix);
+
+/*! @abstract The real (scalar) part of the quaternion `q`. */
+static inline SIMD_CFUNC float simd_real(simd_quatf q) {
+ return q.vector.w;
+}
+
+/*! @abstract The imaginary (vector) part of the quaternion `q`. */
+static inline SIMD_CFUNC simd_float3 simd_imag(simd_quatf q) {
+ return q.vector.xyz;
+}
+
+/*! @abstract The angle (in radians) of rotation represented by `q`. */
+static inline SIMD_CFUNC float simd_angle(simd_quatf q);
+
+/*! @abstract The normalized axis (a 3-element vector) around which the
+ * action of the quaternion `q` rotates. */
+static inline SIMD_CFUNC simd_float3 simd_axis(simd_quatf q);
+
+/*! @abstract The sum of the quaternions `p` and `q`. */
+static inline SIMD_CFUNC simd_quatf simd_add(simd_quatf p, simd_quatf q);
+
+/*! @abstract The difference of the quaternions `p` and `q`. */
+static inline SIMD_CFUNC simd_quatf simd_sub(simd_quatf p, simd_quatf q);
+
+/*! @abstract The product of the quaternions `p` and `q`. */
+static inline SIMD_CFUNC simd_quatf simd_mul(simd_quatf p, simd_quatf q);
+
+/*! @abstract The quaternion `q` scaled by the real value `a`. */
+static inline SIMD_CFUNC simd_quatf simd_mul(simd_quatf q, float a);
+
+/*! @abstract The quaternion `q` scaled by the real value `a`. */
+static inline SIMD_CFUNC simd_quatf simd_mul(float a, simd_quatf q);
+
+/*! @abstract The conjugate of the quaternion `q`. */
+static inline SIMD_CFUNC simd_quatf simd_conjugate(simd_quatf q);
+
+/*! @abstract The (multiplicative) inverse of the quaternion `q`. */
+static inline SIMD_CFUNC simd_quatf simd_inverse(simd_quatf q);
+
+/*! @abstract The negation (additive inverse) of the quaternion `q`. */
+static inline SIMD_CFUNC simd_quatf simd_negate(simd_quatf q);
+
+/*! @abstract The dot product of the quaternions `p` and `q` interpreted as
+ * four-dimensional vectors. */
+static inline SIMD_CFUNC float simd_dot(simd_quatf p, simd_quatf q);
+
+/*! @abstract The length of the quaternion `q`. */
+static inline SIMD_CFUNC float simd_length(simd_quatf q);
+
+/*! @abstract The unit quaternion obtained by normalizing `q`. */
+static inline SIMD_CFUNC simd_quatf simd_normalize(simd_quatf q);
+
+/*! @abstract Rotates the vector `v` by the quaternion `q`. */
+static inline SIMD_CFUNC simd_float3 simd_act(simd_quatf q, simd_float3 v);
+
+/*! @abstract Logarithm of the quaternion `q`.
+ * @discussion Do not call this function directly; use `log(q)` instead.
+ *
+ * We can write a quaternion `q` in the form: `r(cos(t) + sin(t)v)` where
+ * `r` is the length of `q`, `t` is an angle, and `v` is a unit 3-vector.
+ * The logarithm of `q` is `log(r) + tv`, just like the logarithm of the
+ * complex number `r*(cos(t) + i sin(t))` is `log(r) + it`.
+ *
+ * Note that this function is not robust against poorly-scaled non-unit
+ * quaternions, because it is primarily used for spline interpolation of
+ * unit quaternions. If you need to compute a robust logarithm of general
+ * quaternions, you can use the following approach:
+ *
+ * scale = simd_reduce_max(simd_abs(q.vector));
+ * logq = log(simd_recip(scale)*q);
+ * logq.real += log(scale);
+ * return logq; */
+static SIMD_NOINLINE simd_quatf __tg_log(simd_quatf q);
+
+/*! @abstract Inverse of `log( )`; the exponential map on quaternions.
+ * @discussion Do not call this function directly; use `exp(q)` instead. */
+static SIMD_NOINLINE simd_quatf __tg_exp(simd_quatf q);
+
+/*! @abstract Spherical linear interpolation along the shortest arc between
+ * quaternions `q0` and `q1`. */
+static SIMD_NOINLINE simd_quatf simd_slerp(simd_quatf q0, simd_quatf q1, float t);
+
+/*! @abstract Spherical linear interpolation along the longest arc between
+ * quaternions `q0` and `q1`. */
+static SIMD_NOINLINE simd_quatf simd_slerp_longest(simd_quatf q0, simd_quatf q1, float t);
+
+/*! @abstract Interpolate between quaternions along a spherical cubic spline.
+ *
+ * @discussion The function interpolates between q1 and q2. q0 is the left
+ * endpoint of the previous interval, and q3 is the right endpoint of the next
+ * interval. Use this function to smoothly interpolate between a sequence of
+ * rotations. */
+static SIMD_NOINLINE simd_quatf simd_spline(simd_quatf q0, simd_quatf q1, simd_quatf q2, simd_quatf q3, float t);
+
+/*! @abstract Spherical cubic Bezier interpolation between quaternions.
+ *
+ * @discussion The function treats q0 ... q3 as control points and uses slerp
+ * in place of lerp in the De Castlejeau algorithm. The endpoints of
+ * interpolation are thus q0 and q3, and the curve will not generally pass
+ * through q1 or q2. Note that the convex hull property of "standard" Bezier
+ * curve does not hold on the sphere. */
+static SIMD_NOINLINE simd_quatf simd_bezier(simd_quatf q0, simd_quatf q1, simd_quatf q2, simd_quatf q3, float t);
+
+#ifdef __cplusplus
+} /* extern "C" */
+/* MARK: - C++ float interfaces */
+
+namespace simd {
+ struct quatf : ::simd_quatf {
+ /*! @abstract The identity quaternion. */
+ quatf( ) : ::simd_quatf(::simd_quaternion((float4){0,0,0,1})) { }
+
+ /*! @abstract Constructs a C++ quaternion from a C quaternion. */
+ quatf(::simd_quatf q) : ::simd_quatf(q) { }
+
+ /*! @abstract Constructs a quaternion from components. */
+ quatf(float ix, float iy, float iz, float r) : ::simd_quatf(::simd_quaternion(ix, iy, iz, r)) { }
+
+ /*! @abstract Constructs a quaternion from an array of scalars. */
+ quatf(const float xyzr[4]) : ::simd_quatf(::simd_quaternion(xyzr)) { }
+
+ /*! @abstract Constructs a quaternion from a vector. */
+ quatf(float4 xyzr) : ::simd_quatf(::simd_quaternion(xyzr)) { }
+
+ /*! @abstract Quaternion representing rotation about `axis` by `angle`
+ * radians. */
+ quatf(float angle, float3 axis) : ::simd_quatf(::simd_quaternion(angle, axis)) { }
+
+ /*! @abstract Quaternion that rotates `from` into `to`. */
+ quatf(float3 from, float3 to) : ::simd_quatf(::simd_quaternion(from, to)) { }
+
+ /*! @abstract Constructs a quaternion from a rotation matrix. */
+ quatf(::simd_float3x3 matrix) : ::simd_quatf(::simd_quaternion(matrix)) { }
+
+ /*! @abstract Constructs a quaternion from a rotation matrix. */
+ quatf(::simd_float4x4 matrix) : ::simd_quatf(::simd_quaternion(matrix)) { }
+
+ /*! @abstract The real (scalar) part of the quaternion. */
+ float real(void) const { return ::simd_real(*this); }
+
+ /*! @abstract The imaginary (vector) part of the quaternion. */
+ float3 imag(void) const { return ::simd_imag(*this); }
+
+ /*! @abstract The angle the quaternion rotates by. */
+ float angle(void) const { return ::simd_angle(*this); }
+
+ /*! @abstract The axis the quaternion rotates about. */
+ float3 axis(void) const { return ::simd_axis(*this); }
+
+ /*! @abstract The length of the quaternion. */
+ float length(void) const { return ::simd_length(*this); }
+
+ /*! @abstract Act on the vector `v` by rotation. */
+ float3 operator()(const ::simd_float3 v) const { return ::simd_act(*this, v); }
+ };
+
+ static SIMD_CPPFUNC quatf operator+(const ::simd_quatf p, const ::simd_quatf q) { return ::simd_add(p, q); }
+ static SIMD_CPPFUNC quatf operator-(const ::simd_quatf p, const ::simd_quatf q) { return ::simd_sub(p, q); }
+ static SIMD_CPPFUNC quatf operator-(const ::simd_quatf p) { return ::simd_negate(p); }
+ static SIMD_CPPFUNC quatf operator*(const float r, const ::simd_quatf p) { return ::simd_mul(r, p); }
+ static SIMD_CPPFUNC quatf operator*(const ::simd_quatf p, const float r) { return ::simd_mul(p, r); }
+ static SIMD_CPPFUNC quatf operator*(const ::simd_quatf p, const ::simd_quatf q) { return ::simd_mul(p, q); }
+ static SIMD_CPPFUNC quatf operator/(const ::simd_quatf p, const ::simd_quatf q) { return ::simd_mul(p, ::simd_inverse(q)); }
+ static SIMD_CPPFUNC quatf operator+=(quatf &p, const ::simd_quatf q) { return p = p+q; }
+ static SIMD_CPPFUNC quatf operator-=(quatf &p, const ::simd_quatf q) { return p = p-q; }
+ static SIMD_CPPFUNC quatf operator*=(quatf &p, const float r) { return p = p*r; }
+ static SIMD_CPPFUNC quatf operator*=(quatf &p, const ::simd_quatf q) { return p = p*q; }
+ static SIMD_CPPFUNC quatf operator/=(quatf &p, const ::simd_quatf q) { return p = p/q; }
+
+ /*! @abstract The conjugate of the quaternion `q`. */
+ static SIMD_CPPFUNC quatf conjugate(const ::simd_quatf p) { return ::simd_conjugate(p); }
+
+ /*! @abstract The (multiplicative) inverse of the quaternion `q`. */
+ static SIMD_CPPFUNC quatf inverse(const ::simd_quatf p) { return ::simd_inverse(p); }
+
+ /*! @abstract The dot product of the quaternions `p` and `q` interpreted as
+ * four-dimensional vectors. */
+ static SIMD_CPPFUNC float dot(const ::simd_quatf p, const ::simd_quatf q) { return ::simd_dot(p, q); }
+
+ /*! @abstract The unit quaternion obtained by normalizing `q`. */
+ static SIMD_CPPFUNC quatf normalize(const ::simd_quatf p) { return ::simd_normalize(p); }
+
+ /*! @abstract logarithm of the quaternion `q`. */
+ static SIMD_CPPFUNC quatf log(const ::simd_quatf q) { return ::__tg_log(q); }
+
+ /*! @abstract exponential map of quaterion `q`. */
+ static SIMD_CPPFUNC quatf exp(const ::simd_quatf q) { return ::__tg_exp(q); }
+
+ /*! @abstract Spherical linear interpolation along the shortest arc between
+ * quaternions `q0` and `q1`. */
+ static SIMD_CPPFUNC quatf slerp(const ::simd_quatf p0, const ::simd_quatf p1, float t) { return ::simd_slerp(p0, p1, t); }
+
+ /*! @abstract Spherical linear interpolation along the longest arc between
+ * quaternions `q0` and `q1`. */
+ static SIMD_CPPFUNC quatf slerp_longest(const ::simd_quatf p0, const ::simd_quatf p1, float t) { return ::simd_slerp_longest(p0, p1, t); }
+
+ /*! @abstract Interpolate between quaternions along a spherical cubic spline.
+ *
+ * @discussion The function interpolates between q1 and q2. q0 is the left
+ * endpoint of the previous interval, and q3 is the right endpoint of the next
+ * interval. Use this function to smoothly interpolate between a sequence of
+ * rotations. */
+ static SIMD_CPPFUNC quatf spline(const ::simd_quatf p0, const ::simd_quatf p1, const ::simd_quatf p2, const ::simd_quatf p3, float t) { return ::simd_spline(p0, p1, p2, p3, t); }
+
+ /*! @abstract Spherical cubic Bezier interpolation between quaternions.
+ *
+ * @discussion The function treats q0 ... q3 as control points and uses slerp
+ * in place of lerp in the De Castlejeau algorithm. The endpoints of
+ * interpolation are thus q0 and q3, and the curve will not generally pass
+ * through q1 or q2. Note that the convex hull property of "standard" Bezier
+ * curve does not hold on the sphere. */
+ static SIMD_CPPFUNC quatf bezier(const ::simd_quatf p0, const ::simd_quatf p1, const ::simd_quatf p2, const ::simd_quatf p3, float t) { return ::simd_bezier(p0, p1, p2, p3, t); }
+}
+
+extern "C" {
+#endif /* __cplusplus */
+
+/* MARK: - float implementations */
+
+#include <simd/math.h>
+#include <simd/geometry.h>
+
+/* tg_promote is implementation gobbledygook that enables the compile-time
+ * dispatching in tgmath.h to work its magic. */
+static simd_quatf __attribute__((__overloadable__)) __tg_promote(simd_quatf);
+
+/*! @abstract Constructs a quaternion from imaginary and real parts.
+ * @discussion This function is hidden behind an underscore to avoid confusion
+ * with the angle-axis constructor. */
+static inline SIMD_CFUNC simd_quatf _simd_quaternion(simd_float3 imag, float real) {
+ return simd_quaternion(simd_make_float4(imag, real));
+}
+
+static inline SIMD_CFUNC simd_quatf simd_quaternion(float angle, simd_float3 axis) {
+ return _simd_quaternion(sin(angle/2) * axis, cos(angle/2));
+}
+
+static inline SIMD_CFUNC float simd_angle(simd_quatf q) {
+ return 2*atan2(simd_length(q.vector.xyz), q.vector.w);
+}
+
+static inline SIMD_CFUNC simd_float3 simd_axis(simd_quatf q) {
+ return simd_normalize(q.vector.xyz);
+}
+
+static inline SIMD_CFUNC simd_quatf simd_add(simd_quatf p, simd_quatf q) {
+ return simd_quaternion(p.vector + q.vector);
+}
+
+static inline SIMD_CFUNC simd_quatf simd_sub(simd_quatf p, simd_quatf q) {
+ return simd_quaternion(p.vector - q.vector);
+}
+
+static inline SIMD_CFUNC simd_quatf simd_mul(simd_quatf p, simd_quatf q) {
+ #pragma STDC FP_CONTRACT ON
+ return simd_quaternion((p.vector.x * __builtin_shufflevector(q.vector, -q.vector, 3,6,1,4) +
+ p.vector.y * __builtin_shufflevector(q.vector, -q.vector, 2,3,4,5)) +
+ (p.vector.z * __builtin_shufflevector(q.vector, -q.vector, 5,0,3,6) +
+ p.vector.w * q.vector));
+}
+
+static inline SIMD_CFUNC simd_quatf simd_mul(simd_quatf q, float a) {
+ return simd_quaternion(a * q.vector);
+}
+
+static inline SIMD_CFUNC simd_quatf simd_mul(float a, simd_quatf q) {
+ return simd_mul(q,a);
+}
+
+static inline SIMD_CFUNC simd_quatf simd_conjugate(simd_quatf q) {
+ return simd_quaternion(q.vector * (simd_float4){-1,-1,-1, 1});
+}
+
+static inline SIMD_CFUNC simd_quatf simd_inverse(simd_quatf q) {
+ return simd_quaternion(simd_conjugate(q).vector * simd_recip(simd_length_squared(q.vector)));
+}
+
+static inline SIMD_CFUNC simd_quatf simd_negate(simd_quatf q) {
+ return simd_quaternion(-q.vector);
+}
+
+static inline SIMD_CFUNC float simd_dot(simd_quatf p, simd_quatf q) {
+ return simd_dot(p.vector, q.vector);
+}
+
+static inline SIMD_CFUNC float simd_length(simd_quatf q) {
+ return simd_length(q.vector);
+}
+
+static inline SIMD_CFUNC simd_quatf simd_normalize(simd_quatf q) {
+ float length_squared = simd_length_squared(q.vector);
+ if (length_squared == 0) {
+ return simd_quaternion((simd_float4){0,0,0,1});
+ }
+ return simd_quaternion(q.vector * simd_rsqrt(length_squared));
+}
+
+#if defined __arm__ || defined __arm64__
+/*! @abstract Multiplies the vector `v` by the quaternion `q`.
+ *
+ * @discussion This IS NOT the action of `q` on `v` (i.e. this is not rotation
+ * by `q`. That operation is provided by `simd_act(q, v)`. This function is an
+ * implementation detail and you should not call it directly. It may be
+ * removed or modified in future versions of the simd module. */
+static inline SIMD_CFUNC simd_quatf _simd_mul_vq(simd_float3 v, simd_quatf q) {
+ #pragma STDC FP_CONTRACT ON
+ return simd_quaternion(v.x * __builtin_shufflevector(q.vector, -q.vector, 3,6,1,4) +
+ v.y * __builtin_shufflevector(q.vector, -q.vector, 2,3,4,5) +
+ v.z * __builtin_shufflevector(q.vector, -q.vector, 5,0,3,6));
+}
+#endif
+
+static inline SIMD_CFUNC simd_float3 simd_act(simd_quatf q, simd_float3 v) {
+#if defined __arm__ || defined __arm64__
+ return simd_mul(q, _simd_mul_vq(v, simd_conjugate(q))).vector.xyz;
+#else
+ #pragma STDC FP_CONTRACT ON
+ simd_float3 t = 2*simd_cross(simd_imag(q),v);
+ return v + simd_real(q)*t + simd_cross(simd_imag(q), t);
+#endif
+}
+
+static SIMD_NOINLINE simd_quatf __tg_log(simd_quatf q) {
+ float real = __tg_log(simd_length_squared(q.vector))/2;
+ if (simd_equal(simd_imag(q), 0)) return _simd_quaternion(0, real);
+ simd_float3 imag = __tg_acos(simd_real(q)/simd_length(q)) * simd_normalize(simd_imag(q));
+ return _simd_quaternion(imag, real);
+}
+
+static SIMD_NOINLINE simd_quatf __tg_exp(simd_quatf q) {
+ // angle is actually *twice* the angle of the rotation corresponding to
+ // the resulting quaternion, which is why we don't simply use the (angle,
+ // axis) constructor to generate `unit`.
+ float angle = simd_length(simd_imag(q));
+ if (angle == 0) return _simd_quaternion(0, exp(simd_real(q)));
+ simd_float3 axis = simd_normalize(simd_imag(q));
+ simd_quatf unit = _simd_quaternion(sin(angle)*axis, cosf(angle));
+ return simd_mul(exp(simd_real(q)), unit);
+}
+
+/*! @abstract Implementation detail of the `simd_quaternion(from, to)`
+ * initializer.
+ *
+ * @discussion Computes the quaternion rotation `from` to `to` if they are
+ * separated by less than 90 degrees. Not numerically stable for larger
+ * angles. This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static inline SIMD_CFUNC simd_quatf _simd_quaternion_reduced(simd_float3 from, simd_float3 to) {
+ simd_float3 half = simd_normalize(from + to);
+ return _simd_quaternion(simd_cross(from, half), simd_dot(from, half));
+}
+
+static SIMD_NOINLINE simd_quatf simd_quaternion(simd_float3 from, simd_float3 to) {
+
+ // If the angle between from and to is not too big, we can compute the
+ // rotation accurately using a simple implementation.
+ if (simd_dot(from, to) >= 0) {
+ return _simd_quaternion_reduced(from, to);
+ }
+
+ // Because from and to are more than 90 degrees apart, we compute the
+ // rotation in two stages (from -> half), (half -> to) to preserve numerical
+ // accuracy.
+ simd_float3 half = from + to;
+
+ if (simd_length_squared(half) == 0) {
+ // half is nearly zero, so from and to point in nearly opposite directions
+ // and the rotation is numerically underspecified. Pick an axis orthogonal
+ // to the vectors, and use an angle of pi radians.
+ simd_float3 abs_from = simd_abs(from);
+ if (abs_from.x <= abs_from.y && abs_from.x <= abs_from.z)
+ return _simd_quaternion(simd_normalize(simd_cross(from, (simd_float3){1,0,0})), 0.f);
+ else if (abs_from.y <= abs_from.z)
+ return _simd_quaternion(simd_normalize(simd_cross(from, (simd_float3){0,1,0})), 0.f);
+ else
+ return _simd_quaternion(simd_normalize(simd_cross(from, (simd_float3){0,0,1})), 0.f);
+ }
+
+ // Compute the two-step rotation. */
+ half = simd_normalize(half);
+ return simd_mul(_simd_quaternion_reduced(from, half),
+ _simd_quaternion_reduced(half, to));
+}
+
+static SIMD_NOINLINE simd_quatf simd_quaternion(simd_float3x3 matrix) {
+ const simd_float3 *mat = matrix.columns;
+ float trace = mat[0][0] + mat[1][1] + mat[2][2];
+ if (trace >= 0.0) {
+ float r = 2*sqrt(1 + trace);
+ float rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[1][2] - mat[2][1]),
+ rinv*(mat[2][0] - mat[0][2]),
+ rinv*(mat[0][1] - mat[1][0]),
+ r/4);
+ } else if (mat[0][0] >= mat[1][1] && mat[0][0] >= mat[2][2]) {
+ float r = 2*sqrt(1 - mat[1][1] - mat[2][2] + mat[0][0]);
+ float rinv = simd_recip(r);
+ return simd_quaternion(r/4,
+ rinv*(mat[0][1] + mat[1][0]),
+ rinv*(mat[0][2] + mat[2][0]),
+ rinv*(mat[1][2] - mat[2][1]));
+ } else if (mat[1][1] >= mat[2][2]) {
+ float r = 2*sqrt(1 - mat[0][0] - mat[2][2] + mat[1][1]);
+ float rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[0][1] + mat[1][0]),
+ r/4,
+ rinv*(mat[1][2] + mat[2][1]),
+ rinv*(mat[2][0] - mat[0][2]));
+ } else {
+ float r = 2*sqrt(1 - mat[0][0] - mat[1][1] + mat[2][2]);
+ float rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[0][2] + mat[2][0]),
+ rinv*(mat[1][2] + mat[2][1]),
+ r/4,
+ rinv*(mat[0][1] - mat[1][0]));
+ }
+}
+
+static SIMD_NOINLINE simd_quatf simd_quaternion(simd_float4x4 matrix) {
+ const simd_float4 *mat = matrix.columns;
+ float trace = mat[0][0] + mat[1][1] + mat[2][2];
+ if (trace >= 0.0) {
+ float r = 2*sqrt(1 + trace);
+ float rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[1][2] - mat[2][1]),
+ rinv*(mat[2][0] - mat[0][2]),
+ rinv*(mat[0][1] - mat[1][0]),
+ r/4);
+ } else if (mat[0][0] >= mat[1][1] && mat[0][0] >= mat[2][2]) {
+ float r = 2*sqrt(1 - mat[1][1] - mat[2][2] + mat[0][0]);
+ float rinv = simd_recip(r);
+ return simd_quaternion(r/4,
+ rinv*(mat[0][1] + mat[1][0]),
+ rinv*(mat[0][2] + mat[2][0]),
+ rinv*(mat[1][2] - mat[2][1]));
+ } else if (mat[1][1] >= mat[2][2]) {
+ float r = 2*sqrt(1 - mat[0][0] - mat[2][2] + mat[1][1]);
+ float rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[0][1] + mat[1][0]),
+ r/4,
+ rinv*(mat[1][2] + mat[2][1]),
+ rinv*(mat[2][0] - mat[0][2]));
+ } else {
+ float r = 2*sqrt(1 - mat[0][0] - mat[1][1] + mat[2][2]);
+ float rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[0][2] + mat[2][0]),
+ rinv*(mat[1][2] + mat[2][1]),
+ r/4,
+ rinv*(mat[0][1] - mat[1][0]));
+ }
+}
+
+/*! @abstract The angle between p and q interpreted as 4-dimensional vectors.
+ *
+ * @discussion This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static SIMD_NOINLINE float _simd_angle(simd_quatf p, simd_quatf q) {
+ return 2*atan2(simd_length(p.vector - q.vector), simd_length(p.vector + q.vector));
+}
+
+/*! @abstract sin(x)/x.
+ *
+ * @discussion This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static SIMD_CFUNC float _simd_sinc(float x) {
+ if (x == 0) return 1;
+ return sin(x)/x;
+}
+
+/*! @abstract Spherical lerp between q0 and q1.
+ *
+ * @discussion This function may interpolate along either the longer or
+ * shorter path between q0 and q1; it is used as an implementation detail
+ * in `simd_slerp` and `simd_slerp_longest`; you should use those functions
+ * instead of calling this directly. */
+static SIMD_NOINLINE simd_quatf _simd_slerp_internal(simd_quatf q0, simd_quatf q1, float t) {
+ float s = 1 - t;
+ float a = _simd_angle(q0, q1);
+ float r = simd_recip(_simd_sinc(a));
+ return simd_normalize(simd_quaternion(_simd_sinc(s*a)*r*s*q0.vector + _simd_sinc(t*a)*r*t*q1.vector));
+}
+
+static SIMD_NOINLINE simd_quatf simd_slerp(simd_quatf q0, simd_quatf q1, float t) {
+ if (simd_dot(q0, q1) >= 0)
+ return _simd_slerp_internal(q0, q1, t);
+ return _simd_slerp_internal(q0, simd_negate(q1), t);
+}
+
+static SIMD_NOINLINE simd_quatf simd_slerp_longest(simd_quatf q0, simd_quatf q1, float t) {
+ if (simd_dot(q0, q1) >= 0)
+ return _simd_slerp_internal(q0, simd_negate(q1), t);
+ return _simd_slerp_internal(q0, q1, t);
+}
+
+/*! @discussion This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static SIMD_NOINLINE simd_quatf _simd_intermediate(simd_quatf q0, simd_quatf q1, simd_quatf q2) {
+ simd_quatf p0 = __tg_log(simd_mul(q0, simd_inverse(q1)));
+ simd_quatf p2 = __tg_log(simd_mul(q2, simd_inverse(q1)));
+ return simd_normalize(simd_mul(q1, __tg_exp(simd_mul(-0.25, simd_add(p0,p2)))));
+}
+
+/*! @discussion This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static SIMD_NOINLINE simd_quatf _simd_squad(simd_quatf q0, simd_quatf qa, simd_quatf qb, simd_quatf q1, float t) {
+ simd_quatf r0 = _simd_slerp_internal(q0, q1, t);
+ simd_quatf r1 = _simd_slerp_internal(qa, qb, t);
+ return _simd_slerp_internal(r0, r1, 2*t*(1 - t));
+}
+
+static SIMD_NOINLINE simd_quatf simd_spline(simd_quatf q0, simd_quatf q1, simd_quatf q2, simd_quatf q3, float t) {
+ simd_quatf qa = _simd_intermediate(q0, q1, q2);
+ simd_quatf qb = _simd_intermediate(q1, q2, q3);
+ return _simd_squad(q1, qa, qb, q2, t);
+}
+
+static SIMD_NOINLINE simd_quatf simd_bezier(simd_quatf q0, simd_quatf q1, simd_quatf q2, simd_quatf q3, float t) {
+ simd_quatf q01 = _simd_slerp_internal(q0, q1, t);
+ simd_quatf q12 = _simd_slerp_internal(q1, q2, t);
+ simd_quatf q23 = _simd_slerp_internal(q2, q3, t);
+ simd_quatf q012 = _simd_slerp_internal(q01, q12, t);
+ simd_quatf q123 = _simd_slerp_internal(q12, q23, t);
+ return _simd_slerp_internal(q012, q123, t);
+}
+
+/* MARK: - C and Objective-C double interfaces */
+
+/*! @abstract Constructs a quaternion from four scalar values.
+ *
+ * @param ix The first component of the imaginary (vector) part.
+ * @param iy The second component of the imaginary (vector) part.
+ * @param iz The third component of the imaginary (vector) part.
+ *
+ * @param r The real (scalar) part. */
+static inline SIMD_CFUNC simd_quatd simd_quaternion(double ix, double iy, double iz, double r) {
+ return (simd_quatd){ { ix, iy, iz, r } };
+}
+
+/*! @abstract Constructs a quaternion from an array of four scalars.
+ *
+ * @discussion Note that the imaginary part of the quaternion comes from
+ * array elements 0, 1, and 2, and the real part comes from element 3. */
+static inline SIMD_NONCONST simd_quatd simd_quaternion(const double xyzr[4]) {
+ return (simd_quatd){ *(const simd_packed_double4 *)xyzr };
+}
+
+/*! @abstract Constructs a quaternion from a four-element vector.
+ *
+ * @discussion Note that the imaginary (vector) part of the quaternion comes
+ * from lanes 0, 1, and 2 of the vector, and the real (scalar) part comes from
+ * lane 3. */
+static inline SIMD_CFUNC simd_quatd simd_quaternion(simd_double4 xyzr) {
+ return (simd_quatd){ xyzr };
+}
+
+/*! @abstract Constructs a quaternion that rotates by `angle` radians about
+ * `axis`. */
+static inline SIMD_CFUNC simd_quatd simd_quaternion(double angle, simd_double3 axis);
+
+/*! @abstract Construct a quaternion that rotates from one vector to another.
+ *
+ * @param from A normalized three-element vector.
+ * @param to A normalized three-element vector.
+ *
+ * @discussion The rotation axis is `simd_cross(from, to)`. If `from` and
+ * `to` point in opposite directions (to within machine precision), an
+ * arbitrary rotation axis is chosen, and the angle is pi radians. */
+static SIMD_NOINLINE simd_quatd simd_quaternion(simd_double3 from, simd_double3 to);
+
+/*! @abstract Construct a quaternion from a 3x3 rotation `matrix`.
+ *
+ * @discussion If `matrix` is not orthogonal with determinant 1, the result
+ * is undefined. */
+static SIMD_NOINLINE simd_quatd simd_quaternion(simd_double3x3 matrix);
+
+/*! @abstract Construct a quaternion from a 4x4 rotation `matrix`.
+ *
+ * @discussion The last row and column of the matrix are ignored. This
+ * function is equivalent to calling simd_quaternion with the upper-left 3x3
+ * submatrix . */
+static SIMD_NOINLINE simd_quatd simd_quaternion(simd_double4x4 matrix);
+
+/*! @abstract The real (scalar) part of the quaternion `q`. */
+static inline SIMD_CFUNC double simd_real(simd_quatd q) {
+ return q.vector.w;
+}
+
+/*! @abstract The imaginary (vector) part of the quaternion `q`. */
+static inline SIMD_CFUNC simd_double3 simd_imag(simd_quatd q) {
+ return q.vector.xyz;
+}
+
+/*! @abstract The angle (in radians) of rotation represented by `q`. */
+static inline SIMD_CFUNC double simd_angle(simd_quatd q);
+
+/*! @abstract The normalized axis (a 3-element vector) around which the
+ * action of the quaternion `q` rotates. */
+static inline SIMD_CFUNC simd_double3 simd_axis(simd_quatd q);
+
+/*! @abstract The sum of the quaternions `p` and `q`. */
+static inline SIMD_CFUNC simd_quatd simd_add(simd_quatd p, simd_quatd q);
+
+/*! @abstract The difference of the quaternions `p` and `q`. */
+static inline SIMD_CFUNC simd_quatd simd_sub(simd_quatd p, simd_quatd q);
+
+/*! @abstract The product of the quaternions `p` and `q`. */
+static inline SIMD_CFUNC simd_quatd simd_mul(simd_quatd p, simd_quatd q);
+
+/*! @abstract The quaternion `q` scaled by the real value `a`. */
+static inline SIMD_CFUNC simd_quatd simd_mul(simd_quatd q, double a);
+
+/*! @abstract The quaternion `q` scaled by the real value `a`. */
+static inline SIMD_CFUNC simd_quatd simd_mul(double a, simd_quatd q);
+
+/*! @abstract The conjugate of the quaternion `q`. */
+static inline SIMD_CFUNC simd_quatd simd_conjugate(simd_quatd q);
+
+/*! @abstract The (multiplicative) inverse of the quaternion `q`. */
+static inline SIMD_CFUNC simd_quatd simd_inverse(simd_quatd q);
+
+/*! @abstract The negation (additive inverse) of the quaternion `q`. */
+static inline SIMD_CFUNC simd_quatd simd_negate(simd_quatd q);
+
+/*! @abstract The dot product of the quaternions `p` and `q` interpreted as
+ * four-dimensional vectors. */
+static inline SIMD_CFUNC double simd_dot(simd_quatd p, simd_quatd q);
+
+/*! @abstract The length of the quaternion `q`. */
+static inline SIMD_CFUNC double simd_length(simd_quatd q);
+
+/*! @abstract The unit quaternion obtained by normalizing `q`. */
+static inline SIMD_CFUNC simd_quatd simd_normalize(simd_quatd q);
+
+/*! @abstract Rotates the vector `v` by the quaternion `q`. */
+static inline SIMD_CFUNC simd_double3 simd_act(simd_quatd q, simd_double3 v);
+
+/*! @abstract Logarithm of the quaternion `q`.
+ * @discussion Do not call this function directly; use `log(q)` instead.
+ *
+ * We can write a quaternion `q` in the form: `r(cos(t) + sin(t)v)` where
+ * `r` is the length of `q`, `t` is an angle, and `v` is a unit 3-vector.
+ * The logarithm of `q` is `log(r) + tv`, just like the logarithm of the
+ * complex number `r*(cos(t) + i sin(t))` is `log(r) + it`.
+ *
+ * Note that this function is not robust against poorly-scaled non-unit
+ * quaternions, because it is primarily used for spline interpolation of
+ * unit quaternions. If you need to compute a robust logarithm of general
+ * quaternions, you can use the following approach:
+ *
+ * scale = simd_reduce_max(simd_abs(q.vector));
+ * logq = log(simd_recip(scale)*q);
+ * logq.real += log(scale);
+ * return logq; */
+static SIMD_NOINLINE simd_quatd __tg_log(simd_quatd q);
+
+/*! @abstract Inverse of `log( )`; the exponential map on quaternions.
+ * @discussion Do not call this function directly; use `exp(q)` instead. */
+static SIMD_NOINLINE simd_quatd __tg_exp(simd_quatd q);
+
+/*! @abstract Spherical linear interpolation along the shortest arc between
+ * quaternions `q0` and `q1`. */
+static SIMD_NOINLINE simd_quatd simd_slerp(simd_quatd q0, simd_quatd q1, double t);
+
+/*! @abstract Spherical linear interpolation along the longest arc between
+ * quaternions `q0` and `q1`. */
+static SIMD_NOINLINE simd_quatd simd_slerp_longest(simd_quatd q0, simd_quatd q1, double t);
+
+/*! @abstract Interpolate between quaternions along a spherical cubic spline.
+ *
+ * @discussion The function interpolates between q1 and q2. q0 is the left
+ * endpoint of the previous interval, and q3 is the right endpoint of the next
+ * interval. Use this function to smoothly interpolate between a sequence of
+ * rotations. */
+static SIMD_NOINLINE simd_quatd simd_spline(simd_quatd q0, simd_quatd q1, simd_quatd q2, simd_quatd q3, double t);
+
+/*! @abstract Spherical cubic Bezier interpolation between quaternions.
+ *
+ * @discussion The function treats q0 ... q3 as control points and uses slerp
+ * in place of lerp in the De Castlejeau algorithm. The endpoints of
+ * interpolation are thus q0 and q3, and the curve will not generally pass
+ * through q1 or q2. Note that the convex hull property of "standard" Bezier
+ * curve does not hold on the sphere. */
+static SIMD_NOINLINE simd_quatd simd_bezier(simd_quatd q0, simd_quatd q1, simd_quatd q2, simd_quatd q3, double t);
+
+#ifdef __cplusplus
+} /* extern "C" */
+/* MARK: - C++ double interfaces */
+
+namespace simd {
+ struct quatd : ::simd_quatd {
+ /*! @abstract The identity quaternion. */
+ quatd( ) : ::simd_quatd(::simd_quaternion((double4){0,0,0,1})) { }
+
+ /*! @abstract Constructs a C++ quaternion from a C quaternion. */
+ quatd(::simd_quatd q) : ::simd_quatd(q) { }
+
+ /*! @abstract Constructs a quaternion from components. */
+ quatd(double ix, double iy, double iz, double r) : ::simd_quatd(::simd_quaternion(ix, iy, iz, r)) { }
+
+ /*! @abstract Constructs a quaternion from an array of scalars. */
+ quatd(const double xyzr[4]) : ::simd_quatd(::simd_quaternion(xyzr)) { }
+
+ /*! @abstract Constructs a quaternion from a vector. */
+ quatd(double4 xyzr) : ::simd_quatd(::simd_quaternion(xyzr)) { }
+
+ /*! @abstract Quaternion representing rotation about `axis` by `angle`
+ * radians. */
+ quatd(double angle, double3 axis) : ::simd_quatd(::simd_quaternion(angle, axis)) { }
+
+ /*! @abstract Quaternion that rotates `from` into `to`. */
+ quatd(double3 from, double3 to) : ::simd_quatd(::simd_quaternion(from, to)) { }
+
+ /*! @abstract Constructs a quaternion from a rotation matrix. */
+ quatd(::simd_double3x3 matrix) : ::simd_quatd(::simd_quaternion(matrix)) { }
+
+ /*! @abstract Constructs a quaternion from a rotation matrix. */
+ quatd(::simd_double4x4 matrix) : ::simd_quatd(::simd_quaternion(matrix)) { }
+
+ /*! @abstract The real (scalar) part of the quaternion. */
+ double real(void) const { return ::simd_real(*this); }
+
+ /*! @abstract The imaginary (vector) part of the quaternion. */
+ double3 imag(void) const { return ::simd_imag(*this); }
+
+ /*! @abstract The angle the quaternion rotates by. */
+ double angle(void) const { return ::simd_angle(*this); }
+
+ /*! @abstract The axis the quaternion rotates about. */
+ double3 axis(void) const { return ::simd_axis(*this); }
+
+ /*! @abstract The length of the quaternion. */
+ double length(void) const { return ::simd_length(*this); }
+
+ /*! @abstract Act on the vector `v` by rotation. */
+ double3 operator()(const ::simd_double3 v) const { return ::simd_act(*this, v); }
+ };
+
+ static SIMD_CPPFUNC quatd operator+(const ::simd_quatd p, const ::simd_quatd q) { return ::simd_add(p, q); }
+ static SIMD_CPPFUNC quatd operator-(const ::simd_quatd p, const ::simd_quatd q) { return ::simd_sub(p, q); }
+ static SIMD_CPPFUNC quatd operator-(const ::simd_quatd p) { return ::simd_negate(p); }
+ static SIMD_CPPFUNC quatd operator*(const double r, const ::simd_quatd p) { return ::simd_mul(r, p); }
+ static SIMD_CPPFUNC quatd operator*(const ::simd_quatd p, const double r) { return ::simd_mul(p, r); }
+ static SIMD_CPPFUNC quatd operator*(const ::simd_quatd p, const ::simd_quatd q) { return ::simd_mul(p, q); }
+ static SIMD_CPPFUNC quatd operator/(const ::simd_quatd p, const ::simd_quatd q) { return ::simd_mul(p, ::simd_inverse(q)); }
+ static SIMD_CPPFUNC quatd operator+=(quatd &p, const ::simd_quatd q) { return p = p+q; }
+ static SIMD_CPPFUNC quatd operator-=(quatd &p, const ::simd_quatd q) { return p = p-q; }
+ static SIMD_CPPFUNC quatd operator*=(quatd &p, const double r) { return p = p*r; }
+ static SIMD_CPPFUNC quatd operator*=(quatd &p, const ::simd_quatd q) { return p = p*q; }
+ static SIMD_CPPFUNC quatd operator/=(quatd &p, const ::simd_quatd q) { return p = p/q; }
+
+ /*! @abstract The conjugate of the quaternion `q`. */
+ static SIMD_CPPFUNC quatd conjugate(const ::simd_quatd p) { return ::simd_conjugate(p); }
+
+ /*! @abstract The (multiplicative) inverse of the quaternion `q`. */
+ static SIMD_CPPFUNC quatd inverse(const ::simd_quatd p) { return ::simd_inverse(p); }
+
+ /*! @abstract The dot product of the quaternions `p` and `q` interpreted as
+ * four-dimensional vectors. */
+ static SIMD_CPPFUNC double dot(const ::simd_quatd p, const ::simd_quatd q) { return ::simd_dot(p, q); }
+
+ /*! @abstract The unit quaternion obtained by normalizing `q`. */
+ static SIMD_CPPFUNC quatd normalize(const ::simd_quatd p) { return ::simd_normalize(p); }
+
+ /*! @abstract logarithm of the quaternion `q`. */
+ static SIMD_CPPFUNC quatd log(const ::simd_quatd q) { return ::__tg_log(q); }
+
+ /*! @abstract exponential map of quaterion `q`. */
+ static SIMD_CPPFUNC quatd exp(const ::simd_quatd q) { return ::__tg_exp(q); }
+
+ /*! @abstract Spherical linear interpolation along the shortest arc between
+ * quaternions `q0` and `q1`. */
+ static SIMD_CPPFUNC quatd slerp(const ::simd_quatd p0, const ::simd_quatd p1, double t) { return ::simd_slerp(p0, p1, t); }
+
+ /*! @abstract Spherical linear interpolation along the longest arc between
+ * quaternions `q0` and `q1`. */
+ static SIMD_CPPFUNC quatd slerp_longest(const ::simd_quatd p0, const ::simd_quatd p1, double t) { return ::simd_slerp_longest(p0, p1, t); }
+
+ /*! @abstract Interpolate between quaternions along a spherical cubic spline.
+ *
+ * @discussion The function interpolates between q1 and q2. q0 is the left
+ * endpoint of the previous interval, and q3 is the right endpoint of the next
+ * interval. Use this function to smoothly interpolate between a sequence of
+ * rotations. */
+ static SIMD_CPPFUNC quatd spline(const ::simd_quatd p0, const ::simd_quatd p1, const ::simd_quatd p2, const ::simd_quatd p3, double t) { return ::simd_spline(p0, p1, p2, p3, t); }
+
+ /*! @abstract Spherical cubic Bezier interpolation between quaternions.
+ *
+ * @discussion The function treats q0 ... q3 as control points and uses slerp
+ * in place of lerp in the De Castlejeau algorithm. The endpoints of
+ * interpolation are thus q0 and q3, and the curve will not generally pass
+ * through q1 or q2. Note that the convex hull property of "standard" Bezier
+ * curve does not hold on the sphere. */
+ static SIMD_CPPFUNC quatd bezier(const ::simd_quatd p0, const ::simd_quatd p1, const ::simd_quatd p2, const ::simd_quatd p3, double t) { return ::simd_bezier(p0, p1, p2, p3, t); }
+}
+
+extern "C" {
+#endif /* __cplusplus */
+
+/* MARK: - double implementations */
+
+#include <simd/math.h>
+#include <simd/geometry.h>
+
+/* tg_promote is implementation gobbledygook that enables the compile-time
+ * dispatching in tgmath.h to work its magic. */
+static simd_quatd __attribute__((__overloadable__)) __tg_promote(simd_quatd);
+
+/*! @abstract Constructs a quaternion from imaginary and real parts.
+ * @discussion This function is hidden behind an underscore to avoid confusion
+ * with the angle-axis constructor. */
+static inline SIMD_CFUNC simd_quatd _simd_quaternion(simd_double3 imag, double real) {
+ return simd_quaternion(simd_make_double4(imag, real));
+}
+
+static inline SIMD_CFUNC simd_quatd simd_quaternion(double angle, simd_double3 axis) {
+ return _simd_quaternion(sin(angle/2) * axis, cos(angle/2));
+}
+
+static inline SIMD_CFUNC double simd_angle(simd_quatd q) {
+ return 2*atan2(simd_length(q.vector.xyz), q.vector.w);
+}
+
+static inline SIMD_CFUNC simd_double3 simd_axis(simd_quatd q) {
+ return simd_normalize(q.vector.xyz);
+}
+
+static inline SIMD_CFUNC simd_quatd simd_add(simd_quatd p, simd_quatd q) {
+ return simd_quaternion(p.vector + q.vector);
+}
+
+static inline SIMD_CFUNC simd_quatd simd_sub(simd_quatd p, simd_quatd q) {
+ return simd_quaternion(p.vector - q.vector);
+}
+
+static inline SIMD_CFUNC simd_quatd simd_mul(simd_quatd p, simd_quatd q) {
+ #pragma STDC FP_CONTRACT ON
+ return simd_quaternion((p.vector.x * __builtin_shufflevector(q.vector, -q.vector, 3,6,1,4) +
+ p.vector.y * __builtin_shufflevector(q.vector, -q.vector, 2,3,4,5)) +
+ (p.vector.z * __builtin_shufflevector(q.vector, -q.vector, 5,0,3,6) +
+ p.vector.w * q.vector));
+}
+
+static inline SIMD_CFUNC simd_quatd simd_mul(simd_quatd q, double a) {
+ return simd_quaternion(a * q.vector);
+}
+
+static inline SIMD_CFUNC simd_quatd simd_mul(double a, simd_quatd q) {
+ return simd_mul(q,a);
+}
+
+static inline SIMD_CFUNC simd_quatd simd_conjugate(simd_quatd q) {
+ return simd_quaternion(q.vector * (simd_double4){-1,-1,-1, 1});
+}
+
+static inline SIMD_CFUNC simd_quatd simd_inverse(simd_quatd q) {
+ return simd_quaternion(simd_conjugate(q).vector * simd_recip(simd_length_squared(q.vector)));
+}
+
+static inline SIMD_CFUNC simd_quatd simd_negate(simd_quatd q) {
+ return simd_quaternion(-q.vector);
+}
+
+static inline SIMD_CFUNC double simd_dot(simd_quatd p, simd_quatd q) {
+ return simd_dot(p.vector, q.vector);
+}
+
+static inline SIMD_CFUNC double simd_length(simd_quatd q) {
+ return simd_length(q.vector);
+}
+
+static inline SIMD_CFUNC simd_quatd simd_normalize(simd_quatd q) {
+ double length_squared = simd_length_squared(q.vector);
+ if (length_squared == 0) {
+ return simd_quaternion((simd_double4){0,0,0,1});
+ }
+ return simd_quaternion(q.vector * simd_rsqrt(length_squared));
+}
+
+#if defined __arm__ || defined __arm64__
+/*! @abstract Multiplies the vector `v` by the quaternion `q`.
+ *
+ * @discussion This IS NOT the action of `q` on `v` (i.e. this is not rotation
+ * by `q`. That operation is provided by `simd_act(q, v)`. This function is an
+ * implementation detail and you should not call it directly. It may be
+ * removed or modified in future versions of the simd module. */
+static inline SIMD_CFUNC simd_quatd _simd_mul_vq(simd_double3 v, simd_quatd q) {
+ #pragma STDC FP_CONTRACT ON
+ return simd_quaternion(v.x * __builtin_shufflevector(q.vector, -q.vector, 3,6,1,4) +
+ v.y * __builtin_shufflevector(q.vector, -q.vector, 2,3,4,5) +
+ v.z * __builtin_shufflevector(q.vector, -q.vector, 5,0,3,6));
+}
+#endif
+
+static inline SIMD_CFUNC simd_double3 simd_act(simd_quatd q, simd_double3 v) {
+#if defined __arm__ || defined __arm64__
+ return simd_mul(q, _simd_mul_vq(v, simd_conjugate(q))).vector.xyz;
+#else
+ #pragma STDC FP_CONTRACT ON
+ simd_double3 t = 2*simd_cross(simd_imag(q),v);
+ return v + simd_real(q)*t + simd_cross(simd_imag(q), t);
+#endif
+}
+
+static SIMD_NOINLINE simd_quatd __tg_log(simd_quatd q) {
+ double real = __tg_log(simd_length_squared(q.vector))/2;
+ if (simd_equal(simd_imag(q), 0)) return _simd_quaternion(0, real);
+ simd_double3 imag = __tg_acos(simd_real(q)/simd_length(q)) * simd_normalize(simd_imag(q));
+ return _simd_quaternion(imag, real);
+}
+
+static SIMD_NOINLINE simd_quatd __tg_exp(simd_quatd q) {
+ // angle is actually *twice* the angle of the rotation corresponding to
+ // the resulting quaternion, which is why we don't simply use the (angle,
+ // axis) constructor to generate `unit`.
+ double angle = simd_length(simd_imag(q));
+ if (angle == 0) return _simd_quaternion(0, exp(simd_real(q)));
+ simd_double3 axis = simd_normalize(simd_imag(q));
+ simd_quatd unit = _simd_quaternion(sin(angle)*axis, cosf(angle));
+ return simd_mul(exp(simd_real(q)), unit);
+}
+
+/*! @abstract Implementation detail of the `simd_quaternion(from, to)`
+ * initializer.
+ *
+ * @discussion Computes the quaternion rotation `from` to `to` if they are
+ * separated by less than 90 degrees. Not numerically stable for larger
+ * angles. This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static inline SIMD_CFUNC simd_quatd _simd_quaternion_reduced(simd_double3 from, simd_double3 to) {
+ simd_double3 half = simd_normalize(from + to);
+ return _simd_quaternion(simd_cross(from, half), simd_dot(from, half));
+}
+
+static SIMD_NOINLINE simd_quatd simd_quaternion(simd_double3 from, simd_double3 to) {
+
+ // If the angle between from and to is not too big, we can compute the
+ // rotation accurately using a simple implementation.
+ if (simd_dot(from, to) >= 0) {
+ return _simd_quaternion_reduced(from, to);
+ }
+
+ // Because from and to are more than 90 degrees apart, we compute the
+ // rotation in two stages (from -> half), (half -> to) to preserve numerical
+ // accuracy.
+ simd_double3 half = from + to;
+
+ if (simd_length_squared(half) == 0) {
+ // half is nearly zero, so from and to point in nearly opposite directions
+ // and the rotation is numerically underspecified. Pick an axis orthogonal
+ // to the vectors, and use an angle of pi radians.
+ simd_double3 abs_from = simd_abs(from);
+ if (abs_from.x <= abs_from.y && abs_from.x <= abs_from.z)
+ return _simd_quaternion(simd_normalize(simd_cross(from, (simd_double3){1,0,0})), 0.f);
+ else if (abs_from.y <= abs_from.z)
+ return _simd_quaternion(simd_normalize(simd_cross(from, (simd_double3){0,1,0})), 0.f);
+ else
+ return _simd_quaternion(simd_normalize(simd_cross(from, (simd_double3){0,0,1})), 0.f);
+ }
+
+ // Compute the two-step rotation. */
+ half = simd_normalize(half);
+ return simd_mul(_simd_quaternion_reduced(from, half),
+ _simd_quaternion_reduced(half, to));
+}
+
+static SIMD_NOINLINE simd_quatd simd_quaternion(simd_double3x3 matrix) {
+ const simd_double3 *mat = matrix.columns;
+ double trace = mat[0][0] + mat[1][1] + mat[2][2];
+ if (trace >= 0.0) {
+ double r = 2*sqrt(1 + trace);
+ double rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[1][2] - mat[2][1]),
+ rinv*(mat[2][0] - mat[0][2]),
+ rinv*(mat[0][1] - mat[1][0]),
+ r/4);
+ } else if (mat[0][0] >= mat[1][1] && mat[0][0] >= mat[2][2]) {
+ double r = 2*sqrt(1 - mat[1][1] - mat[2][2] + mat[0][0]);
+ double rinv = simd_recip(r);
+ return simd_quaternion(r/4,
+ rinv*(mat[0][1] + mat[1][0]),
+ rinv*(mat[0][2] + mat[2][0]),
+ rinv*(mat[1][2] - mat[2][1]));
+ } else if (mat[1][1] >= mat[2][2]) {
+ double r = 2*sqrt(1 - mat[0][0] - mat[2][2] + mat[1][1]);
+ double rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[0][1] + mat[1][0]),
+ r/4,
+ rinv*(mat[1][2] + mat[2][1]),
+ rinv*(mat[2][0] - mat[0][2]));
+ } else {
+ double r = 2*sqrt(1 - mat[0][0] - mat[1][1] + mat[2][2]);
+ double rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[0][2] + mat[2][0]),
+ rinv*(mat[1][2] + mat[2][1]),
+ r/4,
+ rinv*(mat[0][1] - mat[1][0]));
+ }
+}
+
+static SIMD_NOINLINE simd_quatd simd_quaternion(simd_double4x4 matrix) {
+ const simd_double4 *mat = matrix.columns;
+ double trace = mat[0][0] + mat[1][1] + mat[2][2];
+ if (trace >= 0.0) {
+ double r = 2*sqrt(1 + trace);
+ double rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[1][2] - mat[2][1]),
+ rinv*(mat[2][0] - mat[0][2]),
+ rinv*(mat[0][1] - mat[1][0]),
+ r/4);
+ } else if (mat[0][0] >= mat[1][1] && mat[0][0] >= mat[2][2]) {
+ double r = 2*sqrt(1 - mat[1][1] - mat[2][2] + mat[0][0]);
+ double rinv = simd_recip(r);
+ return simd_quaternion(r/4,
+ rinv*(mat[0][1] + mat[1][0]),
+ rinv*(mat[0][2] + mat[2][0]),
+ rinv*(mat[1][2] - mat[2][1]));
+ } else if (mat[1][1] >= mat[2][2]) {
+ double r = 2*sqrt(1 - mat[0][0] - mat[2][2] + mat[1][1]);
+ double rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[0][1] + mat[1][0]),
+ r/4,
+ rinv*(mat[1][2] + mat[2][1]),
+ rinv*(mat[2][0] - mat[0][2]));
+ } else {
+ double r = 2*sqrt(1 - mat[0][0] - mat[1][1] + mat[2][2]);
+ double rinv = simd_recip(r);
+ return simd_quaternion(rinv*(mat[0][2] + mat[2][0]),
+ rinv*(mat[1][2] + mat[2][1]),
+ r/4,
+ rinv*(mat[0][1] - mat[1][0]));
+ }
+}
+
+/*! @abstract The angle between p and q interpreted as 4-dimensional vectors.
+ *
+ * @discussion This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static SIMD_NOINLINE double _simd_angle(simd_quatd p, simd_quatd q) {
+ return 2*atan2(simd_length(p.vector - q.vector), simd_length(p.vector + q.vector));
+}
+
+/*! @abstract sin(x)/x.
+ *
+ * @discussion This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static SIMD_CFUNC double _simd_sinc(double x) {
+ if (x == 0) return 1;
+ return sin(x)/x;
+}
+
+/*! @abstract Spherical lerp between q0 and q1.
+ *
+ * @discussion This function may interpolate along either the longer or
+ * shorter path between q0 and q1; it is used as an implementation detail
+ * in `simd_slerp` and `simd_slerp_longest`; you should use those functions
+ * instead of calling this directly. */
+static SIMD_NOINLINE simd_quatd _simd_slerp_internal(simd_quatd q0, simd_quatd q1, double t) {
+ double s = 1 - t;
+ double a = _simd_angle(q0, q1);
+ double r = simd_recip(_simd_sinc(a));
+ return simd_normalize(simd_quaternion(_simd_sinc(s*a)*r*s*q0.vector + _simd_sinc(t*a)*r*t*q1.vector));
+}
+
+static SIMD_NOINLINE simd_quatd simd_slerp(simd_quatd q0, simd_quatd q1, double t) {
+ if (simd_dot(q0, q1) >= 0)
+ return _simd_slerp_internal(q0, q1, t);
+ return _simd_slerp_internal(q0, simd_negate(q1), t);
+}
+
+static SIMD_NOINLINE simd_quatd simd_slerp_longest(simd_quatd q0, simd_quatd q1, double t) {
+ if (simd_dot(q0, q1) >= 0)
+ return _simd_slerp_internal(q0, simd_negate(q1), t);
+ return _simd_slerp_internal(q0, q1, t);
+}
+
+/*! @discussion This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static SIMD_NOINLINE simd_quatd _simd_intermediate(simd_quatd q0, simd_quatd q1, simd_quatd q2) {
+ simd_quatd p0 = __tg_log(simd_mul(q0, simd_inverse(q1)));
+ simd_quatd p2 = __tg_log(simd_mul(q2, simd_inverse(q1)));
+ return simd_normalize(simd_mul(q1, __tg_exp(simd_mul(-0.25, simd_add(p0,p2)))));
+}
+
+/*! @discussion This function is an implementation detail and you should not
+ * call it directly. It may be removed or modified in future versions of the
+ * simd module. */
+static SIMD_NOINLINE simd_quatd _simd_squad(simd_quatd q0, simd_quatd qa, simd_quatd qb, simd_quatd q1, double t) {
+ simd_quatd r0 = _simd_slerp_internal(q0, q1, t);
+ simd_quatd r1 = _simd_slerp_internal(qa, qb, t);
+ return _simd_slerp_internal(r0, r1, 2*t*(1 - t));
+}
+
+static SIMD_NOINLINE simd_quatd simd_spline(simd_quatd q0, simd_quatd q1, simd_quatd q2, simd_quatd q3, double t) {
+ simd_quatd qa = _simd_intermediate(q0, q1, q2);
+ simd_quatd qb = _simd_intermediate(q1, q2, q3);
+ return _simd_squad(q1, qa, qb, q2, t);
+}
+
+static SIMD_NOINLINE simd_quatd simd_bezier(simd_quatd q0, simd_quatd q1, simd_quatd q2, simd_quatd q3, double t) {
+ simd_quatd q01 = _simd_slerp_internal(q0, q1, t);
+ simd_quatd q12 = _simd_slerp_internal(q1, q2, t);
+ simd_quatd q23 = _simd_slerp_internal(q2, q3, t);
+ simd_quatd q012 = _simd_slerp_internal(q01, q12, t);
+ simd_quatd q123 = _simd_slerp_internal(q12, q23, t);
+ return _simd_slerp_internal(q012, q123, t);
+}
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif /* __cplusplus */
+#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
+#endif /* SIMD_QUATERNIONS */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/spawn.h b/lib/libc/include/aarch64-macos-gnu/spawn.h
new file mode 100644
index 0000000000..8a59eac2fa
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/spawn.h
@@ -0,0 +1,187 @@
+/*
+ * Copyright (c) 2006, 2010 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+
+#ifndef _SPAWN_H_
+#define _SPAWN_H_
+
+/*
+ * [SPN] Support for _POSIX_SPAWN
+ */
+
+#include <sys/cdefs.h>
+#include <_types.h>
+#include <sys/spawn.h> /* shared types */
+
+#include <Availability.h>
+
+/*
+ * [SPN] Inclusion of the <spawn.h> header may make visible symbols defined
+ * in the <sched.h>, <signal.h>, and <sys/types.h> headers.
+ */
+#include <sys/_types/_pid_t.h>
+#include <sys/_types/_sigset_t.h>
+#include <sys/_types/_mode_t.h>
+
+/*
+ * Opaque types for use with posix_spawn() family functions. Internals are
+ * not defined, and should not be accessed directly. Types are defined as
+ * mandated by POSIX.
+ */
+typedef void *posix_spawnattr_t;
+typedef void *posix_spawn_file_actions_t;
+
+__BEGIN_DECLS
+/*
+ * gcc under c99 mode won't compile "[ __restrict]" by itself. As a workaround,
+ * a dummy argument name is added.
+ */
+
+int posix_spawn(pid_t * __restrict, const char * __restrict,
+ const posix_spawn_file_actions_t *,
+ const posix_spawnattr_t * __restrict,
+ char *const __argv[__restrict],
+ char *const __envp[__restrict]) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnp(pid_t * __restrict, const char * __restrict,
+ const posix_spawn_file_actions_t *,
+ const posix_spawnattr_t * __restrict,
+ char *const __argv[__restrict],
+ char *const __envp[__restrict]) __API_AVAILABLE(macos(10.5), ios(2.0));
+
+int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *, int) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *, int,
+ int) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawn_file_actions_addopen(
+ posix_spawn_file_actions_t * __restrict, int,
+ const char * __restrict, int, mode_t) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawn_file_actions_init(posix_spawn_file_actions_t *) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_destroy(posix_spawnattr_t *) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_getsigdefault(const posix_spawnattr_t * __restrict,
+ sigset_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_getflags(const posix_spawnattr_t * __restrict,
+ short * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_getpgroup(const posix_spawnattr_t * __restrict,
+ pid_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_getsigmask(const posix_spawnattr_t * __restrict,
+ sigset_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_init(posix_spawnattr_t *) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setsigdefault(posix_spawnattr_t * __restrict,
+ const sigset_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setflags(posix_spawnattr_t *, short) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setsigmask(posix_spawnattr_t * __restrict,
+ const sigset_t * __restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+#if 0 /* _POSIX_PRIORITY_SCHEDULING [PS] : not supported */
+int posix_spawnattr_setschedparam(posix_spawnattr_t * __restrict,
+ const struct sched_param * __restrict);
+int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
+int posix_spawnattr_getschedparam(const posix_spawnattr_t * __restrict,
+ struct sched_param * __restrict);
+int posix_spawnattr_getschedpolicy(const posix_spawnattr_t * __restrict,
+ int * __restrict);
+#endif /* 0 */
+
+__END_DECLS
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * Darwin-specific extensions below
+ */
+#include <mach/exception_types.h>
+#include <mach/machine.h>
+#include <mach/port.h>
+
+#include <sys/_types/_size_t.h>
+
+__BEGIN_DECLS
+
+int posix_spawnattr_getbinpref_np(const posix_spawnattr_t * __restrict,
+ size_t, cpu_type_t *__restrict, size_t *__restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_getarchpref_np(const posix_spawnattr_t * __restrict,
+ size_t, cpu_type_t *__restrict, cpu_subtype_t *__restrict, size_t *__restrict) __API_AVAILABLE(macos(11.0), ios(14.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setauditsessionport_np(posix_spawnattr_t * __restrict,
+ mach_port_t) __API_AVAILABLE(macos(10.6), ios(3.2));
+
+int posix_spawnattr_setbinpref_np(posix_spawnattr_t * __restrict,
+ size_t, cpu_type_t *__restrict, size_t *__restrict) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setarchpref_np(posix_spawnattr_t * __restrict,
+ size_t, cpu_type_t *__restrict, cpu_subtype_t *__restrict, size_t *__restrict) __API_AVAILABLE(macos(11.0), ios(14.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setexceptionports_np(posix_spawnattr_t * __restrict,
+ exception_mask_t, mach_port_t,
+ exception_behavior_t, thread_state_flavor_t) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setspecialport_np(posix_spawnattr_t * __restrict,
+ mach_port_t, int) __API_AVAILABLE(macos(10.5), ios(2.0)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawnattr_setsuidcredport_np(posix_spawnattr_t * __restrict, mach_port_t) __API_UNAVAILABLE(ios, macos);
+
+int posix_spawnattr_setnosmt_np(const posix_spawnattr_t * __restrict attr) __API_AVAILABLE(macos(11.0));
+
+/*
+ * Set CPU Security Mitigation on the spawned process
+ * This attribute affects all threads and is inherited on fork and exec
+ */
+int posix_spawnattr_set_csm_np(const posix_spawnattr_t * __restrict attr, uint32_t flags) __API_AVAILABLE(macos(11.0));
+/*
+ * flags for CPU Security Mitigation attribute
+ * POSIX_SPAWN_NP_CSM_ALL should be used in most cases,
+ * the individual flags are provided only for performance evaluation etc
+ */
+#define POSIX_SPAWN_NP_CSM_ALL 0x0001
+#define POSIX_SPAWN_NP_CSM_NOSMT 0x0002
+#define POSIX_SPAWN_NP_CSM_TECS 0x0004
+
+int posix_spawn_file_actions_addinherit_np(posix_spawn_file_actions_t *,
+ int) __API_AVAILABLE(macos(10.7), ios(4.3)) __API_UNAVAILABLE(watchos, tvos);
+
+int posix_spawn_file_actions_addchdir_np(posix_spawn_file_actions_t *,
+ const char * __restrict) __API_AVAILABLE(macos(10.15)) __API_UNAVAILABLE(ios, tvos, watchos);
+
+int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *,
+ int) __API_AVAILABLE(macos(10.15)) __API_UNAVAILABLE(ios, tvos, watchos);
+
+__END_DECLS
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#endif /* _SPAWN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/stdio.h b/lib/libc/include/aarch64-macos-gnu/stdio.h
new file mode 100644
index 0000000000..f28020b797
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/stdio.h
@@ -0,0 +1,410 @@
+/*
+ * Copyright (c) 2000, 2005, 2007, 2009, 2010 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*-
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Chris Torek.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)stdio.h 8.5 (Berkeley) 4/29/95
+ */
+
+#ifndef _STDIO_H_
+#define _STDIO_H_
+
+#include <_stdio.h>
+
+__BEGIN_DECLS
+extern FILE *__stdinp;
+extern FILE *__stdoutp;
+extern FILE *__stderrp;
+__END_DECLS
+
+#define __SLBF 0x0001 /* line buffered */
+#define __SNBF 0x0002 /* unbuffered */
+#define __SRD 0x0004 /* OK to read */
+#define __SWR 0x0008 /* OK to write */
+ /* RD and WR are never simultaneously asserted */
+#define __SRW 0x0010 /* open for reading & writing */
+#define __SEOF 0x0020 /* found EOF */
+#define __SERR 0x0040 /* found error */
+#define __SMBF 0x0080 /* _buf is from malloc */
+#define __SAPP 0x0100 /* fdopen()ed in append mode */
+#define __SSTR 0x0200 /* this is an sprintf/snprintf string */
+#define __SOPT 0x0400 /* do fseek() optimisation */
+#define __SNPT 0x0800 /* do not do fseek() optimisation */
+#define __SOFF 0x1000 /* set iff _offset is in fact correct */
+#define __SMOD 0x2000 /* true => fgetln modified _p text */
+#define __SALC 0x4000 /* allocate string space dynamically */
+#define __SIGN 0x8000 /* ignore this file in _fwalk */
+
+/*
+ * The following three definitions are for ANSI C, which took them
+ * from System V, which brilliantly took internal interface macros and
+ * made them official arguments to setvbuf(), without renaming them.
+ * Hence, these ugly _IOxxx names are *supposed* to appear in user code.
+ *
+ * Although numbered as their counterparts above, the implementation
+ * does not rely on this.
+ */
+#define _IOFBF 0 /* setvbuf should set fully buffered */
+#define _IOLBF 1 /* setvbuf should set line buffered */
+#define _IONBF 2 /* setvbuf should set unbuffered */
+
+#define BUFSIZ 1024 /* size of buffer used by setbuf */
+#define EOF (-1)
+
+ /* must be == _POSIX_STREAM_MAX <limits.h> */
+#define FOPEN_MAX 20 /* must be <= OPEN_MAX <sys/syslimits.h> */
+#define FILENAME_MAX 1024 /* must be <= PATH_MAX <sys/syslimits.h> */
+
+/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
+#ifndef _ANSI_SOURCE
+#define P_tmpdir "/var/tmp/"
+#endif
+#define L_tmpnam 1024 /* XXX must be == PATH_MAX */
+#define TMP_MAX 308915776
+
+#ifndef SEEK_SET
+#define SEEK_SET 0 /* set file offset to offset */
+#endif
+#ifndef SEEK_CUR
+#define SEEK_CUR 1 /* set file offset to current plus offset */
+#endif
+#ifndef SEEK_END
+#define SEEK_END 2 /* set file offset to EOF plus offset */
+#endif
+
+#define stdin __stdinp
+#define stdout __stdoutp
+#define stderr __stderrp
+
+#ifdef _DARWIN_UNLIMITED_STREAMS
+#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2
+#error "_DARWIN_UNLIMITED_STREAMS specified, but -miphoneos-version-min version does not support it."
+#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_6
+#error "_DARWIN_UNLIMITED_STREAMS specified, but -mmacosx-version-min version does not support it."
+#endif
+#endif
+
+/* ANSI-C */
+
+__BEGIN_DECLS
+void clearerr(FILE *);
+int fclose(FILE *);
+int feof(FILE *);
+int ferror(FILE *);
+int fflush(FILE *);
+int fgetc(FILE *);
+int fgetpos(FILE * __restrict, fpos_t *);
+char *fgets(char * __restrict, int, FILE *);
+#if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE)
+FILE *fopen(const char * __restrict __filename, const char * __restrict __mode) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(fopen));
+#else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */
+FILE *fopen(const char * __restrict __filename, const char * __restrict __mode) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fopen));
+#endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */
+int fprintf(FILE * __restrict, const char * __restrict, ...) __printflike(2, 3);
+int fputc(int, FILE *);
+int fputs(const char * __restrict, FILE * __restrict) __DARWIN_ALIAS(fputs);
+size_t fread(void * __restrict __ptr, size_t __size, size_t __nitems, FILE * __restrict __stream);
+FILE *freopen(const char * __restrict, const char * __restrict,
+ FILE * __restrict) __DARWIN_ALIAS(freopen);
+int fscanf(FILE * __restrict, const char * __restrict, ...) __scanflike(2, 3);
+int fseek(FILE *, long, int);
+int fsetpos(FILE *, const fpos_t *);
+long ftell(FILE *);
+size_t fwrite(const void * __restrict __ptr, size_t __size, size_t __nitems, FILE * __restrict __stream) __DARWIN_ALIAS(fwrite);
+int getc(FILE *);
+int getchar(void);
+char *gets(char *);
+void perror(const char *) __cold;
+int printf(const char * __restrict, ...) __printflike(1, 2);
+int putc(int, FILE *);
+int putchar(int);
+int puts(const char *);
+int remove(const char *);
+int rename (const char *__old, const char *__new);
+void rewind(FILE *);
+int scanf(const char * __restrict, ...) __scanflike(1, 2);
+void setbuf(FILE * __restrict, char * __restrict);
+int setvbuf(FILE * __restrict, char * __restrict, int, size_t);
+int sprintf(char * __restrict, const char * __restrict, ...) __printflike(2, 3) __swift_unavailable("Use snprintf instead.");
+int sscanf(const char * __restrict, const char * __restrict, ...) __scanflike(2, 3);
+FILE *tmpfile(void);
+
+__swift_unavailable("Use mkstemp(3) instead.")
+#if !defined(_POSIX_C_SOURCE)
+__deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tmpnam(3), it is highly recommended that you use mkstemp(3) instead.")
+#endif
+char *tmpnam(char *);
+int ungetc(int, FILE *);
+int vfprintf(FILE * __restrict, const char * __restrict, va_list) __printflike(2, 0);
+int vprintf(const char * __restrict, va_list) __printflike(1, 0);
+int vsprintf(char * __restrict, const char * __restrict, va_list) __printflike(2, 0) __swift_unavailable("Use vsnprintf instead.");
+__END_DECLS
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-1988
+ */
+
+#if __DARWIN_C_LEVEL >= 198808L
+#define L_ctermid 1024 /* size for ctermid(); PATH_MAX */
+
+__BEGIN_DECLS
+#include <_ctermid.h>
+
+#if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE)
+FILE *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(fdopen));
+#else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */
+FILE *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fdopen));
+#endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */
+int fileno(FILE *);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 198808L */
+
+
+/* Additional functionality provided by:
+ * POSIX.2-1992 C Language Binding Option
+ */
+#if TARGET_OS_IPHONE
+#define __swift_unavailable_on(osx_msg, ios_msg) __swift_unavailable(ios_msg)
+#else
+#define __swift_unavailable_on(osx_msg, ios_msg) __swift_unavailable(osx_msg)
+#endif
+
+#if __DARWIN_C_LEVEL >= 199209L
+__BEGIN_DECLS
+int pclose(FILE *) __swift_unavailable_on("Use posix_spawn APIs or NSTask instead.", "Process spawning is unavailable.");
+#if defined(_DARWIN_UNLIMITED_STREAMS) || defined(_DARWIN_C_SOURCE)
+FILE *popen(const char *, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(popen)) __swift_unavailable_on("Use posix_spawn APIs or NSTask instead.", "Process spawning is unavailable.");
+#else /* !_DARWIN_UNLIMITED_STREAMS && !_DARWIN_C_SOURCE */
+FILE *popen(const char *, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(popen)) __swift_unavailable_on("Use posix_spawn APIs or NSTask instead.", "Process spawning is unavailable.");
+#endif /* (DARWIN_UNLIMITED_STREAMS || _DARWIN_C_SOURCE) */
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 199209L */
+
+#undef __swift_unavailable_on
+
+/* Additional functionality provided by:
+ * POSIX.1c-1995,
+ * POSIX.1i-1995,
+ * and the omnibus ISO/IEC 9945-1: 1996
+ */
+
+#if __DARWIN_C_LEVEL >= 199506L
+
+/* Functions internal to the implementation. */
+__BEGIN_DECLS
+int __srget(FILE *);
+int __svfscanf(FILE *, const char *, va_list) __scanflike(2, 0);
+int __swbuf(int, FILE *);
+__END_DECLS
+
+/*
+ * The __sfoo macros are here so that we can
+ * define function versions in the C library.
+ */
+#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
+#if defined(__GNUC__) && defined(__STDC__)
+__header_always_inline int __sputc(int _c, FILE *_p) {
+ if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
+ return (*_p->_p++ = _c);
+ else
+ return (__swbuf(_c, _p));
+}
+#else
+/*
+ * This has been tuned to generate reasonable code on the vax using pcc.
+ */
+#define __sputc(c, p) \
+ (--(p)->_w < 0 ? \
+ (p)->_w >= (p)->_lbfsize ? \
+ (*(p)->_p = (c)), *(p)->_p != '\n' ? \
+ (int)*(p)->_p++ : \
+ __swbuf('\n', p) : \
+ __swbuf((int)(c), p) : \
+ (*(p)->_p = (c), (int)*(p)->_p++))
+#endif
+
+#define __sfeof(p) (((p)->_flags & __SEOF) != 0)
+#define __sferror(p) (((p)->_flags & __SERR) != 0)
+#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
+#define __sfileno(p) ((p)->_file)
+
+__BEGIN_DECLS
+void flockfile(FILE *);
+int ftrylockfile(FILE *);
+void funlockfile(FILE *);
+int getc_unlocked(FILE *);
+int getchar_unlocked(void);
+int putc_unlocked(int, FILE *);
+int putchar_unlocked(int);
+
+/* Removed in Issue 6 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
+int getw(FILE *);
+int putw(int, FILE *);
+#endif
+
+__swift_unavailable("Use mkstemp(3) instead.")
+#if !defined(_POSIX_C_SOURCE)
+__deprecated_msg("This function is provided for compatibility reasons only. Due to security concerns inherent in the design of tempnam(3), it is highly recommended that you use mkstemp(3) instead.")
+#endif
+char *tempnam(const char *__dir, const char *__prefix) __DARWIN_ALIAS(tempnam);
+__END_DECLS
+
+#ifndef lint
+#define getc_unlocked(fp) __sgetc(fp)
+#define putc_unlocked(x, fp) __sputc(x, fp)
+#endif /* lint */
+
+#define getchar_unlocked() getc_unlocked(stdin)
+#define putchar_unlocked(x) putc_unlocked(x, stdout)
+#endif /* __DARWIN_C_LEVEL >= 199506L */
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2001
+ * ISO C99
+ */
+
+#if __DARWIN_C_LEVEL >= 200112L
+#include <sys/_types/_off_t.h>
+
+__BEGIN_DECLS
+int fseeko(FILE * __stream, off_t __offset, int __whence);
+off_t ftello(FILE * __stream);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+#if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus)
+__BEGIN_DECLS
+int snprintf(char * __restrict __str, size_t __size, const char * __restrict __format, ...) __printflike(3, 4);
+int vfscanf(FILE * __restrict __stream, const char * __restrict __format, va_list) __scanflike(2, 0);
+int vscanf(const char * __restrict __format, va_list) __scanflike(1, 0);
+int vsnprintf(char * __restrict __str, size_t __size, const char * __restrict __format, va_list) __printflike(3, 0);
+int vsscanf(const char * __restrict __str, const char * __restrict __format, va_list) __scanflike(2, 0);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus) */
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2008
+ */
+
+#if __DARWIN_C_LEVEL >= 200809L
+#include <sys/_types/_ssize_t.h>
+
+__BEGIN_DECLS
+int dprintf(int, const char * __restrict, ...) __printflike(2, 3) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+int vdprintf(int, const char * __restrict, va_list) __printflike(2, 0) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+ssize_t getdelim(char ** __restrict __linep, size_t * __restrict __linecapp, int __delimiter, FILE * __restrict __stream) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+ssize_t getline(char ** __restrict __linep, size_t * __restrict __linecapp, FILE * __restrict __stream) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+FILE *fmemopen(void * __restrict __buf, size_t __size, const char * __restrict __mode) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+FILE *open_memstream(char **__bufp, size_t *__sizep) __API_AVAILABLE(macos(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200809L */
+
+
+
+/* Darwin extensions */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+__BEGIN_DECLS
+extern __const int sys_nerr; /* perror(3) external variables */
+extern __const char *__const sys_errlist[];
+
+int asprintf(char ** __restrict, const char * __restrict, ...) __printflike(2, 3);
+char *ctermid_r(char *);
+char *fgetln(FILE *, size_t *);
+__const char *fmtcheck(const char *, const char *);
+int fpurge(FILE *);
+void setbuffer(FILE *, char *, int);
+int setlinebuf(FILE *);
+int vasprintf(char ** __restrict, const char * __restrict, va_list) __printflike(2, 0);
+FILE *zopen(const char *, const char *, int);
+
+
+/*
+ * Stdio function-access interface.
+ */
+FILE *funopen(const void *,
+ int (* _Nullable)(void *, char *, int),
+ int (* _Nullable)(void *, const char *, int),
+ fpos_t (* _Nullable)(void *, fpos_t, int),
+ int (* _Nullable)(void *));
+__END_DECLS
+#define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
+#define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
+
+#define feof_unlocked(p) __sfeof(p)
+#define ferror_unlocked(p) __sferror(p)
+#define clearerr_unlocked(p) __sclearerr(p)
+#define fileno_unlocked(p) __sfileno(p)
+
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+
+#ifdef _USE_EXTENDED_LOCALES_
+#include <xlocale/_stdio.h>
+#endif /* _USE_EXTENDED_LOCALES_ */
+
+#if defined (__GNUC__) && _FORTIFY_SOURCE > 0 && !defined (__cplusplus)
+/* Security checking functions. */
+#include <secure/_stdio.h>
+#endif
+
+#endif /* _STDIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/stdlib.h b/lib/libc/include/aarch64-macos-gnu/stdlib.h
new file mode 100644
index 0000000000..699d3e85c2
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/stdlib.h
@@ -0,0 +1,373 @@
+/*
+ * Copyright (c) 2000, 2002 - 2008 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*-
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)stdlib.h 8.5 (Berkeley) 5/19/95
+ */
+
+#ifndef _STDLIB_H_
+#define _STDLIB_H_
+
+#include <Availability.h>
+#include <sys/cdefs.h>
+
+#include <_types.h>
+#if !defined(_ANSI_SOURCE)
+#include <sys/wait.h>
+#if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+#include <alloca.h>
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#endif /* !_ANSI_SOURCE */
+
+/* DO NOT REMOVE THIS COMMENT: fixincludes needs to see:
+ * _GCC_SIZE_T */
+#include <sys/_types/_size_t.h>
+
+#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+#include <sys/_types/_ct_rune_t.h>
+#include <sys/_types/_rune_t.h>
+#endif /* !_ANSI_SOURCE && (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+#include <sys/_types/_wchar_t.h>
+
+typedef struct {
+ int quot; /* quotient */
+ int rem; /* remainder */
+} div_t;
+
+typedef struct {
+ long quot; /* quotient */
+ long rem; /* remainder */
+} ldiv_t;
+
+#if !__DARWIN_NO_LONG_LONG
+typedef struct {
+ long long quot;
+ long long rem;
+} lldiv_t;
+#endif /* !__DARWIN_NO_LONG_LONG */
+
+#include <sys/_types/_null.h>
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+
+#define RAND_MAX 0x7fffffff
+
+#ifdef _USE_EXTENDED_LOCALES_
+#include <_xlocale.h>
+#endif /* _USE_EXTENDED_LOCALES_ */
+
+#ifndef MB_CUR_MAX
+#ifdef _USE_EXTENDED_LOCALES_
+#define MB_CUR_MAX (___mb_cur_max())
+#ifndef MB_CUR_MAX_L
+#define MB_CUR_MAX_L(x) (___mb_cur_max_l(x))
+#endif /* !MB_CUR_MAX_L */
+#else /* !_USE_EXTENDED_LOCALES_ */
+extern int __mb_cur_max;
+#define MB_CUR_MAX __mb_cur_max
+#endif /* _USE_EXTENDED_LOCALES_ */
+#endif /* MB_CUR_MAX */
+
+#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) \
+ && defined(_USE_EXTENDED_LOCALES_) && !defined(MB_CUR_MAX_L)
+#define MB_CUR_MAX_L(x) (___mb_cur_max_l(x))
+#endif
+
+#include <malloc/_malloc.h>
+
+__BEGIN_DECLS
+void abort(void) __cold __dead2;
+int abs(int) __pure2;
+int atexit(void (* _Nonnull)(void));
+double atof(const char *);
+int atoi(const char *);
+long atol(const char *);
+#if !__DARWIN_NO_LONG_LONG
+long long
+ atoll(const char *);
+#endif /* !__DARWIN_NO_LONG_LONG */
+void *bsearch(const void *__key, const void *__base, size_t __nel,
+ size_t __width, int (* _Nonnull __compar)(const void *, const void *));
+/* calloc is now declared in _malloc.h */
+div_t div(int, int) __pure2;
+void exit(int) __dead2;
+/* free is now declared in _malloc.h */
+char *getenv(const char *);
+long labs(long) __pure2;
+ldiv_t ldiv(long, long) __pure2;
+#if !__DARWIN_NO_LONG_LONG
+long long
+ llabs(long long);
+lldiv_t lldiv(long long, long long);
+#endif /* !__DARWIN_NO_LONG_LONG */
+/* malloc is now declared in _malloc.h */
+int mblen(const char *__s, size_t __n);
+size_t mbstowcs(wchar_t * __restrict , const char * __restrict, size_t);
+int mbtowc(wchar_t * __restrict, const char * __restrict, size_t);
+/* posix_memalign is now declared in _malloc.h */
+void qsort(void *__base, size_t __nel, size_t __width,
+ int (* _Nonnull __compar)(const void *, const void *));
+int rand(void) __swift_unavailable("Use arc4random instead.");
+/* realloc is now declared in _malloc.h */
+void srand(unsigned) __swift_unavailable("Use arc4random instead.");
+double strtod(const char *, char **) __DARWIN_ALIAS(strtod);
+float strtof(const char *, char **) __DARWIN_ALIAS(strtof);
+long strtol(const char *__str, char **__endptr, int __base);
+long double
+ strtold(const char *, char **);
+#if !__DARWIN_NO_LONG_LONG
+long long
+ strtoll(const char *__str, char **__endptr, int __base);
+#endif /* !__DARWIN_NO_LONG_LONG */
+unsigned long
+ strtoul(const char *__str, char **__endptr, int __base);
+#if !__DARWIN_NO_LONG_LONG
+unsigned long long
+ strtoull(const char *__str, char **__endptr, int __base);
+#endif /* !__DARWIN_NO_LONG_LONG */
+
+#if TARGET_OS_IPHONE
+#define __swift_unavailable_on(osx_msg, ios_msg) __swift_unavailable(ios_msg)
+#else
+#define __swift_unavailable_on(osx_msg, ios_msg) __swift_unavailable(osx_msg)
+#endif
+
+__swift_unavailable_on("Use posix_spawn APIs or NSTask instead.", "Process spawning is unavailable")
+__API_AVAILABLE(macos(10.0)) __IOS_PROHIBITED
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+int system(const char *) __DARWIN_ALIAS_C(system);
+
+#undef __swift_unavailable_on
+
+size_t wcstombs(char * __restrict, const wchar_t * __restrict, size_t);
+int wctomb(char *, wchar_t);
+
+#ifndef _ANSI_SOURCE
+void _Exit(int) __dead2;
+long a64l(const char *);
+double drand48(void);
+char *ecvt(double, int, int *__restrict, int *__restrict); /* LEGACY */
+double erand48(unsigned short[3]);
+char *fcvt(double, int, int *__restrict, int *__restrict); /* LEGACY */
+char *gcvt(double, int, char *); /* LEGACY */
+int getsubopt(char **, char * const *, char **);
+int grantpt(int);
+#if __DARWIN_UNIX03
+char *initstate(unsigned, char *, size_t); /* no __DARWIN_ALIAS needed */
+#else /* !__DARWIN_UNIX03 */
+char *initstate(unsigned long, char *, long);
+#endif /* __DARWIN_UNIX03 */
+long jrand48(unsigned short[3]) __swift_unavailable("Use arc4random instead.");
+char *l64a(long);
+void lcong48(unsigned short[7]);
+long lrand48(void) __swift_unavailable("Use arc4random instead.");
+char *mktemp(char *);
+int mkstemp(char *);
+long mrand48(void) __swift_unavailable("Use arc4random instead.");
+long nrand48(unsigned short[3]) __swift_unavailable("Use arc4random instead.");
+int posix_openpt(int);
+char *ptsname(int);
+
+#if (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+int ptsname_r(int fildes, char *buffer, size_t buflen) __API_AVAILABLE(macos(10.13.4), ios(11.3), tvos(11.3), watchos(4.3));
+#endif
+
+int putenv(char *) __DARWIN_ALIAS(putenv);
+long random(void) __swift_unavailable("Use arc4random instead.");
+int rand_r(unsigned *) __swift_unavailable("Use arc4random instead.");
+#if (__DARWIN_UNIX03 && !defined(_POSIX_C_SOURCE)) || defined(_DARWIN_C_SOURCE) || defined(_DARWIN_BETTER_REALPATH)
+char *realpath(const char * __restrict, char * __restrict) __DARWIN_EXTSN(realpath);
+#else /* (!__DARWIN_UNIX03 || _POSIX_C_SOURCE) && !_DARWIN_C_SOURCE && !_DARWIN_BETTER_REALPATH */
+char *realpath(const char * __restrict, char * __restrict) __DARWIN_ALIAS(realpath);
+#endif /* (__DARWIN_UNIX03 && _POSIX_C_SOURCE) || _DARWIN_C_SOURCE || _DARWIN_BETTER_REALPATH */
+unsigned short
+ *seed48(unsigned short[3]);
+int setenv(const char * __name, const char * __value, int __overwrite) __DARWIN_ALIAS(setenv);
+#if __DARWIN_UNIX03
+void setkey(const char *) __DARWIN_ALIAS(setkey);
+#else /* !__DARWIN_UNIX03 */
+int setkey(const char *);
+#endif /* __DARWIN_UNIX03 */
+char *setstate(const char *);
+void srand48(long);
+#if __DARWIN_UNIX03
+void srandom(unsigned);
+#else /* !__DARWIN_UNIX03 */
+void srandom(unsigned long);
+#endif /* __DARWIN_UNIX03 */
+int unlockpt(int);
+#if __DARWIN_UNIX03
+int unsetenv(const char *) __DARWIN_ALIAS(unsetenv);
+#else /* !__DARWIN_UNIX03 */
+void unsetenv(const char *);
+#endif /* __DARWIN_UNIX03 */
+#endif /* !_ANSI_SOURCE */
+
+#if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
+#include <machine/types.h>
+#include <sys/_types/_dev_t.h>
+#include <sys/_types/_mode_t.h>
+#include <_types/_uint32_t.h>
+
+uint32_t arc4random(void);
+void arc4random_addrandom(unsigned char * /*dat*/, int /*datlen*/)
+ __OSX_DEPRECATED(10.0, 10.12, "use arc4random_stir")
+ __IOS_DEPRECATED(2.0, 10.0, "use arc4random_stir")
+ __TVOS_DEPRECATED(2.0, 10.0, "use arc4random_stir")
+ __WATCHOS_DEPRECATED(1.0, 3.0, "use arc4random_stir");
+void arc4random_buf(void * __buf, size_t __nbytes) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+void arc4random_stir(void);
+uint32_t
+ arc4random_uniform(uint32_t __upper_bound) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+#ifdef __BLOCKS__
+int atexit_b(void (^ _Nonnull)(void)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+void *bsearch_b(const void *__key, const void *__base, size_t __nel,
+ size_t __width, int (^ _Nonnull __compar)(const void *, const void *)) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+#endif /* __BLOCKS__ */
+
+ /* getcap(3) functions */
+char *cgetcap(char *, const char *, int);
+int cgetclose(void);
+int cgetent(char **, char **, const char *);
+int cgetfirst(char **, char **);
+int cgetmatch(const char *, const char *);
+int cgetnext(char **, char **);
+int cgetnum(char *, const char *, long *);
+int cgetset(const char *);
+int cgetstr(char *, const char *, char **);
+int cgetustr(char *, const char *, char **);
+
+int daemon(int, int) __DARWIN_1050(daemon) __OSX_AVAILABLE_BUT_DEPRECATED_MSG(__MAC_10_0, __MAC_10_5, __IPHONE_2_0, __IPHONE_2_0, "Use posix_spawn APIs instead.") __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+char *devname(dev_t, mode_t);
+char *devname_r(dev_t, mode_t, char *buf, int len);
+char *getbsize(int *, long *);
+int getloadavg(double [], int);
+const char
+ *getprogname(void);
+void setprogname(const char *);
+
+#ifdef __BLOCKS__
+#if __has_attribute(noescape)
+#define __sort_noescape __attribute__((__noescape__))
+#else
+#define __sort_noescape
+#endif
+#endif /* __BLOCKS__ */
+
+int heapsort(void *__base, size_t __nel, size_t __width,
+ int (* _Nonnull __compar)(const void *, const void *));
+#ifdef __BLOCKS__
+int heapsort_b(void *__base, size_t __nel, size_t __width,
+ int (^ _Nonnull __compar)(const void *, const void *) __sort_noescape)
+ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+#endif /* __BLOCKS__ */
+int mergesort(void *__base, size_t __nel, size_t __width,
+ int (* _Nonnull __compar)(const void *, const void *));
+#ifdef __BLOCKS__
+int mergesort_b(void *__base, size_t __nel, size_t __width,
+ int (^ _Nonnull __compar)(const void *, const void *) __sort_noescape)
+ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+#endif /* __BLOCKS__ */
+void psort(void *__base, size_t __nel, size_t __width,
+ int (* _Nonnull __compar)(const void *, const void *))
+ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+#ifdef __BLOCKS__
+void psort_b(void *__base, size_t __nel, size_t __width,
+ int (^ _Nonnull __compar)(const void *, const void *) __sort_noescape)
+ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+#endif /* __BLOCKS__ */
+void psort_r(void *__base, size_t __nel, size_t __width, void *,
+ int (* _Nonnull __compar)(void *, const void *, const void *))
+ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+#ifdef __BLOCKS__
+void qsort_b(void *__base, size_t __nel, size_t __width,
+ int (^ _Nonnull __compar)(const void *, const void *) __sort_noescape)
+ __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+#endif /* __BLOCKS__ */
+void qsort_r(void *__base, size_t __nel, size_t __width, void *,
+ int (* _Nonnull __compar)(void *, const void *, const void *));
+int radixsort(const unsigned char **__base, int __nel, const unsigned char *__table,
+ unsigned __endbyte);
+int rpmatch(const char *)
+ __API_AVAILABLE(macos(10.15), ios(13.0), tvos(13.0), watchos(6.0));
+int sradixsort(const unsigned char **__base, int __nel, const unsigned char *__table,
+ unsigned __endbyte);
+void sranddev(void);
+void srandomdev(void);
+void *reallocf(void *__ptr, size_t __size) __alloc_size(2);
+long long
+ strtonum(const char *__numstr, long long __minval, long long __maxval, const char **__errstrp)
+ __API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0));
+#if !__DARWIN_NO_LONG_LONG
+long long
+ strtoq(const char *__str, char **__endptr, int __base);
+unsigned long long
+ strtouq(const char *__str, char **__endptr, int __base);
+#endif /* !__DARWIN_NO_LONG_LONG */
+extern char *suboptarg; /* getsubopt(3) external variable */
+/* valloc is now declared in _malloc.h */
+#endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
+
+/* Poison the following routines if -fshort-wchar is set */
+#if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
+#pragma GCC poison mbstowcs mbtowc wcstombs wctomb
+#endif
+__END_DECLS
+
+#ifdef _USE_EXTENDED_LOCALES_
+#include <xlocale/_stdlib.h>
+#endif /* _USE_EXTENDED_LOCALES_ */
+
+#endif /* _STDLIB_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/string.h b/lib/libc/include/aarch64-macos-gnu/string.h
new file mode 100644
index 0000000000..c704ee5940
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/string.h
@@ -0,0 +1,197 @@
+/*
+ * Copyright (c) 2000, 2007, 2010 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+/*-
+ * Copyright (c) 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)string.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _STRING_H_
+#define _STRING_H_
+
+#include <_types.h>
+#include <sys/cdefs.h>
+#include <Availability.h>
+#include <sys/_types/_size_t.h>
+#include <sys/_types/_null.h>
+
+/* ANSI-C */
+
+__BEGIN_DECLS
+void *memchr(const void *__s, int __c, size_t __n);
+int memcmp(const void *__s1, const void *__s2, size_t __n);
+void *memcpy(void *__dst, const void *__src, size_t __n);
+void *memmove(void *__dst, const void *__src, size_t __len);
+void *memset(void *__b, int __c, size_t __len);
+char *strcat(char *__s1, const char *__s2);
+char *strchr(const char *__s, int __c);
+int strcmp(const char *__s1, const char *__s2);
+int strcoll(const char *__s1, const char *__s2);
+char *strcpy(char *__dst, const char *__src);
+size_t strcspn(const char *__s, const char *__charset);
+char *strerror(int __errnum) __DARWIN_ALIAS(strerror);
+size_t strlen(const char *__s);
+char *strncat(char *__s1, const char *__s2, size_t __n);
+int strncmp(const char *__s1, const char *__s2, size_t __n);
+char *strncpy(char *__dst, const char *__src, size_t __n);
+char *strpbrk(const char *__s, const char *__charset);
+char *strrchr(const char *__s, int __c);
+size_t strspn(const char *__s, const char *__charset);
+char *strstr(const char *__big, const char *__little);
+char *strtok(char *__str, const char *__sep);
+size_t strxfrm(char *__s1, const char *__s2, size_t __n);
+__END_DECLS
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1c-1995,
+ * POSIX.1i-1995,
+ * and the omnibus ISO/IEC 9945-1: 1996
+ */
+
+#if __DARWIN_C_LEVEL >= 199506L
+__BEGIN_DECLS
+char *strtok_r(char *__str, const char *__sep, char **__lasts);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 199506L */
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2001
+ */
+
+#if __DARWIN_C_LEVEL >= 200112L
+__BEGIN_DECLS
+int strerror_r(int __errnum, char *__strerrbuf, size_t __buflen);
+char *strdup(const char *__s1);
+void *memccpy(void *__dst, const void *__src, int __c, size_t __n);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2008
+ */
+
+#if __DARWIN_C_LEVEL >= 200809L
+__BEGIN_DECLS
+char *stpcpy(char *__dst, const char *__src);
+char *stpncpy(char *__dst, const char *__src, size_t __n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+char *strndup(const char *__s1, size_t __n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+size_t strnlen(const char *__s1, size_t __n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+char *strsignal(int __sig);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200809L */
+
+/* C11 Annex K */
+
+#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
+#include <sys/_types/_rsize_t.h>
+#include <sys/_types/_errno_t.h>
+
+__BEGIN_DECLS
+errno_t memset_s(void *__s, rsize_t __smax, int __c, rsize_t __n) __OSX_AVAILABLE_STARTING(__MAC_10_9, __IPHONE_7_0);
+__END_DECLS
+#endif
+
+/* Darwin extensions */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#include <sys/_types/_ssize_t.h>
+
+__BEGIN_DECLS
+void *memmem(const void *__big, size_t __big_len, const void *__little, size_t __little_len) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+void memset_pattern4(void *__b, const void *__pattern4, size_t __len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
+void memset_pattern8(void *__b, const void *__pattern8, size_t __len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
+void memset_pattern16(void *__b, const void *__pattern16, size_t __len) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_3_0);
+
+char *strcasestr(const char *__big, const char *__little);
+char *strnstr(const char *__big, const char *__little, size_t __len);
+size_t strlcat(char *__dst, const char *__source, size_t __size);
+size_t strlcpy(char *__dst, const char *__source, size_t __size);
+void strmode(int __mode, char *__bp);
+char *strsep(char **__stringp, const char *__delim);
+
+/* SUS places swab() in unistd.h. It is listed here for source compatibility */
+void swab(const void * __restrict, void * __restrict, ssize_t);
+
+__OSX_AVAILABLE(10.12.1) __IOS_AVAILABLE(10.1)
+__TVOS_AVAILABLE(10.0.1) __WATCHOS_AVAILABLE(3.1)
+int timingsafe_bcmp(const void *__b1, const void *__b2, size_t __len);
+
+__OSX_AVAILABLE(11.0) __IOS_AVAILABLE(14.0)
+__TVOS_AVAILABLE(14.0) __WATCHOS_AVAILABLE(7.0)
+int strsignal_r(int __sig, char *__strsignalbuf, size_t __buflen);
+__END_DECLS
+
+/* Some functions historically defined in string.h were placed in strings.h
+ * by SUS. We are using "strings.h" instead of <strings.h> to avoid an issue
+ * where /Developer/Headers/FlatCarbon/Strings.h could be included instead on
+ * case-insensitive file systems.
+ */
+#include "strings.h"
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+
+#ifdef _USE_EXTENDED_LOCALES_
+#include <xlocale/_string.h>
+#endif /* _USE_EXTENDED_LOCALES_ */
+
+#if defined (__GNUC__) && _FORTIFY_SOURCE > 0 && !defined (__cplusplus)
+/* Security checking functions. */
+#include <secure/_string.h>
+#endif
+
+#endif /* _STRING_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_attr_t.h b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_attr_t.h
new file mode 100644
index 0000000000..e46261f1e4
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_attr_t.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _PTHREAD_ATTR_T
+#define _PTHREAD_ATTR_T
+#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_attr_t */
+typedef __darwin_pthread_attr_t pthread_attr_t;
+#endif /* _PTHREAD_ATTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_cond_t.h b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_cond_t.h
new file mode 100644
index 0000000000..628bd99ce7
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_cond_t.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _PTHREAD_COND_T
+#define _PTHREAD_COND_T
+#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_cond_t */
+typedef __darwin_pthread_cond_t pthread_cond_t;
+#endif /* _PTHREAD_COND_T */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_condattr_t.h b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_condattr_t.h
new file mode 100644
index 0000000000..4352a31611
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_condattr_t.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _PTHREAD_CONDATTR_T
+#define _PTHREAD_CONDATTR_T
+#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_condattr_t */
+typedef __darwin_pthread_condattr_t pthread_condattr_t;
+#endif /* _PTHREAD_CONDATTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h
new file mode 100644
index 0000000000..f033ed3069
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _PTHREAD_RWLOCK_T
+#define _PTHREAD_RWLOCK_T
+#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_rwlock_t */
+typedef __darwin_pthread_rwlock_t pthread_rwlock_t;
+#endif /* _PTHREAD_RWLOCK_T */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h
new file mode 100644
index 0000000000..6843d994ea
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _PTHREAD_RWLOCKATTR_T
+#define _PTHREAD_RWLOCKATTR_T
+#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_rwlockattr_t */
+typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t;
+#endif /* _PTHREAD_RWLOCKATTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_t.h b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_t.h
new file mode 100644
index 0000000000..bc03e26c2e
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_t.h
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _PTHREAD_T
+#define _PTHREAD_T
+#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_t */
+typedef __darwin_pthread_t pthread_t;
+#endif /* _PTHREAD_T */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_types.h b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_types.h
new file mode 100644
index 0000000000..5cf3d7a442
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_pthread/_pthread_types.h
@@ -0,0 +1,120 @@
+/*
+ * Copyright (c) 2003-2013 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _SYS__PTHREAD_TYPES_H_
+#define _SYS__PTHREAD_TYPES_H_
+
+#include <sys/cdefs.h>
+
+// pthread opaque structures
+#if defined(__LP64__)
+#define __PTHREAD_SIZE__ 8176
+#define __PTHREAD_ATTR_SIZE__ 56
+#define __PTHREAD_MUTEXATTR_SIZE__ 8
+#define __PTHREAD_MUTEX_SIZE__ 56
+#define __PTHREAD_CONDATTR_SIZE__ 8
+#define __PTHREAD_COND_SIZE__ 40
+#define __PTHREAD_ONCE_SIZE__ 8
+#define __PTHREAD_RWLOCK_SIZE__ 192
+#define __PTHREAD_RWLOCKATTR_SIZE__ 16
+#else // !__LP64__
+#define __PTHREAD_SIZE__ 4088
+#define __PTHREAD_ATTR_SIZE__ 36
+#define __PTHREAD_MUTEXATTR_SIZE__ 8
+#define __PTHREAD_MUTEX_SIZE__ 40
+#define __PTHREAD_CONDATTR_SIZE__ 4
+#define __PTHREAD_COND_SIZE__ 24
+#define __PTHREAD_ONCE_SIZE__ 4
+#define __PTHREAD_RWLOCK_SIZE__ 124
+#define __PTHREAD_RWLOCKATTR_SIZE__ 12
+#endif // !__LP64__
+
+struct __darwin_pthread_handler_rec {
+ void (*__routine)(void *); // Routine to call
+ void *__arg; // Argument to pass
+ struct __darwin_pthread_handler_rec *__next;
+};
+
+struct _opaque_pthread_attr_t {
+ long __sig;
+ char __opaque[__PTHREAD_ATTR_SIZE__];
+};
+
+struct _opaque_pthread_cond_t {
+ long __sig;
+ char __opaque[__PTHREAD_COND_SIZE__];
+};
+
+struct _opaque_pthread_condattr_t {
+ long __sig;
+ char __opaque[__PTHREAD_CONDATTR_SIZE__];
+};
+
+struct _opaque_pthread_mutex_t {
+ long __sig;
+ char __opaque[__PTHREAD_MUTEX_SIZE__];
+};
+
+struct _opaque_pthread_mutexattr_t {
+ long __sig;
+ char __opaque[__PTHREAD_MUTEXATTR_SIZE__];
+};
+
+struct _opaque_pthread_once_t {
+ long __sig;
+ char __opaque[__PTHREAD_ONCE_SIZE__];
+};
+
+struct _opaque_pthread_rwlock_t {
+ long __sig;
+ char __opaque[__PTHREAD_RWLOCK_SIZE__];
+};
+
+struct _opaque_pthread_rwlockattr_t {
+ long __sig;
+ char __opaque[__PTHREAD_RWLOCKATTR_SIZE__];
+};
+
+struct _opaque_pthread_t {
+ long __sig;
+ struct __darwin_pthread_handler_rec *__cleanup_stack;
+ char __opaque[__PTHREAD_SIZE__];
+};
+
+typedef struct _opaque_pthread_attr_t __darwin_pthread_attr_t;
+typedef struct _opaque_pthread_cond_t __darwin_pthread_cond_t;
+typedef struct _opaque_pthread_condattr_t __darwin_pthread_condattr_t;
+typedef unsigned long __darwin_pthread_key_t;
+typedef struct _opaque_pthread_mutex_t __darwin_pthread_mutex_t;
+typedef struct _opaque_pthread_mutexattr_t __darwin_pthread_mutexattr_t;
+typedef struct _opaque_pthread_once_t __darwin_pthread_once_t;
+typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t;
+typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t;
+typedef struct _opaque_pthread_t *__darwin_pthread_t;
+
+#endif // _SYS__PTHREAD_TYPES_H_ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_select.h b/lib/libc/include/aarch64-macos-gnu/sys/_select.h
new file mode 100644
index 0000000000..587b506d0c
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_select.h
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2005, 2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+/*
+ * This is called from sys/select.h and sys/time.h for the common prototype
+ * of select(). Setting _DARWIN_C_SOURCE or _DARWIN_UNLIMITED_SELECT uses
+ * the version of select() that does not place a limit on the first argument
+ * (nfds). In the UNIX conformance case, values of nfds greater than
+ * FD_SETSIZE will return an error of EINVAL.
+ */
+#ifndef _SYS__SELECT_H_
+#define _SYS__SELECT_H_
+
+#include <sys/cdefs.h> /* __DARWIN_EXTSN_C, __DARWIN_1050, __DARWIN_ALIAS_C */
+#include <sys/_types/_fd_def.h> /* fd_set */
+#include <sys/_types/_timeval.h> /* struct timeval */
+
+int select(int, fd_set * __restrict, fd_set * __restrict,
+ fd_set * __restrict, struct timeval * __restrict)
+
+#if defined(_DARWIN_C_SOURCE) || defined(_DARWIN_UNLIMITED_SELECT)
+__DARWIN_EXTSN_C(select)
+#else /* !_DARWIN_C_SOURCE && !_DARWIN_UNLIMITED_SELECT */
+# if defined(__LP64__) && !__DARWIN_NON_CANCELABLE
+__DARWIN_1050(select)
+# else /* !__LP64__ || __DARWIN_NON_CANCELABLE */
+__DARWIN_ALIAS_C(select)
+# endif /* __LP64__ && !__DARWIN_NON_CANCELABLE */
+#endif /* _DARWIN_C_SOURCE || _DARWIN_UNLIMITED_SELECT */
+;
+
+#endif /* !_SYS__SELECT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_symbol_aliasing.h b/lib/libc/include/aarch64-macos-gnu/sys/_symbol_aliasing.h
new file mode 100644
index 0000000000..151156d6e1
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_symbol_aliasing.h
@@ -0,0 +1,534 @@
+/* Copyright (c) 2010 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+#ifndef _CDEFS_H_
+# error "Never use <sys/_symbol_aliasing.h> directly. Use <sys/cdefs.h> instead."
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 20000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 20100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 20200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_2_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 30000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 30100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 30200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_3_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 40000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 40100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 40200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 40300
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_4_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 50000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_5_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_5_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 50100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_5_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_5_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 60000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_6_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_6_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 60100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_6_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_6_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 70000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_7_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_7_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 70100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_7_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_7_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 80000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 80100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 80200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 80300
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 80400
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_8_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 90000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 90100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 90200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 90300
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_9_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 100000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 100100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 100200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 100300
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_10_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 110000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 110100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 110200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 110300
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 110400
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_11_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 120000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 120100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 120200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 120300
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 120400
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_12_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130300
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130400
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130500
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_5(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_5(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130600
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_6(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_6(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 130700
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_7(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_13_7(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 140000
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 140100
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 140200
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_14_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1000
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_0(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1010
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1020
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1030
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1040
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_5(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_5(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1060
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_6(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_6(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1070
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_7(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_7(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1080
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_8(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_8(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1090
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_9(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_9(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101000
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101002
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101003
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_10_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101100
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101102
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101103
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101104
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_11_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101200
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101201
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101202
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101204
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_12_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101300
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101301
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101302
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101304
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_13_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101400
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101401
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101404
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_4(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101405
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_5(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_5(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101406
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_6(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_14_6(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101500
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101501
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15_1(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 101600
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_16(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_16(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 110000
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_11_0(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_11_0(x)
+#endif \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_types/_fd_def.h b/lib/libc/include/aarch64-macos-gnu/sys/_types/_fd_def.h
new file mode 100644
index 0000000000..138a1d49e2
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_types/_fd_def.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _FD_SET
+#define _FD_SET
+
+#include <machine/types.h> /* __int32_t and uintptr_t */
+#include <Availability.h>
+
+/*
+ * Select uses bit masks of file descriptors in longs. These macros
+ * manipulate such bit fields (the filesystem macros use chars). The
+ * extra protection here is to permit application redefinition above
+ * the default size.
+ */
+#ifdef FD_SETSIZE
+#define __DARWIN_FD_SETSIZE FD_SETSIZE
+#else /* !FD_SETSIZE */
+#define __DARWIN_FD_SETSIZE 1024
+#endif /* FD_SETSIZE */
+#define __DARWIN_NBBY 8 /* bits in a byte */
+#define __DARWIN_NFDBITS (sizeof(__int32_t) * __DARWIN_NBBY) /* bits per mask */
+#define __DARWIN_howmany(x, y) ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1)) /* # y's == x bits? */
+
+__BEGIN_DECLS
+typedef struct fd_set {
+ __int32_t fds_bits[__DARWIN_howmany(__DARWIN_FD_SETSIZE, __DARWIN_NFDBITS)];
+} fd_set;
+
+int __darwin_check_fd_set_overflow(int, const void *, int) __API_AVAILABLE(macosx(11.0), ios(14.0), tvos(14.0), watchos(7.0));
+__END_DECLS
+
+__header_always_inline int
+__darwin_check_fd_set(int _a, const void *_b)
+{
+#ifdef __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunguarded-availability-new"
+#endif
+ if ((uintptr_t)&__darwin_check_fd_set_overflow != (uintptr_t) 0) {
+#if defined(_DARWIN_UNLIMITED_SELECT) || defined(_DARWIN_C_SOURCE)
+ return __darwin_check_fd_set_overflow(_a, _b, 1);
+#else
+ return __darwin_check_fd_set_overflow(_a, _b, 0);
+#endif
+ } else {
+ return 1;
+ }
+#ifdef __clang__
+#pragma clang diagnostic pop
+#endif
+}
+
+/* This inline avoids argument side-effect issues with FD_ISSET() */
+__header_always_inline int
+__darwin_fd_isset(int _fd, const struct fd_set *_p)
+{
+ if (__darwin_check_fd_set(_fd, (const void *) _p)) {
+ return _p->fds_bits[(unsigned long)_fd / __DARWIN_NFDBITS] & ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % __DARWIN_NFDBITS)));
+ }
+
+ return 0;
+}
+
+__header_always_inline void
+__darwin_fd_set(int _fd, struct fd_set *const _p)
+{
+ if (__darwin_check_fd_set(_fd, (const void *) _p)) {
+ (_p->fds_bits[(unsigned long)_fd / __DARWIN_NFDBITS] |= ((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % __DARWIN_NFDBITS))));
+ }
+}
+
+__header_always_inline void
+__darwin_fd_clr(int _fd, struct fd_set *const _p)
+{
+ if (__darwin_check_fd_set(_fd, (const void *) _p)) {
+ (_p->fds_bits[(unsigned long)_fd / __DARWIN_NFDBITS] &= ~((__int32_t)(((unsigned long)1) << ((unsigned long)_fd % __DARWIN_NFDBITS))));
+ }
+}
+
+
+#define __DARWIN_FD_SET(n, p) __darwin_fd_set((n), (p))
+#define __DARWIN_FD_CLR(n, p) __darwin_fd_clr((n), (p))
+#define __DARWIN_FD_ISSET(n, p) __darwin_fd_isset((n), (p))
+
+#if __GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 3
+/*
+ * Use the built-in bzero function instead of the library version so that
+ * we do not pollute the namespace or introduce prototype warnings.
+ */
+#define __DARWIN_FD_ZERO(p) __builtin_bzero(p, sizeof(*(p)))
+#else
+#define __DARWIN_FD_ZERO(p) bzero(p, sizeof(*(p)))
+#endif
+
+#define __DARWIN_FD_COPY(f, t) bcopy(f, t, sizeof(*(f)))
+#endif /* _FD_SET */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_types/_int8_t.h b/lib/libc/include/aarch64-macos-gnu/sys/_types/_int8_t.h
new file mode 100644
index 0000000000..5ca9ba85b0
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_types/_int8_t.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _INT8_T
+#define _INT8_T
+typedef signed char int8_t;
+#endif /* _INT8_T */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/_types/_ucontext.h b/lib/libc/include/aarch64-macos-gnu/sys/_types/_ucontext.h
new file mode 100644
index 0000000000..de3132a861
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/_types/_ucontext.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2003-2012 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+#ifndef _STRUCT_UCONTEXT
+
+#include <sys/cdefs.h> /* __DARWIN_UNIX03 */
+
+#if __DARWIN_UNIX03
+#define _STRUCT_UCONTEXT struct __darwin_ucontext
+#else /* !__DARWIN_UNIX03 */
+#define _STRUCT_UCONTEXT struct ucontext
+#endif /* __DARWIN_UNIX03 */
+
+#include <machine/types.h> /* __darwin_size_t */
+#include <machine/_mcontext.h> /* _STRUCT_MCONTEXT */
+#include <sys/_types.h> /* __darwin_sigset_t */
+#include <sys/_types/_sigaltstack.h> /* _STRUCT_SIGALTSTACK */
+
+_STRUCT_UCONTEXT
+{
+ int uc_onstack;
+ __darwin_sigset_t uc_sigmask; /* signal mask used by this context */
+ _STRUCT_SIGALTSTACK uc_stack; /* stack used by this context */
+ _STRUCT_UCONTEXT *uc_link; /* pointer to resuming context */
+ __darwin_size_t uc_mcsize; /* size of the machine context passed in */
+ _STRUCT_MCONTEXT *uc_mcontext; /* pointer to machine specific context */
+#ifdef _XOPEN_SOURCE
+ _STRUCT_MCONTEXT __mcontext_data;
+#endif /* _XOPEN_SOURCE */
+};
+
+/* user context */
+typedef _STRUCT_UCONTEXT ucontext_t; /* [???] user context */
+
+#endif /* _STRUCT_UCONTEXT */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/acl.h b/lib/libc/include/aarch64-macos-gnu/sys/acl.h
new file mode 100644
index 0000000000..f2a5385714
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/acl.h
@@ -0,0 +1,212 @@
+/*
+ * Copyright (c) 2004, 2010 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 1.1 (the
+ * "License"). You may not use this file except in compliance with the
+ * License. Please obtain a copy of the License at
+ * http://www.apple.com/publicsource and read it before using this file.
+ *
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _SYS_ACL_H
+#define _SYS_ACL_H
+
+#include <Availability.h>
+#include <sys/kauth.h>
+#include <sys/_types/_ssize_t.h>
+
+#define __DARWIN_ACL_READ_DATA (1<<1)
+#define __DARWIN_ACL_LIST_DIRECTORY __DARWIN_ACL_READ_DATA
+#define __DARWIN_ACL_WRITE_DATA (1<<2)
+#define __DARWIN_ACL_ADD_FILE __DARWIN_ACL_WRITE_DATA
+#define __DARWIN_ACL_EXECUTE (1<<3)
+#define __DARWIN_ACL_SEARCH __DARWIN_ACL_EXECUTE
+#define __DARWIN_ACL_DELETE (1<<4)
+#define __DARWIN_ACL_APPEND_DATA (1<<5)
+#define __DARWIN_ACL_ADD_SUBDIRECTORY __DARWIN_ACL_APPEND_DATA
+#define __DARWIN_ACL_DELETE_CHILD (1<<6)
+#define __DARWIN_ACL_READ_ATTRIBUTES (1<<7)
+#define __DARWIN_ACL_WRITE_ATTRIBUTES (1<<8)
+#define __DARWIN_ACL_READ_EXTATTRIBUTES (1<<9)
+#define __DARWIN_ACL_WRITE_EXTATTRIBUTES (1<<10)
+#define __DARWIN_ACL_READ_SECURITY (1<<11)
+#define __DARWIN_ACL_WRITE_SECURITY (1<<12)
+#define __DARWIN_ACL_CHANGE_OWNER (1<<13)
+#define __DARWIN_ACL_SYNCHRONIZE (1<<20)
+
+#define __DARWIN_ACL_EXTENDED_ALLOW 1
+#define __DARWIN_ACL_EXTENDED_DENY 2
+
+#define __DARWIN_ACL_ENTRY_INHERITED (1<<4)
+#define __DARWIN_ACL_ENTRY_FILE_INHERIT (1<<5)
+#define __DARWIN_ACL_ENTRY_DIRECTORY_INHERIT (1<<6)
+#define __DARWIN_ACL_ENTRY_LIMIT_INHERIT (1<<7)
+#define __DARWIN_ACL_ENTRY_ONLY_INHERIT (1<<8)
+#define __DARWIN_ACL_FLAG_NO_INHERIT (1<<17)
+
+/*
+ * Implementation constants.
+ *
+ * The ACL_TYPE_EXTENDED binary format permits 169 entries plus
+ * the ACL header in a page. Give ourselves some room to grow;
+ * this limit is arbitrary.
+ */
+#define ACL_MAX_ENTRIES 128
+
+/* 23.2.2 Individual object access permissions - nonstandard */
+typedef enum {
+ ACL_READ_DATA = __DARWIN_ACL_READ_DATA,
+ ACL_LIST_DIRECTORY = __DARWIN_ACL_LIST_DIRECTORY,
+ ACL_WRITE_DATA = __DARWIN_ACL_WRITE_DATA,
+ ACL_ADD_FILE = __DARWIN_ACL_ADD_FILE,
+ ACL_EXECUTE = __DARWIN_ACL_EXECUTE,
+ ACL_SEARCH = __DARWIN_ACL_SEARCH,
+ ACL_DELETE = __DARWIN_ACL_DELETE,
+ ACL_APPEND_DATA = __DARWIN_ACL_APPEND_DATA,
+ ACL_ADD_SUBDIRECTORY = __DARWIN_ACL_ADD_SUBDIRECTORY,
+ ACL_DELETE_CHILD = __DARWIN_ACL_DELETE_CHILD,
+ ACL_READ_ATTRIBUTES = __DARWIN_ACL_READ_ATTRIBUTES,
+ ACL_WRITE_ATTRIBUTES = __DARWIN_ACL_WRITE_ATTRIBUTES,
+ ACL_READ_EXTATTRIBUTES = __DARWIN_ACL_READ_EXTATTRIBUTES,
+ ACL_WRITE_EXTATTRIBUTES = __DARWIN_ACL_WRITE_EXTATTRIBUTES,
+ ACL_READ_SECURITY = __DARWIN_ACL_READ_SECURITY,
+ ACL_WRITE_SECURITY = __DARWIN_ACL_WRITE_SECURITY,
+ ACL_CHANGE_OWNER = __DARWIN_ACL_CHANGE_OWNER,
+ ACL_SYNCHRONIZE = __DARWIN_ACL_SYNCHRONIZE,
+} acl_perm_t;
+
+/* 23.2.5 ACL entry tag type bits - nonstandard */
+typedef enum {
+ ACL_UNDEFINED_TAG = 0,
+ ACL_EXTENDED_ALLOW = __DARWIN_ACL_EXTENDED_ALLOW,
+ ACL_EXTENDED_DENY = __DARWIN_ACL_EXTENDED_DENY
+} acl_tag_t;
+
+/* 23.2.6 Individual ACL types */
+typedef enum {
+ ACL_TYPE_EXTENDED = 0x00000100,
+/* Posix 1003.1e types - not supported */
+ ACL_TYPE_ACCESS = 0x00000000,
+ ACL_TYPE_DEFAULT = 0x00000001,
+/* The following types are defined on FreeBSD/Linux - not supported */
+ ACL_TYPE_AFS = 0x00000002,
+ ACL_TYPE_CODA = 0x00000003,
+ ACL_TYPE_NTFS = 0x00000004,
+ ACL_TYPE_NWFS = 0x00000005
+} acl_type_t;
+
+/* 23.2.7 ACL qualifier constants */
+
+#define ACL_UNDEFINED_ID NULL /* XXX ? */
+
+/* 23.2.8 ACL Entry Constants */
+typedef enum {
+ ACL_FIRST_ENTRY = 0,
+ ACL_NEXT_ENTRY = -1,
+ ACL_LAST_ENTRY = -2
+} acl_entry_id_t;
+
+/* nonstandard ACL / entry flags */
+typedef enum {
+ ACL_FLAG_DEFER_INHERIT = (1 << 0), /* tentative */
+ ACL_FLAG_NO_INHERIT = __DARWIN_ACL_FLAG_NO_INHERIT,
+ ACL_ENTRY_INHERITED = __DARWIN_ACL_ENTRY_INHERITED,
+ ACL_ENTRY_FILE_INHERIT = __DARWIN_ACL_ENTRY_FILE_INHERIT,
+ ACL_ENTRY_DIRECTORY_INHERIT = __DARWIN_ACL_ENTRY_DIRECTORY_INHERIT,
+ ACL_ENTRY_LIMIT_INHERIT = __DARWIN_ACL_ENTRY_LIMIT_INHERIT,
+ ACL_ENTRY_ONLY_INHERIT = __DARWIN_ACL_ENTRY_ONLY_INHERIT
+} acl_flag_t;
+
+/* "External" ACL types */
+
+struct _acl;
+struct _acl_entry;
+struct _acl_permset;
+struct _acl_flagset;
+
+typedef struct _acl *acl_t;
+typedef struct _acl_entry *acl_entry_t;
+typedef struct _acl_permset *acl_permset_t;
+typedef struct _acl_flagset *acl_flagset_t;
+
+typedef u_int64_t acl_permset_mask_t;
+
+__BEGIN_DECLS
+/* 23.1.6.1 ACL Storage Management */
+extern acl_t acl_dup(acl_t acl);
+extern int acl_free(void *obj_p);
+extern acl_t acl_init(int count);
+
+/* 23.1.6.2 (1) ACL Entry manipulation */
+extern int acl_copy_entry(acl_entry_t dest_d, acl_entry_t src_d);
+extern int acl_create_entry(acl_t *acl_p, acl_entry_t *entry_p);
+extern int acl_create_entry_np(acl_t *acl_p, acl_entry_t *entry_p, int entry_index);
+extern int acl_delete_entry(acl_t acl, acl_entry_t entry_d);
+extern int acl_get_entry(acl_t acl, int entry_id, acl_entry_t *entry_p);
+extern int acl_valid(acl_t acl);
+extern int acl_valid_fd_np(int fd, acl_type_t type, acl_t acl);
+extern int acl_valid_file_np(const char *path, acl_type_t type, acl_t acl);
+extern int acl_valid_link_np(const char *path, acl_type_t type, acl_t acl);
+
+/* 23.1.6.2 (2) Manipulate permissions within an ACL entry */
+extern int acl_add_perm(acl_permset_t permset_d, acl_perm_t perm);
+extern int acl_calc_mask(acl_t *acl_p); /* not supported */
+extern int acl_clear_perms(acl_permset_t permset_d);
+extern int acl_delete_perm(acl_permset_t permset_d, acl_perm_t perm);
+extern int acl_get_perm_np(acl_permset_t permset_d, acl_perm_t perm);
+extern int acl_get_permset(acl_entry_t entry_d, acl_permset_t *permset_p);
+extern int acl_set_permset(acl_entry_t entry_d, acl_permset_t permset_d);
+
+/* nonstandard - manipulate permissions within an ACL entry using bitmasks */
+extern int acl_maximal_permset_mask_np(acl_permset_mask_t * mask_p) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+extern int acl_get_permset_mask_np(acl_entry_t entry_d, acl_permset_mask_t * mask_p) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+extern int acl_set_permset_mask_np(acl_entry_t entry_d, acl_permset_mask_t mask) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+
+/* nonstandard - manipulate flags on ACLs and entries */
+extern int acl_add_flag_np(acl_flagset_t flagset_d, acl_flag_t flag);
+extern int acl_clear_flags_np(acl_flagset_t flagset_d);
+extern int acl_delete_flag_np(acl_flagset_t flagset_d, acl_flag_t flag);
+extern int acl_get_flag_np(acl_flagset_t flagset_d, acl_flag_t flag);
+extern int acl_get_flagset_np(void *obj_p, acl_flagset_t *flagset_p);
+extern int acl_set_flagset_np(void *obj_p, acl_flagset_t flagset_d);
+
+/* 23.1.6.2 (3) Manipulate ACL entry tag type and qualifier */
+extern void *acl_get_qualifier(acl_entry_t entry_d);
+extern int acl_get_tag_type(acl_entry_t entry_d, acl_tag_t *tag_type_p);
+extern int acl_set_qualifier(acl_entry_t entry_d, const void *tag_qualifier_p);
+extern int acl_set_tag_type(acl_entry_t entry_d, acl_tag_t tag_type);
+
+/* 23.1.6.3 ACL manipulation on an Object */
+extern int acl_delete_def_file(const char *path_p); /* not supported */
+extern acl_t acl_get_fd(int fd);
+extern acl_t acl_get_fd_np(int fd, acl_type_t type);
+extern acl_t acl_get_file(const char *path_p, acl_type_t type);
+extern acl_t acl_get_link_np(const char *path_p, acl_type_t type);
+extern int acl_set_fd(int fd, acl_t acl);
+extern int acl_set_fd_np(int fd, acl_t acl, acl_type_t acl_type);
+extern int acl_set_file(const char *path_p, acl_type_t type, acl_t acl);
+extern int acl_set_link_np(const char *path_p, acl_type_t type, acl_t acl);
+
+/* 23.1.6.4 ACL Format translation */
+extern ssize_t acl_copy_ext(void *buf_p, acl_t acl, ssize_t size);
+extern ssize_t acl_copy_ext_native(void *buf_p, acl_t acl, ssize_t size);
+extern acl_t acl_copy_int(const void *buf_p);
+extern acl_t acl_copy_int_native(const void *buf_p);
+extern acl_t acl_from_text(const char *buf_p);
+extern ssize_t acl_size(acl_t acl);
+extern char *acl_to_text(acl_t acl, ssize_t *len_p);
+__END_DECLS
+
+#endif /* _SYS_ACL_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/attr.h b/lib/libc/include/aarch64-macos-gnu/sys/attr.h
new file mode 100644
index 0000000000..9eca5efb34
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/attr.h
@@ -0,0 +1,586 @@
+/*
+ * Copyright (c) 2000-2018 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+/*
+ * attr.h - attribute data structures and interfaces
+ *
+ * Copyright (c) 1998, Apple Computer, Inc. All Rights Reserved.
+ */
+
+#ifndef _SYS_ATTR_H_
+#define _SYS_ATTR_H_
+
+#include <sys/appleapiopts.h>
+
+#ifdef __APPLE_API_UNSTABLE
+#include <sys/types.h>
+#include <sys/ucred.h>
+#include <sys/time.h>
+#include <sys/cdefs.h>
+
+#define FSOPT_NOFOLLOW 0x00000001
+#define FSOPT_NOINMEMUPDATE 0x00000002
+#define FSOPT_REPORT_FULLSIZE 0x00000004
+/* The following option only valid when requesting ATTR_CMN_RETURNED_ATTRS */
+#define FSOPT_PACK_INVAL_ATTRS 0x00000008
+
+
+#define FSOPT_ATTR_CMN_EXTENDED 0x00000020
+#define FSOPT_RETURN_REALDEV 0x00000200
+
+/* we currently aren't anywhere near this amount for a valid
+ * fssearchblock.sizeofsearchparams1 or fssearchblock.sizeofsearchparams2
+ * but we put a sanity check in to avoid abuse of the value passed in from
+ * user land.
+ */
+#define SEARCHFS_MAX_SEARCHPARMS 4096
+
+typedef u_int32_t text_encoding_t;
+
+typedef u_int32_t fsobj_type_t;
+
+typedef u_int32_t fsobj_tag_t;
+
+typedef u_int32_t fsfile_type_t;
+
+typedef u_int32_t fsvolid_t;
+
+#include <sys/_types/_fsobj_id_t.h> /* file object id type */
+
+typedef u_int32_t attrgroup_t;
+
+struct attrlist {
+ u_short bitmapcount; /* number of attr. bit sets in list (should be 5) */
+ u_int16_t reserved; /* (to maintain 4-byte alignment) */
+ attrgroup_t commonattr; /* common attribute group */
+ attrgroup_t volattr; /* Volume attribute group */
+ attrgroup_t dirattr; /* directory attribute group */
+ attrgroup_t fileattr; /* file attribute group */
+ attrgroup_t forkattr; /* fork attribute group */
+};
+#define ATTR_BIT_MAP_COUNT 5
+
+typedef struct attribute_set {
+ attrgroup_t commonattr; /* common attribute group */
+ attrgroup_t volattr; /* Volume attribute group */
+ attrgroup_t dirattr; /* directory attribute group */
+ attrgroup_t fileattr; /* file attribute group */
+ attrgroup_t forkattr; /* fork attribute group */
+} attribute_set_t;
+
+typedef struct attrreference {
+ int32_t attr_dataoffset;
+ u_int32_t attr_length;
+} attrreference_t;
+
+/* XXX PPD This is derived from HFSVolumePriv.h and should perhaps be referenced from there? */
+
+struct diskextent {
+ u_int32_t startblock; /* first block allocated */
+ u_int32_t blockcount; /* number of blocks allocated */
+};
+
+typedef struct diskextent extentrecord[8];
+
+typedef u_int32_t vol_capabilities_set_t[4];
+
+#define VOL_CAPABILITIES_FORMAT 0
+#define VOL_CAPABILITIES_INTERFACES 1
+#define VOL_CAPABILITIES_RESERVED1 2
+#define VOL_CAPABILITIES_RESERVED2 3
+
+typedef struct vol_capabilities_attr {
+ vol_capabilities_set_t capabilities;
+ vol_capabilities_set_t valid;
+} vol_capabilities_attr_t;
+
+/*
+ * XXX this value needs to be raised - 3893388
+ */
+#define ATTR_MAX_BUFFER 8192
+
+/*
+ * VOL_CAP_FMT_PERSISTENTOBJECTIDS: When set, the volume has object IDs
+ * that are persistent (retain their values even when the volume is
+ * unmounted and remounted), and a file or directory can be looked up
+ * by ID. Volumes that support VolFS and can support Carbon File ID
+ * references should set this bit.
+ *
+ * VOL_CAP_FMT_SYMBOLICLINKS: When set, the volume supports symbolic
+ * links. The symlink(), readlink(), and lstat() calls all use this
+ * symbolic link.
+ *
+ * VOL_CAP_FMT_HARDLINKS: When set, the volume supports hard links.
+ * The link() call creates hard links.
+ *
+ * VOL_CAP_FMT_JOURNAL: When set, the volume is capable of supporting
+ * a journal used to speed recovery in case of unplanned shutdown
+ * (such as a power outage or crash). This bit does not necessarily
+ * mean the volume is actively using a journal for recovery.
+ *
+ * VOL_CAP_FMT_JOURNAL_ACTIVE: When set, the volume is currently using
+ * a journal for use in speeding recovery after an unplanned shutdown.
+ * This bit can be set only if VOL_CAP_FMT_JOURNAL is also set.
+ *
+ * VOL_CAP_FMT_NO_ROOT_TIMES: When set, the volume format does not
+ * store reliable times for the root directory, so you should not
+ * depend on them to detect changes, etc.
+ *
+ * VOL_CAP_FMT_SPARSE_FILES: When set, the volume supports sparse files.
+ * That is, files which can have "holes" that have never been written
+ * to, and are not allocated on disk. Sparse files may have an
+ * allocated size that is less than the file's logical length.
+ *
+ * VOL_CAP_FMT_ZERO_RUNS: For security reasons, parts of a file (runs)
+ * that have never been written to must appear to contain zeroes. When
+ * this bit is set, the volume keeps track of allocated but unwritten
+ * runs of a file so that it can substitute zeroes without actually
+ * writing zeroes to the media. This provides performance similar to
+ * sparse files, but not the space savings.
+ *
+ * VOL_CAP_FMT_CASE_SENSITIVE: When set, file and directory names are
+ * case sensitive (upper and lower case are different). When clear,
+ * an upper case character is equivalent to a lower case character,
+ * and you can't have two names that differ solely in the case of
+ * the characters.
+ *
+ * VOL_CAP_FMT_CASE_PRESERVING: When set, file and directory names
+ * preserve the difference between upper and lower case. If clear,
+ * the volume may change the case of some characters (typically
+ * making them all upper or all lower case). A volume that sets
+ * VOL_CAP_FMT_CASE_SENSITIVE should also set VOL_CAP_FMT_CASE_PRESERVING.
+ *
+ * VOL_CAP_FMT_FAST_STATFS: This bit is used as a hint to upper layers
+ * (especially Carbon) that statfs() is fast enough that its results
+ * need not be cached by those upper layers. A volume that caches
+ * the statfs information in its in-memory structures should set this bit.
+ * A volume that must always read from disk or always perform a network
+ * transaction should not set this bit.
+ *
+ * VOL_CAP_FMT_2TB_FILESIZE: If this bit is set the volume format supports
+ * file sizes larger than 4GB, and potentially up to 2TB; it does not
+ * indicate whether the filesystem supports files larger than that.
+ *
+ * VOL_CAP_FMT_OPENDENYMODES: When set, the volume supports open deny
+ * modes (e.g. "open for read write, deny write"; effectively, mandatory
+ * file locking based on open modes).
+ *
+ * VOL_CAP_FMT_HIDDEN_FILES: When set, the volume supports the UF_HIDDEN
+ * file flag, and the UF_HIDDEN flag is mapped to that volume's native
+ * "hidden" or "invisible" bit (which may be the invisible bit from the
+ * Finder Info extended attribute).
+ *
+ * VOL_CAP_FMT_PATH_FROM_ID: When set, the volume supports the ability
+ * to derive a pathname to the root of the file system given only the
+ * id of an object. This also implies that object ids on this file
+ * system are persistent and not recycled. This is a very specialized
+ * capability and it is assumed that most file systems will not support
+ * it. Its use is for legacy non-posix APIs like ResolveFileIDRef.
+ *
+ * VOL_CAP_FMT_NO_VOLUME_SIZES: When set, the volume does not support
+ * returning values for total data blocks, available blocks, or free blocks
+ * (as in f_blocks, f_bavail, or f_bfree in "struct statfs"). Historically,
+ * those values were set to 0xFFFFFFFF for volumes that did not support them.
+ *
+ * VOL_CAP_FMT_DECMPFS_COMPRESSION: When set, the volume supports transparent
+ * decompression of compressed files using decmpfs.
+ *
+ * VOL_CAP_FMT_64BIT_OBJECT_IDS: When set, the volume uses object IDs that
+ * are 64-bit. This means that ATTR_CMN_FILEID and ATTR_CMN_PARENTID are the
+ * only legitimate attributes for obtaining object IDs from this volume and the
+ * 32-bit fid_objno fields of the fsobj_id_t returned by ATTR_CMN_OBJID,
+ * ATTR_CMN_OBJPERMID, and ATTR_CMN_PAROBJID are undefined.
+ *
+ * VOL_CAP_FMT_DIR_HARDLINKS: When set, the volume supports directory
+ * hard links.
+ *
+ * VOL_CAP_FMT_DOCUMENT_ID: When set, the volume supports document IDs
+ * (an ID which persists across object ID changes) for document revisions.
+ *
+ * VOL_CAP_FMT_WRITE_GENERATION_COUNT: When set, the volume supports write
+ * generation counts (a count of how many times an object has been modified)
+ *
+ * VOL_CAP_FMT_NO_IMMUTABLE_FILES: When set, the volume does not support
+ * setting the UF_IMMUTABLE flag.
+ *
+ * VOL_CAP_FMT_NO_PERMISSIONS: When set, the volume does not support setting
+ * permissions.
+ *
+ * VOL_CAP_FMT_SHARED_SPACE: When set, the volume supports sharing space with
+ * other filesystems i.e. multiple logical filesystems can exist in the same
+ * "partition". An implication of this is that the filesystem which sets
+ * this capability treats waitfor arguments to VFS_SYNC as bit flags.
+ *
+ * VOL_CAP_FMT_VOL_GROUPS: When set, this volume is part of a volume-group
+ * that implies multiple volumes must be mounted in order to boot and root the
+ * operating system. Typically, this means a read-only system volume and a
+ * writable data volume.
+ *
+ * VOL_CAP_FMT_SEALED: When set, this volume is cryptographically sealed.
+ * Any modifications to volume data or metadata will be detected and may
+ * render the volume unusable.
+ */
+#define VOL_CAP_FMT_PERSISTENTOBJECTIDS 0x00000001
+#define VOL_CAP_FMT_SYMBOLICLINKS 0x00000002
+#define VOL_CAP_FMT_HARDLINKS 0x00000004
+#define VOL_CAP_FMT_JOURNAL 0x00000008
+#define VOL_CAP_FMT_JOURNAL_ACTIVE 0x00000010
+#define VOL_CAP_FMT_NO_ROOT_TIMES 0x00000020
+#define VOL_CAP_FMT_SPARSE_FILES 0x00000040
+#define VOL_CAP_FMT_ZERO_RUNS 0x00000080
+#define VOL_CAP_FMT_CASE_SENSITIVE 0x00000100
+#define VOL_CAP_FMT_CASE_PRESERVING 0x00000200
+#define VOL_CAP_FMT_FAST_STATFS 0x00000400
+#define VOL_CAP_FMT_2TB_FILESIZE 0x00000800
+#define VOL_CAP_FMT_OPENDENYMODES 0x00001000
+#define VOL_CAP_FMT_HIDDEN_FILES 0x00002000
+#define VOL_CAP_FMT_PATH_FROM_ID 0x00004000
+#define VOL_CAP_FMT_NO_VOLUME_SIZES 0x00008000
+#define VOL_CAP_FMT_DECMPFS_COMPRESSION 0x00010000
+#define VOL_CAP_FMT_64BIT_OBJECT_IDS 0x00020000
+#define VOL_CAP_FMT_DIR_HARDLINKS 0x00040000
+#define VOL_CAP_FMT_DOCUMENT_ID 0x00080000
+#define VOL_CAP_FMT_WRITE_GENERATION_COUNT 0x00100000
+#define VOL_CAP_FMT_NO_IMMUTABLE_FILES 0x00200000
+#define VOL_CAP_FMT_NO_PERMISSIONS 0x00400000
+#define VOL_CAP_FMT_SHARED_SPACE 0x00800000
+#define VOL_CAP_FMT_VOL_GROUPS 0x01000000
+#define VOL_CAP_FMT_SEALED 0x02000000
+
+/*
+ * VOL_CAP_INT_SEARCHFS: When set, the volume implements the
+ * searchfs() system call (the vnop_searchfs vnode operation).
+ *
+ * VOL_CAP_INT_ATTRLIST: When set, the volume implements the
+ * getattrlist() and setattrlist() system calls (vnop_getattrlist
+ * and vnop_setattrlist vnode operations) for the volume, files,
+ * and directories. The volume may or may not implement the
+ * readdirattr() system call. XXX Is there any minimum set
+ * of attributes that should be supported? To determine the
+ * set of supported attributes, get the ATTR_VOL_ATTRIBUTES
+ * attribute of the volume.
+ *
+ * VOL_CAP_INT_NFSEXPORT: When set, the volume implements exporting
+ * of NFS volumes.
+ *
+ * VOL_CAP_INT_READDIRATTR: When set, the volume implements the
+ * readdirattr() system call (vnop_readdirattr vnode operation).
+ *
+ * VOL_CAP_INT_EXCHANGEDATA: When set, the volume implements the
+ * exchangedata() system call (VNOP_EXCHANGE vnode operation).
+ *
+ * VOL_CAP_INT_COPYFILE: When set, the volume implements the
+ * VOP_COPYFILE vnode operation. (XXX There should be a copyfile()
+ * system call in <unistd.h>.)
+ *
+ * VOL_CAP_INT_ALLOCATE: When set, the volume implements the
+ * VNOP_ALLOCATE vnode operation, which means it implements the
+ * F_PREALLOCATE selector of fcntl(2).
+ *
+ * VOL_CAP_INT_VOL_RENAME: When set, the volume implements the
+ * ATTR_VOL_NAME attribute for both getattrlist() and setattrlist().
+ * The volume can be renamed by setting ATTR_VOL_NAME with setattrlist().
+ *
+ * VOL_CAP_INT_ADVLOCK: When set, the volume implements POSIX style
+ * byte range locks via vnop_advlock (accessible from fcntl(2)).
+ *
+ * VOL_CAP_INT_FLOCK: When set, the volume implements whole-file flock(2)
+ * style locks via vnop_advlock. This includes the O_EXLOCK and O_SHLOCK
+ * flags of the open(2) call.
+ *
+ * VOL_CAP_INT_EXTENDED_SECURITY: When set, the volume implements
+ * extended security (ACLs).
+ *
+ * VOL_CAP_INT_USERACCESS: When set, the volume supports the
+ * ATTR_CMN_USERACCESS attribute (used to get the user's access
+ * mode to the file).
+ *
+ * VOL_CAP_INT_MANLOCK: When set, the volume supports AFP-style
+ * mandatory byte range locks via an ioctl().
+ *
+ * VOL_CAP_INT_EXTENDED_ATTR: When set, the volume implements
+ * native extended attribues.
+ *
+ * VOL_CAP_INT_NAMEDSTREAMS: When set, the volume supports
+ * native named streams.
+ *
+ * VOL_CAP_INT_CLONE: When set, the volume supports clones.
+ *
+ * VOL_CAP_INT_SNAPSHOT: When set, the volume supports snapshots.
+ *
+ * VOL_CAP_INT_RENAME_SWAP: When set, the volume supports swapping
+ * file system objects.
+ *
+ * VOL_CAP_INT_RENAME_EXCL: When set, the volume supports an
+ * exclusive rename operation.
+ *
+ * VOL_CAP_INT_RENAME_OPENFAIL: When set, the volume may fail rename
+ * operations on files that are open.
+ */
+#define VOL_CAP_INT_SEARCHFS 0x00000001
+#define VOL_CAP_INT_ATTRLIST 0x00000002
+#define VOL_CAP_INT_NFSEXPORT 0x00000004
+#define VOL_CAP_INT_READDIRATTR 0x00000008
+#define VOL_CAP_INT_EXCHANGEDATA 0x00000010
+#define VOL_CAP_INT_COPYFILE 0x00000020
+#define VOL_CAP_INT_ALLOCATE 0x00000040
+#define VOL_CAP_INT_VOL_RENAME 0x00000080
+#define VOL_CAP_INT_ADVLOCK 0x00000100
+#define VOL_CAP_INT_FLOCK 0x00000200
+#define VOL_CAP_INT_EXTENDED_SECURITY 0x00000400
+#define VOL_CAP_INT_USERACCESS 0x00000800
+#define VOL_CAP_INT_MANLOCK 0x00001000
+#define VOL_CAP_INT_NAMEDSTREAMS 0x00002000
+#define VOL_CAP_INT_EXTENDED_ATTR 0x00004000
+#define VOL_CAP_INT_CLONE 0x00010000
+#define VOL_CAP_INT_SNAPSHOT 0x00020000
+#define VOL_CAP_INT_RENAME_SWAP 0x00040000
+#define VOL_CAP_INT_RENAME_EXCL 0x00080000
+#define VOL_CAP_INT_RENAME_OPENFAIL 0x00100000
+
+typedef struct vol_attributes_attr {
+ attribute_set_t validattr;
+ attribute_set_t nativeattr;
+} vol_attributes_attr_t;
+
+#define ATTR_CMN_NAME 0x00000001
+#define ATTR_CMN_DEVID 0x00000002
+#define ATTR_CMN_FSID 0x00000004
+#define ATTR_CMN_OBJTYPE 0x00000008
+#define ATTR_CMN_OBJTAG 0x00000010
+#define ATTR_CMN_OBJID 0x00000020
+#define ATTR_CMN_OBJPERMANENTID 0x00000040
+#define ATTR_CMN_PAROBJID 0x00000080
+#define ATTR_CMN_SCRIPT 0x00000100
+#define ATTR_CMN_CRTIME 0x00000200
+#define ATTR_CMN_MODTIME 0x00000400
+#define ATTR_CMN_CHGTIME 0x00000800
+#define ATTR_CMN_ACCTIME 0x00001000
+#define ATTR_CMN_BKUPTIME 0x00002000
+#define ATTR_CMN_FNDRINFO 0x00004000
+#define ATTR_CMN_OWNERID 0x00008000
+#define ATTR_CMN_GRPID 0x00010000
+#define ATTR_CMN_ACCESSMASK 0x00020000
+#define ATTR_CMN_FLAGS 0x00040000
+
+/* The following were defined as: */
+/* #define ATTR_CMN_NAMEDATTRCOUNT 0x00080000 */
+/* #define ATTR_CMN_NAMEDATTRLIST 0x00100000 */
+/* These bits have been salvaged for use as: */
+/* #define ATTR_CMN_GEN_COUNT 0x00080000 */
+/* #define ATTR_CMN_DOCUMENT_ID 0x00100000 */
+/* They can only be used with the FSOPT_ATTR_CMN_EXTENDED */
+/* option flag. */
+
+#define ATTR_CMN_GEN_COUNT 0x00080000
+#define ATTR_CMN_DOCUMENT_ID 0x00100000
+
+#define ATTR_CMN_USERACCESS 0x00200000
+#define ATTR_CMN_EXTENDED_SECURITY 0x00400000
+#define ATTR_CMN_UUID 0x00800000
+#define ATTR_CMN_GRPUUID 0x01000000
+#define ATTR_CMN_FILEID 0x02000000
+#define ATTR_CMN_PARENTID 0x04000000
+#define ATTR_CMN_FULLPATH 0x08000000
+#define ATTR_CMN_ADDEDTIME 0x10000000
+#define ATTR_CMN_ERROR 0x20000000
+#define ATTR_CMN_DATA_PROTECT_FLAGS 0x40000000
+
+/*
+ * ATTR_CMN_RETURNED_ATTRS is only valid with getattrlist(2) and
+ * getattrlistbulk(2). It is always the first attribute in the return buffer.
+ */
+#define ATTR_CMN_RETURNED_ATTRS 0x80000000
+
+#define ATTR_CMN_VALIDMASK 0xFFFFFFFF
+/*
+ * The settable ATTR_CMN_* attributes include the following:
+ * ATTR_CMN_SCRIPT
+ * ATTR_CMN_CRTIME
+ * ATTR_CMN_MODTIME
+ * ATTR_CMN_CHGTIME
+ *
+ * ATTR_CMN_ACCTIME
+ * ATTR_CMN_BKUPTIME
+ * ATTR_CMN_FNDRINFO
+ * ATTR_CMN_OWNERID
+ *
+ * ATTR_CMN_GRPID
+ * ATTR_CMN_ACCESSMASK
+ * ATTR_CMN_FLAGS
+ *
+ * ATTR_CMN_EXTENDED_SECURITY
+ * ATTR_CMN_UUID
+ *
+ * ATTR_CMN_GRPUUID
+ *
+ * ATTR_CMN_DATA_PROTECT_FLAGS
+ */
+#define ATTR_CMN_SETMASK 0x51C7FF00
+#define ATTR_CMN_VOLSETMASK 0x00006700
+
+#define ATTR_VOL_FSTYPE 0x00000001
+#define ATTR_VOL_SIGNATURE 0x00000002
+#define ATTR_VOL_SIZE 0x00000004
+#define ATTR_VOL_SPACEFREE 0x00000008
+#define ATTR_VOL_SPACEAVAIL 0x00000010
+#define ATTR_VOL_MINALLOCATION 0x00000020
+#define ATTR_VOL_ALLOCATIONCLUMP 0x00000040
+#define ATTR_VOL_IOBLOCKSIZE 0x00000080
+#define ATTR_VOL_OBJCOUNT 0x00000100
+#define ATTR_VOL_FILECOUNT 0x00000200
+#define ATTR_VOL_DIRCOUNT 0x00000400
+#define ATTR_VOL_MAXOBJCOUNT 0x00000800
+#define ATTR_VOL_MOUNTPOINT 0x00001000
+#define ATTR_VOL_NAME 0x00002000
+#define ATTR_VOL_MOUNTFLAGS 0x00004000
+#define ATTR_VOL_MOUNTEDDEVICE 0x00008000
+#define ATTR_VOL_ENCODINGSUSED 0x00010000
+#define ATTR_VOL_CAPABILITIES 0x00020000
+#define ATTR_VOL_UUID 0x00040000
+#define ATTR_VOL_QUOTA_SIZE 0x10000000
+#define ATTR_VOL_RESERVED_SIZE 0x20000000
+#define ATTR_VOL_ATTRIBUTES 0x40000000
+#define ATTR_VOL_INFO 0x80000000
+
+#define ATTR_VOL_VALIDMASK 0xF007FFFF
+
+/*
+ * The list of settable ATTR_VOL_* attributes include the following:
+ * ATTR_VOL_NAME
+ * ATTR_VOL_INFO
+ */
+#define ATTR_VOL_SETMASK 0x80002000
+
+
+/* File/directory attributes: */
+#define ATTR_DIR_LINKCOUNT 0x00000001
+#define ATTR_DIR_ENTRYCOUNT 0x00000002
+#define ATTR_DIR_MOUNTSTATUS 0x00000004
+#define ATTR_DIR_ALLOCSIZE 0x00000008
+#define ATTR_DIR_IOBLOCKSIZE 0x00000010
+#define ATTR_DIR_DATALENGTH 0x00000020
+
+/* ATTR_DIR_MOUNTSTATUS Flags: */
+#define DIR_MNTSTATUS_MNTPOINT 0x00000001
+#define DIR_MNTSTATUS_TRIGGER 0x00000002
+
+#define ATTR_DIR_VALIDMASK 0x0000003f
+#define ATTR_DIR_SETMASK 0x00000000
+
+#define ATTR_FILE_LINKCOUNT 0x00000001
+#define ATTR_FILE_TOTALSIZE 0x00000002
+#define ATTR_FILE_ALLOCSIZE 0x00000004
+#define ATTR_FILE_IOBLOCKSIZE 0x00000008
+#define ATTR_FILE_DEVTYPE 0x00000020
+#define ATTR_FILE_FORKCOUNT 0x00000080
+#define ATTR_FILE_FORKLIST 0x00000100
+#define ATTR_FILE_DATALENGTH 0x00000200
+#define ATTR_FILE_DATAALLOCSIZE 0x00000400
+#define ATTR_FILE_RSRCLENGTH 0x00001000
+#define ATTR_FILE_RSRCALLOCSIZE 0x00002000
+
+#define ATTR_FILE_VALIDMASK 0x000037FF
+/*
+ * Settable ATTR_FILE_* attributes include:
+ * ATTR_FILE_DEVTYPE
+ */
+#define ATTR_FILE_SETMASK 0x00000020
+
+/* CMNEXT attributes extend the common attributes, but in the forkattr field */
+#define ATTR_CMNEXT_RELPATH 0x00000004
+#define ATTR_CMNEXT_PRIVATESIZE 0x00000008
+#define ATTR_CMNEXT_LINKID 0x00000010
+#define ATTR_CMNEXT_NOFIRMLINKPATH 0x00000020
+#define ATTR_CMNEXT_REALDEVID 0x00000040
+#define ATTR_CMNEXT_REALFSID 0x00000080
+#define ATTR_CMNEXT_CLONEID 0x00000100
+#define ATTR_CMNEXT_EXT_FLAGS 0x00000200
+#define ATTR_CMNEXT_RECURSIVE_GENCOUNT 0x00000400
+
+#define ATTR_CMNEXT_VALIDMASK 0x000007fc
+#define ATTR_CMNEXT_SETMASK 0x00000000
+
+/* Deprecated fork attributes */
+#define ATTR_FORK_TOTALSIZE 0x00000001
+#define ATTR_FORK_ALLOCSIZE 0x00000002
+#define ATTR_FORK_RESERVED 0xffffffff
+
+#define ATTR_FORK_VALIDMASK 0x00000003
+#define ATTR_FORK_SETMASK 0x00000000
+
+/* Obsolete, implemented, not supported */
+#define ATTR_CMN_NAMEDATTRCOUNT 0x00080000
+#define ATTR_CMN_NAMEDATTRLIST 0x00100000
+#define ATTR_FILE_CLUMPSIZE 0x00000010 /* obsolete */
+#define ATTR_FILE_FILETYPE 0x00000040 /* always zero */
+#define ATTR_FILE_DATAEXTENTS 0x00000800 /* obsolete, HFS-specific */
+#define ATTR_FILE_RSRCEXTENTS 0x00004000 /* obsolete, HFS-specific */
+
+/* Required attributes for getattrlistbulk(2) */
+#define ATTR_BULK_REQUIRED (ATTR_CMN_NAME | ATTR_CMN_RETURNED_ATTRS)
+
+/*
+ * Searchfs
+ */
+#define SRCHFS_START 0x00000001
+#define SRCHFS_MATCHPARTIALNAMES 0x00000002
+#define SRCHFS_MATCHDIRS 0x00000004
+#define SRCHFS_MATCHFILES 0x00000008
+#define SRCHFS_SKIPLINKS 0x00000010
+#define SRCHFS_SKIPINVISIBLE 0x00000020
+#define SRCHFS_SKIPPACKAGES 0x00000040
+#define SRCHFS_SKIPINAPPROPRIATE 0x00000080
+
+#define SRCHFS_NEGATEPARAMS 0x80000000
+#define SRCHFS_VALIDOPTIONSMASK 0x800000FF
+
+struct fssearchblock {
+ struct attrlist *returnattrs;
+ void *returnbuffer;
+ size_t returnbuffersize;
+ u_long maxmatches;
+ struct timeval timelimit;
+ void *searchparams1;
+ size_t sizeofsearchparams1;
+ void *searchparams2;
+ size_t sizeofsearchparams2;
+ struct attrlist searchattrs;
+};
+
+
+struct searchstate {
+ uint32_t ss_union_flags; // for SRCHFS_START
+ uint32_t ss_union_layer; // 0 = top
+ u_char ss_fsstate[548]; // fs private
+} __attribute__((packed));
+
+#define FST_EOF (-1) /* end-of-file offset */
+
+#endif /* __APPLE_API_UNSTABLE */
+#endif /* !_SYS_ATTR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/cdefs.h b/lib/libc/include/aarch64-macos-gnu/sys/cdefs.h
new file mode 100644
index 0000000000..e8145978d4
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/cdefs.h
@@ -0,0 +1,876 @@
+/*
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright 1995 NeXT Computer, Inc. All rights reserved. */
+/*
+ * Copyright (c) 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Berkeley Software Design, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)cdefs.h 8.8 (Berkeley) 1/9/95
+ */
+
+#ifndef _CDEFS_H_
+#define _CDEFS_H_
+
+#if defined(__cplusplus)
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS }
+#else
+#define __BEGIN_DECLS
+#define __END_DECLS
+#endif
+
+/* This SDK is designed to work with clang and specific versions of
+ * gcc >= 4.0 with Apple's patch sets */
+#if !defined(__GNUC__) || __GNUC__ < 4
+#warning "Unsupported compiler detected"
+#endif
+
+/*
+ * Compatibility with compilers and environments that don't support compiler
+ * feature checking function-like macros.
+ */
+#ifndef __has_builtin
+#define __has_builtin(x) 0
+#endif
+#ifndef __has_include
+#define __has_include(x) 0
+#endif
+#ifndef __has_feature
+#define __has_feature(x) 0
+#endif
+#ifndef __has_attribute
+#define __has_attribute(x) 0
+#endif
+#ifndef __has_extension
+#define __has_extension(x) 0
+#endif
+
+/*
+ * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
+ * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
+ * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
+ * in between its arguments. __CONCAT can also concatenate double-quoted
+ * strings produced by the __STRING macro, but this only works with ANSI C.
+ */
+#if defined(__STDC__) || defined(__cplusplus)
+#define __P(protos) protos /* full-blown ANSI C */
+#define __CONCAT(x, y) x ## y
+#define __STRING(x) #x
+
+#define __const const /* define reserved names to standard */
+#define __signed signed
+#define __volatile volatile
+#if defined(__cplusplus)
+#define __inline inline /* convert to C++ keyword */
+#else
+#ifndef __GNUC__
+#define __inline /* delete GCC keyword */
+#endif /* !__GNUC__ */
+#endif /* !__cplusplus */
+
+#else /* !(__STDC__ || __cplusplus) */
+#define __P(protos) () /* traditional C preprocessor */
+#define __CONCAT(x, y) x /**/ y
+#define __STRING(x) "x"
+
+#ifndef __GNUC__
+#define __const /* delete pseudo-ANSI C keywords */
+#define __inline
+#define __signed
+#define __volatile
+#endif /* !__GNUC__ */
+
+/*
+ * In non-ANSI C environments, new programs will want ANSI-only C keywords
+ * deleted from the program and old programs will want them left alone.
+ * When using a compiler other than gcc, programs using the ANSI C keywords
+ * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
+ * When using "gcc -traditional", we assume that this is the intent; if
+ * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
+ */
+#ifndef NO_ANSI_KEYWORDS
+#define const __const /* convert ANSI C keywords */
+#define inline __inline
+#define signed __signed
+#define volatile __volatile
+#endif /* !NO_ANSI_KEYWORDS */
+#endif /* !(__STDC__ || __cplusplus) */
+
+#define __dead2 __attribute__((__noreturn__))
+#define __pure2 __attribute__((__const__))
+
+/* __unused denotes variables and functions that may not be used, preventing
+ * the compiler from warning about it if not used.
+ */
+#define __unused __attribute__((__unused__))
+
+/* __used forces variables and functions to be included even if it appears
+ * to the compiler that they are not used (and would thust be discarded).
+ */
+#define __used __attribute__((__used__))
+
+/* __cold marks code used for debugging or that is rarely taken
+ * and tells the compiler to optimize for size and outline code.
+ */
+#if __has_attribute(cold)
+#define __cold __attribute__((__cold__))
+#else
+#define __cold
+#endif
+
+/* __exported denotes symbols that should be exported even when symbols
+ * are hidden by default.
+ * __exported_push/_exported_pop are pragmas used to delimit a range of
+ * symbols that should be exported even when symbols are hidden by default.
+ */
+#define __exported __attribute__((__visibility__("default")))
+#define __exported_push _Pragma("GCC visibility push(default)")
+#define __exported_pop _Pragma("GCC visibility pop")
+
+/* __deprecated causes the compiler to produce a warning when encountering
+ * code using the deprecated functionality.
+ * __deprecated_msg() does the same, and compilers that support it will print
+ * a message along with the deprecation warning.
+ * This may require turning on such warning with the -Wdeprecated flag.
+ * __deprecated_enum_msg() should be used on enums, and compilers that support
+ * it will print the deprecation warning.
+ * __kpi_deprecated() specifically indicates deprecation of kernel programming
+ * interfaces in Kernel.framework used by KEXTs.
+ */
+#define __deprecated __attribute__((__deprecated__))
+
+#if __has_extension(attribute_deprecated_with_message) || \
+ (defined(__GNUC__) && ((__GNUC__ >= 5) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5))))
+ #define __deprecated_msg(_msg) __attribute__((__deprecated__(_msg)))
+#else
+ #define __deprecated_msg(_msg) __attribute__((__deprecated__))
+#endif
+
+#if __has_extension(enumerator_attributes)
+ #define __deprecated_enum_msg(_msg) __deprecated_msg(_msg)
+#else
+ #define __deprecated_enum_msg(_msg)
+#endif
+
+#define __kpi_deprecated(_msg)
+
+/* __unavailable causes the compiler to error out when encountering
+ * code using the tagged function
+ */
+#if __has_attribute(unavailable)
+#define __unavailable __attribute__((__unavailable__))
+#else
+#define __unavailable
+#endif
+
+#define __kpi_unavailable
+
+#define __kpi_deprecated_arm64_macos_unavailable
+
+/* Delete pseudo-keywords wherever they are not available or needed. */
+#ifndef __dead
+#define __dead
+#define __pure
+#endif
+
+/*
+ * We use `__restrict' as a way to define the `restrict' type qualifier
+ * without disturbing older software that is unaware of C99 keywords.
+ */
+#if __STDC_VERSION__ < 199901
+#define __restrict
+#else
+#define __restrict restrict
+#endif
+
+/* Compatibility with compilers and environments that don't support the
+ * nullability feature.
+ */
+
+#if !__has_feature(nullability)
+#ifndef __nullable
+#define __nullable
+#endif
+#ifndef __nonnull
+#define __nonnull
+#endif
+#ifndef __null_unspecified
+#define __null_unspecified
+#endif
+#ifndef _Nullable
+#define _Nullable
+#endif
+#ifndef _Nonnull
+#define _Nonnull
+#endif
+#ifndef _Null_unspecified
+#define _Null_unspecified
+#endif
+#endif
+
+/*
+ * __disable_tail_calls causes the compiler to not perform tail call
+ * optimization inside the marked function.
+ */
+#if __has_attribute(disable_tail_calls)
+#define __disable_tail_calls __attribute__((__disable_tail_calls__))
+#else
+#define __disable_tail_calls
+#endif
+
+/*
+ * __not_tail_called causes the compiler to prevent tail call optimization
+ * on statically bound calls to the function. It has no effect on indirect
+ * calls. Virtual functions, objective-c methods, and functions marked as
+ * "always_inline" cannot be marked as __not_tail_called.
+ */
+#if __has_attribute(not_tail_called)
+#define __not_tail_called __attribute__((__not_tail_called__))
+#else
+#define __not_tail_called
+#endif
+
+/*
+ * __result_use_check warns callers of a function that not using the function
+ * return value is a bug, i.e. dismissing malloc() return value results in a
+ * memory leak.
+ */
+#if __has_attribute(warn_unused_result)
+#define __result_use_check __attribute__((__warn_unused_result__))
+#else
+#define __result_use_check
+#endif
+
+/*
+ * __swift_unavailable causes the compiler to mark a symbol as specifically
+ * unavailable in Swift, regardless of any other availability in C.
+ */
+#if __has_feature(attribute_availability_swift)
+#define __swift_unavailable(_msg) __attribute__((__availability__(swift, unavailable, message=_msg)))
+#else
+#define __swift_unavailable(_msg)
+#endif
+
+/*
+ * __abortlike is the attribute to put on functions like abort() that are
+ * typically used to mark assertions. These optimize the codegen
+ * for outlining while still maintaining debugability.
+ */
+#ifndef __abortlike
+#define __abortlike __dead2 __cold __not_tail_called
+#endif
+
+/* Declaring inline functions within headers is error-prone due to differences
+ * across various versions of the C language and extensions. __header_inline
+ * can be used to declare inline functions within system headers. In cases
+ * where you want to force inlining instead of letting the compiler make
+ * the decision, you can use __header_always_inline.
+ *
+ * Be aware that using inline for functions which compilers may also provide
+ * builtins can behave differently under various compilers. If you intend to
+ * provide an inline version of such a function, you may want to use a macro
+ * instead.
+ *
+ * The check for !__GNUC__ || __clang__ is because gcc doesn't correctly
+ * support c99 inline in some cases:
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55965
+ */
+
+#if defined(__cplusplus) || \
+ (__STDC_VERSION__ >= 199901L && \
+ !defined(__GNUC_GNU_INLINE__) && \
+ (!defined(__GNUC__) || defined(__clang__)))
+# define __header_inline inline
+#elif defined(__GNUC__) && defined(__GNUC_STDC_INLINE__)
+# define __header_inline extern __inline __attribute__((__gnu_inline__))
+#elif defined(__GNUC__)
+# define __header_inline extern __inline
+#else
+/* If we land here, we've encountered an unsupported compiler,
+ * so hopefully it understands static __inline as a fallback.
+ */
+# define __header_inline static __inline
+#endif
+
+#ifdef __GNUC__
+# define __header_always_inline __header_inline __attribute__ ((__always_inline__))
+#else
+/* Unfortunately, we're using a compiler that we don't know how to force to
+ * inline. Oh well.
+ */
+# define __header_always_inline __header_inline
+#endif
+
+/*
+ * Compiler-dependent macros that bracket portions of code where the
+ * "-Wunreachable-code" warning should be ignored. Please use sparingly.
+ */
+#if defined(__clang__)
+# define __unreachable_ok_push \
+ _Pragma("clang diagnostic push") \
+ _Pragma("clang diagnostic ignored \"-Wunreachable-code\"")
+# define __unreachable_ok_pop \
+ _Pragma("clang diagnostic pop")
+#elif defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+# define __unreachable_ok_push \
+ _Pragma("GCC diagnostic push") \
+ _Pragma("GCC diagnostic ignored \"-Wunreachable-code\"")
+# define __unreachable_ok_pop \
+ _Pragma("GCC diagnostic pop")
+#else
+# define __unreachable_ok_push
+# define __unreachable_ok_pop
+#endif
+
+/*
+ * Compiler-dependent macros to declare that functions take printf-like
+ * or scanf-like arguments. They are null except for versions of gcc
+ * that are known to support the features properly. Functions declared
+ * with these attributes will cause compilation warnings if there is a
+ * mismatch between the format string and subsequent function parameter
+ * types.
+ */
+#define __printflike(fmtarg, firstvararg) \
+ __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
+#define __printf0like(fmtarg, firstvararg) \
+ __attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
+#define __scanflike(fmtarg, firstvararg) \
+ __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
+
+#define __IDSTRING(name, string) static const char name[] __used = string
+
+#ifndef __COPYRIGHT
+#define __COPYRIGHT(s) __IDSTRING(copyright,s)
+#endif
+
+#ifndef __RCSID
+#define __RCSID(s) __IDSTRING(rcsid,s)
+#endif
+
+#ifndef __SCCSID
+#define __SCCSID(s) __IDSTRING(sccsid,s)
+#endif
+
+#ifndef __PROJECT_VERSION
+#define __PROJECT_VERSION(s) __IDSTRING(project_version,s)
+#endif
+
+/* Source compatibility only, ID string not emitted in object file */
+#ifndef __FBSDID
+#define __FBSDID(s)
+#endif
+
+#ifndef __DECONST
+#define __DECONST(type, var) __CAST_AWAY_QUALIFIER(var, const, type)
+#endif
+
+#ifndef __DEVOLATILE
+#define __DEVOLATILE(type, var) __CAST_AWAY_QUALIFIER(var, volatile, type)
+#endif
+
+#ifndef __DEQUALIFY
+#define __DEQUALIFY(type, var) __CAST_AWAY_QUALIFIER(var, const volatile, type)
+#endif
+
+/*
+ * __alloc_size can be used to label function arguments that represent the
+ * size of memory that the function allocates and returns. The one-argument
+ * form labels a single argument that gives the allocation size (where the
+ * arguments are numbered from 1):
+ *
+ * void *malloc(size_t __size) __alloc_size(1);
+ *
+ * The two-argument form handles the case where the size is calculated as the
+ * product of two arguments:
+ *
+ * void *calloc(size_t __count, size_t __size) __alloc_size(1,2);
+ */
+#ifndef __alloc_size
+#if __has_attribute(alloc_size)
+#define __alloc_size(...) __attribute__((alloc_size(__VA_ARGS__)))
+#else
+#define __alloc_size(...)
+#endif
+#endif // __alloc_size
+
+/*
+ * COMPILATION ENVIRONMENTS -- see compat(5) for additional detail
+ *
+ * DEFAULT By default newly complied code will get POSIX APIs plus
+ * Apple API extensions in scope.
+ *
+ * Most users will use this compilation environment to avoid
+ * behavioral differences between 32 and 64 bit code.
+ *
+ * LEGACY Defining _NONSTD_SOURCE will get pre-POSIX APIs plus Apple
+ * API extensions in scope.
+ *
+ * This is generally equivalent to the Tiger release compilation
+ * environment, except that it cannot be applied to 64 bit code;
+ * its use is discouraged.
+ *
+ * We expect this environment to be deprecated in the future.
+ *
+ * STRICT Defining _POSIX_C_SOURCE or _XOPEN_SOURCE restricts the
+ * available APIs to exactly the set of APIs defined by the
+ * corresponding standard, based on the value defined.
+ *
+ * A correct, portable definition for _POSIX_C_SOURCE is 200112L.
+ * A correct, portable definition for _XOPEN_SOURCE is 600L.
+ *
+ * Apple API extensions are not visible in this environment,
+ * which can cause Apple specific code to fail to compile,
+ * or behave incorrectly if prototypes are not in scope or
+ * warnings about missing prototypes are not enabled or ignored.
+ *
+ * In any compilation environment, for correct symbol resolution to occur,
+ * function prototypes must be in scope. It is recommended that all Apple
+ * tools users add either the "-Wall" or "-Wimplicit-function-declaration"
+ * compiler flags to their projects to be warned when a function is being
+ * used without a prototype in scope.
+ */
+
+/* These settings are particular to each product. */
+/* Platform: MacOSX */
+#if defined(__i386__)
+#define __DARWIN_ONLY_64_BIT_INO_T 0
+#define __DARWIN_ONLY_UNIX_CONFORMANCE 0
+#define __DARWIN_ONLY_VERS_1050 0
+#elif defined(__x86_64__)
+#define __DARWIN_ONLY_64_BIT_INO_T 0
+#define __DARWIN_ONLY_UNIX_CONFORMANCE 1
+#define __DARWIN_ONLY_VERS_1050 0
+#else
+#define __DARWIN_ONLY_64_BIT_INO_T 1
+#define __DARWIN_ONLY_UNIX_CONFORMANCE 1
+#define __DARWIN_ONLY_VERS_1050 1
+#endif
+
+/*
+ * The __DARWIN_ALIAS macros are used to do symbol renaming; they allow
+ * legacy code to use the old symbol, thus maintaining binary compatibility
+ * while new code can use a standards compliant version of the same function.
+ *
+ * __DARWIN_ALIAS is used by itself if the function signature has not
+ * changed, it is used along with a #ifdef check for __DARWIN_UNIX03
+ * if the signature has changed. Because the __LP64__ environment
+ * only supports UNIX03 semantics it causes __DARWIN_UNIX03 to be
+ * defined, but causes __DARWIN_ALIAS to do no symbol mangling.
+ *
+ * As a special case, when XCode is used to target a specific version of the
+ * OS, the manifest constant __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+ * will be defined by the compiler, with the digits representing major version
+ * time 100 + minor version times 10 (e.g. 10.5 := 1050). If we are targeting
+ * pre-10.5, and it is the default compilation environment, revert the
+ * compilation environment to pre-__DARWIN_UNIX03.
+ */
+#if !defined(__DARWIN_UNIX03)
+# if __DARWIN_ONLY_UNIX_CONFORMANCE
+# if defined(_NONSTD_SOURCE)
+# error "Can't define _NONSTD_SOURCE when only UNIX conformance is available."
+# endif /* _NONSTD_SOURCE */
+# define __DARWIN_UNIX03 1
+# elif defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - 0) < 1040)
+# define __DARWIN_UNIX03 0
+# elif defined(_DARWIN_C_SOURCE) || defined(_XOPEN_SOURCE) || defined(_POSIX_C_SOURCE)
+# if defined(_NONSTD_SOURCE)
+# error "Can't define both _NONSTD_SOURCE and any of _DARWIN_C_SOURCE, _XOPEN_SOURCE or _POSIX_C_SOURCE."
+# endif /* _NONSTD_SOURCE */
+# define __DARWIN_UNIX03 1
+# elif defined(_NONSTD_SOURCE)
+# define __DARWIN_UNIX03 0
+# else /* default */
+# if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - 0) < 1050)
+# define __DARWIN_UNIX03 0
+# else /* __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050 */
+# define __DARWIN_UNIX03 1
+# endif /* __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1050 */
+# endif /* _DARWIN_C_SOURCE || _XOPEN_SOURCE || _POSIX_C_SOURCE || __LP64__ */
+#endif /* !__DARWIN_UNIX03 */
+
+#if !defined(__DARWIN_64_BIT_INO_T)
+# if defined(_DARWIN_USE_64_BIT_INODE)
+# if defined(_DARWIN_NO_64_BIT_INODE)
+# error "Can't define both _DARWIN_USE_64_BIT_INODE and _DARWIN_NO_64_BIT_INODE."
+# endif /* _DARWIN_NO_64_BIT_INODE */
+# define __DARWIN_64_BIT_INO_T 1
+# elif defined(_DARWIN_NO_64_BIT_INODE)
+# if __DARWIN_ONLY_64_BIT_INO_T
+# error "Can't define _DARWIN_NO_64_BIT_INODE when only 64-bit inodes are available."
+# endif /* __DARWIN_ONLY_64_BIT_INO_T */
+# define __DARWIN_64_BIT_INO_T 0
+# else /* default */
+# if __DARWIN_ONLY_64_BIT_INO_T
+# define __DARWIN_64_BIT_INO_T 1
+# elif defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - 0) < 1060) || __DARWIN_UNIX03 == 0
+# define __DARWIN_64_BIT_INO_T 0
+# else /* default */
+# define __DARWIN_64_BIT_INO_T 1
+# endif /* __DARWIN_ONLY_64_BIT_INO_T */
+# endif
+#endif /* !__DARWIN_64_BIT_INO_T */
+
+#if !defined(__DARWIN_VERS_1050)
+# if __DARWIN_ONLY_VERS_1050
+# define __DARWIN_VERS_1050 1
+# elif defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && ((__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ - 0) < 1050) || __DARWIN_UNIX03 == 0
+# define __DARWIN_VERS_1050 0
+# else /* default */
+# define __DARWIN_VERS_1050 1
+# endif
+#endif /* !__DARWIN_VERS_1050 */
+
+#if !defined(__DARWIN_NON_CANCELABLE)
+# define __DARWIN_NON_CANCELABLE 0
+#endif /* !__DARWIN_NON_CANCELABLE */
+
+/*
+ * symbol suffixes used for symbol versioning
+ */
+#if __DARWIN_UNIX03
+# if __DARWIN_ONLY_UNIX_CONFORMANCE
+# define __DARWIN_SUF_UNIX03 /* nothing */
+# else /* !__DARWIN_ONLY_UNIX_CONFORMANCE */
+# define __DARWIN_SUF_UNIX03 "$UNIX2003"
+# endif /* __DARWIN_ONLY_UNIX_CONFORMANCE */
+
+# if __DARWIN_64_BIT_INO_T
+# if __DARWIN_ONLY_64_BIT_INO_T
+# define __DARWIN_SUF_64_BIT_INO_T /* nothing */
+# else /* !__DARWIN_ONLY_64_BIT_INO_T */
+# define __DARWIN_SUF_64_BIT_INO_T "$INODE64"
+# endif /* __DARWIN_ONLY_64_BIT_INO_T */
+# else /* !__DARWIN_64_BIT_INO_T */
+# define __DARWIN_SUF_64_BIT_INO_T /* nothing */
+# endif /* __DARWIN_64_BIT_INO_T */
+
+# if __DARWIN_VERS_1050
+# if __DARWIN_ONLY_VERS_1050
+# define __DARWIN_SUF_1050 /* nothing */
+# else /* !__DARWIN_ONLY_VERS_1050 */
+# define __DARWIN_SUF_1050 "$1050"
+# endif /* __DARWIN_ONLY_VERS_1050 */
+# else /* !__DARWIN_VERS_1050 */
+# define __DARWIN_SUF_1050 /* nothing */
+# endif /* __DARWIN_VERS_1050 */
+
+# if __DARWIN_NON_CANCELABLE
+# define __DARWIN_SUF_NON_CANCELABLE "$NOCANCEL"
+# else /* !__DARWIN_NON_CANCELABLE */
+# define __DARWIN_SUF_NON_CANCELABLE /* nothing */
+# endif /* __DARWIN_NON_CANCELABLE */
+
+#else /* !__DARWIN_UNIX03 */
+# define __DARWIN_SUF_UNIX03 /* nothing */
+# define __DARWIN_SUF_64_BIT_INO_T /* nothing */
+# define __DARWIN_SUF_NON_CANCELABLE /* nothing */
+# define __DARWIN_SUF_1050 /* nothing */
+#endif /* __DARWIN_UNIX03 */
+
+#define __DARWIN_SUF_EXTSN "$DARWIN_EXTSN"
+
+/*
+ * symbol versioning macros
+ */
+#define __DARWIN_ALIAS(sym) __asm("_" __STRING(sym) __DARWIN_SUF_UNIX03)
+#define __DARWIN_ALIAS_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_NON_CANCELABLE __DARWIN_SUF_UNIX03)
+#define __DARWIN_ALIAS_I(sym) __asm("_" __STRING(sym) __DARWIN_SUF_64_BIT_INO_T __DARWIN_SUF_UNIX03)
+#define __DARWIN_NOCANCEL(sym) __asm("_" __STRING(sym) __DARWIN_SUF_NON_CANCELABLE)
+#define __DARWIN_INODE64(sym) __asm("_" __STRING(sym) __DARWIN_SUF_64_BIT_INO_T)
+
+#define __DARWIN_1050(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050)
+#define __DARWIN_1050ALIAS(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_UNIX03)
+#define __DARWIN_1050ALIAS_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_NON_CANCELABLE __DARWIN_SUF_UNIX03)
+#define __DARWIN_1050ALIAS_I(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_64_BIT_INO_T __DARWIN_SUF_UNIX03)
+#define __DARWIN_1050INODE64(sym) __asm("_" __STRING(sym) __DARWIN_SUF_1050 __DARWIN_SUF_64_BIT_INO_T)
+
+#define __DARWIN_EXTSN(sym) __asm("_" __STRING(sym) __DARWIN_SUF_EXTSN)
+#define __DARWIN_EXTSN_C(sym) __asm("_" __STRING(sym) __DARWIN_SUF_EXTSN __DARWIN_SUF_NON_CANCELABLE)
+
+/*
+ * symbol release macros
+ */
+#include <sys/_symbol_aliasing.h>
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__)
+#define __DARWIN_ALIAS_STARTING(_mac, _iphone, x) __DARWIN_ALIAS_STARTING_IPHONE_##_iphone(x)
+#elif defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
+#define __DARWIN_ALIAS_STARTING(_mac, _iphone, x) __DARWIN_ALIAS_STARTING_MAC_##_mac(x)
+#else
+#define __DARWIN_ALIAS_STARTING(_mac, _iphone, x) x
+#endif
+
+
+/*
+ * POSIX.1 requires that the macros we test be defined before any standard
+ * header file is included. This permits us to convert values for feature
+ * testing, as necessary, using only _POSIX_C_SOURCE.
+ *
+ * Here's a quick run-down of the versions:
+ * defined(_POSIX_SOURCE) 1003.1-1988
+ * _POSIX_C_SOURCE == 1L 1003.1-1990
+ * _POSIX_C_SOURCE == 2L 1003.2-1992 C Language Binding Option
+ * _POSIX_C_SOURCE == 199309L 1003.1b-1993
+ * _POSIX_C_SOURCE == 199506L 1003.1c-1995, 1003.1i-1995,
+ * and the omnibus ISO/IEC 9945-1: 1996
+ * _POSIX_C_SOURCE == 200112L 1003.1-2001
+ * _POSIX_C_SOURCE == 200809L 1003.1-2008
+ *
+ * In addition, the X/Open Portability Guide, which is now the Single UNIX
+ * Specification, defines a feature-test macro which indicates the version of
+ * that specification, and which subsumes _POSIX_C_SOURCE.
+ */
+
+/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1L. */
+#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1L
+#undef _POSIX_C_SOURCE
+#define _POSIX_C_SOURCE 199009L
+#endif
+
+/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2L. */
+#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2L
+#undef _POSIX_C_SOURCE
+#define _POSIX_C_SOURCE 199209L
+#endif
+
+/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
+#ifdef _XOPEN_SOURCE
+#if _XOPEN_SOURCE - 0L >= 700L && (!defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE - 0L < 200809L)
+#undef _POSIX_C_SOURCE
+#define _POSIX_C_SOURCE 200809L
+#elif _XOPEN_SOURCE - 0L >= 600L && (!defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE - 0L < 200112L)
+#undef _POSIX_C_SOURCE
+#define _POSIX_C_SOURCE 200112L
+#elif _XOPEN_SOURCE - 0L >= 500L && (!defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE - 0L < 199506L)
+#undef _POSIX_C_SOURCE
+#define _POSIX_C_SOURCE 199506L
+#endif
+#endif
+
+/*
+ * Deal with all versions of POSIX. The ordering relative to the tests above is
+ * important.
+ */
+#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
+#define _POSIX_C_SOURCE 198808L
+#endif
+
+/* POSIX C deprecation macros */
+#include <sys/_posix_availability.h>
+
+#define __POSIX_C_DEPRECATED(ver) ___POSIX_C_DEPRECATED_STARTING_##ver
+
+/*
+ * Set a single macro which will always be defined and can be used to determine
+ * the appropriate namespace. For POSIX, these values will correspond to
+ * _POSIX_C_SOURCE value. Currently there are two additional levels corresponding
+ * to ANSI (_ANSI_SOURCE) and Darwin extensions (_DARWIN_C_SOURCE)
+ */
+#define __DARWIN_C_ANSI 010000L
+#define __DARWIN_C_FULL 900000L
+
+#if defined(_ANSI_SOURCE)
+#define __DARWIN_C_LEVEL __DARWIN_C_ANSI
+#elif defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE) && !defined(_NONSTD_SOURCE)
+#define __DARWIN_C_LEVEL _POSIX_C_SOURCE
+#else
+#define __DARWIN_C_LEVEL __DARWIN_C_FULL
+#endif
+
+/* If the developer has neither requested a strict language mode nor a version
+ * of POSIX, turn on functionality provided by __STDC_WANT_LIB_EXT1__ as part
+ * of __DARWIN_C_FULL.
+ */
+#if !defined(__STDC_WANT_LIB_EXT1__) && !defined(__STRICT_ANSI__) && __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define __STDC_WANT_LIB_EXT1__ 1
+#endif
+
+/*
+ * long long is not supported in c89 (__STRICT_ANSI__), but g++ -ansi and
+ * c99 still want long longs. While not perfect, we allow long longs for
+ * g++.
+ */
+#if (defined(__STRICT_ANSI__) && (__STDC_VERSION__ - 0 < 199901L) && !defined(__GNUG__))
+#define __DARWIN_NO_LONG_LONG 1
+#else
+#define __DARWIN_NO_LONG_LONG 0
+#endif
+
+/*****************************************
+* Public darwin-specific feature macros
+*****************************************/
+
+/*
+ * _DARWIN_FEATURE_64_BIT_INODE indicates that the ino_t type is 64-bit, and
+ * structures modified for 64-bit inodes (like struct stat) will be used.
+ */
+#if __DARWIN_64_BIT_INO_T
+#define _DARWIN_FEATURE_64_BIT_INODE 1
+#endif
+
+/*
+ * _DARWIN_FEATURE_64_ONLY_BIT_INODE indicates that the ino_t type may only
+ * be 64-bit; there is no support for 32-bit ino_t when this macro is defined
+ * (and non-zero). There is no struct stat64 either, as the regular
+ * struct stat will already be the 64-bit version.
+ */
+#if __DARWIN_ONLY_64_BIT_INO_T
+#define _DARWIN_FEATURE_ONLY_64_BIT_INODE 1
+#endif
+
+/*
+ * _DARWIN_FEATURE_ONLY_VERS_1050 indicates that only those APIs updated
+ * in 10.5 exists; no pre-10.5 variants are available.
+ */
+#if __DARWIN_ONLY_VERS_1050
+#define _DARWIN_FEATURE_ONLY_VERS_1050 1
+#endif
+
+/*
+ * _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE indicates only UNIX conforming API
+ * are available (the legacy BSD APIs are not available)
+ */
+#if __DARWIN_ONLY_UNIX_CONFORMANCE
+#define _DARWIN_FEATURE_ONLY_UNIX_CONFORMANCE 1
+#endif
+
+/*
+ * _DARWIN_FEATURE_UNIX_CONFORMANCE indicates whether UNIX conformance is on,
+ * and specifies the conformance level (3 is SUSv3)
+ */
+#if __DARWIN_UNIX03
+#define _DARWIN_FEATURE_UNIX_CONFORMANCE 3
+#endif
+
+
+/*
+ * This macro casts away the qualifier from the variable
+ *
+ * Note: use at your own risk, removing qualifiers can result in
+ * catastrophic run-time failures.
+ */
+#ifndef __CAST_AWAY_QUALIFIER
+#define __CAST_AWAY_QUALIFIER(variable, qualifier, type) (type) (long)(variable)
+#endif
+
+/*
+ * __XNU_PRIVATE_EXTERN is a linkage decoration indicating that a symbol can be
+ * used from other compilation units, but not other libraries or executables.
+ */
+#ifndef __XNU_PRIVATE_EXTERN
+#define __XNU_PRIVATE_EXTERN __attribute__((visibility("hidden")))
+#endif
+
+/*
+ * Architecture validation for current SDK
+ */
+#if !defined(__sys_cdefs_arch_unknown__) && defined(__i386__)
+#elif !defined(__sys_cdefs_arch_unknown__) && defined(__x86_64__)
+#elif !defined(__sys_cdefs_arch_unknown__) && defined(__arm__)
+#elif !defined(__sys_cdefs_arch_unknown__) && defined(__arm64__)
+#else
+#error Unsupported architecture
+#endif
+
+
+
+#define __compiler_barrier() __asm__ __volatile__("" ::: "memory")
+
+#if __has_attribute(enum_extensibility)
+#define __enum_open __attribute__((__enum_extensibility__(open)))
+#define __enum_closed __attribute__((__enum_extensibility__(closed)))
+#else
+#define __enum_open
+#define __enum_closed
+#endif // __has_attribute(enum_extensibility)
+
+#if __has_attribute(flag_enum)
+#define __enum_options __attribute__((__flag_enum__))
+#else
+#define __enum_options
+#endif
+
+/*
+ * Similar to OS_ENUM/OS_CLOSED_ENUM/OS_OPTIONS/OS_CLOSED_OPTIONS
+ *
+ * This provides more advanced type checking on compilers supporting
+ * the proper extensions, even in C.
+ */
+#if __has_feature(objc_fixed_enum) || __has_extension(cxx_fixed_enum) || \
+ __has_extension(cxx_strong_enums)
+#define __enum_decl(_name, _type, ...) \
+ typedef enum : _type __VA_ARGS__ __enum_open _name
+#define __enum_closed_decl(_name, _type, ...) \
+ typedef enum : _type __VA_ARGS__ __enum_closed _name
+#define __options_decl(_name, _type, ...) \
+ typedef enum : _type __VA_ARGS__ __enum_open __enum_options _name
+#define __options_closed_decl(_name, _type, ...) \
+ typedef enum : _type __VA_ARGS__ __enum_closed __enum_options _name
+#else
+#define __enum_decl(_name, _type, ...) \
+ typedef _type _name; enum __VA_ARGS__ __enum_open
+#define __enum_closed_decl(_name, _type, ...) \
+ typedef _type _name; enum __VA_ARGS__ __enum_closed
+#define __options_decl(_name, _type, ...) \
+ typedef _type _name; enum __VA_ARGS__ __enum_open __enum_options
+#define __options_closed_decl(_name, _type, ...) \
+ typedef _type _name; enum __VA_ARGS__ __enum_closed __enum_options
+#endif
+
+#endif /* !_CDEFS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/event.h b/lib/libc/include/aarch64-macos-gnu/sys/event.h
new file mode 100644
index 0000000000..b03d37f867
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/event.h
@@ -0,0 +1,396 @@
+/*
+ * Copyright (c) 2003-2019 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*-
+ * Copyright (c) 1999,2000,2001 Jonathan Lemon <jlemon@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/sys/sys/event.h,v 1.5.2.5 2001/12/14 19:21:22 jlemon Exp $
+ */
+
+#ifndef _SYS_EVENT_H_
+#define _SYS_EVENT_H_
+
+#include <machine/types.h>
+#include <sys/cdefs.h>
+#include <stdint.h>
+
+/*
+ * Filter types
+ */
+#define EVFILT_READ (-1)
+#define EVFILT_WRITE (-2)
+#define EVFILT_AIO (-3) /* attached to aio requests */
+#define EVFILT_VNODE (-4) /* attached to vnodes */
+#define EVFILT_PROC (-5) /* attached to struct proc */
+#define EVFILT_SIGNAL (-6) /* attached to struct proc */
+#define EVFILT_TIMER (-7) /* timers */
+#define EVFILT_MACHPORT (-8) /* Mach portsets */
+#define EVFILT_FS (-9) /* Filesystem events */
+#define EVFILT_USER (-10) /* User events */
+#define EVFILT_VM (-12) /* Virtual memory events */
+#define EVFILT_EXCEPT (-15) /* Exception events */
+
+#define EVFILT_SYSCOUNT 17
+#define EVFILT_THREADMARKER EVFILT_SYSCOUNT /* Internal use only */
+
+#pragma pack(4)
+
+struct kevent {
+ uintptr_t ident; /* identifier for this event */
+ int16_t filter; /* filter for event */
+ uint16_t flags; /* general flags */
+ uint32_t fflags; /* filter-specific flags */
+ intptr_t data; /* filter-specific data */
+ void *udata; /* opaque user data identifier */
+};
+
+
+#pragma pack()
+
+struct kevent64_s {
+ uint64_t ident; /* identifier for this event */
+ int16_t filter; /* filter for event */
+ uint16_t flags; /* general flags */
+ uint32_t fflags; /* filter-specific flags */
+ int64_t data; /* filter-specific data */
+ uint64_t udata; /* opaque user data identifier */
+ uint64_t ext[2]; /* filter-specific extensions */
+};
+
+
+#define EV_SET(kevp, a, b, c, d, e, f) do { \
+ struct kevent *__kevp__ = (kevp); \
+ __kevp__->ident = (a); \
+ __kevp__->filter = (b); \
+ __kevp__->flags = (c); \
+ __kevp__->fflags = (d); \
+ __kevp__->data = (e); \
+ __kevp__->udata = (f); \
+} while(0)
+
+#define EV_SET64(kevp, a, b, c, d, e, f, g, h) do { \
+ struct kevent64_s *__kevp__ = (kevp); \
+ __kevp__->ident = (a); \
+ __kevp__->filter = (b); \
+ __kevp__->flags = (c); \
+ __kevp__->fflags = (d); \
+ __kevp__->data = (e); \
+ __kevp__->udata = (f); \
+ __kevp__->ext[0] = (g); \
+ __kevp__->ext[1] = (h); \
+} while(0)
+
+
+/* kevent system call flags */
+#define KEVENT_FLAG_NONE 0x000000 /* no flag value */
+#define KEVENT_FLAG_IMMEDIATE 0x000001 /* immediate timeout */
+#define KEVENT_FLAG_ERROR_EVENTS 0x000002 /* output events only include change errors */
+
+
+/* actions */
+#define EV_ADD 0x0001 /* add event to kq (implies enable) */
+#define EV_DELETE 0x0002 /* delete event from kq */
+#define EV_ENABLE 0x0004 /* enable event */
+#define EV_DISABLE 0x0008 /* disable event (not reported) */
+
+/* flags */
+#define EV_ONESHOT 0x0010 /* only report one occurrence */
+#define EV_CLEAR 0x0020 /* clear event state after reporting */
+#define EV_RECEIPT 0x0040 /* force immediate event output */
+ /* ... with or without EV_ERROR */
+ /* ... use KEVENT_FLAG_ERROR_EVENTS */
+ /* on syscalls supporting flags */
+
+#define EV_DISPATCH 0x0080 /* disable event after reporting */
+#define EV_UDATA_SPECIFIC 0x0100 /* unique kevent per udata value */
+
+#define EV_DISPATCH2 (EV_DISPATCH | EV_UDATA_SPECIFIC)
+/* ... in combination with EV_DELETE */
+/* will defer delete until udata-specific */
+/* event enabled. EINPROGRESS will be */
+/* returned to indicate the deferral */
+
+#define EV_VANISHED 0x0200 /* report that source has vanished */
+ /* ... only valid with EV_DISPATCH2 */
+
+#define EV_SYSFLAGS 0xF000 /* reserved by system */
+#define EV_FLAG0 0x1000 /* filter-specific flag */
+#define EV_FLAG1 0x2000 /* filter-specific flag */
+
+/* returned values */
+#define EV_EOF 0x8000 /* EOF detected */
+#define EV_ERROR 0x4000 /* error, data contains errno */
+
+/*
+ * Filter specific flags for EVFILT_READ
+ *
+ * The default behavior for EVFILT_READ is to make the "read" determination
+ * relative to the current file descriptor read pointer.
+ *
+ * The EV_POLL flag indicates the determination should be made via poll(2)
+ * semantics. These semantics dictate always returning true for regular files,
+ * regardless of the amount of unread data in the file.
+ *
+ * On input, EV_OOBAND specifies that filter should actively return in the
+ * presence of OOB on the descriptor. It implies that filter will return
+ * if there is OOB data available to read OR when any other condition
+ * for the read are met (for example number of bytes regular data becomes >=
+ * low-watermark).
+ * If EV_OOBAND is not set on input, it implies that the filter should not actively
+ * return for out of band data on the descriptor. The filter will then only return
+ * when some other condition for read is met (ex: when number of regular data bytes
+ * >=low-watermark OR when socket can't receive more data (SS_CANTRCVMORE)).
+ *
+ * On output, EV_OOBAND indicates the presence of OOB data on the descriptor.
+ * If it was not specified as an input parameter, then the data count is the
+ * number of bytes before the current OOB marker, else data count is the number
+ * of bytes beyond OOB marker.
+ */
+#define EV_POLL EV_FLAG0
+#define EV_OOBAND EV_FLAG1
+
+/*
+ * data/hint fflags for EVFILT_USER, shared with userspace
+ */
+
+/*
+ * On input, NOTE_TRIGGER causes the event to be triggered for output.
+ */
+#define NOTE_TRIGGER 0x01000000
+
+/*
+ * On input, the top two bits of fflags specifies how the lower twenty four
+ * bits should be applied to the stored value of fflags.
+ *
+ * On output, the top two bits will always be set to NOTE_FFNOP and the
+ * remaining twenty four bits will contain the stored fflags value.
+ */
+#define NOTE_FFNOP 0x00000000 /* ignore input fflags */
+#define NOTE_FFAND 0x40000000 /* and fflags */
+#define NOTE_FFOR 0x80000000 /* or fflags */
+#define NOTE_FFCOPY 0xc0000000 /* copy fflags */
+#define NOTE_FFCTRLMASK 0xc0000000 /* mask for operations */
+#define NOTE_FFLAGSMASK 0x00ffffff
+
+
+/*
+ * data/hint fflags for EVFILT_{READ|WRITE}, shared with userspace
+ *
+ * The default behavior for EVFILT_READ is to make the determination
+ * realtive to the current file descriptor read pointer.
+ */
+#define NOTE_LOWAT 0x00000001 /* low water mark */
+
+/* data/hint flags for EVFILT_EXCEPT, shared with userspace */
+#define NOTE_OOB 0x00000002 /* OOB data */
+
+/*
+ * data/hint fflags for EVFILT_VNODE, shared with userspace
+ */
+#define NOTE_DELETE 0x00000001 /* vnode was removed */
+#define NOTE_WRITE 0x00000002 /* data contents changed */
+#define NOTE_EXTEND 0x00000004 /* size increased */
+#define NOTE_ATTRIB 0x00000008 /* attributes changed */
+#define NOTE_LINK 0x00000010 /* link count changed */
+#define NOTE_RENAME 0x00000020 /* vnode was renamed */
+#define NOTE_REVOKE 0x00000040 /* vnode access was revoked */
+#define NOTE_NONE 0x00000080 /* No specific vnode event: to test for EVFILT_READ activation*/
+#define NOTE_FUNLOCK 0x00000100 /* vnode was unlocked by flock(2) */
+
+/*
+ * data/hint fflags for EVFILT_PROC, shared with userspace
+ *
+ * Please note that EVFILT_PROC and EVFILT_SIGNAL share the same knote list
+ * that hangs off the proc structure. They also both play games with the hint
+ * passed to KNOTE(). If NOTE_SIGNAL is passed as a hint, then the lower bits
+ * of the hint contain the signal. IF NOTE_FORK is passed, then the lower bits
+ * contain the PID of the child (but the pid does not get passed through in
+ * the actual kevent).
+ */
+enum {
+ eNoteReapDeprecated __deprecated_enum_msg("This kqueue(2) EVFILT_PROC flag is deprecated") = 0x10000000
+};
+
+#define NOTE_EXIT 0x80000000 /* process exited */
+#define NOTE_FORK 0x40000000 /* process forked */
+#define NOTE_EXEC 0x20000000 /* process exec'd */
+#define NOTE_REAP ((unsigned int)eNoteReapDeprecated /* 0x10000000 */ ) /* process reaped */
+#define NOTE_SIGNAL 0x08000000 /* shared with EVFILT_SIGNAL */
+#define NOTE_EXITSTATUS 0x04000000 /* exit status to be returned, valid for child process or when allowed to signal target pid */
+#define NOTE_EXIT_DETAIL 0x02000000 /* provide details on reasons for exit */
+
+#define NOTE_PDATAMASK 0x000fffff /* mask for signal & exit status */
+#define NOTE_PCTRLMASK (~NOTE_PDATAMASK)
+
+/*
+ * If NOTE_EXITSTATUS is present, provide additional info about exiting process.
+ */
+enum {
+ eNoteExitReparentedDeprecated __deprecated_enum_msg("This kqueue(2) EVFILT_PROC flag is no longer sent") = 0x00080000
+};
+#define NOTE_EXIT_REPARENTED ((unsigned int)eNoteExitReparentedDeprecated) /* exited while reparented */
+
+/*
+ * If NOTE_EXIT_DETAIL is present, these bits indicate specific reasons for exiting.
+ */
+#define NOTE_EXIT_DETAIL_MASK 0x00070000
+#define NOTE_EXIT_DECRYPTFAIL 0x00010000
+#define NOTE_EXIT_MEMORY 0x00020000
+#define NOTE_EXIT_CSERROR 0x00040000
+
+
+/*
+ * data/hint fflags for EVFILT_VM, shared with userspace.
+ */
+#define NOTE_VM_PRESSURE 0x80000000 /* will react on memory pressure */
+#define NOTE_VM_PRESSURE_TERMINATE 0x40000000 /* will quit on memory pressure, possibly after cleaning up dirty state */
+#define NOTE_VM_PRESSURE_SUDDEN_TERMINATE 0x20000000 /* will quit immediately on memory pressure */
+#define NOTE_VM_ERROR 0x10000000 /* there was an error */
+
+
+/*
+ * data/hint fflags for EVFILT_TIMER, shared with userspace.
+ * The default is a (repeating) interval timer with the data
+ * specifying the timeout interval in milliseconds.
+ *
+ * All timeouts are implicitly EV_CLEAR events.
+ */
+#define NOTE_SECONDS 0x00000001 /* data is seconds */
+#define NOTE_USECONDS 0x00000002 /* data is microseconds */
+#define NOTE_NSECONDS 0x00000004 /* data is nanoseconds */
+#define NOTE_ABSOLUTE 0x00000008 /* absolute timeout */
+/* ... implicit EV_ONESHOT, timeout uses the gettimeofday epoch */
+#define NOTE_LEEWAY 0x00000010 /* ext[1] holds leeway for power aware timers */
+#define NOTE_CRITICAL 0x00000020 /* system does minimal timer coalescing */
+#define NOTE_BACKGROUND 0x00000040 /* system does maximum timer coalescing */
+#define NOTE_MACH_CONTINUOUS_TIME 0x00000080
+/*
+ * NOTE_MACH_CONTINUOUS_TIME:
+ * with NOTE_ABSOLUTE: causes the timer to continue to tick across sleep,
+ * still uses gettimeofday epoch
+ * with NOTE_MACHTIME and NOTE_ABSOLUTE: uses mach continuous time epoch
+ * without NOTE_ABSOLUTE (interval timer mode): continues to tick across sleep
+ */
+#define NOTE_MACHTIME 0x00000100 /* data is mach absolute time units */
+/* timeout uses the mach absolute time epoch */
+
+
+/*
+ * data/hint fflags for EVFILT_MACHPORT, shared with userspace.
+ *
+ * Only portsets are supported at this time.
+ *
+ * The fflags field can optionally contain the MACH_RCV_MSG, MACH_RCV_LARGE,
+ * and related trailer receive options as defined in <mach/message.h>.
+ * The presence of these flags directs the kevent64() call to attempt to receive
+ * the message during kevent delivery, rather than just indicate that a message exists.
+ * On setup, The ext[0] field contains the receive buffer pointer and ext[1] contains
+ * the receive buffer length. Upon event delivery, the actual received message size
+ * is returned in ext[1]. As with mach_msg(), the buffer must be large enough to
+ * receive the message and the requested (or default) message trailers. In addition,
+ * the fflags field contains the return code normally returned by mach_msg().
+ *
+ * If MACH_RCV_MSG is specified, and the ext[1] field specifies a zero length, the
+ * system call argument specifying an ouput area (kevent_qos) will be consulted. If
+ * the system call specified an output data area, the user-space address
+ * of the received message is carved from that provided output data area (if enough
+ * space remains there). The address and length of each received message is
+ * returned in the ext[0] and ext[1] fields (respectively) of the corresponding kevent.
+ *
+ * IF_MACH_RCV_VOUCHER_CONTENT is specified, the contents of the message voucher is
+ * extracted (as specified in the xflags field) and stored in ext[2] up to ext[3]
+ * length. If the input length is zero, and the system call provided a data area,
+ * the space for the voucher content is carved from the provided space and its
+ * address and length is returned in ext[2] and ext[3] respectively.
+ *
+ * If no message receipt options were provided in the fflags field on setup, no
+ * message is received by this call. Instead, on output, the data field simply
+ * contains the name of the actual port detected with a message waiting.
+ */
+
+/*
+ * DEPRECATED!!!!!!!!!
+ * NOTE_TRACK, NOTE_TRACKERR, and NOTE_CHILD are no longer supported as of 10.5
+ */
+/* additional flags for EVFILT_PROC */
+#define NOTE_TRACK 0x00000001 /* follow across forks */
+#define NOTE_TRACKERR 0x00000002 /* could not track child */
+#define NOTE_CHILD 0x00000004 /* am a child process */
+
+
+
+/* Temporay solution for BootX to use inode.h till kqueue moves to vfs layer */
+#include <sys/queue.h>
+struct knote;
+SLIST_HEAD(klist, knote);
+
+
+#include <sys/types.h>
+
+struct timespec;
+
+__BEGIN_DECLS
+int kqueue(void);
+int kevent(int kq,
+ const struct kevent *changelist, int nchanges,
+ struct kevent *eventlist, int nevents,
+ const struct timespec *timeout);
+int kevent64(int kq,
+ const struct kevent64_s *changelist, int nchanges,
+ struct kevent64_s *eventlist, int nevents,
+ unsigned int flags,
+ const struct timespec *timeout);
+
+
+__END_DECLS
+
+
+
+
+#endif /* !_SYS_EVENT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/fcntl.h b/lib/libc/include/aarch64-macos-gnu/sys/fcntl.h
new file mode 100644
index 0000000000..8f13a01f90
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/fcntl.h
@@ -0,0 +1,581 @@
+/*
+ * Copyright (c) 2000-2013 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*-
+ * Copyright (c) 1983, 1990, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)fcntl.h 8.3 (Berkeley) 1/21/94
+ */
+
+
+#ifndef _SYS_FCNTL_H_
+#define _SYS_FCNTL_H_
+
+/*
+ * This file includes the definitions for open and fcntl
+ * described by POSIX for <fcntl.h>; it also includes
+ * related kernel definitions.
+ */
+#include <sys/_types.h>
+#include <sys/cdefs.h>
+#include <Availability.h>
+
+/* We should not be exporting size_t here. Temporary for gcc bootstrapping. */
+#include <sys/_types/_size_t.h>
+#include <sys/_types/_mode_t.h>
+#include <sys/_types/_off_t.h>
+#include <sys/_types/_pid_t.h>
+
+/*
+ * File status flags: these are used by open(2), fcntl(2).
+ * They are also used (indirectly) in the kernel file structure f_flags,
+ * which is a superset of the open/fcntl flags. Open flags and f_flags
+ * are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).
+ * Open/fcntl flags begin with O_; kernel-internal flags begin with F.
+ */
+/* open-only flags */
+#define O_RDONLY 0x0000 /* open for reading only */
+#define O_WRONLY 0x0001 /* open for writing only */
+#define O_RDWR 0x0002 /* open for reading and writing */
+#define O_ACCMODE 0x0003 /* mask for above modes */
+
+/*
+ * Kernel encoding of open mode; separate read and write bits that are
+ * independently testable: 1 greater than the above.
+ *
+ * XXX
+ * FREAD and FWRITE are excluded from the #ifdef KERNEL so that TIOCFLUSH,
+ * which was documented to use FREAD/FWRITE, continues to work.
+ */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define FREAD 0x00000001
+#define FWRITE 0x00000002
+#endif
+#define O_NONBLOCK 0x00000004 /* no delay */
+#define O_APPEND 0x00000008 /* set append mode */
+
+#include <sys/_types/_o_sync.h>
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define O_SHLOCK 0x00000010 /* open with shared file lock */
+#define O_EXLOCK 0x00000020 /* open with exclusive file lock */
+#define O_ASYNC 0x00000040 /* signal pgrp when data ready */
+#define O_FSYNC O_SYNC /* source compatibility: do not use */
+#define O_NOFOLLOW 0x00000100 /* don't follow symlinks */
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+#define O_CREAT 0x00000200 /* create if nonexistant */
+#define O_TRUNC 0x00000400 /* truncate to zero length */
+#define O_EXCL 0x00000800 /* error if already exists */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define O_EVTONLY 0x00008000 /* descriptor requested for event notifications only */
+#endif
+
+
+#define O_NOCTTY 0x00020000 /* don't assign controlling terminal */
+
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define O_DIRECTORY 0x00100000
+#define O_SYMLINK 0x00200000 /* allow open of a symlink */
+#endif
+
+// O_DSYNC 0x00400000 /* synch I/O data integrity */
+#include <sys/_types/_o_dsync.h>
+
+
+#if __DARWIN_C_LEVEL >= 200809L
+#define O_CLOEXEC 0x01000000 /* implicitly set FD_CLOEXEC */
+#endif
+
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define O_NOFOLLOW_ANY 0x20000000 /* no symlinks allowed in path */
+#endif
+
+
+#if __DARWIN_C_LEVEL >= 200809L
+/*
+ * Descriptor value for the current working directory
+ */
+#define AT_FDCWD -2
+
+/*
+ * Flags for the at functions
+ */
+#define AT_EACCESS 0x0010 /* Use effective ids in access check */
+#define AT_SYMLINK_NOFOLLOW 0x0020 /* Act on the symlink itself not the target */
+#define AT_SYMLINK_FOLLOW 0x0040 /* Act on target of symlink */
+#define AT_REMOVEDIR 0x0080 /* Path refers to directory */
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define AT_REALDEV 0x0200 /* Return real device inodes resides on for fstatat(2) */
+#define AT_FDONLY 0x0400 /* Use only the fd and Ignore the path for fstatat(2) */
+#endif
+#endif
+
+/* Data Protection Flags */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define O_DP_GETRAWENCRYPTED 0x0001
+#define O_DP_GETRAWUNENCRYPTED 0x0002
+#endif
+
+
+
+/*
+ * The O_* flags used to have only F* names, which were used in the kernel
+ * and by fcntl. We retain the F* names for the kernel f_flags field
+ * and for backward compatibility for fcntl.
+ */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define FAPPEND O_APPEND /* kernel/compat */
+#define FASYNC O_ASYNC /* kernel/compat */
+#define FFSYNC O_FSYNC /* kernel */
+#define FFDSYNC O_DSYNC /* kernel */
+#define FNONBLOCK O_NONBLOCK /* kernel */
+#define FNDELAY O_NONBLOCK /* compat */
+#define O_NDELAY O_NONBLOCK /* compat */
+#endif
+
+/*
+ * Flags used for copyfile(2)
+ */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define CPF_OVERWRITE 0x0001
+#define CPF_IGNORE_MODE 0x0002
+#define CPF_MASK (CPF_OVERWRITE|CPF_IGNORE_MODE)
+#endif
+
+/*
+ * Constants used for fcntl(2)
+ */
+
+/* command values */
+#define F_DUPFD 0 /* duplicate file descriptor */
+#define F_GETFD 1 /* get file descriptor flags */
+#define F_SETFD 2 /* set file descriptor flags */
+#define F_GETFL 3 /* get file status flags */
+#define F_SETFL 4 /* set file status flags */
+#define F_GETOWN 5 /* get SIGIO/SIGURG proc/pgrp */
+#define F_SETOWN 6 /* set SIGIO/SIGURG proc/pgrp */
+#define F_GETLK 7 /* get record locking information */
+#define F_SETLK 8 /* set record locking information */
+#define F_SETLKW 9 /* F_SETLK; wait if blocked */
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define F_SETLKWTIMEOUT 10 /* F_SETLK; wait if blocked, return on timeout */
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define F_FLUSH_DATA 40
+#define F_CHKCLEAN 41 /* Used for regression test */
+#define F_PREALLOCATE 42 /* Preallocate storage */
+#define F_SETSIZE 43 /* Truncate a file. Equivalent to calling truncate(2) */
+#define F_RDADVISE 44 /* Issue an advisory read async with no copy to user */
+#define F_RDAHEAD 45 /* turn read ahead off/on for this fd */
+/*
+ * 46,47 used to be F_READBOOTSTRAP and F_WRITEBOOTSTRAP
+ */
+#define F_NOCACHE 48 /* turn data caching off/on for this fd */
+#define F_LOG2PHYS 49 /* file offset to device offset */
+#define F_GETPATH 50 /* return the full path of the fd */
+#define F_FULLFSYNC 51 /* fsync + ask the drive to flush to the media */
+#define F_PATHPKG_CHECK 52 /* find which component (if any) is a package */
+#define F_FREEZE_FS 53 /* "freeze" all fs operations */
+#define F_THAW_FS 54 /* "thaw" all fs operations */
+#define F_GLOBAL_NOCACHE 55 /* turn data caching off/on (globally) for this file */
+
+
+#define F_ADDSIGS 59 /* add detached signatures */
+
+
+#define F_ADDFILESIGS 61 /* add signature from same file (used by dyld for shared libs) */
+
+#define F_NODIRECT 62 /* used in conjunction with F_NOCACHE to indicate that DIRECT, synchonous writes */
+ /* should not be used (i.e. its ok to temporaily create cached pages) */
+
+#define F_GETPROTECTIONCLASS 63 /* Get the protection class of a file from the EA, returns int */
+#define F_SETPROTECTIONCLASS 64 /* Set the protection class of a file for the EA, requires int */
+
+#define F_LOG2PHYS_EXT 65 /* file offset to device offset, extended */
+
+#define F_GETLKPID 66 /* get record locking information, per-process */
+
+/* See F_DUPFD_CLOEXEC below for 67 */
+
+
+#define F_SETBACKINGSTORE 70 /* Mark the file as being the backing store for another filesystem */
+#define F_GETPATH_MTMINFO 71 /* return the full path of the FD, but error in specific mtmd circumstances */
+
+#define F_GETCODEDIR 72 /* Returns the code directory, with associated hashes, to the caller */
+
+#define F_SETNOSIGPIPE 73 /* No SIGPIPE generated on EPIPE */
+#define F_GETNOSIGPIPE 74 /* Status of SIGPIPE for this fd */
+
+#define F_TRANSCODEKEY 75 /* For some cases, we need to rewrap the key for AKS/MKB */
+
+#define F_SINGLE_WRITER 76 /* file being written to a by single writer... if throttling enabled, writes */
+ /* may be broken into smaller chunks with throttling in between */
+
+#define F_GETPROTECTIONLEVEL 77 /* Get the protection version number for this filesystem */
+
+#define F_FINDSIGS 78 /* Add detached code signatures (used by dyld for shared libs) */
+
+
+#define F_ADDFILESIGS_FOR_DYLD_SIM 83 /* Add signature from same file, only if it is signed by Apple (used by dyld for simulator) */
+
+
+#define F_BARRIERFSYNC 85 /* fsync + issue barrier to drive */
+
+
+#define F_ADDFILESIGS_RETURN 97 /* Add signature from same file, return end offset in structure on success */
+#define F_CHECK_LV 98 /* Check if Library Validation allows this Mach-O file to be mapped into the calling process */
+
+#define F_PUNCHHOLE 99 /* Deallocate a range of the file */
+
+#define F_TRIM_ACTIVE_FILE 100 /* Trim an active file */
+
+#define F_SPECULATIVE_READ 101 /* Synchronous advisory read fcntl for regular and compressed file */
+
+#define F_GETPATH_NOFIRMLINK 102 /* return the full path without firmlinks of the fd */
+
+#define F_ADDFILESIGS_INFO 103 /* Add signature from same file, return information */
+#define F_ADDFILESUPPL 104 /* Add supplemental signature from same file with fd reference to original */
+#define F_GETSIGSINFO 105 /* Look up code signature information attached to a file or slice */
+
+// FS-specific fcntl()'s numbers begin at 0x00010000 and go up
+#define FCNTL_FS_SPECIFIC_BASE 0x00010000
+
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+#if __DARWIN_C_LEVEL >= 200809L
+#define F_DUPFD_CLOEXEC 67 /* mark the dup with FD_CLOEXEC */
+#endif
+
+/* file descriptor flags (F_GETFD, F_SETFD) */
+#define FD_CLOEXEC 1 /* close-on-exec flag */
+
+/* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */
+#define F_RDLCK 1 /* shared or read lock */
+#define F_UNLCK 2 /* unlock */
+#define F_WRLCK 3 /* exclusive or write lock */
+
+
+/*
+ * [XSI] The values used for l_whence shall be defined as described
+ * in <unistd.h>
+ */
+#include <sys/_types/_seek_set.h>
+
+/*
+ * [XSI] The symbolic names for file modes for use as values of mode_t
+ * shall be defined as described in <sys/stat.h>
+ */
+#include <sys/_types/_s_ifmt.h>
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/* allocate flags (F_PREALLOCATE) */
+
+#define F_ALLOCATECONTIG 0x00000002 /* allocate contigious space */
+#define F_ALLOCATEALL 0x00000004 /* allocate all requested space or no space at all */
+
+/* Position Modes (fst_posmode) for F_PREALLOCATE */
+
+#define F_PEOFPOSMODE 3 /* Make it past all of the SEEK pos modes so that */
+ /* we can keep them in sync should we desire */
+#define F_VOLPOSMODE 4 /* specify volume starting postion */
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+/*
+ * Advisory file segment locking data type -
+ * information passed to system by user
+ */
+struct flock {
+ off_t l_start; /* starting offset */
+ off_t l_len; /* len = 0 means until end of file */
+ pid_t l_pid; /* lock owner */
+ short l_type; /* lock type: read/write, etc. */
+ short l_whence; /* type of l_start */
+};
+
+#include <sys/_types/_timespec.h>
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/*
+ * Advisory file segment locking with time out -
+ * Information passed to system by user for F_SETLKWTIMEOUT
+ */
+struct flocktimeout {
+ struct flock fl; /* flock passed for file locking */
+ struct timespec timeout; /* timespec struct for timeout */
+};
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * advisory file read data type -
+ * information passed by user to system
+ */
+
+
+struct radvisory {
+ off_t ra_offset;
+ int ra_count;
+};
+
+
+/*
+ * detached code signatures data type -
+ * information passed by user to system used by F_ADDSIGS and F_ADDFILESIGS.
+ * F_ADDFILESIGS is a shortcut for files that contain their own signature and
+ * doesn't require mapping of the file in order to load the signature.
+ */
+#define USER_FSIGNATURES_CDHASH_LEN 20
+typedef struct fsignatures {
+ off_t fs_file_start;
+ void *fs_blob_start;
+ size_t fs_blob_size;
+
+ /* The following fields are only applicable to F_ADDFILESIGS_INFO (64bit only). */
+ /* Prior to F_ADDFILESIGS_INFO, this struct ended after fs_blob_size. */
+ size_t fs_fsignatures_size;// input: size of this struct (for compatibility)
+ char fs_cdhash[USER_FSIGNATURES_CDHASH_LEN]; // output: cdhash
+ int fs_hash_type;// output: hash algorithm type for cdhash
+} fsignatures_t;
+
+typedef struct fsupplement {
+ off_t fs_file_start; /* offset of Mach-O image in FAT file */
+ off_t fs_blob_start; /* offset of signature in Mach-O image */
+ size_t fs_blob_size; /* signature blob size */
+ int fs_orig_fd; /* address of original image */
+} fsupplement_t;
+
+
+
+/*
+ * DYLD needs to check if the object is allowed to be combined
+ * into the main binary. This is done between the code signature
+ * is loaded and dyld is doing all the work to process the LOAD commands.
+ *
+ * While this could be done in F_ADDFILESIGS.* family the hook into
+ * the MAC module doesn't say no when LV isn't enabled and then that
+ * is cached on the vnode, and the MAC module never gets change once
+ * a process that library validation enabled.
+ */
+typedef struct fchecklv {
+ off_t lv_file_start;
+ size_t lv_error_message_size;
+ void *lv_error_message;
+} fchecklv_t;
+
+
+/* At this time F_GETSIGSINFO can only indicate platformness.
+ * As additional requestable information is defined, new keys will be added and the
+ * fgetsigsinfo_t structure will be lengthened to add space for the additional information
+ */
+#define GETSIGSINFO_PLATFORM_BINARY 1
+
+/* fgetsigsinfo_t used by F_GETSIGSINFO command */
+typedef struct fgetsigsinfo {
+ off_t fg_file_start; /* IN: Offset in the file to look for a signature, -1 for any signature */
+ int fg_info_request; /* IN: Key indicating the info requested */
+ int fg_sig_is_platform; /* OUT: 1 if the signature is a plat form binary, 0 if not */
+} fgetsigsinfo_t;
+
+
+/* lock operations for flock(2) */
+#define LOCK_SH 0x01 /* shared file lock */
+#define LOCK_EX 0x02 /* exclusive file lock */
+#define LOCK_NB 0x04 /* don't block when locking */
+#define LOCK_UN 0x08 /* unlock file */
+
+/* fstore_t type used by F_PREALLOCATE command */
+
+typedef struct fstore {
+ unsigned int fst_flags; /* IN: flags word */
+ int fst_posmode; /* IN: indicates use of offset field */
+ off_t fst_offset; /* IN: start of the region */
+ off_t fst_length; /* IN: size of the region */
+ off_t fst_bytesalloc; /* OUT: number of bytes allocated */
+} fstore_t;
+
+/* fpunchhole_t used by F_PUNCHHOLE */
+typedef struct fpunchhole {
+ unsigned int fp_flags; /* unused */
+ unsigned int reserved; /* (to maintain 8-byte alignment) */
+ off_t fp_offset; /* IN: start of the region */
+ off_t fp_length; /* IN: size of the region */
+} fpunchhole_t;
+
+/* factive_file_trim_t used by F_TRIM_ACTIVE_FILE */
+typedef struct ftrimactivefile {
+ off_t fta_offset; /* IN: start of the region */
+ off_t fta_length; /* IN: size of the region */
+} ftrimactivefile_t;
+
+/* fspecread_t used by F_SPECULATIVE_READ */
+typedef struct fspecread {
+ unsigned int fsr_flags; /* IN: flags word */
+ unsigned int reserved; /* to maintain 8-byte alignment */
+ off_t fsr_offset; /* IN: start of the region */
+ off_t fsr_length; /* IN: size of the region */
+} fspecread_t;
+
+/* fbootstraptransfer_t used by F_READBOOTSTRAP and F_WRITEBOOTSTRAP commands */
+
+typedef struct fbootstraptransfer {
+ off_t fbt_offset; /* IN: offset to start read/write */
+ size_t fbt_length; /* IN: number of bytes to transfer */
+ void *fbt_buffer; /* IN: buffer to be read/written */
+} fbootstraptransfer_t;
+
+
+/*
+ * For F_LOG2PHYS this information is passed back to user
+ * Currently only devoffset is returned - that is the VOP_BMAP
+ * result - the disk device address corresponding to the
+ * current file offset (likely set with an lseek).
+ *
+ * The flags could hold an indication of whether the # of
+ * contiguous bytes reflects the true extent length on disk,
+ * or is an advisory value that indicates there is at least that
+ * many bytes contiguous. For some filesystems it might be too
+ * inefficient to provide anything beyond the advisory value.
+ * Flags and contiguous bytes return values are not yet implemented.
+ * For them the fcntl will nedd to switch from using BMAP to CMAP
+ * and a per filesystem type flag will be needed to interpret the
+ * contiguous bytes count result from CMAP.
+ *
+ * F_LOG2PHYS_EXT is a variant of F_LOG2PHYS that uses a passed in
+ * file offset and length instead of the current file offset.
+ * F_LOG2PHYS_EXT operates on the same structure as F_LOG2PHYS, but
+ * treats it as an in/out.
+ */
+#pragma pack(4)
+
+struct log2phys {
+ unsigned int l2p_flags; /* unused so far */
+ off_t l2p_contigbytes; /* F_LOG2PHYS: unused so far */
+ /* F_LOG2PHYS_EXT: IN: number of bytes to be queried */
+ /* OUT: number of contiguous bytes at this position */
+ off_t l2p_devoffset; /* F_LOG2PHYS: OUT: bytes into device */
+ /* F_LOG2PHYS_EXT: IN: bytes into file */
+ /* OUT: bytes into device */
+};
+
+#pragma pack()
+
+#define O_POPUP 0x80000000 /* force window to popup on open */
+#define O_ALERT 0x20000000 /* small, clean popup window */
+
+
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+
+#include <sys/_types/_filesec_t.h>
+
+typedef enum {
+ FILESEC_OWNER = 1,
+ FILESEC_GROUP = 2,
+ FILESEC_UUID = 3,
+ FILESEC_MODE = 4,
+ FILESEC_ACL = 5,
+ FILESEC_GRPUUID = 6,
+
+/* XXX these are private to the implementation */
+ FILESEC_ACL_RAW = 100,
+ FILESEC_ACL_ALLOCSIZE = 101
+} filesec_property_t;
+
+/* XXX backwards compatibility */
+#define FILESEC_GUID FILESEC_UUID
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+__BEGIN_DECLS
+int open(const char *, int, ...) __DARWIN_ALIAS_C(open);
+#if __DARWIN_C_LEVEL >= 200809L
+int openat(int, const char *, int, ...) __DARWIN_NOCANCEL(openat) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+#endif
+int creat(const char *, mode_t) __DARWIN_ALIAS_C(creat);
+int fcntl(int, int, ...) __DARWIN_ALIAS_C(fcntl);
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+
+int openx_np(const char *, int, filesec_t);
+/*
+ * data-protected non-portable open(2) :
+ * int open_dprotected_np(user_addr_t path, int flags, int class, int dpflags, int mode)
+ */
+int open_dprotected_np( const char *, int, int, int, ...);
+int flock(int, int);
+filesec_t filesec_init(void);
+filesec_t filesec_dup(filesec_t);
+void filesec_free(filesec_t);
+int filesec_get_property(filesec_t, filesec_property_t, void *);
+int filesec_query_property(filesec_t, filesec_property_t, int *);
+int filesec_set_property(filesec_t, filesec_property_t, const void *);
+int filesec_unset_property(filesec_t, filesec_property_t) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_2);
+#define _FILESEC_UNSET_PROPERTY ((void *)0)
+#define _FILESEC_REMOVE_ACL ((void *)1)
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+__END_DECLS
+
+#endif /* !_SYS_FCNTL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/ioccom.h b/lib/libc/include/aarch64-macos-gnu/sys/ioccom.h
new file mode 100644
index 0000000000..d4be2e433e
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/ioccom.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*-
+ * Copyright (c) 1982, 1986, 1990, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)ioccom.h 8.2 (Berkeley) 3/28/94
+ */
+
+#ifndef _SYS_IOCCOM_H_
+#define _SYS_IOCCOM_H_
+
+#include <sys/_types.h>
+
+/*
+ * Ioctl's have the command encoded in the lower word, and the size of
+ * any in or out parameters in the upper word. The high 3 bits of the
+ * upper word are used to encode the in/out status of the parameter.
+ */
+#define IOCPARM_MASK 0x1fff /* parameter length, at most 13 bits */
+#define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK)
+#define IOCBASECMD(x) ((x) & ~(IOCPARM_MASK << 16))
+#define IOCGROUP(x) (((x) >> 8) & 0xff)
+
+#define IOCPARM_MAX (IOCPARM_MASK + 1) /* max size of ioctl args */
+/* no parameters */
+#define IOC_VOID (__uint32_t)0x20000000
+/* copy parameters out */
+#define IOC_OUT (__uint32_t)0x40000000
+/* copy parameters in */
+#define IOC_IN (__uint32_t)0x80000000
+/* copy parameters in and out */
+#define IOC_INOUT (IOC_IN|IOC_OUT)
+/* mask for IN/OUT/VOID */
+#define IOC_DIRMASK (__uint32_t)0xe0000000
+
+#define _IOC(inout, group, num, len) \
+ (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
+#define _IO(g, n) _IOC(IOC_VOID, (g), (n), 0)
+#define _IOR(g, n, t) _IOC(IOC_OUT, (g), (n), sizeof(t))
+#define _IOW(g, n, t) _IOC(IOC_IN, (g), (n), sizeof(t))
+/* this should be _IORW, but stdio got there first */
+#define _IOWR(g, n, t) _IOC(IOC_INOUT, (g), (n), sizeof(t))
+
+#endif /* !_SYS_IOCCOM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/kauth.h b/lib/libc/include/aarch64-macos-gnu/sys/kauth.h
new file mode 100644
index 0000000000..8742c60439
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/kauth.h
@@ -0,0 +1,410 @@
+/*
+ * Copyright (c) 2004-2010 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * NOTICE: This file was modified by SPARTA, Inc. in 2005 to introduce
+ * support for mandatory and extensible security protections. This notice
+ * is included in support of clause 2.2 (b) of the Apple Public License,
+ * Version 2.0.
+ */
+
+#ifndef _SYS_KAUTH_H
+#define _SYS_KAUTH_H
+
+#include <sys/appleapiopts.h>
+#include <sys/cdefs.h>
+#include <mach/boolean.h>
+#include <machine/types.h> /* u_int8_t, etc. */
+#include <sys/_types.h> /* __offsetof() */
+#include <sys/_types/_uid_t.h> /* uid_t */
+#include <sys/_types/_gid_t.h> /* gid_t */
+#include <sys/syslimits.h> /* NGROUPS_MAX */
+
+#ifdef __APPLE_API_EVOLVING
+
+/*
+ * Identities.
+ */
+
+#define KAUTH_UID_NONE (~(uid_t)0 - 100) /* not a valid UID */
+#define KAUTH_GID_NONE (~(gid_t)0 - 100) /* not a valid GID */
+
+#include <sys/_types/_guid_t.h>
+
+/* NT Security Identifier, structure as defined by Microsoft */
+#pragma pack(1) /* push packing of 1 byte */
+typedef struct {
+ u_int8_t sid_kind;
+ u_int8_t sid_authcount;
+ u_int8_t sid_authority[6];
+#define KAUTH_NTSID_MAX_AUTHORITIES 16
+ u_int32_t sid_authorities[KAUTH_NTSID_MAX_AUTHORITIES];
+} ntsid_t;
+#pragma pack() /* pop packing to previous packing level */
+#define _NTSID_T
+
+/* valid byte count inside a SID structure */
+#define KAUTH_NTSID_HDRSIZE (8)
+#define KAUTH_NTSID_SIZE(_s) (KAUTH_NTSID_HDRSIZE + ((_s)->sid_authcount * sizeof(u_int32_t)))
+
+/*
+ * External lookup message payload; this structure is shared between the
+ * kernel group membership resolver, and the user space group membership
+ * resolver daemon, and is use to communicate resolution requests from the
+ * kernel to user space, and the result of that request from user space to
+ * the kernel.
+ */
+struct kauth_identity_extlookup {
+ u_int32_t el_seqno; /* request sequence number */
+ u_int32_t el_result; /* lookup result */
+#define KAUTH_EXTLOOKUP_SUCCESS 0 /* results here are good */
+#define KAUTH_EXTLOOKUP_BADRQ 1 /* request badly formatted */
+#define KAUTH_EXTLOOKUP_FAILURE 2 /* transient failure during lookup */
+#define KAUTH_EXTLOOKUP_FATAL 3 /* permanent failure during lookup */
+#define KAUTH_EXTLOOKUP_INPROG 100 /* request in progress */
+ u_int32_t el_flags;
+#define KAUTH_EXTLOOKUP_VALID_UID (1<<0)
+#define KAUTH_EXTLOOKUP_VALID_UGUID (1<<1)
+#define KAUTH_EXTLOOKUP_VALID_USID (1<<2)
+#define KAUTH_EXTLOOKUP_VALID_GID (1<<3)
+#define KAUTH_EXTLOOKUP_VALID_GGUID (1<<4)
+#define KAUTH_EXTLOOKUP_VALID_GSID (1<<5)
+#define KAUTH_EXTLOOKUP_WANT_UID (1<<6)
+#define KAUTH_EXTLOOKUP_WANT_UGUID (1<<7)
+#define KAUTH_EXTLOOKUP_WANT_USID (1<<8)
+#define KAUTH_EXTLOOKUP_WANT_GID (1<<9)
+#define KAUTH_EXTLOOKUP_WANT_GGUID (1<<10)
+#define KAUTH_EXTLOOKUP_WANT_GSID (1<<11)
+#define KAUTH_EXTLOOKUP_WANT_MEMBERSHIP (1<<12)
+#define KAUTH_EXTLOOKUP_VALID_MEMBERSHIP (1<<13)
+#define KAUTH_EXTLOOKUP_ISMEMBER (1<<14)
+#define KAUTH_EXTLOOKUP_VALID_PWNAM (1<<15)
+#define KAUTH_EXTLOOKUP_WANT_PWNAM (1<<16)
+#define KAUTH_EXTLOOKUP_VALID_GRNAM (1<<17)
+#define KAUTH_EXTLOOKUP_WANT_GRNAM (1<<18)
+#define KAUTH_EXTLOOKUP_VALID_SUPGRPS (1<<19)
+#define KAUTH_EXTLOOKUP_WANT_SUPGRPS (1<<20)
+
+ __darwin_pid_t el_info_pid; /* request on behalf of PID */
+ u_int64_t el_extend; /* extension field */
+ u_int32_t el_info_reserved_1; /* reserved (APPLE) */
+
+ uid_t el_uid; /* user ID */
+ guid_t el_uguid; /* user GUID */
+ u_int32_t el_uguid_valid; /* TTL on translation result (seconds) */
+ ntsid_t el_usid; /* user NT SID */
+ u_int32_t el_usid_valid; /* TTL on translation result (seconds) */
+ gid_t el_gid; /* group ID */
+ guid_t el_gguid; /* group GUID */
+ u_int32_t el_gguid_valid; /* TTL on translation result (seconds) */
+ ntsid_t el_gsid; /* group SID */
+ u_int32_t el_gsid_valid; /* TTL on translation result (seconds) */
+ u_int32_t el_member_valid; /* TTL on group lookup result */
+ u_int32_t el_sup_grp_cnt; /* count of supplemental groups up to NGROUPS */
+ gid_t el_sup_groups[NGROUPS_MAX]; /* supplemental group list */
+};
+
+struct kauth_cache_sizes {
+ u_int32_t kcs_group_size;
+ u_int32_t kcs_id_size;
+};
+
+#define KAUTH_EXTLOOKUP_REGISTER (0)
+#define KAUTH_EXTLOOKUP_RESULT (1<<0)
+#define KAUTH_EXTLOOKUP_WORKER (1<<1)
+#define KAUTH_EXTLOOKUP_DEREGISTER (1<<2)
+#define KAUTH_GET_CACHE_SIZES (1<<3)
+#define KAUTH_SET_CACHE_SIZES (1<<4)
+#define KAUTH_CLEAR_CACHES (1<<5)
+
+#define IDENTITYSVC_ENTITLEMENT "com.apple.private.identitysvc"
+
+
+
+/*
+ * Generic Access Control Lists.
+ */
+#if defined(KERNEL) || defined (_SYS_ACL_H)
+
+typedef u_int32_t kauth_ace_rights_t;
+
+/* Access Control List Entry (ACE) */
+struct kauth_ace {
+ guid_t ace_applicable;
+ u_int32_t ace_flags;
+#define KAUTH_ACE_KINDMASK 0xf
+#define KAUTH_ACE_PERMIT 1
+#define KAUTH_ACE_DENY 2
+#define KAUTH_ACE_AUDIT 3 /* not implemented */
+#define KAUTH_ACE_ALARM 4 /* not implemented */
+#define KAUTH_ACE_INHERITED (1<<4)
+#define KAUTH_ACE_FILE_INHERIT (1<<5)
+#define KAUTH_ACE_DIRECTORY_INHERIT (1<<6)
+#define KAUTH_ACE_LIMIT_INHERIT (1<<7)
+#define KAUTH_ACE_ONLY_INHERIT (1<<8)
+#define KAUTH_ACE_SUCCESS (1<<9) /* not implemented (AUDIT/ALARM) */
+#define KAUTH_ACE_FAILURE (1<<10) /* not implemented (AUDIT/ALARM) */
+/* All flag bits controlling ACE inheritance */
+#define KAUTH_ACE_INHERIT_CONTROL_FLAGS \
+ (KAUTH_ACE_FILE_INHERIT | \
+ KAUTH_ACE_DIRECTORY_INHERIT | \
+ KAUTH_ACE_LIMIT_INHERIT | \
+ KAUTH_ACE_ONLY_INHERIT)
+ kauth_ace_rights_t ace_rights; /* scope specific */
+ /* These rights are never tested, but may be present in an ACL */
+#define KAUTH_ACE_GENERIC_ALL (1<<21)
+#define KAUTH_ACE_GENERIC_EXECUTE (1<<22)
+#define KAUTH_ACE_GENERIC_WRITE (1<<23)
+#define KAUTH_ACE_GENERIC_READ (1<<24)
+};
+
+#ifndef _KAUTH_ACE
+#define _KAUTH_ACE
+typedef struct kauth_ace *kauth_ace_t;
+#endif
+
+
+/* Access Control List */
+struct kauth_acl {
+ u_int32_t acl_entrycount;
+ u_int32_t acl_flags;
+
+ struct kauth_ace acl_ace[1];
+};
+
+/*
+ * XXX this value needs to be raised - 3893388
+ */
+#define KAUTH_ACL_MAX_ENTRIES 128
+
+/*
+ * The low 16 bits of the flags field are reserved for filesystem
+ * internal use and must be preserved by all APIs. This includes
+ * round-tripping flags through user-space interfaces.
+ */
+#define KAUTH_ACL_FLAGS_PRIVATE (0xffff)
+
+/*
+ * The high 16 bits of the flags are used to store attributes and
+ * to request specific handling of the ACL.
+ */
+
+/* inheritance will be deferred until the first rename operation */
+#define KAUTH_ACL_DEFER_INHERIT (1<<16)
+/* this ACL must not be overwritten as part of an inheritance operation */
+#define KAUTH_ACL_NO_INHERIT (1<<17)
+
+/* acl_entrycount that tells us the ACL is not valid */
+#define KAUTH_FILESEC_NOACL ((u_int32_t)(-1))
+
+/*
+ * If the acl_entrycount field is KAUTH_FILESEC_NOACL, then the size is the
+ * same as a kauth_acl structure; the intent is to put an actual entrycount of
+ * KAUTH_FILESEC_NOACL on disk to distinguish a kauth_filesec_t with an empty
+ * entry (Windows treats this as "deny all") from one that merely indicates a
+ * file group and/or owner guid values.
+ */
+#define KAUTH_ACL_SIZE(c) (__offsetof(struct kauth_acl, acl_ace) + ((u_int32_t)(c) != KAUTH_FILESEC_NOACL ? ((c) * sizeof(struct kauth_ace)) : 0))
+#define KAUTH_ACL_COPYSIZE(p) KAUTH_ACL_SIZE((p)->acl_entrycount)
+
+
+#ifndef _KAUTH_ACL
+#define _KAUTH_ACL
+typedef struct kauth_acl *kauth_acl_t;
+#endif
+
+
+
+/*
+ * Extended File Security.
+ */
+
+/* File Security information */
+struct kauth_filesec {
+ u_int32_t fsec_magic;
+#define KAUTH_FILESEC_MAGIC 0x012cc16d
+ guid_t fsec_owner;
+ guid_t fsec_group;
+
+ struct kauth_acl fsec_acl;
+};
+
+/* backwards compatibility */
+#define fsec_entrycount fsec_acl.acl_entrycount
+#define fsec_flags fsec_acl.acl_flags
+#define fsec_ace fsec_acl.acl_ace
+#define KAUTH_FILESEC_FLAGS_PRIVATE KAUTH_ACL_FLAGS_PRIVATE
+#define KAUTH_FILESEC_DEFER_INHERIT KAUTH_ACL_DEFER_INHERIT
+#define KAUTH_FILESEC_NO_INHERIT KAUTH_ACL_NO_INHERIT
+#define KAUTH_FILESEC_NONE ((kauth_filesec_t)0)
+#define KAUTH_FILESEC_WANTED ((kauth_filesec_t)1)
+
+#ifndef _KAUTH_FILESEC
+#define _KAUTH_FILESEC
+typedef struct kauth_filesec *kauth_filesec_t;
+#endif
+
+#define KAUTH_FILESEC_SIZE(c) (__offsetof(struct kauth_filesec, fsec_acl) + __offsetof(struct kauth_acl, acl_ace) + (c) * sizeof(struct kauth_ace))
+#define KAUTH_FILESEC_COPYSIZE(p) KAUTH_FILESEC_SIZE(((p)->fsec_entrycount == KAUTH_FILESEC_NOACL) ? 0 : (p)->fsec_entrycount)
+#define KAUTH_FILESEC_COUNT(s) (((s) - KAUTH_FILESEC_SIZE(0)) / sizeof(struct kauth_ace))
+#define KAUTH_FILESEC_VALID(s) ((s) >= KAUTH_FILESEC_SIZE(0) && (((s) - KAUTH_FILESEC_SIZE(0)) % sizeof(struct kauth_ace)) == 0)
+
+#define KAUTH_FILESEC_XATTR "com.apple.system.Security"
+
+/* Allowable first arguments to kauth_filesec_acl_setendian() */
+#define KAUTH_ENDIAN_HOST 0x00000001 /* set host endianness */
+#define KAUTH_ENDIAN_DISK 0x00000002 /* set disk endianness */
+
+#endif /* KERNEL || <sys/acl.h> */
+
+
+
+/* Actions, also rights bits in an ACE */
+
+#if defined(KERNEL) || defined (_SYS_ACL_H)
+#define KAUTH_VNODE_READ_DATA (1U<<1)
+#define KAUTH_VNODE_LIST_DIRECTORY KAUTH_VNODE_READ_DATA
+#define KAUTH_VNODE_WRITE_DATA (1U<<2)
+#define KAUTH_VNODE_ADD_FILE KAUTH_VNODE_WRITE_DATA
+#define KAUTH_VNODE_EXECUTE (1U<<3)
+#define KAUTH_VNODE_SEARCH KAUTH_VNODE_EXECUTE
+#define KAUTH_VNODE_DELETE (1U<<4)
+#define KAUTH_VNODE_APPEND_DATA (1U<<5)
+#define KAUTH_VNODE_ADD_SUBDIRECTORY KAUTH_VNODE_APPEND_DATA
+#define KAUTH_VNODE_DELETE_CHILD (1U<<6)
+#define KAUTH_VNODE_READ_ATTRIBUTES (1U<<7)
+#define KAUTH_VNODE_WRITE_ATTRIBUTES (1U<<8)
+#define KAUTH_VNODE_READ_EXTATTRIBUTES (1U<<9)
+#define KAUTH_VNODE_WRITE_EXTATTRIBUTES (1U<<10)
+#define KAUTH_VNODE_READ_SECURITY (1U<<11)
+#define KAUTH_VNODE_WRITE_SECURITY (1U<<12)
+#define KAUTH_VNODE_TAKE_OWNERSHIP (1U<<13)
+
+/* backwards compatibility only */
+#define KAUTH_VNODE_CHANGE_OWNER KAUTH_VNODE_TAKE_OWNERSHIP
+
+/* For Windows interoperability only */
+#define KAUTH_VNODE_SYNCHRONIZE (1U<<20)
+
+/* (1<<21) - (1<<24) are reserved for generic rights bits */
+
+/* Actions not expressed as rights bits */
+/*
+ * Authorizes the vnode as the target of a hard link.
+ */
+#define KAUTH_VNODE_LINKTARGET (1U<<25)
+
+/*
+ * Indicates that other steps have been taken to authorise the action,
+ * but authorisation should be denied for immutable objects.
+ */
+#define KAUTH_VNODE_CHECKIMMUTABLE (1U<<26)
+
+/* Action modifiers */
+/*
+ * The KAUTH_VNODE_ACCESS bit is passed to the callback if the authorisation
+ * request in progress is advisory, rather than authoritative. Listeners
+ * performing consequential work (i.e. not strictly checking authorisation)
+ * may test this flag to avoid performing unnecessary work.
+ *
+ * This bit will never be present in an ACE.
+ */
+#define KAUTH_VNODE_ACCESS (1U<<31)
+
+/*
+ * The KAUTH_VNODE_NOIMMUTABLE bit is passed to the callback along with the
+ * KAUTH_VNODE_WRITE_SECURITY bit (and no others) to indicate that the
+ * caller wishes to change one or more of the immutable flags, and the
+ * state of these flags should not be considered when authorizing the request.
+ * The system immutable flags are only ignored when the system securelevel
+ * is low enough to allow their removal.
+ */
+#define KAUTH_VNODE_NOIMMUTABLE (1U<<30)
+
+
+/*
+ * fake right that is composed by the following...
+ * vnode must have search for owner, group and world allowed
+ * plus there must be no deny modes present for SEARCH... this fake
+ * right is used by the fast lookup path to avoid checking
+ * for an exact match on the last credential to lookup
+ * the component being acted on
+ */
+#define KAUTH_VNODE_SEARCHBYANYONE (1U<<29)
+
+
+/*
+ * when passed as an 'action' to "vnode_uncache_authorized_actions"
+ * it indicates that all of the cached authorizations for that
+ * vnode should be invalidated
+ */
+#define KAUTH_INVALIDATE_CACHED_RIGHTS ((kauth_action_t)~0)
+
+
+
+/* The expansions of the GENERIC bits at evaluation time */
+#define KAUTH_VNODE_GENERIC_READ_BITS (KAUTH_VNODE_READ_DATA | \
+ KAUTH_VNODE_READ_ATTRIBUTES | \
+ KAUTH_VNODE_READ_EXTATTRIBUTES | \
+ KAUTH_VNODE_READ_SECURITY)
+
+#define KAUTH_VNODE_GENERIC_WRITE_BITS (KAUTH_VNODE_WRITE_DATA | \
+ KAUTH_VNODE_APPEND_DATA | \
+ KAUTH_VNODE_DELETE | \
+ KAUTH_VNODE_DELETE_CHILD | \
+ KAUTH_VNODE_WRITE_ATTRIBUTES | \
+ KAUTH_VNODE_WRITE_EXTATTRIBUTES | \
+ KAUTH_VNODE_WRITE_SECURITY)
+
+#define KAUTH_VNODE_GENERIC_EXECUTE_BITS (KAUTH_VNODE_EXECUTE)
+
+#define KAUTH_VNODE_GENERIC_ALL_BITS (KAUTH_VNODE_GENERIC_READ_BITS | \
+ KAUTH_VNODE_GENERIC_WRITE_BITS | \
+ KAUTH_VNODE_GENERIC_EXECUTE_BITS)
+
+/*
+ * Some sets of bits, defined here for convenience.
+ */
+#define KAUTH_VNODE_WRITE_RIGHTS (KAUTH_VNODE_ADD_FILE | \
+ KAUTH_VNODE_ADD_SUBDIRECTORY | \
+ KAUTH_VNODE_DELETE_CHILD | \
+ KAUTH_VNODE_WRITE_DATA | \
+ KAUTH_VNODE_APPEND_DATA | \
+ KAUTH_VNODE_DELETE | \
+ KAUTH_VNODE_WRITE_ATTRIBUTES | \
+ KAUTH_VNODE_WRITE_EXTATTRIBUTES | \
+ KAUTH_VNODE_WRITE_SECURITY | \
+ KAUTH_VNODE_TAKE_OWNERSHIP | \
+ KAUTH_VNODE_LINKTARGET | \
+ KAUTH_VNODE_CHECKIMMUTABLE)
+
+
+#endif /* KERNEL || <sys/acl.h> */
+
+
+#endif /* __APPLE_API_EVOLVING */
+#endif /* _SYS_KAUTH_H */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/mman.h b/lib/libc/include/aarch64-macos-gnu/sys/mman.h
new file mode 100644
index 0000000000..b254715ad3
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/mman.h
@@ -0,0 +1,263 @@
+/*
+ * Copyright (c) 2000-2020 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*-
+ * Copyright (c) 1982, 1986, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)mman.h 8.1 (Berkeley) 6/2/93
+ */
+
+/*
+ * Currently unsupported:
+ *
+ * [TYM] POSIX_TYPED_MEM_ALLOCATE
+ * [TYM] POSIX_TYPED_MEM_ALLOCATE_CONTIG
+ * [TYM] POSIX_TYPED_MEM_MAP_ALLOCATABLE
+ * [TYM] struct posix_typed_mem_info
+ * [TYM] posix_mem_offset()
+ * [TYM] posix_typed_mem_get_info()
+ * [TYM] posix_typed_mem_open()
+ */
+
+#ifndef _SYS_MMAN_H_
+#define _SYS_MMAN_H_
+
+#include <sys/appleapiopts.h>
+#include <sys/cdefs.h>
+
+#include <sys/_types.h>
+
+/*
+ * [various] The mode_t, off_t, and size_t types shall be defined as
+ * described in <sys/types.h>
+ */
+#include <sys/_types/_mode_t.h>
+#include <sys/_types/_off_t.h>
+#include <sys/_types/_size_t.h>
+
+#if __DARWIN_C_LEVEL >= 200809L
+#include <Availability.h>
+#endif /* __DARWIN_C_LEVEL */
+
+/*
+ * Protections are chosen from these bits, or-ed together
+ */
+#define PROT_NONE 0x00 /* [MC2] no permissions */
+#define PROT_READ 0x01 /* [MC2] pages can be read */
+#define PROT_WRITE 0x02 /* [MC2] pages can be written */
+#define PROT_EXEC 0x04 /* [MC2] pages can be executed */
+
+/*
+ * Flags contain sharing type and options.
+ * Sharing types; choose one.
+ */
+#define MAP_SHARED 0x0001 /* [MF|SHM] share changes */
+#define MAP_PRIVATE 0x0002 /* [MF|SHM] changes are private */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define MAP_COPY MAP_PRIVATE /* Obsolete */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * Other flags
+ */
+#define MAP_FIXED 0x0010 /* [MF|SHM] interpret addr exactly */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define MAP_RENAME 0x0020 /* Sun: rename private pages to file */
+#define MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */
+#define MAP_RESERVED0080 0x0080 /* previously unimplemented MAP_INHERIT */
+#define MAP_NOEXTEND 0x0100 /* for MAP_FILE, don't change file size */
+#define MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */
+#define MAP_NOCACHE 0x0400 /* don't cache pages for this mapping */
+#define MAP_JIT 0x0800 /* Allocate a region that will be used for JIT purposes */
+
+/*
+ * Mapping type
+ */
+#define MAP_FILE 0x0000 /* map from file (default) */
+#define MAP_ANON 0x1000 /* allocated from memory, swap space */
+#define MAP_ANONYMOUS MAP_ANON
+
+/*
+ * The MAP_RESILIENT_* flags can be used when the caller wants to map some
+ * possibly unreliable memory and be able to access it safely, possibly
+ * getting the wrong contents rather than raising any exception.
+ * For safety reasons, such mappings have to be read-only (PROT_READ access
+ * only).
+ *
+ * MAP_RESILIENT_CODESIGN:
+ * accessing this mapping will not generate code-signing violations,
+ * even if the contents are tainted.
+ * MAP_RESILIENT_MEDIA:
+ * accessing this mapping will not generate an exception if the contents
+ * are not available (unreachable removable or remote media, access beyond
+ * end-of-file, ...). Missing contents will be replaced with zeroes.
+ */
+#define MAP_RESILIENT_CODESIGN 0x2000 /* no code-signing failures */
+#define MAP_RESILIENT_MEDIA 0x4000 /* no backing-store failures */
+
+#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500
+#define MAP_32BIT 0x8000 /* Return virtual addresses <4G only */
+#endif /* defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500 */
+
+
+/*
+ * Flags used to support translated processes.
+ */
+#define MAP_TRANSLATED_ALLOW_EXECUTE 0x20000 /* allow execute in translated processes */
+
+#define MAP_UNIX03 0x40000 /* UNIX03 compliance */
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * Process memory locking
+ */
+#define MCL_CURRENT 0x0001 /* [ML] Lock only current memory */
+#define MCL_FUTURE 0x0002 /* [ML] Lock all future memory as well */
+
+/*
+ * Error return from mmap()
+ */
+#define MAP_FAILED ((void *)-1) /* [MF|SHM] mmap failed */
+
+/*
+ * msync() flags
+ */
+#define MS_ASYNC 0x0001 /* [MF|SIO] return immediately */
+#define MS_INVALIDATE 0x0002 /* [MF|SIO] invalidate all cached data */
+#define MS_SYNC 0x0010 /* [MF|SIO] msync synchronously */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define MS_KILLPAGES 0x0004 /* invalidate pages, leave mapped */
+#define MS_DEACTIVATE 0x0008 /* deactivate pages, leave mapped */
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+
+/*
+ * Advice to madvise
+ */
+#define POSIX_MADV_NORMAL 0 /* [MC1] no further special treatment */
+#define POSIX_MADV_RANDOM 1 /* [MC1] expect random page refs */
+#define POSIX_MADV_SEQUENTIAL 2 /* [MC1] expect sequential page refs */
+#define POSIX_MADV_WILLNEED 3 /* [MC1] will need these pages */
+#define POSIX_MADV_DONTNEED 4 /* [MC1] dont need these pages */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define MADV_NORMAL POSIX_MADV_NORMAL
+#define MADV_RANDOM POSIX_MADV_RANDOM
+#define MADV_SEQUENTIAL POSIX_MADV_SEQUENTIAL
+#define MADV_WILLNEED POSIX_MADV_WILLNEED
+#define MADV_DONTNEED POSIX_MADV_DONTNEED
+#define MADV_FREE 5 /* pages unneeded, discard contents */
+#define MADV_ZERO_WIRED_PAGES 6 /* zero the wired pages that have not been unwired before the entry is deleted */
+#define MADV_FREE_REUSABLE 7 /* pages can be reused (by anyone) */
+#define MADV_FREE_REUSE 8 /* caller wants to reuse those pages */
+#define MADV_CAN_REUSE 9
+#define MADV_PAGEOUT 10 /* page out now (internal only) */
+
+/*
+ * Return bits from mincore
+ */
+#define MINCORE_INCORE 0x1 /* Page is incore */
+#define MINCORE_REFERENCED 0x2 /* Page has been referenced by us */
+#define MINCORE_MODIFIED 0x4 /* Page has been modified by us */
+#define MINCORE_REFERENCED_OTHER 0x8 /* Page has been referenced */
+#define MINCORE_MODIFIED_OTHER 0x10 /* Page has been modified */
+#define MINCORE_PAGED_OUT 0x20 /* Page has been paged out */
+#define MINCORE_COPIED 0x40 /* Page has been copied */
+#define MINCORE_ANONYMOUS 0x80 /* Page belongs to an anonymous object */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+
+
+
+__BEGIN_DECLS
+/* [ML] */
+int mlockall(int);
+int munlockall(void);
+/* [MR] */
+int mlock(const void *, size_t);
+#ifndef _MMAP
+#define _MMAP
+/* [MC3]*/
+void * mmap(void *, size_t, int, int, int, off_t) __DARWIN_ALIAS(mmap);
+#endif
+/* [MPR] */
+int mprotect(void *, size_t, int) __DARWIN_ALIAS(mprotect);
+/* [MF|SIO] */
+int msync(void *, size_t, int) __DARWIN_ALIAS_C(msync);
+/* [MR] */
+int munlock(const void *, size_t);
+/* [MC3]*/
+int munmap(void *, size_t) __DARWIN_ALIAS(munmap);
+/* [SHM] */
+int shm_open(const char *, int, ...);
+int shm_unlink(const char *);
+/* [ADV] */
+int posix_madvise(void *, size_t, int);
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+int madvise(void *, size_t, int);
+int mincore(const void *, size_t, char *);
+int minherit(void *, size_t, int);
+#endif
+
+
+__END_DECLS
+
+#endif /* !_SYS_MMAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/mount.h b/lib/libc/include/aarch64-macos-gnu/sys/mount.h
new file mode 100644
index 0000000000..85a8347ddf
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/mount.h
@@ -0,0 +1,434 @@
+/*
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*
+ * Copyright (c) 1989, 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)mount.h 8.21 (Berkeley) 5/20/95
+ */
+/*
+ * NOTICE: This file was modified by SPARTA, Inc. in 2005 to introduce
+ * support for mandatory and extensible security protections. This notice
+ * is included in support of clause 2.2 (b) of the Apple Public License,
+ * Version 2.0.
+ */
+
+
+#ifndef _SYS_MOUNT_H_
+#define _SYS_MOUNT_H_
+
+#include <sys/appleapiopts.h>
+#include <sys/cdefs.h>
+#include <sys/attr.h> /* needed for vol_capabilities_attr_t */
+#include <os/base.h>
+
+#include <stdint.h>
+#include <sys/ucred.h>
+#include <sys/queue.h> /* XXX needed for user builds */
+#include <Availability.h>
+
+#include <sys/_types/_fsid_t.h> /* file system id type */
+
+/*
+ * file system statistics
+ */
+
+#define MFSNAMELEN 15 /* length of fs type name, not inc. null */
+#define MFSTYPENAMELEN 16 /* length of fs type name including null */
+
+#if __DARWIN_64_BIT_INO_T
+#define MNAMELEN MAXPATHLEN /* length of buffer for returned name */
+#else /* ! __DARWIN_64_BIT_INO_T */
+#define MNAMELEN 90 /* length of buffer for returned name */
+#endif /* __DARWIN_64_BIT_INO_T */
+
+#define MNT_EXT_ROOT_DATA_VOL 0x00000001 /* Data volume of root volume group */
+
+#define __DARWIN_STRUCT_STATFS64 { \
+ uint32_t f_bsize; /* fundamental file system block size */ \
+ int32_t f_iosize; /* optimal transfer block size */ \
+ uint64_t f_blocks; /* total data blocks in file system */ \
+ uint64_t f_bfree; /* free blocks in fs */ \
+ uint64_t f_bavail; /* free blocks avail to non-superuser */ \
+ uint64_t f_files; /* total file nodes in file system */ \
+ uint64_t f_ffree; /* free file nodes in fs */ \
+ fsid_t f_fsid; /* file system id */ \
+ uid_t f_owner; /* user that mounted the filesystem */ \
+ uint32_t f_type; /* type of filesystem */ \
+ uint32_t f_flags; /* copy of mount exported flags */ \
+ uint32_t f_fssubtype; /* fs sub-type (flavor) */ \
+ char f_fstypename[MFSTYPENAMELEN]; /* fs type name */ \
+ char f_mntonname[MAXPATHLEN]; /* directory on which mounted */ \
+ char f_mntfromname[MAXPATHLEN]; /* mounted filesystem */ \
+ uint32_t f_flags_ext; /* extended flags */ \
+ uint32_t f_reserved[7]; /* For future use */ \
+}
+
+#if !__DARWIN_ONLY_64_BIT_INO_T
+
+struct statfs64 __DARWIN_STRUCT_STATFS64;
+
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+
+#if __DARWIN_64_BIT_INO_T
+
+struct statfs __DARWIN_STRUCT_STATFS64;
+
+#else /* !__DARWIN_64_BIT_INO_T */
+
+/*
+ * LP64 - WARNING - must be kept in sync with struct user_statfs in mount_internal.h.
+ */
+struct statfs {
+ short f_otype; /* TEMPORARY SHADOW COPY OF f_type */
+ short f_oflags; /* TEMPORARY SHADOW COPY OF f_flags */
+ long f_bsize; /* fundamental file system block size */
+ long f_iosize; /* optimal transfer block size */
+ long f_blocks; /* total data blocks in file system */
+ long f_bfree; /* free blocks in fs */
+ long f_bavail; /* free blocks avail to non-superuser */
+ long f_files; /* total file nodes in file system */
+ long f_ffree; /* free file nodes in fs */
+ fsid_t f_fsid; /* file system id */
+ uid_t f_owner; /* user that mounted the filesystem */
+ short f_reserved1; /* spare for later */
+ short f_type; /* type of filesystem */
+ long f_flags; /* copy of mount exported flags */
+ long f_reserved2[2]; /* reserved for future use */
+ char f_fstypename[MFSNAMELEN]; /* fs type name */
+ char f_mntonname[MNAMELEN]; /* directory on which mounted */
+ char f_mntfromname[MNAMELEN];/* mounted filesystem */
+ char f_reserved3; /* For alignment */
+ long f_reserved4[4]; /* For future use */
+};
+
+#endif /* __DARWIN_64_BIT_INO_T */
+
+#pragma pack(4)
+
+struct vfsstatfs {
+ uint32_t f_bsize; /* fundamental file system block size */
+ size_t f_iosize; /* optimal transfer block size */
+ uint64_t f_blocks; /* total data blocks in file system */
+ uint64_t f_bfree; /* free blocks in fs */
+ uint64_t f_bavail; /* free blocks avail to non-superuser */
+ uint64_t f_bused; /* free blocks avail to non-superuser */
+ uint64_t f_files; /* total file nodes in file system */
+ uint64_t f_ffree; /* free file nodes in fs */
+ fsid_t f_fsid; /* file system id */
+ uid_t f_owner; /* user that mounted the filesystem */
+ uint64_t f_flags; /* copy of mount exported flags */
+ char f_fstypename[MFSTYPENAMELEN];/* fs type name inclus */
+ char f_mntonname[MAXPATHLEN];/* directory on which mounted */
+ char f_mntfromname[MAXPATHLEN];/* mounted filesystem */
+ uint32_t f_fssubtype; /* fs sub-type (flavor) */
+ void *f_reserved[2]; /* For future use == 0 */
+};
+
+#pragma pack()
+
+
+/*
+ * User specifiable flags.
+ *
+ * Unmount uses MNT_FORCE flag.
+ */
+#define MNT_RDONLY 0x00000001 /* read only filesystem */
+#define MNT_SYNCHRONOUS 0x00000002 /* file system written synchronously */
+#define MNT_NOEXEC 0x00000004 /* can't exec from filesystem */
+#define MNT_NOSUID 0x00000008 /* don't honor setuid bits on fs */
+#define MNT_NODEV 0x00000010 /* don't interpret special files */
+#define MNT_UNION 0x00000020 /* union with underlying filesystem */
+#define MNT_ASYNC 0x00000040 /* file system written asynchronously */
+#define MNT_CPROTECT 0x00000080 /* file system supports content protection */
+
+/*
+ * NFS export related mount flags.
+ */
+#define MNT_EXPORTED 0x00000100 /* file system is exported */
+
+/*
+ * Denotes storage which can be removed from the system by the user.
+ */
+
+#define MNT_REMOVABLE 0x00000200
+
+/*
+ * MAC labeled / "quarantined" flag
+ */
+#define MNT_QUARANTINE 0x00000400 /* file system is quarantined */
+
+/*
+ * Flags set by internal operations.
+ */
+#define MNT_LOCAL 0x00001000 /* filesystem is stored locally */
+#define MNT_QUOTA 0x00002000 /* quotas are enabled on filesystem */
+#define MNT_ROOTFS 0x00004000 /* identifies the root filesystem */
+#define MNT_DOVOLFS 0x00008000 /* FS supports volfs (deprecated flag in Mac OS X 10.5) */
+
+
+#define MNT_DONTBROWSE 0x00100000 /* file system is not appropriate path to user data */
+#define MNT_IGNORE_OWNERSHIP 0x00200000 /* VFS will ignore ownership information on filesystem objects */
+#define MNT_AUTOMOUNTED 0x00400000 /* filesystem was mounted by automounter */
+#define MNT_JOURNALED 0x00800000 /* filesystem is journaled */
+#define MNT_NOUSERXATTR 0x01000000 /* Don't allow user extended attributes */
+#define MNT_DEFWRITE 0x02000000 /* filesystem should defer writes */
+#define MNT_MULTILABEL 0x04000000 /* MAC support for individual labels */
+#define MNT_NOATIME 0x10000000 /* disable update of file access time */
+#define MNT_SNAPSHOT 0x40000000 /* The mount is a snapshot */
+#define MNT_STRICTATIME 0x80000000 /* enable strict update of file access time */
+
+/* backwards compatibility only */
+#define MNT_UNKNOWNPERMISSIONS MNT_IGNORE_OWNERSHIP
+
+
+/*
+ * XXX I think that this could now become (~(MNT_CMDFLAGS))
+ * but the 'mount' program may need changing to handle this.
+ */
+#define MNT_VISFLAGMASK (MNT_RDONLY | MNT_SYNCHRONOUS | MNT_NOEXEC | \
+ MNT_NOSUID | MNT_NODEV | MNT_UNION | \
+ MNT_ASYNC | MNT_EXPORTED | MNT_QUARANTINE | \
+ MNT_LOCAL | MNT_QUOTA | MNT_REMOVABLE | \
+ MNT_ROOTFS | MNT_DOVOLFS | MNT_DONTBROWSE | \
+ MNT_IGNORE_OWNERSHIP | MNT_AUTOMOUNTED | MNT_JOURNALED | \
+ MNT_NOUSERXATTR | MNT_DEFWRITE | MNT_MULTILABEL | \
+ MNT_NOATIME | MNT_STRICTATIME | MNT_SNAPSHOT | MNT_CPROTECT)
+/*
+ * External filesystem command modifier flags.
+ * Unmount can use the MNT_FORCE flag.
+ * XXX These are not STATES and really should be somewhere else.
+ * External filesystem control flags.
+ */
+#define MNT_UPDATE 0x00010000 /* not a real mount, just an update */
+#define MNT_NOBLOCK 0x00020000 /* don't block unmount if not responding */
+#define MNT_RELOAD 0x00040000 /* reload filesystem data */
+#define MNT_FORCE 0x00080000 /* force unmount or readonly change */
+#define MNT_CMDFLAGS (MNT_UPDATE|MNT_NOBLOCK|MNT_RELOAD|MNT_FORCE)
+
+
+
+/*
+ * Sysctl CTL_VFS definitions.
+ *
+ * Second level identifier specifies which filesystem. Second level
+ * identifier VFS_GENERIC returns information about all filesystems.
+ */
+#define VFS_GENERIC 0 /* generic filesystem information */
+#define VFS_NUMMNTOPS 1 /* int: total num of vfs mount/unmount operations */
+/*
+ * Third level identifiers for VFS_GENERIC are given below; third
+ * level identifiers for specific filesystems are given in their
+ * mount specific header files.
+ */
+#define VFS_MAXTYPENUM 1 /* int: highest defined filesystem type */
+#define VFS_CONF 2 /* struct: vfsconf for filesystem given
+ * as next argument */
+
+/*
+ * Flags for various system call interfaces.
+ *
+ * waitfor flags to vfs_sync() and getfsstat()
+ */
+#define MNT_WAIT 1 /* synchronized I/O file integrity completion */
+#define MNT_NOWAIT 2 /* start all I/O, but do not wait for it */
+#define MNT_DWAIT 4 /* synchronized I/O data integrity completion */
+
+
+#if !defined(KERNEL) && !defined(_KERN_SYS_KERNELTYPES_H_) /* also defined in kernel_types.h */
+struct mount;
+typedef struct mount * mount_t;
+struct vnode;
+typedef struct vnode * vnode_t;
+#endif
+
+/* Reserved fields preserve binary compatibility */
+struct vfsconf {
+ uint32_t vfc_reserved1; /* opaque */
+ char vfc_name[MFSNAMELEN]; /* filesystem type name */
+ int vfc_typenum; /* historic filesystem type number */
+ int vfc_refcount; /* number mounted of this type */
+ int vfc_flags; /* permanent flags */
+ uint32_t vfc_reserved2; /* opaque */
+ uint32_t vfc_reserved3; /* opaque */
+};
+
+struct vfsidctl {
+ int vc_vers; /* should be VFSIDCTL_VERS1 (below) */
+ fsid_t vc_fsid; /* fsid to operate on. */
+ void *vc_ptr; /* pointer to data structure. */
+ size_t vc_len; /* sizeof said structure. */
+ u_int32_t vc_spare[12]; /* spare (must be zero). */
+};
+
+
+/* vfsidctl API version. */
+#define VFS_CTL_VERS1 0x01
+
+
+/*
+ * New style VFS sysctls, do not reuse/conflict with the namespace for
+ * private sysctls.
+ */
+#define VFS_CTL_OSTATFS 0x00010001 /* old legacy statfs */
+#define VFS_CTL_UMOUNT 0x00010002 /* unmount */
+#define VFS_CTL_QUERY 0x00010003 /* anything wrong? (vfsquery) */
+#define VFS_CTL_NEWADDR 0x00010004 /* reconnect to new address */
+#define VFS_CTL_TIMEO 0x00010005 /* set timeout for vfs notification */
+#define VFS_CTL_NOLOCKS 0x00010006 /* disable file locking */
+#define VFS_CTL_SADDR 0x00010007 /* get server address */
+#define VFS_CTL_DISC 0x00010008 /* server disconnected */
+#define VFS_CTL_SERVERINFO 0x00010009 /* information about fs server */
+#define VFS_CTL_NSTATUS 0x0001000A /* netfs mount status */
+#define VFS_CTL_STATFS64 0x0001000B /* statfs64 */
+
+/*
+ * Automatically select the correct VFS_CTL_*STATFS* flavor based
+ * on what "struct statfs" layout the client will use.
+ */
+#if __DARWIN_64_BIT_INO_T
+#define VFS_CTL_STATFS VFS_CTL_STATFS64
+#else
+#define VFS_CTL_STATFS VFS_CTL_OSTATFS
+#endif
+
+struct vfsquery {
+ u_int32_t vq_flags;
+ u_int32_t vq_spare[31];
+};
+
+struct vfs_server {
+ int32_t vs_minutes; /* minutes until server goes down. */
+ u_int8_t vs_server_name[MAXHOSTNAMELEN * 3]; /* UTF8 server name to display (null terminated) */
+};
+
+/*
+ * NetFS mount status - returned by VFS_CTL_NSTATUS
+ */
+struct netfs_status {
+ u_int32_t ns_status; // Current status of mount (vfsquery flags)
+ char ns_mountopts[512]; // Significant mount options
+ uint32_t ns_waittime; // Time waiting for reply (sec)
+ uint32_t ns_threadcount; // Number of threads blocked on network calls
+ uint64_t ns_threadids[0]; // Thread IDs of those blocked threads
+};
+
+/* vfsquery flags */
+#define VQ_NOTRESP 0x0001 /* server down */
+#define VQ_NEEDAUTH 0x0002 /* server bad auth */
+#define VQ_LOWDISK 0x0004 /* we're low on space */
+#define VQ_MOUNT 0x0008 /* new filesystem arrived */
+#define VQ_UNMOUNT 0x0010 /* filesystem has left */
+#define VQ_DEAD 0x0020 /* filesystem is dead, needs force unmount */
+#define VQ_ASSIST 0x0040 /* filesystem needs assistance from external program */
+#define VQ_NOTRESPLOCK 0x0080 /* server lockd down */
+#define VQ_UPDATE 0x0100 /* filesystem information has changed */
+#define VQ_VERYLOWDISK 0x0200 /* file system has *very* little disk space left */
+#define VQ_SYNCEVENT 0x0400 /* a sync just happened (not set by kernel starting Mac OS X 10.9) */
+#define VQ_SERVEREVENT 0x0800 /* server issued notification/warning */
+#define VQ_QUOTA 0x1000 /* a user quota has been hit */
+#define VQ_NEARLOWDISK 0x2000 /* Above lowdisk and below desired disk space */
+#define VQ_DESIRED_DISK 0x4000 /* the desired disk space */
+#define VQ_FREE_SPACE_CHANGE 0x8000 /* free disk space has significantly changed */
+#define VQ_FLAG10000 0x10000 /* placeholder */
+
+
+
+
+/*
+ * Generic file handle
+ */
+#define NFS_MAX_FH_SIZE NFSV4_MAX_FH_SIZE
+#define NFSV4_MAX_FH_SIZE 128
+#define NFSV3_MAX_FH_SIZE 64
+#define NFSV2_MAX_FH_SIZE 32
+struct fhandle {
+ unsigned int fh_len; /* length of file handle */
+ unsigned char fh_data[NFS_MAX_FH_SIZE]; /* file handle value */
+};
+typedef struct fhandle fhandle_t;
+
+
+__BEGIN_DECLS
+int fhopen(const struct fhandle *, int);
+int fstatfs(int, struct statfs *) __DARWIN_INODE64(fstatfs);
+#if !__DARWIN_ONLY_64_BIT_INO_T
+int fstatfs64(int, struct statfs64 *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+int getfh(const char *, fhandle_t *);
+int getfsstat(struct statfs *, int, int) __DARWIN_INODE64(getfsstat);
+#if !__DARWIN_ONLY_64_BIT_INO_T
+int getfsstat64(struct statfs64 *, int, int) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+int getmntinfo(struct statfs **, int) __DARWIN_INODE64(getmntinfo);
+int getmntinfo_r_np(struct statfs **, int) __DARWIN_INODE64(getmntinfo_r_np)
+__OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
+__TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+#if !__DARWIN_ONLY_64_BIT_INO_T
+int getmntinfo64(struct statfs64 **, int) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+int mount(const char *, const char *, int, void *);
+int fmount(const char *, int, int, void *) __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0) __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+int statfs(const char *, struct statfs *) __DARWIN_INODE64(statfs);
+#if !__DARWIN_ONLY_64_BIT_INO_T
+int statfs64(const char *, struct statfs64 *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+int unmount(const char *, int);
+int getvfsbyname(const char *, struct vfsconf *);
+__END_DECLS
+
+#endif /* !_SYS_MOUNT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/param.h b/lib/libc/include/aarch64-macos-gnu/sys/param.h
new file mode 100644
index 0000000000..ee007bdd3e
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/param.h
@@ -0,0 +1,235 @@
+/*
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995, 1997 Apple Computer, Inc. All Rights Reserved */
+/*-
+ * Copyright (c) 1982, 1986, 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)param.h 8.3 (Berkeley) 4/4/95
+ */
+
+#ifndef _SYS_PARAM_H_
+#define _SYS_PARAM_H_
+
+#define BSD 199506 /* System version (year & month). */
+#define BSD4_3 1
+#define BSD4_4 1
+
+#define NeXTBSD 1995064 /* NeXTBSD version (year, month, release) */
+#define NeXTBSD4_0 0 /* NeXTBSD 4.0 */
+
+#include <sys/_types.h>
+#include <sys/_types/_null.h>
+
+#ifndef LOCORE
+#include <sys/types.h>
+#endif
+
+/*
+ * Machine-independent constants (some used in following include files).
+ * Redefined constants are from POSIX 1003.1 limits file.
+ *
+ * MAXCOMLEN should be >= sizeof(ac_comm) (see <acct.h>)
+ * MAXLOGNAME should be >= UT_NAMESIZE (see <utmp.h>)
+ */
+#include <sys/syslimits.h>
+
+#define MAXCOMLEN 16 /* max command name remembered */
+#define MAXINTERP 64 /* max interpreter file name length */
+#define MAXLOGNAME 255 /* max login name length */
+#define MAXUPRC CHILD_MAX /* max simultaneous processes */
+#define NCARGS ARG_MAX /* max bytes for an exec function */
+#define NGROUPS NGROUPS_MAX /* max number groups */
+#define NOFILE 256 /* default max open files per process */
+#define NOGROUP 65535 /* marker for empty group set member */
+#define MAXHOSTNAMELEN 256 /* max hostname size */
+#define MAXDOMNAMELEN 256 /* maximum domain name length */
+
+/* Machine type dependent parameters. */
+#include <machine/param.h>
+
+/* More types and definitions used throughout the kernel. */
+#include <limits.h>
+
+/* Signals. */
+#include <sys/signal.h>
+
+/*
+ * Priorities. Note that with 32 run queues, differences less than 4 are
+ * insignificant.
+ */
+#define PSWP 0
+#define PVM 4
+#define PINOD 8
+#define PRIBIO 16
+#define PVFS 20
+#define PZERO 22 /* No longer magic, shouldn't be here. XXX */
+#define PSOCK 24
+#define PWAIT 32
+#define PLOCK 36
+#define PPAUSE 40
+#define PUSER 50
+#define MAXPRI 127 /* Priorities range from 0 through MAXPRI. */
+
+#define PRIMASK 0x0ff
+#define PCATCH 0x100 /* OR'd with pri for tsleep to check signals */
+#define PTTYBLOCK 0x200 /* for tty SIGTTOU and SIGTTIN blocking */
+#define PDROP 0x400 /* OR'd with pri to stop re-aquistion of mutex upon wakeup */
+#define PSPIN 0x800 /* OR'd with pri to require mutex in spin mode upon wakeup */
+
+#define NBPW sizeof(int) /* number of bytes per word (integer) */
+
+#define CMASK 022 /* default file mask: S_IWGRP|S_IWOTH */
+#define NODEV (dev_t)(-1) /* non-existent device */
+
+/*
+ * Clustering of hardware pages on machines with ridiculously small
+ * page sizes is done here. The paging subsystem deals with units of
+ * CLSIZE pte's describing NBPG (from machine/param.h) pages each.
+ */
+#define CLBYTES (CLSIZE*NBPG)
+#define CLOFSET (CLSIZE*NBPG-1) /* for clusters, like PGOFSET */
+#define claligned(x) ((((int)(x))&CLOFSET)==0)
+#define CLOFF CLOFSET
+#define CLSHIFT (PGSHIFT+CLSIZELOG2)
+
+#if CLSIZE == 1
+#define clbase(i) (i)
+#define clrnd(i) (i)
+#else
+/* Give the base virtual address (first of CLSIZE). */
+#define clbase(i) ((i) &~ (CLSIZE-1))
+/* Round a number of clicks up to a whole cluster. */
+#define clrnd(i) (((i) + (CLSIZE-1)) &~ (CLSIZE-1))
+#endif
+
+#define CBLOCK 64 /* Clist block size, must be a power of 2. */
+#define CBQSIZE (CBLOCK/NBBY) /* Quote bytes/cblock - can do better. */
+ /* Data chars/clist. */
+#define CBSIZE (CBLOCK - sizeof(struct cblock *) - CBQSIZE)
+#define CROUND (CBLOCK - 1) /* Clist rounding. */
+
+/*
+ * File system parameters and macros.
+ *
+ * The file system is made out of blocks of at most MAXPHYS units, with
+ * smaller units (fragments) only in the last direct block. MAXBSIZE
+ * primarily determines the size of buffers in the buffer pool. It may be
+ * made larger than MAXPHYS without any effect on existing file systems;
+ * however making it smaller may make some file systems unmountable.
+ * We set this to track the value of MAX_UPL_TRANSFER_BYTES from
+ * osfmk/mach/memory_object_types.h to bound it at the maximum UPL size.
+ */
+#define MAXBSIZE (256 * 4096)
+#define MAXPHYSIO MAXPHYS
+#define MAXFRAG 8
+
+#define MAXPHYSIO_WIRED (16 * 1024 * 1024)
+
+/*
+ * MAXPATHLEN defines the longest permissable path length after expanding
+ * symbolic links. It is used to allocate a temporary buffer from the buffer
+ * pool in which to do the name expansion, hence should be a power of two,
+ * and must be less than or equal to MAXBSIZE. MAXSYMLINKS defines the
+ * maximum number of symbolic links that may be expanded in a path name.
+ * It should be set high enough to allow all legitimate uses, but halt
+ * infinite loops reasonably quickly.
+ */
+#define MAXPATHLEN PATH_MAX
+#define MAXSYMLINKS 32
+
+/* Bit map related macros. */
+#define setbit(a, i) (((unsigned char *)(a))[(i)/NBBY] |= 1u<<((i)%NBBY))
+#define clrbit(a, i) (((unsigned char *)(a))[(i)/NBBY] &= ~(1u<<((i)%NBBY)))
+#define isset(a, i) (((unsigned char *)(a))[(i)/NBBY] & (1u<<((i)%NBBY)))
+#define isclr(a, i) ((((unsigned char *)(a))[(i)/NBBY] & (1u<<((i)%NBBY))) == 0)
+
+/* Macros for counting and rounding. */
+#ifndef howmany
+#define howmany(x, y) ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1))
+#endif
+#define roundup(x, y) ((((x) % (y)) == 0) ? \
+ (x) : ((x) + ((y) - ((x) % (y)))))
+#define powerof2(x) ((((x)-1)&(x))==0)
+
+/* Macros for min/max. */
+#ifndef MIN
+#define MIN(a, b) (((a)<(b))?(a):(b))
+#endif /* MIN */
+#ifndef MAX
+#define MAX(a, b) (((a)>(b))?(a):(b))
+#endif /* MAX */
+
+/*
+ * Scale factor for scaled integers used to count %cpu time and load avgs.
+ *
+ * The number of CPU `tick's that map to a unique `%age' can be expressed
+ * by the formula (1 / (2 ^ (FSHIFT - 11))). The maximum load average that
+ * can be calculated (assuming 32 bits) can be closely approximated using
+ * the formula (2 ^ (2 * (16 - FSHIFT))) for (FSHIFT < 15).
+ *
+ * For the scheduler to maintain a 1:1 mapping of CPU `tick' to `%age',
+ * FSHIFT must be at least 11; this gives us a maximum load avg of ~1024.
+ */
+#define FSHIFT 11 /* bits to right of fixed binary point */
+#define FSCALE (1<<FSHIFT)
+
+#endif /* _SYS_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/proc.h b/lib/libc/include/aarch64-macos-gnu/sys/proc.h
new file mode 100644
index 0000000000..1d1239ff45
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/proc.h
@@ -0,0 +1,224 @@
+/*
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995, 1997 Apple Computer, Inc. All Rights Reserved */
+/*-
+ * Copyright (c) 1986, 1989, 1991, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)proc.h 8.15 (Berkeley) 5/19/95
+ */
+
+#ifndef _SYS_PROC_H_
+#define _SYS_PROC_H_
+
+#include <sys/appleapiopts.h>
+#include <sys/cdefs.h>
+#include <sys/select.h> /* For struct selinfo. */
+#include <sys/queue.h>
+#include <sys/lock.h>
+#include <sys/param.h>
+#include <sys/event.h>
+#include <sys/time.h>
+#include <mach/boolean.h>
+
+
+
+struct session;
+struct pgrp;
+struct proc;
+struct proc_ident;
+
+/* Exported fields for kern sysctls */
+struct extern_proc {
+ union {
+ struct {
+ struct proc *__p_forw; /* Doubly-linked run/sleep queue. */
+ struct proc *__p_back;
+ } p_st1;
+ struct timeval __p_starttime; /* process start time */
+ } p_un;
+#define p_forw p_un.p_st1.__p_forw
+#define p_back p_un.p_st1.__p_back
+#define p_starttime p_un.__p_starttime
+ struct vmspace *p_vmspace; /* Address space. */
+ struct sigacts *p_sigacts; /* Signal actions, state (PROC ONLY). */
+ int p_flag; /* P_* flags. */
+ char p_stat; /* S* process status. */
+ pid_t p_pid; /* Process identifier. */
+ pid_t p_oppid; /* Save parent pid during ptrace. XXX */
+ int p_dupfd; /* Sideways return value from fdopen. XXX */
+ /* Mach related */
+ caddr_t user_stack; /* where user stack was allocated */
+ void *exit_thread; /* XXX Which thread is exiting? */
+ int p_debugger; /* allow to debug */
+ boolean_t sigwait; /* indication to suspend */
+ /* scheduling */
+ u_int p_estcpu; /* Time averaged value of p_cpticks. */
+ int p_cpticks; /* Ticks of cpu time. */
+ fixpt_t p_pctcpu; /* %cpu for this process during p_swtime */
+ void *p_wchan; /* Sleep address. */
+ char *p_wmesg; /* Reason for sleep. */
+ u_int p_swtime; /* Time swapped in or out. */
+ u_int p_slptime; /* Time since last blocked. */
+ struct itimerval p_realtimer; /* Alarm timer. */
+ struct timeval p_rtime; /* Real time. */
+ u_quad_t p_uticks; /* Statclock hits in user mode. */
+ u_quad_t p_sticks; /* Statclock hits in system mode. */
+ u_quad_t p_iticks; /* Statclock hits processing intr. */
+ int p_traceflag; /* Kernel trace points. */
+ struct vnode *p_tracep; /* Trace to vnode. */
+ int p_siglist; /* DEPRECATED. */
+ struct vnode *p_textvp; /* Vnode of executable. */
+ int p_holdcnt; /* If non-zero, don't swap. */
+ sigset_t p_sigmask; /* DEPRECATED. */
+ sigset_t p_sigignore; /* Signals being ignored. */
+ sigset_t p_sigcatch; /* Signals being caught by user. */
+ u_char p_priority; /* Process priority. */
+ u_char p_usrpri; /* User-priority based on p_cpu and p_nice. */
+ char p_nice; /* Process "nice" value. */
+ char p_comm[MAXCOMLEN + 1];
+ struct pgrp *p_pgrp; /* Pointer to process group. */
+ struct user *p_addr; /* Kernel virtual addr of u-area (PROC ONLY). */
+ u_short p_xstat; /* Exit status for wait; also stop signal. */
+ u_short p_acflag; /* Accounting flags. */
+ struct rusage *p_ru; /* Exit information. XXX */
+};
+
+
+/* Status values. */
+#define SIDL 1 /* Process being created by fork. */
+#define SRUN 2 /* Currently runnable. */
+#define SSLEEP 3 /* Sleeping on an address. */
+#define SSTOP 4 /* Process debugging or suspension. */
+#define SZOMB 5 /* Awaiting collection by parent. */
+
+/* These flags are kept in extern_proc.p_flag. */
+#define P_ADVLOCK 0x00000001 /* Process may hold POSIX adv. lock */
+#define P_CONTROLT 0x00000002 /* Has a controlling terminal */
+#define P_LP64 0x00000004 /* Process is LP64 */
+#define P_NOCLDSTOP 0x00000008 /* No SIGCHLD when children stop */
+
+#define P_PPWAIT 0x00000010 /* Parent waiting for chld exec/exit */
+#define P_PROFIL 0x00000020 /* Has started profiling */
+#define P_SELECT 0x00000040 /* Selecting; wakeup/waiting danger */
+#define P_CONTINUED 0x00000080 /* Process was stopped and continued */
+
+#define P_SUGID 0x00000100 /* Has set privileges since last exec */
+#define P_SYSTEM 0x00000200 /* Sys proc: no sigs, stats or swap */
+#define P_TIMEOUT 0x00000400 /* Timing out during sleep */
+#define P_TRACED 0x00000800 /* Debugged process being traced */
+
+#define P_DISABLE_ASLR 0x00001000 /* Disable address space layout randomization */
+#define P_WEXIT 0x00002000 /* Working on exiting */
+#define P_EXEC 0x00004000 /* Process called exec. */
+
+/* Should be moved to machine-dependent areas. */
+#define P_OWEUPC 0x00008000 /* Owe process an addupc() call at next ast. */
+
+#define P_AFFINITY 0x00010000 /* xxx */
+#define P_TRANSLATED 0x00020000 /* xxx */
+#define P_CLASSIC P_TRANSLATED /* xxx */
+
+#define P_DELAYIDLESLEEP 0x00040000 /* Process is marked to delay idle sleep on disk IO */
+#define P_CHECKOPENEVT 0x00080000 /* check if a vnode has the OPENEVT flag set on open */
+
+#define P_DEPENDENCY_CAPABLE 0x00100000 /* process is ok to call vfs_markdependency() */
+#define P_REBOOT 0x00200000 /* Process called reboot() */
+#define P_RESV6 0x00400000 /* used to be P_TBE */
+#define P_RESV7 0x00800000 /* (P_SIGEXC)signal exceptions */
+
+#define P_THCWD 0x01000000 /* process has thread cwd */
+#define P_RESV9 0x02000000 /* (P_VFORK)process has vfork children */
+#define P_ADOPTPERSONA 0x04000000 /* process adopted a persona (used to be P_NOATTACH) */
+#define P_RESV11 0x08000000 /* (P_INVFORK) proc in vfork */
+
+#define P_NOSHLIB 0x10000000 /* no shared libs are in use for proc */
+ /* flag set on exec */
+#define P_FORCEQUOTA 0x20000000 /* Force quota for root */
+#define P_NOCLDWAIT 0x40000000 /* No zombies when chil procs exit */
+#define P_NOREMOTEHANG 0x80000000 /* Don't hang on remote FS ops */
+
+#define P_INMEM 0 /* Obsolete: retained for compilation */
+#define P_NOSWAP 0 /* Obsolete: retained for compilation */
+#define P_PHYSIO 0 /* Obsolete: retained for compilation */
+#define P_FSTRACE 0 /* Obsolete: retained for compilation */
+#define P_SSTEP 0 /* Obsolete: retained for compilation */
+
+#define P_DIRTY_TRACK 0x00000001 /* track dirty state */
+#define P_DIRTY_ALLOW_IDLE_EXIT 0x00000002 /* process can be idle-exited when clean */
+#define P_DIRTY_DEFER 0x00000004 /* defer initial opt-in to idle-exit */
+#define P_DIRTY 0x00000008 /* process is dirty */
+#define P_DIRTY_SHUTDOWN 0x00000010 /* process is dirty during shutdown */
+#define P_DIRTY_TERMINATED 0x00000020 /* process has been marked for termination */
+#define P_DIRTY_BUSY 0x00000040 /* serialization flag */
+#define P_DIRTY_MARKED 0x00000080 /* marked dirty previously */
+#define P_DIRTY_AGING_IN_PROGRESS 0x00000100 /* aging in one of the 'aging bands' */
+#define P_DIRTY_LAUNCH_IN_PROGRESS 0x00000200 /* launch is in progress */
+#define P_DIRTY_DEFER_ALWAYS 0x00000400 /* defer going to idle-exit after every dirty->clean transition.
+ * For legacy jetsam policy only. This is the default with the other policies.*/
+
+#define P_DIRTY_IS_DIRTY (P_DIRTY | P_DIRTY_SHUTDOWN)
+#define P_DIRTY_IDLE_EXIT_ENABLED (P_DIRTY_TRACK|P_DIRTY_ALLOW_IDLE_EXIT)
+
+
+
+
+#endif /* !_SYS_PROC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/resource.h b/lib/libc/include/aarch64-macos-gnu/sys/resource.h
new file mode 100644
index 0000000000..b8da0be04d
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/resource.h
@@ -0,0 +1,512 @@
+/*
+ * Copyright (c) 2000-2018 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*
+ * Copyright (c) 1982, 1986, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)resource.h 8.2 (Berkeley) 1/4/94
+ */
+
+#ifndef _SYS_RESOURCE_H_
+#define _SYS_RESOURCE_H_
+
+#include <sys/appleapiopts.h>
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#include <stdint.h>
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#include <Availability.h>
+
+/* [XSI] The timeval structure shall be defined as described in
+ * <sys/time.h>
+ */
+#include <sys/_types/_timeval.h>
+
+/* The id_t type shall be defined as described in <sys/types.h> */
+#include <sys/_types/_id_t.h>
+
+
+/*
+ * Resource limit type (low 63 bits, excluding the sign bit)
+ */
+typedef __uint64_t rlim_t;
+
+
+/*****
+ * PRIORITY
+ */
+
+/*
+ * Possible values of the first parameter to getpriority()/setpriority(),
+ * used to indicate the type of the second parameter.
+ */
+#define PRIO_PROCESS 0 /* Second argument is a PID */
+#define PRIO_PGRP 1 /* Second argument is a GID */
+#define PRIO_USER 2 /* Second argument is a UID */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define PRIO_DARWIN_THREAD 3 /* Second argument is always 0 (current thread) */
+#define PRIO_DARWIN_PROCESS 4 /* Second argument is a PID */
+
+
+/*
+ * Range limitations for the value of the third parameter to setpriority().
+ */
+#define PRIO_MIN -20
+#define PRIO_MAX 20
+
+/*
+ * use PRIO_DARWIN_BG to set the current thread into "background" state
+ * which lowers CPU, disk IO, and networking priorites until thread terminates
+ * or "background" state is revoked
+ */
+#define PRIO_DARWIN_BG 0x1000
+
+/*
+ * use PRIO_DARWIN_NONUI to restrict a process's ability to make calls to
+ * the GPU. (deprecated)
+ */
+#define PRIO_DARWIN_NONUI 0x1001
+
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+
+
+/*****
+ * RESOURCE USAGE
+ */
+
+/*
+ * Possible values of the first parameter to getrusage(), used to indicate
+ * the scope of the information to be returned.
+ */
+#define RUSAGE_SELF 0 /* Current process information */
+#define RUSAGE_CHILDREN -1 /* Current process' children */
+
+/*
+ * A structure representing an accounting of resource utilization. The
+ * address of an instance of this structure is the second parameter to
+ * getrusage().
+ *
+ * Note: All values other than ru_utime and ru_stime are implementaiton
+ * defined and subject to change in a future release. Their use
+ * is discouraged for standards compliant programs.
+ */
+struct rusage {
+ struct timeval ru_utime; /* user time used (PL) */
+ struct timeval ru_stime; /* system time used (PL) */
+#if __DARWIN_C_LEVEL < __DARWIN_C_FULL
+ long ru_opaque[14]; /* implementation defined */
+#else
+ /*
+ * Informational aliases for source compatibility with programs
+ * that need more information than that provided by standards,
+ * and which do not mind being OS-dependent.
+ */
+ long ru_maxrss; /* max resident set size (PL) */
+#define ru_first ru_ixrss /* internal: ruadd() range start */
+ long ru_ixrss; /* integral shared memory size (NU) */
+ long ru_idrss; /* integral unshared data (NU) */
+ long ru_isrss; /* integral unshared stack (NU) */
+ long ru_minflt; /* page reclaims (NU) */
+ long ru_majflt; /* page faults (NU) */
+ long ru_nswap; /* swaps (NU) */
+ long ru_inblock; /* block input operations (atomic) */
+ long ru_oublock; /* block output operations (atomic) */
+ long ru_msgsnd; /* messages sent (atomic) */
+ long ru_msgrcv; /* messages received (atomic) */
+ long ru_nsignals; /* signals received (atomic) */
+ long ru_nvcsw; /* voluntary context switches (atomic) */
+ long ru_nivcsw; /* involuntary " */
+#define ru_last ru_nivcsw /* internal: ruadd() range end */
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+};
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/*
+ * Flavors for proc_pid_rusage().
+ */
+#define RUSAGE_INFO_V0 0
+#define RUSAGE_INFO_V1 1
+#define RUSAGE_INFO_V2 2
+#define RUSAGE_INFO_V3 3
+#define RUSAGE_INFO_V4 4
+#define RUSAGE_INFO_V5 5
+#define RUSAGE_INFO_CURRENT RUSAGE_INFO_V5
+
+/*
+ * Flags for RUSAGE_INFO_V5
+ */
+#define RU_PROC_RUNS_RESLIDE 0x00000001 /* proc has reslid shared cache */
+
+typedef void *rusage_info_t;
+
+struct rusage_info_v0 {
+ uint8_t ri_uuid[16];
+ uint64_t ri_user_time;
+ uint64_t ri_system_time;
+ uint64_t ri_pkg_idle_wkups;
+ uint64_t ri_interrupt_wkups;
+ uint64_t ri_pageins;
+ uint64_t ri_wired_size;
+ uint64_t ri_resident_size;
+ uint64_t ri_phys_footprint;
+ uint64_t ri_proc_start_abstime;
+ uint64_t ri_proc_exit_abstime;
+};
+
+struct rusage_info_v1 {
+ uint8_t ri_uuid[16];
+ uint64_t ri_user_time;
+ uint64_t ri_system_time;
+ uint64_t ri_pkg_idle_wkups;
+ uint64_t ri_interrupt_wkups;
+ uint64_t ri_pageins;
+ uint64_t ri_wired_size;
+ uint64_t ri_resident_size;
+ uint64_t ri_phys_footprint;
+ uint64_t ri_proc_start_abstime;
+ uint64_t ri_proc_exit_abstime;
+ uint64_t ri_child_user_time;
+ uint64_t ri_child_system_time;
+ uint64_t ri_child_pkg_idle_wkups;
+ uint64_t ri_child_interrupt_wkups;
+ uint64_t ri_child_pageins;
+ uint64_t ri_child_elapsed_abstime;
+};
+
+struct rusage_info_v2 {
+ uint8_t ri_uuid[16];
+ uint64_t ri_user_time;
+ uint64_t ri_system_time;
+ uint64_t ri_pkg_idle_wkups;
+ uint64_t ri_interrupt_wkups;
+ uint64_t ri_pageins;
+ uint64_t ri_wired_size;
+ uint64_t ri_resident_size;
+ uint64_t ri_phys_footprint;
+ uint64_t ri_proc_start_abstime;
+ uint64_t ri_proc_exit_abstime;
+ uint64_t ri_child_user_time;
+ uint64_t ri_child_system_time;
+ uint64_t ri_child_pkg_idle_wkups;
+ uint64_t ri_child_interrupt_wkups;
+ uint64_t ri_child_pageins;
+ uint64_t ri_child_elapsed_abstime;
+ uint64_t ri_diskio_bytesread;
+ uint64_t ri_diskio_byteswritten;
+};
+
+struct rusage_info_v3 {
+ uint8_t ri_uuid[16];
+ uint64_t ri_user_time;
+ uint64_t ri_system_time;
+ uint64_t ri_pkg_idle_wkups;
+ uint64_t ri_interrupt_wkups;
+ uint64_t ri_pageins;
+ uint64_t ri_wired_size;
+ uint64_t ri_resident_size;
+ uint64_t ri_phys_footprint;
+ uint64_t ri_proc_start_abstime;
+ uint64_t ri_proc_exit_abstime;
+ uint64_t ri_child_user_time;
+ uint64_t ri_child_system_time;
+ uint64_t ri_child_pkg_idle_wkups;
+ uint64_t ri_child_interrupt_wkups;
+ uint64_t ri_child_pageins;
+ uint64_t ri_child_elapsed_abstime;
+ uint64_t ri_diskio_bytesread;
+ uint64_t ri_diskio_byteswritten;
+ uint64_t ri_cpu_time_qos_default;
+ uint64_t ri_cpu_time_qos_maintenance;
+ uint64_t ri_cpu_time_qos_background;
+ uint64_t ri_cpu_time_qos_utility;
+ uint64_t ri_cpu_time_qos_legacy;
+ uint64_t ri_cpu_time_qos_user_initiated;
+ uint64_t ri_cpu_time_qos_user_interactive;
+ uint64_t ri_billed_system_time;
+ uint64_t ri_serviced_system_time;
+};
+
+struct rusage_info_v4 {
+ uint8_t ri_uuid[16];
+ uint64_t ri_user_time;
+ uint64_t ri_system_time;
+ uint64_t ri_pkg_idle_wkups;
+ uint64_t ri_interrupt_wkups;
+ uint64_t ri_pageins;
+ uint64_t ri_wired_size;
+ uint64_t ri_resident_size;
+ uint64_t ri_phys_footprint;
+ uint64_t ri_proc_start_abstime;
+ uint64_t ri_proc_exit_abstime;
+ uint64_t ri_child_user_time;
+ uint64_t ri_child_system_time;
+ uint64_t ri_child_pkg_idle_wkups;
+ uint64_t ri_child_interrupt_wkups;
+ uint64_t ri_child_pageins;
+ uint64_t ri_child_elapsed_abstime;
+ uint64_t ri_diskio_bytesread;
+ uint64_t ri_diskio_byteswritten;
+ uint64_t ri_cpu_time_qos_default;
+ uint64_t ri_cpu_time_qos_maintenance;
+ uint64_t ri_cpu_time_qos_background;
+ uint64_t ri_cpu_time_qos_utility;
+ uint64_t ri_cpu_time_qos_legacy;
+ uint64_t ri_cpu_time_qos_user_initiated;
+ uint64_t ri_cpu_time_qos_user_interactive;
+ uint64_t ri_billed_system_time;
+ uint64_t ri_serviced_system_time;
+ uint64_t ri_logical_writes;
+ uint64_t ri_lifetime_max_phys_footprint;
+ uint64_t ri_instructions;
+ uint64_t ri_cycles;
+ uint64_t ri_billed_energy;
+ uint64_t ri_serviced_energy;
+ uint64_t ri_interval_max_phys_footprint;
+ uint64_t ri_runnable_time;
+};
+
+struct rusage_info_v5 {
+ uint8_t ri_uuid[16];
+ uint64_t ri_user_time;
+ uint64_t ri_system_time;
+ uint64_t ri_pkg_idle_wkups;
+ uint64_t ri_interrupt_wkups;
+ uint64_t ri_pageins;
+ uint64_t ri_wired_size;
+ uint64_t ri_resident_size;
+ uint64_t ri_phys_footprint;
+ uint64_t ri_proc_start_abstime;
+ uint64_t ri_proc_exit_abstime;
+ uint64_t ri_child_user_time;
+ uint64_t ri_child_system_time;
+ uint64_t ri_child_pkg_idle_wkups;
+ uint64_t ri_child_interrupt_wkups;
+ uint64_t ri_child_pageins;
+ uint64_t ri_child_elapsed_abstime;
+ uint64_t ri_diskio_bytesread;
+ uint64_t ri_diskio_byteswritten;
+ uint64_t ri_cpu_time_qos_default;
+ uint64_t ri_cpu_time_qos_maintenance;
+ uint64_t ri_cpu_time_qos_background;
+ uint64_t ri_cpu_time_qos_utility;
+ uint64_t ri_cpu_time_qos_legacy;
+ uint64_t ri_cpu_time_qos_user_initiated;
+ uint64_t ri_cpu_time_qos_user_interactive;
+ uint64_t ri_billed_system_time;
+ uint64_t ri_serviced_system_time;
+ uint64_t ri_logical_writes;
+ uint64_t ri_lifetime_max_phys_footprint;
+ uint64_t ri_instructions;
+ uint64_t ri_cycles;
+ uint64_t ri_billed_energy;
+ uint64_t ri_serviced_energy;
+ uint64_t ri_interval_max_phys_footprint;
+ uint64_t ri_runnable_time;
+ uint64_t ri_flags;
+};
+
+typedef struct rusage_info_v5 rusage_info_current;
+
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+
+
+/*****
+ * RESOURCE LIMITS
+ */
+
+/*
+ * Symbolic constants for resource limits; since all limits are representable
+ * as a type rlim_t, we are permitted to define RLIM_SAVED_* in terms of
+ * RLIM_INFINITY.
+ */
+#define RLIM_INFINITY (((__uint64_t)1 << 63) - 1) /* no limit */
+#define RLIM_SAVED_MAX RLIM_INFINITY /* Unrepresentable hard limit */
+#define RLIM_SAVED_CUR RLIM_INFINITY /* Unrepresentable soft limit */
+
+/*
+ * Possible values of the first parameter to getrlimit()/setrlimit(), to
+ * indicate for which resource the operation is being performed.
+ */
+#define RLIMIT_CPU 0 /* cpu time per process */
+#define RLIMIT_FSIZE 1 /* file size */
+#define RLIMIT_DATA 2 /* data segment size */
+#define RLIMIT_STACK 3 /* stack size */
+#define RLIMIT_CORE 4 /* core file size */
+#define RLIMIT_AS 5 /* address space (resident set size) */
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define RLIMIT_RSS RLIMIT_AS /* source compatibility alias */
+#define RLIMIT_MEMLOCK 6 /* locked-in-memory address space */
+#define RLIMIT_NPROC 7 /* number of processes */
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+#define RLIMIT_NOFILE 8 /* number of open files */
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define RLIM_NLIMITS 9 /* total number of resource limits */
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+#define _RLIMIT_POSIX_FLAG 0x1000 /* Set bit for strict POSIX */
+
+/*
+ * A structure representing a resource limit. The address of an instance
+ * of this structure is the second parameter to getrlimit()/setrlimit().
+ */
+struct rlimit {
+ rlim_t rlim_cur; /* current (soft) limit */
+ rlim_t rlim_max; /* maximum value for rlim_cur */
+};
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/*
+ * proc_rlimit_control()
+ *
+ * Resource limit flavors
+ */
+#define RLIMIT_WAKEUPS_MONITOR 0x1 /* Configure the wakeups monitor. */
+#define RLIMIT_CPU_USAGE_MONITOR 0x2 /* Configure the CPU usage monitor. */
+#define RLIMIT_THREAD_CPULIMITS 0x3 /* Configure a blocking, per-thread, CPU limits. */
+#define RLIMIT_FOOTPRINT_INTERVAL 0x4 /* Configure memory footprint interval tracking */
+
+/*
+ * Flags for wakeups monitor control.
+ */
+#define WAKEMON_ENABLE 0x01
+#define WAKEMON_DISABLE 0x02
+#define WAKEMON_GET_PARAMS 0x04
+#define WAKEMON_SET_DEFAULTS 0x08
+#define WAKEMON_MAKE_FATAL 0x10 /* Configure the task so that violations are fatal. */
+
+/*
+ * Flags for CPU usage monitor control.
+ */
+#define CPUMON_MAKE_FATAL 0x1000
+
+/*
+ * Flags for memory footprint interval tracking.
+ */
+#define FOOTPRINT_INTERVAL_RESET 0x1 /* Reset the footprint interval counter to zero */
+
+struct proc_rlimit_control_wakeupmon {
+ uint32_t wm_flags;
+ int32_t wm_rate;
+};
+
+
+
+/* I/O type */
+#define IOPOL_TYPE_DISK 0
+#define IOPOL_TYPE_VFS_ATIME_UPDATES 2
+#define IOPOL_TYPE_VFS_MATERIALIZE_DATALESS_FILES 3
+#define IOPOL_TYPE_VFS_STATFS_NO_DATA_VOLUME 4
+#define IOPOL_TYPE_VFS_TRIGGER_RESOLVE 5
+#define IOPOL_TYPE_VFS_IGNORE_CONTENT_PROTECTION 6
+
+/* scope */
+#define IOPOL_SCOPE_PROCESS 0
+#define IOPOL_SCOPE_THREAD 1
+#define IOPOL_SCOPE_DARWIN_BG 2
+
+/* I/O Priority */
+#define IOPOL_DEFAULT 0
+#define IOPOL_IMPORTANT 1
+#define IOPOL_PASSIVE 2
+#define IOPOL_THROTTLE 3
+#define IOPOL_UTILITY 4
+#define IOPOL_STANDARD 5
+
+/* compatibility with older names */
+#define IOPOL_APPLICATION IOPOL_STANDARD
+#define IOPOL_NORMAL IOPOL_IMPORTANT
+
+
+#define IOPOL_ATIME_UPDATES_DEFAULT 0
+#define IOPOL_ATIME_UPDATES_OFF 1
+
+#define IOPOL_MATERIALIZE_DATALESS_FILES_DEFAULT 0
+#define IOPOL_MATERIALIZE_DATALESS_FILES_OFF 1
+#define IOPOL_MATERIALIZE_DATALESS_FILES_ON 2
+
+#define IOPOL_VFS_STATFS_NO_DATA_VOLUME_DEFAULT 0
+#define IOPOL_VFS_STATFS_FORCE_NO_DATA_VOLUME 1
+
+#define IOPOL_VFS_TRIGGER_RESOLVE_DEFAULT 0
+#define IOPOL_VFS_TRIGGER_RESOLVE_OFF 1
+
+#define IOPOL_VFS_CONTENT_PROTECTION_DEFAULT 0
+#define IOPOL_VFS_CONTENT_PROTECTION_IGNORE 1
+
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+
+__BEGIN_DECLS
+int getpriority(int, id_t);
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+int getiopolicy_np(int, int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+int getrlimit(int, struct rlimit *) __DARWIN_ALIAS(getrlimit);
+int getrusage(int, struct rusage *);
+int setpriority(int, id_t, int);
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+int setiopolicy_np(int, int, int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+int setrlimit(int, const struct rlimit *) __DARWIN_ALIAS(setrlimit);
+__END_DECLS
+
+#endif /* !_SYS_RESOURCE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/shm.h b/lib/libc/include/aarch64-macos-gnu/sys/shm.h
new file mode 100644
index 0000000000..4c34bf4dc7
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/shm.h
@@ -0,0 +1,190 @@
+/*
+ * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* $NetBSD: shm.h,v 1.15 1994/06/29 06:45:17 cgd Exp $ */
+
+/*
+ * Copyright (c) 1994 Adam Glass
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Adam Glass.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * As defined+described in "X/Open System Interfaces and Headers"
+ * Issue 4, p. XXX
+ */
+
+#ifndef _SYS_SHM_H_
+#define _SYS_SHM_H_
+
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+
+/*
+ * [XSI] All of the symbols from <sys/ipc.h> SHALL be defined
+ * when this header is included
+ */
+#include <sys/ipc.h>
+
+/*
+ * [XSI] The pid_t, time_t, key_t, and size_t types shall be defined as
+ * described in <sys/types.h>.
+ *
+ * NOTE: The definition of the key_t type is implicit from the
+ * inclusion of <sys/ipc.h>
+ */
+#include <sys/_types/_pid_t.h>
+#include <sys/_types/_time_t.h>
+#include <sys/_types/_size_t.h>
+
+/*
+ * [XSI] The unsigned integer type used for the number of current attaches
+ * that MUST be able to store values at least as large as a type unsigned
+ * short.
+ */
+typedef unsigned short shmatt_t;
+
+
+/*
+ * Possible flag values which may be OR'ed into the third argument to
+ * shmat()
+ */
+#define SHM_RDONLY 010000 /* [XSI] Attach read-only (else read-write) */
+#define SHM_RND 020000 /* [XSI] Round attach address to SHMLBA */
+
+/*
+ * This value is symbolic, and generally not expected to be sed by user
+ * programs directly, although such ise is permitted by the standard. Its
+ * value in our implementation is equal to the number of bytes per page.
+ *
+ * NOTE: We DO NOT obtain this value from the appropriate system
+ * headers at this time, to avoid the resulting namespace
+ * pollution, which is why we discourages its use.
+ */
+#if __arm64__
+#define SHMLBA (16*1024) /* [XSI] Segment low boundary address multiple*/
+#else /* __arm64__ */
+#define SHMLBA 4096 /* [XSI] Segment low boundary address multiple*/
+#endif /* __arm64__ */
+
+/* "official" access mode definitions; somewhat braindead since you have
+ * to specify (SHM_* >> 3) for group and (SHM_* >> 6) for world permissions */
+#define SHM_R (IPC_R)
+#define SHM_W (IPC_W)
+
+#pragma pack(4)
+
+/*
+ * Technically, we should force all code references to the new structure
+ * definition, not in just the standards conformance case, and leave the
+ * legacy interface there for binary compatibility only. Currently, we
+ * are only forcing this for programs requesting standards conformance.
+ */
+#if __DARWIN_UNIX03 || defined(KERNEL)
+/*
+ * Structure used internally.
+ *
+ * This structure is exposed because standards dictate that it is used as
+ * the third argment to shmctl().
+ *
+ * NOTE: The field shm_internal is not meaningful in user space,
+ * and must not be used there.
+ */
+#if (defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE))
+struct shmid_ds
+#else
+#define shmid_ds __shmid_ds_new
+struct __shmid_ds_new
+#endif
+{
+ struct __ipc_perm_new shm_perm; /* [XSI] Operation permission value */
+ size_t shm_segsz; /* [XSI] Size of segment in bytes */
+ pid_t shm_lpid; /* [XSI] PID of last shared memory op */
+ pid_t shm_cpid; /* [XSI] PID of creator */
+ shmatt_t shm_nattch; /* [XSI] Number of current attaches */
+ time_t shm_atime; /* [XSI] Time of last shmat() */
+ time_t shm_dtime; /* [XSI] Time of last shmdt() */
+ time_t shm_ctime; /* [XSI] Time of last shmctl() change */
+ void *shm_internal; /* reserved for kernel use */
+};
+#else /* !__DARWIN_UNIX03 */
+#define shmid_ds __shmid_ds_old
+#endif /* !__DARWIN_UNIX03 */
+
+#if !__DARWIN_UNIX03
+struct __shmid_ds_old {
+ struct __ipc_perm_old shm_perm; /* [XSI] Operation permission value */
+ size_t shm_segsz; /* [XSI] Size of segment in bytes */
+ pid_t shm_lpid; /* [XSI] PID of last shared memory op */
+ pid_t shm_cpid; /* [XSI] PID of creator */
+ shmatt_t shm_nattch; /* [XSI] Number of current attaches */
+ time_t shm_atime; /* [XSI] Time of last shmat() */
+ time_t shm_dtime; /* [XSI] Time of last shmdt() */
+ time_t shm_ctime; /* [XSI] Time of last shmctl() change */
+ void *shm_internal; /* reserved for kernel use */
+};
+#endif /* !__DARWIN_UNIX03 */
+
+#pragma pack()
+
+
+__BEGIN_DECLS
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+int shmsys(int, ...);
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+void *shmat(int, const void *, int);
+int shmctl(int, int, struct shmid_ds *) __DARWIN_ALIAS(shmctl);
+int shmdt(const void *);
+int shmget(key_t, size_t, int);
+__END_DECLS
+
+
+#endif /* !_SYS_SHM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/socket.h b/lib/libc/include/aarch64-macos-gnu/sys/socket.h
new file mode 100644
index 0000000000..0c6b09babe
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/socket.h
@@ -0,0 +1,741 @@
+/*
+ * Copyright (c) 2000-2019 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1998, 1999 Apple Computer, Inc. All Rights Reserved */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*
+ * Copyright (c) 1982, 1985, 1986, 1988, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)socket.h 8.4 (Berkeley) 2/21/94
+ * $FreeBSD: src/sys/sys/socket.h,v 1.39.2.7 2001/07/03 11:02:01 ume Exp $
+ */
+/*
+ * NOTICE: This file was modified by SPARTA, Inc. in 2005 to introduce
+ * support for mandatory and extensible security protections. This notice
+ * is included in support of clause 2.2 (b) of the Apple Public License,
+ * Version 2.0.
+ */
+
+#ifndef _SYS_SOCKET_H_
+#define _SYS_SOCKET_H_
+
+#include <sys/types.h>
+#include <sys/cdefs.h>
+#include <machine/_param.h>
+#include <net/net_kev.h>
+
+
+#include <Availability.h>
+
+/*
+ * Definitions related to sockets: types, address families, options.
+ */
+
+/*
+ * Data types.
+ */
+
+#include <sys/_types/_gid_t.h>
+#include <sys/_types/_off_t.h>
+#include <sys/_types/_pid_t.h>
+#include <sys/_types/_sa_family_t.h>
+#include <sys/_types/_socklen_t.h>
+
+/* XXX Not explicitly defined by POSIX, but function return types are */
+#include <sys/_types/_size_t.h>
+
+/* XXX Not explicitly defined by POSIX, but function return types are */
+#include <sys/_types/_ssize_t.h>
+
+/*
+ * [XSI] The iovec structure shall be defined as described in <sys/uio.h>.
+ */
+#include <sys/_types/_iovec_t.h>
+
+/*
+ * Types
+ */
+#define SOCK_STREAM 1 /* stream socket */
+#define SOCK_DGRAM 2 /* datagram socket */
+#define SOCK_RAW 3 /* raw-protocol interface */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define SOCK_RDM 4 /* reliably-delivered message */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define SOCK_SEQPACKET 5 /* sequenced packet stream */
+
+/*
+ * Option flags per-socket.
+ */
+#define SO_DEBUG 0x0001 /* turn on debugging info recording */
+#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
+#define SO_REUSEADDR 0x0004 /* allow local address reuse */
+#define SO_KEEPALIVE 0x0008 /* keep connections alive */
+#define SO_DONTROUTE 0x0010 /* just use interface addresses */
+#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */
+#define SO_LINGER 0x0080 /* linger on close if data present (in ticks) */
+#else
+#define SO_LINGER 0x1080 /* linger on close if data present (in seconds) */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define SO_REUSEPORT 0x0200 /* allow local address & port reuse */
+#define SO_TIMESTAMP 0x0400 /* timestamp received dgram traffic */
+#define SO_TIMESTAMP_MONOTONIC 0x0800 /* Monotonically increasing timestamp on rcvd dgram */
+#ifndef __APPLE__
+#define SO_ACCEPTFILTER 0x1000 /* there is an accept filter */
+#else
+#define SO_DONTTRUNC 0x2000 /* APPLE: Retain unread data */
+ /* (ATOMIC proto) */
+#define SO_WANTMORE 0x4000 /* APPLE: Give hint when more data ready */
+#define SO_WANTOOBFLAG 0x8000 /* APPLE: Want OOB in MSG_FLAG on receive */
+
+
+#endif /* (!__APPLE__) */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * Additional options, not kept in so_options.
+ */
+#define SO_SNDBUF 0x1001 /* send buffer size */
+#define SO_RCVBUF 0x1002 /* receive buffer size */
+#define SO_SNDLOWAT 0x1003 /* send low-water mark */
+#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
+#define SO_SNDTIMEO 0x1005 /* send timeout */
+#define SO_RCVTIMEO 0x1006 /* receive timeout */
+#define SO_ERROR 0x1007 /* get error status and clear */
+#define SO_TYPE 0x1008 /* get socket type */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define SO_LABEL 0x1010 /* deprecated */
+#define SO_PEERLABEL 0x1011 /* deprecated */
+#ifdef __APPLE__
+#define SO_NREAD 0x1020 /* APPLE: get 1st-packet byte count */
+#define SO_NKE 0x1021 /* APPLE: Install socket-level NKE */
+#define SO_NOSIGPIPE 0x1022 /* APPLE: No SIGPIPE on EPIPE */
+#define SO_NOADDRERR 0x1023 /* APPLE: Returns EADDRNOTAVAIL when src is not available anymore */
+#define SO_NWRITE 0x1024 /* APPLE: Get number of bytes currently in send socket buffer */
+#define SO_REUSESHAREUID 0x1025 /* APPLE: Allow reuse of port/socket by different userids */
+#ifdef __APPLE_API_PRIVATE
+#define SO_NOTIFYCONFLICT 0x1026 /* APPLE: send notification if there is a bind on a port which is already in use */
+#define SO_UPCALLCLOSEWAIT 0x1027 /* APPLE: block on close until an upcall returns */
+#endif
+#define SO_LINGER_SEC 0x1080 /* linger on close if data present (in seconds) */
+#define SO_RANDOMPORT 0x1082 /* APPLE: request local port randomization */
+#define SO_NP_EXTENSIONS 0x1083 /* To turn off some POSIX behavior */
+#endif
+
+#define SO_NUMRCVPKT 0x1112 /* number of datagrams in receive socket buffer */
+#define SO_NET_SERVICE_TYPE 0x1116 /* Network service type */
+
+
+#define SO_NETSVC_MARKING_LEVEL 0x1119 /* Get QoS marking in effect for socket */
+
+/*
+ * Network Service Type for option SO_NET_SERVICE_TYPE
+ *
+ * The vast majority of sockets should use Best Effort that is the default
+ * Network Service Type. Other Network Service Types have to be used only if
+ * the traffic actually matches the description of the Network Service Type.
+ *
+ * Network Service Types do not represent priorities but rather describe
+ * different categories of delay, jitter and loss parameters.
+ * Those parameters may influence protocols from layer 4 protocols like TCP
+ * to layer 2 protocols like Wi-Fi. The Network Service Type can determine
+ * how the traffic is queued and scheduled by the host networking stack and
+ * by other entities on the network like switches and routers. For example
+ * for Wi-Fi, the Network Service Type can select the marking of the
+ * layer 2 packet with the appropriate WMM Access Category.
+ *
+ * There is no point in attempting to game the system and use
+ * a Network Service Type that does not correspond to the actual
+ * traffic characteristic but one that seems to have a higher precedence.
+ * The reason is that for service classes that have lower tolerance
+ * for delay and jitter, the queues size is lower than for service
+ * classes that are more tolerant to delay and jitter.
+ *
+ * For example using a voice service type for bulk data transfer will lead
+ * to disastrous results as soon as congestion happens because the voice
+ * queue overflows and packets get dropped. This is not only bad for the bulk
+ * data transfer but it is also bad for VoIP apps that legitimately are using
+ * the voice service type.
+ *
+ * The characteristics of the Network Service Types are based on the service
+ * classes defined in RFC 4594 "Configuration Guidelines for DiffServ Service
+ * Classes"
+ *
+ * When system detects the outgoing interface belongs to a DiffServ domain
+ * that follows the recommendation of the IETF draft "Guidelines for DiffServ to
+ * IEEE 802.11 Mapping", the packet will marked at layer 3 with a DSCP value
+ * that corresponds to Network Service Type.
+ *
+ * NET_SERVICE_TYPE_BE
+ * "Best Effort", unclassified/standard. This is the default service
+ * class and cover the majority of the traffic.
+ *
+ * NET_SERVICE_TYPE_BK
+ * "Background", high delay tolerant, loss tolerant. elastic flow,
+ * variable size & long-lived. E.g: non-interactive network bulk transfer
+ * like synching or backup.
+ *
+ * NET_SERVICE_TYPE_RD
+ * "Responsive Data", a notch higher than "Best Effort", medium delay
+ * tolerant, elastic & inelastic flow, bursty, long-lived. E.g. email,
+ * instant messaging, for which there is a sense of interactivity and
+ * urgency (user waiting for output).
+ *
+ * NET_SERVICE_TYPE_OAM
+ * "Operations, Administration, and Management", medium delay tolerant,
+ * low-medium loss tolerant, elastic & inelastic flows, variable size.
+ * E.g. VPN tunnels.
+ *
+ * NET_SERVICE_TYPE_AV
+ * "Multimedia Audio/Video Streaming", medium delay tolerant, low-medium
+ * loss tolerant, elastic flow, constant packet interval, variable rate
+ * and size. E.g. video and audio playback with buffering.
+ *
+ * NET_SERVICE_TYPE_RV
+ * "Responsive Multimedia Audio/Video", low delay tolerant, low-medium
+ * loss tolerant, elastic flow, variable packet interval, rate and size.
+ * E.g. screen sharing.
+ *
+ * NET_SERVICE_TYPE_VI
+ * "Interactive Video", low delay tolerant, low-medium loss tolerant,
+ * elastic flow, constant packet interval, variable rate & size. E.g.
+ * video telephony.
+ *
+ * NET_SERVICE_TYPE_SIG
+ * "Signaling", low delay tolerant, low loss tolerant, inelastic flow,
+ * jitter tolerant, rate is bursty but short, variable size. E.g. SIP.
+ *
+ * NET_SERVICE_TYPE_VO
+ * "Interactive Voice", very low delay tolerant, very low loss tolerant,
+ * inelastic flow, constant packet rate, somewhat fixed size.
+ * E.g. VoIP.
+ */
+
+#define NET_SERVICE_TYPE_BE 0 /* Best effort */
+#define NET_SERVICE_TYPE_BK 1 /* Background system initiated */
+#define NET_SERVICE_TYPE_SIG 2 /* Signaling */
+#define NET_SERVICE_TYPE_VI 3 /* Interactive Video */
+#define NET_SERVICE_TYPE_VO 4 /* Interactive Voice */
+#define NET_SERVICE_TYPE_RV 5 /* Responsive Multimedia Audio/Video */
+#define NET_SERVICE_TYPE_AV 6 /* Multimedia Audio/Video Streaming */
+#define NET_SERVICE_TYPE_OAM 7 /* Operations, Administration, and Management */
+#define NET_SERVICE_TYPE_RD 8 /* Responsive Data */
+
+
+/* These are supported values for SO_NETSVC_MARKING_LEVEL */
+#define NETSVC_MRKNG_UNKNOWN 0 /* The outgoing network interface is not known */
+#define NETSVC_MRKNG_LVL_L2 1 /* Default marking at layer 2 (for example Wi-Fi WMM) */
+#define NETSVC_MRKNG_LVL_L3L2_ALL 2 /* Layer 3 DSCP marking and layer 2 marking for all Network Service Types */
+#define NETSVC_MRKNG_LVL_L3L2_BK 3 /* The system policy limits layer 3 DSCP marking and layer 2 marking
+ * to background Network Service Types */
+
+
+typedef __uint32_t sae_associd_t;
+#define SAE_ASSOCID_ANY 0
+#define SAE_ASSOCID_ALL ((sae_associd_t)(-1ULL))
+
+typedef __uint32_t sae_connid_t;
+#define SAE_CONNID_ANY 0
+#define SAE_CONNID_ALL ((sae_connid_t)(-1ULL))
+
+/* connectx() flag parameters */
+#define CONNECT_RESUME_ON_READ_WRITE 0x1 /* resume connect() on read/write */
+#define CONNECT_DATA_IDEMPOTENT 0x2 /* data is idempotent */
+#define CONNECT_DATA_AUTHENTICATED 0x4 /* data includes security that replaces the TFO-cookie */
+
+/* sockaddr endpoints */
+typedef struct sa_endpoints {
+ unsigned int sae_srcif; /* optional source interface */
+ const struct sockaddr *sae_srcaddr; /* optional source address */
+ socklen_t sae_srcaddrlen; /* size of source address */
+ const struct sockaddr *sae_dstaddr; /* destination address */
+ socklen_t sae_dstaddrlen; /* size of destination address */
+} sa_endpoints_t;
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * Structure used for manipulating linger option.
+ */
+struct linger {
+ int l_onoff; /* option on/off */
+ int l_linger; /* linger time */
+};
+
+#ifndef __APPLE__
+struct accept_filter_arg {
+ char af_name[16];
+ char af_arg[256 - 16];
+};
+#endif
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#ifdef __APPLE__
+
+/*
+ * Structure to control non-portable Sockets extension to POSIX
+ */
+struct so_np_extensions {
+ u_int32_t npx_flags;
+ u_int32_t npx_mask;
+};
+
+#define SONPX_SETOPTSHUT 0x000000001 /* flag for allowing setsockopt after shutdown */
+
+
+
+#endif
+#endif
+
+/*
+ * Level number for (get/set)sockopt() to apply to socket itself.
+ */
+#define SOL_SOCKET 0xffff /* options for socket level */
+
+
+/*
+ * Address families.
+ */
+#define AF_UNSPEC 0 /* unspecified */
+#define AF_UNIX 1 /* local to host (pipes) */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define AF_LOCAL AF_UNIX /* backward compatibility */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define AF_IMPLINK 3 /* arpanet imp addresses */
+#define AF_PUP 4 /* pup protocols: e.g. BSP */
+#define AF_CHAOS 5 /* mit CHAOS protocols */
+#define AF_NS 6 /* XEROX NS protocols */
+#define AF_ISO 7 /* ISO protocols */
+#define AF_OSI AF_ISO
+#define AF_ECMA 8 /* European computer manufacturers */
+#define AF_DATAKIT 9 /* datakit protocols */
+#define AF_CCITT 10 /* CCITT protocols, X.25 etc */
+#define AF_SNA 11 /* IBM SNA */
+#define AF_DECnet 12 /* DECnet */
+#define AF_DLI 13 /* DEC Direct data link interface */
+#define AF_LAT 14 /* LAT */
+#define AF_HYLINK 15 /* NSC Hyperchannel */
+#define AF_APPLETALK 16 /* Apple Talk */
+#define AF_ROUTE 17 /* Internal Routing Protocol */
+#define AF_LINK 18 /* Link layer interface */
+#define pseudo_AF_XTP 19 /* eXpress Transfer Protocol (no AF) */
+#define AF_COIP 20 /* connection-oriented IP, aka ST II */
+#define AF_CNT 21 /* Computer Network Technology */
+#define pseudo_AF_RTIP 22 /* Help Identify RTIP packets */
+#define AF_IPX 23 /* Novell Internet Protocol */
+#define AF_SIP 24 /* Simple Internet Protocol */
+#define pseudo_AF_PIP 25 /* Help Identify PIP packets */
+#define AF_NDRV 27 /* Network Driver 'raw' access */
+#define AF_ISDN 28 /* Integrated Services Digital Network */
+#define AF_E164 AF_ISDN /* CCITT E.164 recommendation */
+#define pseudo_AF_KEY 29 /* Internal key-management function */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+#define AF_INET6 30 /* IPv6 */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define AF_NATM 31 /* native ATM access */
+#define AF_SYSTEM 32 /* Kernel event messages */
+#define AF_NETBIOS 33 /* NetBIOS */
+#define AF_PPP 34 /* PPP communication protocol */
+#define pseudo_AF_HDRCMPLT 35 /* Used by BPF to not rewrite headers
+ * in interface output routine */
+#define AF_RESERVED_36 36 /* Reserved for internal usage */
+#define AF_IEEE80211 37 /* IEEE 802.11 protocol */
+#define AF_UTUN 38
+#define AF_VSOCK 40 /* VM Sockets */
+#define AF_MAX 41
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * [XSI] Structure used by kernel to store most addresses.
+ */
+struct sockaddr {
+ __uint8_t sa_len; /* total length */
+ sa_family_t sa_family; /* [XSI] address family */
+ char sa_data[14]; /* [XSI] addr value (actually larger) */
+};
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define SOCK_MAXADDRLEN 255 /* longest possible addresses */
+
+/*
+ * Structure used by kernel to pass protocol
+ * information in raw sockets.
+ */
+struct sockproto {
+ __uint16_t sp_family; /* address family */
+ __uint16_t sp_protocol; /* protocol */
+};
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * RFC 2553: protocol-independent placeholder for socket addresses
+ */
+#define _SS_MAXSIZE 128
+#define _SS_ALIGNSIZE (sizeof(__int64_t))
+#define _SS_PAD1SIZE \
+ (_SS_ALIGNSIZE - sizeof(__uint8_t) - sizeof(sa_family_t))
+#define _SS_PAD2SIZE \
+ (_SS_MAXSIZE - sizeof(__uint8_t) - sizeof(sa_family_t) - \
+ _SS_PAD1SIZE - _SS_ALIGNSIZE)
+
+/*
+ * [XSI] sockaddr_storage
+ */
+struct sockaddr_storage {
+ __uint8_t ss_len; /* address length */
+ sa_family_t ss_family; /* [XSI] address family */
+ char __ss_pad1[_SS_PAD1SIZE];
+ __int64_t __ss_align; /* force structure storage alignment */
+ char __ss_pad2[_SS_PAD2SIZE];
+};
+
+/*
+ * Protocol families, same as address families for now.
+ */
+#define PF_UNSPEC AF_UNSPEC
+#define PF_LOCAL AF_LOCAL
+#define PF_UNIX PF_LOCAL /* backward compatibility */
+#define PF_INET AF_INET
+#define PF_IMPLINK AF_IMPLINK
+#define PF_PUP AF_PUP
+#define PF_CHAOS AF_CHAOS
+#define PF_NS AF_NS
+#define PF_ISO AF_ISO
+#define PF_OSI AF_ISO
+#define PF_ECMA AF_ECMA
+#define PF_DATAKIT AF_DATAKIT
+#define PF_CCITT AF_CCITT
+#define PF_SNA AF_SNA
+#define PF_DECnet AF_DECnet
+#define PF_DLI AF_DLI
+#define PF_LAT AF_LAT
+#define PF_HYLINK AF_HYLINK
+#define PF_APPLETALK AF_APPLETALK
+#define PF_ROUTE AF_ROUTE
+#define PF_LINK AF_LINK
+#define PF_XTP pseudo_AF_XTP /* really just proto family, no AF */
+#define PF_COIP AF_COIP
+#define PF_CNT AF_CNT
+#define PF_SIP AF_SIP
+#define PF_IPX AF_IPX /* same format as AF_NS */
+#define PF_RTIP pseudo_AF_RTIP /* same format as AF_INET */
+#define PF_PIP pseudo_AF_PIP
+#define PF_NDRV AF_NDRV
+#define PF_ISDN AF_ISDN
+#define PF_KEY pseudo_AF_KEY
+#define PF_INET6 AF_INET6
+#define PF_NATM AF_NATM
+#define PF_SYSTEM AF_SYSTEM
+#define PF_NETBIOS AF_NETBIOS
+#define PF_PPP AF_PPP
+#define PF_RESERVED_36 AF_RESERVED_36
+#define PF_UTUN AF_UTUN
+#define PF_VSOCK AF_VSOCK
+#define PF_MAX AF_MAX
+
+/*
+ * These do not have socket-layer support:
+ */
+#define PF_VLAN ((uint32_t)0x766c616e) /* 'vlan' */
+#define PF_BOND ((uint32_t)0x626f6e64) /* 'bond' */
+
+/*
+ * Definitions for network related sysctl, CTL_NET.
+ *
+ * Second level is protocol family.
+ * Third level is protocol number.
+ *
+ * Further levels are defined by the individual families below.
+ */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define NET_MAXID AF_MAX
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * PF_ROUTE - Routing table
+ *
+ * Three additional levels are defined:
+ * Fourth: address family, 0 is wildcard
+ * Fifth: type of info, defined below
+ * Sixth: flag(s) to mask with for NET_RT_FLAGS
+ */
+#define NET_RT_DUMP 1 /* dump; may limit to a.f. */
+#define NET_RT_FLAGS 2 /* by flags, e.g. RESOLVING */
+#define NET_RT_IFLIST 3 /* survey interface list */
+#define NET_RT_STAT 4 /* routing statistics */
+#define NET_RT_TRASH 5 /* routes not in table but not freed */
+#define NET_RT_IFLIST2 6 /* interface list with addresses */
+#define NET_RT_DUMP2 7 /* dump; may limit to a.f. */
+/*
+ * Allows read access non-local host's MAC address
+ * if the process has neighbor cache entitlement.
+ */
+#define NET_RT_FLAGS_PRIV 10
+#define NET_RT_MAXID 11
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+
+
+
+/*
+ * Maximum queue length specifiable by listen.
+ */
+#define SOMAXCONN 128
+
+/*
+ * [XSI] Message header for recvmsg and sendmsg calls.
+ * Used value-result for recvmsg, value only for sendmsg.
+ */
+struct msghdr {
+ void *msg_name; /* [XSI] optional address */
+ socklen_t msg_namelen; /* [XSI] size of address */
+ struct iovec *msg_iov; /* [XSI] scatter/gather array */
+ int msg_iovlen; /* [XSI] # elements in msg_iov */
+ void *msg_control; /* [XSI] ancillary data, see below */
+ socklen_t msg_controllen; /* [XSI] ancillary data buffer len */
+ int msg_flags; /* [XSI] flags on received message */
+};
+
+
+
+#define MSG_OOB 0x1 /* process out-of-band data */
+#define MSG_PEEK 0x2 /* peek at incoming message */
+#define MSG_DONTROUTE 0x4 /* send without using routing tables */
+#define MSG_EOR 0x8 /* data completes record */
+#define MSG_TRUNC 0x10 /* data discarded before delivery */
+#define MSG_CTRUNC 0x20 /* control data lost before delivery */
+#define MSG_WAITALL 0x40 /* wait for full request or error */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define MSG_DONTWAIT 0x80 /* this message should be nonblocking */
+#define MSG_EOF 0x100 /* data completes connection */
+#ifdef __APPLE__
+#ifdef __APPLE_API_OBSOLETE
+#define MSG_WAITSTREAM 0x200 /* wait up to full request.. may return partial */
+#endif
+#define MSG_FLUSH 0x400 /* Start of 'hold' seq; dump so_temp, deprecated */
+#define MSG_HOLD 0x800 /* Hold frag in so_temp, deprecated */
+#define MSG_SEND 0x1000 /* Send the packet in so_temp, deprecated */
+#define MSG_HAVEMORE 0x2000 /* Data ready to be read */
+#define MSG_RCVMORE 0x4000 /* Data remains in current pkt */
+#endif
+#define MSG_NEEDSA 0x10000 /* Fail receive if socket address cannot be allocated */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+#if __DARWIN_C_LEVEL >= 200809L
+#define MSG_NOSIGNAL 0x80000 /* do not generate SIGPIPE on EOF */
+#endif /* __DARWIN_C_LEVEL */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * Header for ancillary data objects in msg_control buffer.
+ * Used for additional information with/about a datagram
+ * not expressible by flags. The format is a sequence
+ * of message elements headed by cmsghdr structures.
+ */
+struct cmsghdr {
+ socklen_t cmsg_len; /* [XSI] data byte count, including hdr */
+ int cmsg_level; /* [XSI] originating protocol */
+ int cmsg_type; /* [XSI] protocol-specific type */
+/* followed by unsigned char cmsg_data[]; */
+};
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#ifndef __APPLE__
+/*
+ * While we may have more groups than this, the cmsgcred struct must
+ * be able to fit in an mbuf, and NGROUPS_MAX is too large to allow
+ * this.
+ */
+#define CMGROUP_MAX 16
+
+/*
+ * Credentials structure, used to verify the identity of a peer
+ * process that has sent us a message. This is allocated by the
+ * peer process but filled in by the kernel. This prevents the
+ * peer from lying about its identity. (Note that cmcred_groups[0]
+ * is the effective GID.)
+ */
+struct cmsgcred {
+ pid_t cmcred_pid; /* PID of sending process */
+ uid_t cmcred_uid; /* real UID of sending process */
+ uid_t cmcred_euid; /* effective UID of sending process */
+ gid_t cmcred_gid; /* real GID of sending process */
+ short cmcred_ngroups; /* number or groups */
+ gid_t cmcred_groups[CMGROUP_MAX]; /* groups */
+};
+#endif
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/* given pointer to struct cmsghdr, return pointer to data */
+#define CMSG_DATA(cmsg) ((unsigned char *)(cmsg) + \
+ __DARWIN_ALIGN32(sizeof(struct cmsghdr)))
+
+/*
+ * RFC 2292 requires to check msg_controllen, in case that the kernel returns
+ * an empty list for some reasons.
+ */
+#define CMSG_FIRSTHDR(mhdr) \
+ ((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \
+ (struct cmsghdr *)(mhdr)->msg_control : \
+ (struct cmsghdr *)0L)
+
+
+/*
+ * Given pointer to struct cmsghdr, return pointer to next cmsghdr
+ * RFC 2292 says that CMSG_NXTHDR(mhdr, NULL) is equivalent to CMSG_FIRSTHDR(mhdr)
+ */
+#define CMSG_NXTHDR(mhdr, cmsg) \
+ ((char *)(cmsg) == (char *)0L ? CMSG_FIRSTHDR(mhdr) : \
+ ((((unsigned char *)(cmsg) + \
+ __DARWIN_ALIGN32((__uint32_t)(cmsg)->cmsg_len) + \
+ __DARWIN_ALIGN32(sizeof(struct cmsghdr))) > \
+ ((unsigned char *)(mhdr)->msg_control + \
+ (mhdr)->msg_controllen)) ? \
+ (struct cmsghdr *)0L /* NULL */ : \
+ (struct cmsghdr *)(void *)((unsigned char *)(cmsg) + \
+ __DARWIN_ALIGN32((__uint32_t)(cmsg)->cmsg_len))))
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/* RFC 2292 additions */
+#define CMSG_SPACE(l) (__DARWIN_ALIGN32(sizeof(struct cmsghdr)) + __DARWIN_ALIGN32(l))
+#define CMSG_LEN(l) (__DARWIN_ALIGN32(sizeof(struct cmsghdr)) + (l))
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/* "Socket"-level control message types: */
+#define SCM_RIGHTS 0x01 /* access rights (array of int) */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define SCM_TIMESTAMP 0x02 /* timestamp (struct timeval) */
+#define SCM_CREDS 0x03 /* process creds (struct cmsgcred) */
+#define SCM_TIMESTAMP_MONOTONIC 0x04 /* timestamp (uint64_t) */
+
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * howto arguments for shutdown(2), specified by Posix.1g.
+ */
+#define SHUT_RD 0 /* shut down the reading side */
+#define SHUT_WR 1 /* shut down the writing side */
+#define SHUT_RDWR 2 /* shut down both sides */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * sendfile(2) header/trailer struct
+ */
+struct sf_hdtr {
+ struct iovec *headers; /* pointer to an array of header struct iovec's */
+ int hdr_cnt; /* number of header iovec's */
+ struct iovec *trailers; /* pointer to an array of trailer struct iovec's */
+ int trl_cnt; /* number of trailer iovec's */
+};
+
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+
+__BEGIN_DECLS
+
+int accept(int, struct sockaddr * __restrict, socklen_t * __restrict)
+__DARWIN_ALIAS_C(accept);
+int bind(int, const struct sockaddr *, socklen_t) __DARWIN_ALIAS(bind);
+int connect(int, const struct sockaddr *, socklen_t) __DARWIN_ALIAS_C(connect);
+int getpeername(int, struct sockaddr * __restrict, socklen_t * __restrict)
+__DARWIN_ALIAS(getpeername);
+int getsockname(int, struct sockaddr * __restrict, socklen_t * __restrict)
+__DARWIN_ALIAS(getsockname);
+int getsockopt(int, int, int, void * __restrict, socklen_t * __restrict);
+int listen(int, int) __DARWIN_ALIAS(listen);
+ssize_t recv(int, void *, size_t, int) __DARWIN_ALIAS_C(recv);
+ssize_t recvfrom(int, void *, size_t, int, struct sockaddr * __restrict,
+ socklen_t * __restrict) __DARWIN_ALIAS_C(recvfrom);
+ssize_t recvmsg(int, struct msghdr *, int) __DARWIN_ALIAS_C(recvmsg);
+ssize_t send(int, const void *, size_t, int) __DARWIN_ALIAS_C(send);
+ssize_t sendmsg(int, const struct msghdr *, int) __DARWIN_ALIAS_C(sendmsg);
+ssize_t sendto(int, const void *, size_t,
+ int, const struct sockaddr *, socklen_t) __DARWIN_ALIAS_C(sendto);
+int setsockopt(int, int, int, const void *, socklen_t);
+int shutdown(int, int);
+int sockatmark(int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
+int socket(int, int, int);
+int socketpair(int, int, int, int *) __DARWIN_ALIAS(socketpair);
+
+#if !defined(_POSIX_C_SOURCE)
+int sendfile(int, int, off_t, off_t *, struct sf_hdtr *, int);
+#endif /* !_POSIX_C_SOURCE */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+void pfctlinput(int, struct sockaddr *);
+
+__API_AVAILABLE(macosx(10.11), ios(9.0), tvos(9.0), watchos(2.0))
+int connectx(int, const sa_endpoints_t *, sae_associd_t, unsigned int,
+ const struct iovec *, unsigned int, size_t *, sae_connid_t *);
+
+__API_AVAILABLE(macosx(10.11), ios(9.0), tvos(9.0), watchos(2.0))
+int disconnectx(int, sae_associd_t, sae_connid_t);
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+__END_DECLS
+
+
+#endif /* !_SYS_SOCKET_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/sockio.h b/lib/libc/include/aarch64-macos-gnu/sys/sockio.h
new file mode 100644
index 0000000000..9dc2ee7489
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/sockio.h
@@ -0,0 +1,180 @@
+/*
+ * Copyright (c) 2000-2019 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*-
+ * Copyright (c) 1982, 1986, 1990, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)sockio.h 8.1 (Berkeley) 3/28/94
+ */
+
+#ifndef _SYS_SOCKIO_H_
+#define _SYS_SOCKIO_H_
+
+#include <sys/appleapiopts.h>
+
+#include <sys/ioccom.h>
+
+/* Socket ioctl's. */
+#define SIOCSHIWAT _IOW('s', 0, int) /* set high watermark */
+#define SIOCGHIWAT _IOR('s', 1, int) /* get high watermark */
+#define SIOCSLOWAT _IOW('s', 2, int) /* set low watermark */
+#define SIOCGLOWAT _IOR('s', 3, int) /* get low watermark */
+#define SIOCATMARK _IOR('s', 7, int) /* at oob mark? */
+#define SIOCSPGRP _IOW('s', 8, int) /* set process group */
+#define SIOCGPGRP _IOR('s', 9, int) /* get process group */
+
+/*
+ * OSIOCGIF* ioctls are deprecated; they are kept for binary compatibility.
+ */
+#define SIOCSIFADDR _IOW('i', 12, struct ifreq) /* set ifnet address */
+#define SIOCSIFDSTADDR _IOW('i', 14, struct ifreq) /* set p-p address */
+#define SIOCSIFFLAGS _IOW('i', 16, struct ifreq) /* set ifnet flags */
+#define SIOCGIFFLAGS _IOWR('i', 17, struct ifreq) /* get ifnet flags */
+#define SIOCSIFBRDADDR _IOW('i', 19, struct ifreq) /* set broadcast addr */
+#define SIOCSIFNETMASK _IOW('i', 22, struct ifreq) /* set net addr mask */
+#define SIOCGIFMETRIC _IOWR('i', 23, struct ifreq) /* get IF metric */
+#define SIOCSIFMETRIC _IOW('i', 24, struct ifreq) /* set IF metric */
+#define SIOCDIFADDR _IOW('i', 25, struct ifreq) /* delete IF addr */
+#define SIOCAIFADDR _IOW('i', 26, struct ifaliasreq)/* add/chg IF alias */
+
+#define SIOCGIFADDR _IOWR('i', 33, struct ifreq) /* get ifnet address */
+#define SIOCGIFDSTADDR _IOWR('i', 34, struct ifreq) /* get p-p address */
+#define SIOCGIFBRDADDR _IOWR('i', 35, struct ifreq) /* get broadcast addr */
+#define SIOCGIFCONF _IOWR('i', 36, struct ifconf) /* get ifnet list */
+#define SIOCGIFNETMASK _IOWR('i', 37, struct ifreq) /* get net addr mask */
+#define SIOCAUTOADDR _IOWR('i', 38, struct ifreq) /* autoconf address */
+#define SIOCAUTONETMASK _IOW('i', 39, struct ifreq) /* autoconf netmask */
+#define SIOCARPIPLL _IOWR('i', 40, struct ifreq) /* arp for IPv4LL address */
+
+#define SIOCADDMULTI _IOW('i', 49, struct ifreq) /* add m'cast addr */
+#define SIOCDELMULTI _IOW('i', 50, struct ifreq) /* del m'cast addr */
+#define SIOCGIFMTU _IOWR('i', 51, struct ifreq) /* get IF mtu */
+#define SIOCSIFMTU _IOW('i', 52, struct ifreq) /* set IF mtu */
+#define SIOCGIFPHYS _IOWR('i', 53, struct ifreq) /* get IF wire */
+#define SIOCSIFPHYS _IOW('i', 54, struct ifreq) /* set IF wire */
+#define SIOCSIFMEDIA _IOWR('i', 55, struct ifreq) /* set net media */
+
+/*
+ * The command SIOCGIFMEDIA does not allow a process to access the extended
+ * media subtype and extended subtype values are returned as IFM_OTHER.
+ */
+#define SIOCGIFMEDIA _IOWR('i', 56, struct ifmediareq) /* get compatible net media */
+
+#define SIOCSIFGENERIC _IOW('i', 57, struct ifreq) /* generic IF set op */
+#define SIOCGIFGENERIC _IOWR('i', 58, struct ifreq) /* generic IF get op */
+#define SIOCRSLVMULTI _IOWR('i', 59, struct rslvmulti_req)
+
+#define SIOCSIFLLADDR _IOW('i', 60, struct ifreq) /* set link level addr */
+#define SIOCGIFSTATUS _IOWR('i', 61, struct ifstat) /* get IF status */
+#define SIOCSIFPHYADDR _IOW('i', 62, struct ifaliasreq) /* set gif addres */
+#define SIOCGIFPSRCADDR _IOWR('i', 63, struct ifreq) /* get gif psrc addr */
+#define SIOCGIFPDSTADDR _IOWR('i', 64, struct ifreq) /* get gif pdst addr */
+#define SIOCDIFPHYADDR _IOW('i', 65, struct ifreq) /* delete gif addrs */
+
+#define SIOCGIFDEVMTU _IOWR('i', 68, struct ifreq) /* get if ifdevmtu */
+#define SIOCSIFALTMTU _IOW('i', 69, struct ifreq) /* set if alternate mtu */
+#define SIOCGIFALTMTU _IOWR('i', 72, struct ifreq) /* get if alternate mtu */
+#define SIOCSIFBOND _IOW('i', 70, struct ifreq) /* set bond if config */
+#define SIOCGIFBOND _IOWR('i', 71, struct ifreq) /* get bond if config */
+
+/*
+ * The command SIOCGIFXMEDIA is meant to be used by processes only to be able
+ * to access the extended media subtypes with the extended IFM_TMASK.
+ *
+ * An ifnet must not implement SIOCGIFXMEDIA as it gets the extended
+ * media subtypes by simply compiling with <net/if_media.h>
+ */
+#define SIOCGIFXMEDIA _IOWR('i', 72, struct ifmediareq) /* get net extended media */
+
+
+#define SIOCSIFCAP _IOW('i', 90, struct ifreq) /* set IF features */
+#define SIOCGIFCAP _IOWR('i', 91, struct ifreq) /* get IF features */
+
+#define SIOCIFCREATE _IOWR('i', 120, struct ifreq) /* create clone if */
+#define SIOCIFDESTROY _IOW('i', 121, struct ifreq) /* destroy clone if */
+#define SIOCIFCREATE2 _IOWR('i', 122, struct ifreq) /* create clone if with data */
+
+#define SIOCSDRVSPEC _IOW('i', 123, struct ifdrv) /* set driver-specific
+ * parameters */
+#define SIOCGDRVSPEC _IOWR('i', 123, struct ifdrv) /* get driver-specific
+ * parameters */
+#define SIOCSIFVLAN _IOW('i', 126, struct ifreq) /* set VLAN config */
+#define SIOCGIFVLAN _IOWR('i', 127, struct ifreq) /* get VLAN config */
+#define SIOCSETVLAN SIOCSIFVLAN
+#define SIOCGETVLAN SIOCGIFVLAN
+
+#define SIOCIFGCLONERS _IOWR('i', 129, struct if_clonereq) /* get cloners */
+
+#define SIOCGIFASYNCMAP _IOWR('i', 124, struct ifreq) /* get ppp asyncmap */
+#define SIOCSIFASYNCMAP _IOW('i', 125, struct ifreq) /* set ppp asyncmap */
+
+
+
+#define SIOCGIFMAC _IOWR('i', 130, struct ifreq) /* deprecated */
+#define SIOCSIFMAC _IOW('i', 131, struct ifreq) /* deprecated */
+#define SIOCSIFKPI _IOW('i', 134, struct ifreq) /* set interface kext param - root only */
+#define SIOCGIFKPI _IOWR('i', 135, struct ifreq) /* get interface kext param */
+
+#define SIOCGIFWAKEFLAGS _IOWR('i', 136, struct ifreq) /* get interface wake property flags */
+
+#define SIOCGIFFUNCTIONALTYPE _IOWR('i', 173, struct ifreq) /* get interface functional type */
+
+#define SIOCSIF6LOWPAN _IOW('i', 196, struct ifreq) /* set 6LOWPAN config */
+#define SIOCGIF6LOWPAN _IOWR('i', 197, struct ifreq) /* get 6LOWPAN config */
+
+
+#endif /* !_SYS_SOCKIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/spawn.h b/lib/libc/include/aarch64-macos-gnu/sys/spawn.h
new file mode 100644
index 0000000000..aeb42a9bb1
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/spawn.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) 2006-2020 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+
+/*
+ * [SPN] Support for _POSIX_SPAWN
+ *
+ * This header contains information that is shared between the user space
+ * and kernel versions of the posix_spawn() code. Shared elements are all
+ * manifest constants, at the current time.
+ */
+
+#ifndef _SYS_SPAWN_H_
+#define _SYS_SPAWN_H_
+
+/*
+ * Possible bit values which may be OR'ed together and provided as the second
+ * parameter to posix_spawnattr_setflags() or implicit returned in the value of
+ * the second parameter to posix_spawnattr_getflags().
+ */
+#define POSIX_SPAWN_RESETIDS 0x0001 /* [SPN] R[UG]ID not E[UG]ID */
+#define POSIX_SPAWN_SETPGROUP 0x0002 /* [SPN] set non-parent PGID */
+#define POSIX_SPAWN_SETSIGDEF 0x0004 /* [SPN] reset sigset default */
+#define POSIX_SPAWN_SETSIGMASK 0x0008 /* [SPN] set signal mask */
+
+#if 0 /* _POSIX_PRIORITY_SCHEDULING [PS] : not supported */
+#define POSIX_SPAWN_SETSCHEDPARAM 0x0010
+#define POSIX_SPAWN_SETSCHEDULER 0x0020
+#endif /* 0 */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * Darwin-specific flags
+ */
+#define POSIX_SPAWN_SETEXEC 0x0040
+#define POSIX_SPAWN_START_SUSPENDED 0x0080
+#define POSIX_SPAWN_SETSID 0x0400
+#define POSIX_SPAWN_CLOEXEC_DEFAULT 0x4000
+
+#define _POSIX_SPAWN_RESLIDE 0x0800
+
+/*
+ * Possible values to be set for the process control actions on resource starvation.
+ * POSIX_SPAWN_PCONTROL_THROTTLE indicates that the process is to be throttled on starvation.
+ * POSIX_SPAWN_PCONTROL_SUSPEND indicates that the process is to be suspended on starvation.
+ * POSIX_SPAWN_PCONTROL_KILL indicates that the process is to be terminated on starvation.
+ */
+#define POSIX_SPAWN_PCONTROL_NONE 0x0000
+#define POSIX_SPAWN_PCONTROL_THROTTLE 0x0001
+#define POSIX_SPAWN_PCONTROL_SUSPEND 0x0002
+#define POSIX_SPAWN_PCONTROL_KILL 0x0003
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+#endif /* _SYS_SPAWN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/stat.h b/lib/libc/include/aarch64-macos-gnu/sys/stat.h
new file mode 100644
index 0000000000..fb60146e5c
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/stat.h
@@ -0,0 +1,432 @@
+/*
+ * Copyright (c) 2000-2014 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*-
+ * Copyright (c) 1982, 1986, 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ * (c) UNIX System Laboratories, Inc.
+ * All or some portions of this file are derived from material licensed
+ * to the University of California by American Telephone and Telegraph
+ * Co. or Unix System Laboratories, Inc. and are reproduced herein with
+ * the permission of UNIX System Laboratories, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)stat.h 8.9 (Berkeley) 8/17/94
+ */
+
+
+#ifndef _SYS_STAT_H_
+#define _SYS_STAT_H_
+
+#include <sys/_types.h>
+#include <sys/cdefs.h>
+#include <Availability.h>
+
+/* [XSI] The timespec structure may be defined as described in <time.h> */
+#include <sys/_types/_timespec.h>
+
+/*
+ * [XSI] The blkcnt_t, blksize_t, dev_t, ino_t, mode_t, nlink_t, uid_t,
+ * gid_t, off_t, and time_t types shall be defined as described in
+ * <sys/types.h>.
+ */
+#include <sys/_types/_blkcnt_t.h>
+#include <sys/_types/_blksize_t.h>
+#include <sys/_types/_dev_t.h> /* device number */
+#include <sys/_types/_ino_t.h>
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#include <sys/_types/_ino64_t.h>
+#endif /* !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) */
+
+#include <sys/_types/_mode_t.h>
+#include <sys/_types/_nlink_t.h>
+#include <sys/_types/_uid_t.h>
+#include <sys/_types/_gid_t.h>
+#include <sys/_types/_off_t.h>
+#include <sys/_types/_time_t.h>
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * XXX So deprecated, it would make your head spin
+ *
+ * The old stat structure. In fact, this is not used by the kernel at all,
+ * and should not be used by user space, and should be removed from this
+ * header file entirely (along with the unused cvtstat() prototype in
+ * vnode_internal.h).
+ */
+struct ostat {
+ __uint16_t st_dev; /* inode's device */
+ ino_t st_ino; /* inode's number */
+ mode_t st_mode; /* inode protection mode */
+ nlink_t st_nlink; /* number of hard links */
+ __uint16_t st_uid; /* user ID of the file's owner */
+ __uint16_t st_gid; /* group ID of the file's group */
+ __uint16_t st_rdev; /* device type */
+ __int32_t st_size; /* file size, in bytes */
+ struct timespec st_atimespec; /* time of last access */
+ struct timespec st_mtimespec; /* time of last data modification */
+ struct timespec st_ctimespec; /* time of last file status change */
+ __int32_t st_blksize; /* optimal blocksize for I/O */
+ __int32_t st_blocks; /* blocks allocated for file */
+ __uint32_t st_flags; /* user defined flags for file */
+ __uint32_t st_gen; /* file generation number */
+};
+
+#define __DARWIN_STRUCT_STAT64_TIMES \
+ struct timespec st_atimespec; /* time of last access */ \
+ struct timespec st_mtimespec; /* time of last data modification */ \
+ struct timespec st_ctimespec; /* time of last status change */ \
+ struct timespec st_birthtimespec; /* time of file creation(birth) */
+
+#else /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+
+#define __DARWIN_STRUCT_STAT64_TIMES \
+ time_t st_atime; /* [XSI] Time of last access */ \
+ long st_atimensec; /* nsec of last access */ \
+ time_t st_mtime; /* [XSI] Last data modification time */ \
+ long st_mtimensec; /* last data modification nsec */ \
+ time_t st_ctime; /* [XSI] Time of last status change */ \
+ long st_ctimensec; /* nsec of last status change */ \
+ time_t st_birthtime; /* File creation time(birth) */ \
+ long st_birthtimensec; /* nsec of File creation time */
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * This structure is used as the second parameter to the fstat64(),
+ * lstat64(), and stat64() functions, and for struct stat when
+ * __DARWIN_64_BIT_INO_T is set. __DARWIN_STRUCT_STAT64 is defined
+ * above, depending on whether we use struct timespec or the direct
+ * components.
+ *
+ * This is simillar to stat except for 64bit inode number
+ * number instead of 32bit ino_t and the addition of create(birth) time.
+ */
+#define __DARWIN_STRUCT_STAT64 { \
+ dev_t st_dev; /* [XSI] ID of device containing file */ \
+ mode_t st_mode; /* [XSI] Mode of file (see below) */ \
+ nlink_t st_nlink; /* [XSI] Number of hard links */ \
+ __darwin_ino64_t st_ino; /* [XSI] File serial number */ \
+ uid_t st_uid; /* [XSI] User ID of the file */ \
+ gid_t st_gid; /* [XSI] Group ID of the file */ \
+ dev_t st_rdev; /* [XSI] Device ID */ \
+ __DARWIN_STRUCT_STAT64_TIMES \
+ off_t st_size; /* [XSI] file size, in bytes */ \
+ blkcnt_t st_blocks; /* [XSI] blocks allocated for file */ \
+ blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */ \
+ __uint32_t st_flags; /* user defined flags for file */ \
+ __uint32_t st_gen; /* file generation number */ \
+ __int32_t st_lspare; /* RESERVED: DO NOT USE! */ \
+ __int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */ \
+}
+
+/*
+ * [XSI] This structure is used as the second parameter to the fstat(),
+ * lstat(), and stat() functions.
+ */
+#if __DARWIN_64_BIT_INO_T
+
+struct stat __DARWIN_STRUCT_STAT64;
+
+#else /* !__DARWIN_64_BIT_INO_T */
+
+struct stat {
+ dev_t st_dev; /* [XSI] ID of device containing file */
+ ino_t st_ino; /* [XSI] File serial number */
+ mode_t st_mode; /* [XSI] Mode of file (see below) */
+ nlink_t st_nlink; /* [XSI] Number of hard links */
+ uid_t st_uid; /* [XSI] User ID of the file */
+ gid_t st_gid; /* [XSI] Group ID of the file */
+ dev_t st_rdev; /* [XSI] Device ID */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+ struct timespec st_atimespec; /* time of last access */
+ struct timespec st_mtimespec; /* time of last data modification */
+ struct timespec st_ctimespec; /* time of last status change */
+#else
+ time_t st_atime; /* [XSI] Time of last access */
+ long st_atimensec; /* nsec of last access */
+ time_t st_mtime; /* [XSI] Last data modification time */
+ long st_mtimensec; /* last data modification nsec */
+ time_t st_ctime; /* [XSI] Time of last status change */
+ long st_ctimensec; /* nsec of last status change */
+#endif
+ off_t st_size; /* [XSI] file size, in bytes */
+ blkcnt_t st_blocks; /* [XSI] blocks allocated for file */
+ blksize_t st_blksize; /* [XSI] optimal blocksize for I/O */
+ __uint32_t st_flags; /* user defined flags for file */
+ __uint32_t st_gen; /* file generation number */
+ __int32_t st_lspare; /* RESERVED: DO NOT USE! */
+ __int64_t st_qspare[2]; /* RESERVED: DO NOT USE! */
+};
+
+#endif /* __DARWIN_64_BIT_INO_T */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+
+#if !__DARWIN_ONLY_64_BIT_INO_T
+
+struct stat64 __DARWIN_STRUCT_STAT64;
+
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+
+
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define st_atime st_atimespec.tv_sec
+#define st_mtime st_mtimespec.tv_sec
+#define st_ctime st_ctimespec.tv_sec
+#define st_birthtime st_birthtimespec.tv_sec
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+/*
+ * [XSI] The following are symbolic names for the values of type mode_t. They
+ * are bitmap values.
+ */
+#include <sys/_types/_s_ifmt.h>
+
+/*
+ * [XSI] The following macros shall be provided to test whether a file is
+ * of the specified type. The value m supplied to the macros is the value
+ * of st_mode from a stat structure. The macro shall evaluate to a non-zero
+ * value if the test is true; 0 if the test is false.
+ */
+#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) /* block special */
+#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) /* char special */
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) /* directory */
+#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) /* fifo or socket */
+#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) /* regular file */
+#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) /* symbolic link */
+#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) /* socket */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define S_ISWHT(m) (((m) & S_IFMT) == S_IFWHT) /* OBSOLETE: whiteout */
+#endif
+
+/*
+ * [XSI] The implementation may implement message queues, semaphores, or
+ * shared memory objects as distinct file types. The following macros
+ * shall be provided to test whether a file is of the specified type.
+ * The value of the buf argument supplied to the macros is a pointer to
+ * a stat structure. The macro shall evaluate to a non-zero value if
+ * the specified object is implemented as a distinct file type and the
+ * specified file type is contained in the stat structure referenced by
+ * buf. Otherwise, the macro shall evaluate to zero.
+ *
+ * NOTE: The current implementation does not do this, although
+ * this may change in future revisions, and co currently only
+ * provides these macros to ensure source compatability with
+ * implementations which do.
+ */
+#define S_TYPEISMQ(buf) (0) /* Test for a message queue */
+#define S_TYPEISSEM(buf) (0) /* Test for a semaphore */
+#define S_TYPEISSHM(buf) (0) /* Test for a shared memory object */
+
+/*
+ * [TYM] The implementation may implement typed memory objects as distinct
+ * file types, and the following macro shall test whether a file is of the
+ * specified type. The value of the buf argument supplied to the macros is
+ * a pointer to a stat structure. The macro shall evaluate to a non-zero
+ * value if the specified object is implemented as a distinct file type and
+ * the specified file type is contained in the stat structure referenced by
+ * buf. Otherwise, the macro shall evaluate to zero.
+ *
+ * NOTE: The current implementation does not do this, although
+ * this may change in future revisions, and co currently only
+ * provides this macro to ensure source compatability with
+ * implementations which do.
+ */
+#define S_TYPEISTMO(buf) (0) /* Test for a typed memory object */
+
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO) /* 0777 */
+ /* 7777 */
+#define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
+/* 0666 */
+#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
+
+#define S_BLKSIZE 512 /* block size used in the stat struct */
+
+/*
+ * Definitions of flags stored in file flags word.
+ *
+ * Super-user and owner changeable flags.
+ */
+#define UF_SETTABLE 0x0000ffff /* mask of owner changeable flags */
+#define UF_NODUMP 0x00000001 /* do not dump file */
+#define UF_IMMUTABLE 0x00000002 /* file may not be changed */
+#define UF_APPEND 0x00000004 /* writes to file may only append */
+#define UF_OPAQUE 0x00000008 /* directory is opaque wrt. union */
+/*
+ * The following bit is reserved for FreeBSD. It is not implemented
+ * in Mac OS X.
+ */
+/* #define UF_NOUNLINK 0x00000010 */ /* file may not be removed or renamed */
+#define UF_COMPRESSED 0x00000020 /* file is compressed (some file-systems) */
+
+/* UF_TRACKED is used for dealing with document IDs. We no longer issue
+ * notifications for deletes or renames for files which have UF_TRACKED set. */
+#define UF_TRACKED 0x00000040
+
+#define UF_DATAVAULT 0x00000080 /* entitlement required for reading */
+ /* and writing */
+
+/* Bits 0x0100 through 0x4000 are currently undefined. */
+#define UF_HIDDEN 0x00008000 /* hint that this item should not be */
+ /* displayed in a GUI */
+/*
+ * Super-user changeable flags.
+ */
+#define SF_SUPPORTED 0x009f0000 /* mask of superuser supported flags */
+#define SF_SETTABLE 0x3fff0000 /* mask of superuser changeable flags */
+#define SF_SYNTHETIC 0xc0000000 /* mask of system read-only synthetic flags */
+#define SF_ARCHIVED 0x00010000 /* file is archived */
+#define SF_IMMUTABLE 0x00020000 /* file may not be changed */
+#define SF_APPEND 0x00040000 /* writes to file may only append */
+#define SF_RESTRICTED 0x00080000 /* entitlement required for writing */
+#define SF_NOUNLINK 0x00100000 /* Item may not be removed, renamed or mounted on */
+
+/*
+ * The following two bits are reserved for FreeBSD. They are not
+ * implemented in Mac OS X.
+ */
+/* #define SF_SNAPSHOT 0x00200000 */ /* snapshot inode */
+/* NOTE: There is no SF_HIDDEN bit. */
+
+#define SF_FIRMLINK 0x00800000 /* file is a firmlink */
+
+/*
+ * Synthetic flags.
+ *
+ * These are read-only. We keep them out of SF_SUPPORTED so that
+ * attempts to set them will fail.
+ */
+#define SF_DATALESS 0x40000000 /* file is dataless object */
+
+
+#endif
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/*
+ * Extended flags ("EF") returned by ATTR_CMNEXT_EXT_FLAGS from getattrlist/getattrlistbulk
+ */
+#define EF_MAY_SHARE_BLOCKS 0x00000001 /* file may share blocks with another file */
+#define EF_NO_XATTRS 0x00000002 /* file has no xattrs at all */
+#define EF_IS_SYNC_ROOT 0x00000004 /* file is a sync root for iCloud */
+#define EF_IS_PURGEABLE 0x00000008 /* file is purgeable */
+#define EF_IS_SPARSE 0x00000010 /* file has at least one sparse region */
+#define EF_IS_SYNTHETIC 0x00000020 /* a synthetic directory/symlink */
+#endif
+
+
+
+__BEGIN_DECLS
+/* [XSI] */
+int chmod(const char *, mode_t) __DARWIN_ALIAS(chmod);
+int fchmod(int, mode_t) __DARWIN_ALIAS(fchmod);
+int fstat(int, struct stat *) __DARWIN_INODE64(fstat);
+int lstat(const char *, struct stat *) __DARWIN_INODE64(lstat);
+int mkdir(const char *, mode_t);
+int mkfifo(const char *, mode_t);
+int stat(const char *, struct stat *) __DARWIN_INODE64(stat);
+int mknod(const char *, mode_t, dev_t);
+mode_t umask(mode_t);
+
+#if __DARWIN_C_LEVEL >= 200809L
+int fchmodat(int, const char *, mode_t, int) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+int fstatat(int, const char *, struct stat *, int) __DARWIN_INODE64(fstatat) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+int mkdirat(int, const char *, mode_t) __OSX_AVAILABLE_STARTING(__MAC_10_10, __IPHONE_8_0);
+
+#define UTIME_NOW -1
+#define UTIME_OMIT -2
+
+int futimens(int __fd, const struct timespec __times[2]) __API_AVAILABLE(macosx(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+int utimensat(int __fd, const char *__path, const struct timespec __times[2],
+ int __flag) __API_AVAILABLE(macosx(10.13), ios(11.0), tvos(11.0), watchos(4.0));
+#endif
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+
+#include <sys/_types/_filesec_t.h>
+
+int chflags(const char *, __uint32_t);
+int chmodx_np(const char *, filesec_t);
+int fchflags(int, __uint32_t);
+int fchmodx_np(int, filesec_t);
+int fstatx_np(int, struct stat *, filesec_t) __DARWIN_INODE64(fstatx_np);
+int lchflags(const char *, __uint32_t) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
+int lchmod(const char *, mode_t) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
+int lstatx_np(const char *, struct stat *, filesec_t) __DARWIN_INODE64(lstatx_np);
+int mkdirx_np(const char *, filesec_t);
+int mkfifox_np(const char *, filesec_t);
+int statx_np(const char *, struct stat *, filesec_t) __DARWIN_INODE64(statx_np);
+int umaskx_np(filesec_t) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_4, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+
+#if !__DARWIN_ONLY_64_BIT_INO_T
+/* The following deprecated routines are simillar to stat and friends except provide struct stat64 instead of struct stat */
+int fstatx64_np(int, struct stat64 *, filesec_t) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+int lstatx64_np(const char *, struct stat64 *, filesec_t) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+int statx64_np(const char *, struct stat64 *, filesec_t) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+int fstat64(int, struct stat64 *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+int lstat64(const char *, struct stat64 *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+int stat64(const char *, struct stat64 *) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_5, __MAC_10_6, __IPHONE_NA, __IPHONE_NA);
+#endif /* !__DARWIN_ONLY_64_BIT_INO_T */
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+__END_DECLS
+#endif /* !_SYS_STAT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/sysctl.h b/lib/libc/include/aarch64-macos-gnu/sys/sysctl.h
new file mode 100644
index 0000000000..80dbee50aa
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/sysctl.h
@@ -0,0 +1,779 @@
+/*
+ * Copyright (c) 2000-2019 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*
+ * Copyright (c) 1989, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Mike Karels at Berkeley Software Design, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)sysctl.h 8.1 (Berkeley) 6/2/93
+ */
+/*
+ * NOTICE: This file was modified by SPARTA, Inc. in 2005 to introduce
+ * support for mandatory and extensible security protections. This notice
+ * is included in support of clause 2.2 (b) of the Apple Public License,
+ * Version 2.0.
+ */
+
+#ifndef _SYS_SYSCTL_H_
+#define _SYS_SYSCTL_H_
+
+/*
+ * These are for the eproc structure defined below.
+ */
+#include <sys/cdefs.h>
+
+#include <sys/appleapiopts.h>
+#include <sys/time.h>
+#include <sys/ucred.h>
+#include <sys/proc.h>
+#include <sys/vm.h>
+
+
+/*
+ * Definitions for sysctl call. The sysctl call uses a hierarchical name
+ * for objects that can be examined or modified. The name is expressed as
+ * a sequence of integers. Like a file path name, the meaning of each
+ * component depends on its place in the hierarchy. The top-level and kern
+ * identifiers are defined here, and other identifiers are defined in the
+ * respective subsystem header files.
+ */
+
+#define CTL_MAXNAME 12 /* largest number of components supported */
+
+/*
+ * Each subsystem defined by sysctl defines a list of variables
+ * for that subsystem. Each name is either a node with further
+ * levels defined below it, or it is a leaf of some particular
+ * type given below. Each sysctl level defines a set of name/type
+ * pairs to be used by sysctl(1) in manipulating the subsystem.
+ *
+ * When declaring new sysctl names, use the CTLFLAG_LOCKED flag in the
+ * type to indicate that all necessary locking will be handled
+ * within the sysctl.
+ *
+ * Any sysctl defined without CTLFLAG_LOCKED is considered legacy
+ * and will be protected by a global mutex.
+ *
+ * Note: This is not optimal, so it is best to handle locking
+ * yourself, if you are able to do so. A simple design
+ * pattern for use to avoid in a single function known
+ * to potentially be in the paging path ot doing a DMA
+ * to physical memory in a user space process is:
+ *
+ * lock
+ * perform operation vs. local buffer
+ * unlock
+ * SYSCTL_OUT(rey, local buffer, length)
+ *
+ * ...this assumes you are not using a deep call graph
+ * or are unable to pass a local buffer address as a
+ * parameter into your deep call graph.
+ *
+ * Note that very large user buffers can fail the wire
+ * if to do so would require more physical pages than
+ * are available (the caller will get an ENOMEM error,
+ * see sysctl_mem_hold() for details).
+ */
+struct ctlname {
+ char *ctl_name; /* subsystem name */
+ int ctl_type; /* type of name */
+};
+
+#define CTLTYPE 0xf /* Mask for the type */
+#define CTLTYPE_NODE 1 /* name is a node */
+#define CTLTYPE_INT 2 /* name describes an integer */
+#define CTLTYPE_STRING 3 /* name describes a string */
+#define CTLTYPE_QUAD 4 /* name describes a 64-bit number */
+#define CTLTYPE_OPAQUE 5 /* name describes a structure */
+#define CTLTYPE_STRUCT CTLTYPE_OPAQUE /* name describes a structure */
+
+#define CTLFLAG_RD 0x80000000 /* Allow reads of variable */
+#define CTLFLAG_WR 0x40000000 /* Allow writes to the variable */
+#define CTLFLAG_RW (CTLFLAG_RD|CTLFLAG_WR)
+#define CTLFLAG_NOLOCK 0x20000000 /* XXX Don't Lock */
+#define CTLFLAG_ANYBODY 0x10000000 /* All users can set this var */
+#define CTLFLAG_SECURE 0x08000000 /* Permit set only if securelevel<=0 */
+#define CTLFLAG_MASKED 0x04000000 /* deprecated variable, do not display */
+#define CTLFLAG_NOAUTO 0x02000000 /* do not auto-register */
+#define CTLFLAG_KERN 0x01000000 /* valid inside the kernel */
+#define CTLFLAG_LOCKED 0x00800000 /* node will handle locking itself */
+#define CTLFLAG_OID2 0x00400000 /* struct sysctl_oid has version info */
+
+/*
+ * USE THIS instead of a hardwired number from the categories below
+ * to get dynamically assigned sysctl entries using the linker-set
+ * technology. This is the way nearly all new sysctl variables should
+ * be implemented.
+ *
+ * e.g. SYSCTL_INT(_parent, OID_AUTO, name, CTLFLAG_RW, &variable, 0, "");
+ *
+ * Note that linker set technology will automatically register all nodes
+ * declared like this on kernel initialization, UNLESS they are defined
+ * in I/O-Kit. In this case, you have to call sysctl_register_oid()
+ * manually - just like in a KEXT.
+ */
+#define OID_AUTO (-1)
+#define OID_AUTO_START 100 /* conventional */
+
+
+#define SYSCTL_DEF_ENABLED
+
+#ifdef SYSCTL_DEF_ENABLED
+/*
+ * Top-level identifiers
+ */
+#define CTL_UNSPEC 0 /* unused */
+#define CTL_KERN 1 /* "high kernel": proc, limits */
+#define CTL_VM 2 /* virtual memory */
+#define CTL_VFS 3 /* file system, mount type is next */
+#define CTL_NET 4 /* network, see socket.h */
+#define CTL_DEBUG 5 /* debugging parameters */
+#define CTL_HW 6 /* generic cpu/io */
+#define CTL_MACHDEP 7 /* machine dependent */
+#define CTL_USER 8 /* user-level */
+#define CTL_MAXID 9 /* number of valid top-level ids */
+
+#define CTL_NAMES { \
+ { 0, 0 }, \
+ { "kern", CTLTYPE_NODE }, \
+ { "vm", CTLTYPE_NODE }, \
+ { "vfs", CTLTYPE_NODE }, \
+ { "net", CTLTYPE_NODE }, \
+ { "debug", CTLTYPE_NODE }, \
+ { "hw", CTLTYPE_NODE }, \
+ { "machdep", CTLTYPE_NODE }, \
+ { "user", CTLTYPE_NODE }, \
+}
+
+/*
+ * CTL_KERN identifiers
+ */
+#define KERN_OSTYPE 1 /* string: system version */
+#define KERN_OSRELEASE 2 /* string: system release */
+#define KERN_OSREV 3 /* int: system revision */
+#define KERN_VERSION 4 /* string: compile time info */
+#define KERN_MAXVNODES 5 /* int: max vnodes */
+#define KERN_MAXPROC 6 /* int: max processes */
+#define KERN_MAXFILES 7 /* int: max open files */
+#define KERN_ARGMAX 8 /* int: max arguments to exec */
+#define KERN_SECURELVL 9 /* int: system security level */
+#define KERN_HOSTNAME 10 /* string: hostname */
+#define KERN_HOSTID 11 /* int: host identifier */
+#define KERN_CLOCKRATE 12 /* struct: struct clockrate */
+#define KERN_VNODE 13 /* struct: vnode structures */
+#define KERN_PROC 14 /* struct: process entries */
+#define KERN_FILE 15 /* struct: file entries */
+#define KERN_PROF 16 /* node: kernel profiling info */
+#define KERN_POSIX1 17 /* int: POSIX.1 version */
+#define KERN_NGROUPS 18 /* int: # of supplemental group ids */
+#define KERN_JOB_CONTROL 19 /* int: is job control available */
+#define KERN_SAVED_IDS 20 /* int: saved set-user/group-ID */
+#define KERN_BOOTTIME 21 /* struct: time kernel was booted */
+#define KERN_NISDOMAINNAME 22 /* string: YP domain name */
+#define KERN_DOMAINNAME KERN_NISDOMAINNAME
+#define KERN_MAXPARTITIONS 23 /* int: number of partitions/disk */
+#define KERN_KDEBUG 24 /* int: kernel trace points */
+#define KERN_UPDATEINTERVAL 25 /* int: update process sleep time */
+#define KERN_OSRELDATE 26 /* int: OS release date */
+#define KERN_NTP_PLL 27 /* node: NTP PLL control */
+#define KERN_BOOTFILE 28 /* string: name of booted kernel */
+#define KERN_MAXFILESPERPROC 29 /* int: max open files per proc */
+#define KERN_MAXPROCPERUID 30 /* int: max processes per uid */
+#define KERN_DUMPDEV 31 /* dev_t: device to dump on */
+#define KERN_IPC 32 /* node: anything related to IPC */
+#define KERN_DUMMY 33 /* unused */
+#define KERN_PS_STRINGS 34 /* int: address of PS_STRINGS */
+#define KERN_USRSTACK32 35 /* int: address of USRSTACK */
+#define KERN_LOGSIGEXIT 36 /* int: do we log sigexit procs? */
+#define KERN_SYMFILE 37 /* string: kernel symbol filename */
+#define KERN_PROCARGS 38
+/* 39 was KERN_PCSAMPLES... now obsolete */
+#define KERN_NETBOOT 40 /* int: are we netbooted? 1=yes,0=no */
+/* 41 was KERN_PANICINFO : panic UI information (deprecated) */
+#define KERN_SYSV 42 /* node: System V IPC information */
+#define KERN_AFFINITY 43 /* xxx */
+#define KERN_TRANSLATE 44 /* xxx */
+#define KERN_CLASSIC KERN_TRANSLATE /* XXX backwards compat */
+#define KERN_EXEC 45 /* xxx */
+#define KERN_CLASSICHANDLER KERN_EXEC /* XXX backwards compatibility */
+#define KERN_AIOMAX 46 /* int: max aio requests */
+#define KERN_AIOPROCMAX 47 /* int: max aio requests per process */
+#define KERN_AIOTHREADS 48 /* int: max aio worker threads */
+#ifdef __APPLE_API_UNSTABLE
+#define KERN_PROCARGS2 49
+#endif /* __APPLE_API_UNSTABLE */
+#define KERN_COREFILE 50 /* string: corefile format string */
+#define KERN_COREDUMP 51 /* int: whether to coredump at all */
+#define KERN_SUGID_COREDUMP 52 /* int: whether to dump SUGID cores */
+#define KERN_PROCDELAYTERM 53 /* int: set/reset current proc for delayed termination during shutdown */
+#define KERN_SHREG_PRIVATIZABLE 54 /* int: can shared regions be privatized ? */
+/* 55 was KERN_PROC_LOW_PRI_IO... now deprecated */
+#define KERN_LOW_PRI_WINDOW 56 /* int: set/reset throttle window - milliseconds */
+#define KERN_LOW_PRI_DELAY 57 /* int: set/reset throttle delay - milliseconds */
+#define KERN_POSIX 58 /* node: posix tunables */
+#define KERN_USRSTACK64 59 /* LP64 user stack query */
+#define KERN_NX_PROTECTION 60 /* int: whether no-execute protection is enabled */
+#define KERN_TFP 61 /* Task for pid settings */
+#define KERN_PROCNAME 62 /* setup process program name(2*MAXCOMLEN) */
+#define KERN_THALTSTACK 63 /* for compat with older x86 and does nothing */
+#define KERN_SPECULATIVE_READS 64 /* int: whether speculative reads are disabled */
+#define KERN_OSVERSION 65 /* for build number i.e. 9A127 */
+#define KERN_SAFEBOOT 66 /* are we booted safe? */
+/* 67 was KERN_LCTX (login context) */
+#define KERN_RAGEVNODE 68
+#define KERN_TTY 69 /* node: tty settings */
+#define KERN_CHECKOPENEVT 70 /* spi: check the VOPENEVT flag on vnodes at open time */
+#define KERN_THREADNAME 71 /* set/get thread name */
+#define KERN_MAXID 72 /* number of valid kern ids */
+/*
+ * Don't add any more sysctls like this. Instead, use the SYSCTL_*() macros
+ * and OID_AUTO. This will have the added benefit of not having to recompile
+ * sysctl(8) to pick up your changes.
+ */
+
+
+#if defined(__LP64__)
+#define KERN_USRSTACK KERN_USRSTACK64
+#else
+#define KERN_USRSTACK KERN_USRSTACK32
+#endif
+
+
+/* KERN_RAGEVNODE types */
+#define KERN_RAGE_PROC 1
+#define KERN_RAGE_THREAD 2
+#define KERN_UNRAGE_PROC 3
+#define KERN_UNRAGE_THREAD 4
+
+/* KERN_OPENEVT types */
+#define KERN_OPENEVT_PROC 1
+#define KERN_UNOPENEVT_PROC 2
+
+/* KERN_TFP types */
+#define KERN_TFP_POLICY 1
+
+/* KERN_TFP_POLICY values . All policies allow task port for self */
+#define KERN_TFP_POLICY_DENY 0 /* Deny Mode: None allowed except privileged */
+#define KERN_TFP_POLICY_DEFAULT 2 /* Default Mode: related ones allowed and upcall authentication */
+
+/* KERN_KDEBUG types */
+#define KERN_KDEFLAGS 1
+#define KERN_KDDFLAGS 2
+#define KERN_KDENABLE 3
+#define KERN_KDSETBUF 4
+#define KERN_KDGETBUF 5
+#define KERN_KDSETUP 6
+#define KERN_KDREMOVE 7
+#define KERN_KDSETREG 8
+#define KERN_KDGETREG 9
+#define KERN_KDREADTR 10
+#define KERN_KDPIDTR 11
+#define KERN_KDTHRMAP 12
+/* Don't use 13 as it is overloaded with KERN_VNODE */
+#define KERN_KDPIDEX 14
+#define KERN_KDSETRTCDEC 15 /* obsolete */
+#define KERN_KDGETENTROPY 16 /* obsolete */
+#define KERN_KDWRITETR 17
+#define KERN_KDWRITEMAP 18
+#define KERN_KDTEST 19
+/* 20 unused */
+#define KERN_KDREADCURTHRMAP 21
+#define KERN_KDSET_TYPEFILTER 22
+#define KERN_KDBUFWAIT 23
+#define KERN_KDCPUMAP 24
+/* 25 - 26 unused */
+#define KERN_KDWRITEMAP_V3 27
+#define KERN_KDWRITETR_V3 28
+
+#define CTL_KERN_NAMES { \
+ { 0, 0 }, \
+ { "ostype", CTLTYPE_STRING }, \
+ { "osrelease", CTLTYPE_STRING }, \
+ { "osrevision", CTLTYPE_INT }, \
+ { "version", CTLTYPE_STRING }, \
+ { "maxvnodes", CTLTYPE_INT }, \
+ { "maxproc", CTLTYPE_INT }, \
+ { "maxfiles", CTLTYPE_INT }, \
+ { "argmax", CTLTYPE_INT }, \
+ { "securelevel", CTLTYPE_INT }, \
+ { "hostname", CTLTYPE_STRING }, \
+ { "hostid", CTLTYPE_INT }, \
+ { "clockrate", CTLTYPE_STRUCT }, \
+ { "vnode", CTLTYPE_STRUCT }, \
+ { "proc", CTLTYPE_STRUCT }, \
+ { "file", CTLTYPE_STRUCT }, \
+ { "profiling", CTLTYPE_NODE }, \
+ { "posix1version", CTLTYPE_INT }, \
+ { "ngroups", CTLTYPE_INT }, \
+ { "job_control", CTLTYPE_INT }, \
+ { "saved_ids", CTLTYPE_INT }, \
+ { "boottime", CTLTYPE_STRUCT }, \
+ { "nisdomainname", CTLTYPE_STRING }, \
+ { "maxpartitions", CTLTYPE_INT }, \
+ { "kdebug", CTLTYPE_INT }, \
+ { "update", CTLTYPE_INT }, \
+ { "osreldate", CTLTYPE_INT }, \
+ { "ntp_pll", CTLTYPE_NODE }, \
+ { "bootfile", CTLTYPE_STRING }, \
+ { "maxfilesperproc", CTLTYPE_INT }, \
+ { "maxprocperuid", CTLTYPE_INT }, \
+ { "dumpdev", CTLTYPE_STRUCT }, /* we lie; don't print as int */ \
+ { "ipc", CTLTYPE_NODE }, \
+ { "dummy", CTLTYPE_INT }, \
+ { "dummy", CTLTYPE_INT }, \
+ { "usrstack", CTLTYPE_INT }, \
+ { "logsigexit", CTLTYPE_INT }, \
+ { "symfile",CTLTYPE_STRING },\
+ { "procargs",CTLTYPE_STRUCT },\
+ { "dummy", CTLTYPE_INT }, /* deprecated pcsamples */ \
+ { "netboot", CTLTYPE_INT }, \
+ { "dummy", CTLTYPE_INT }, /* deprecated: panicinfo */ \
+ { "sysv", CTLTYPE_NODE }, \
+ { "dummy", CTLTYPE_INT }, \
+ { "dummy", CTLTYPE_INT }, \
+ { "exec", CTLTYPE_NODE }, \
+ { "aiomax", CTLTYPE_INT }, \
+ { "aioprocmax", CTLTYPE_INT }, \
+ { "aiothreads", CTLTYPE_INT }, \
+ { "procargs2",CTLTYPE_STRUCT }, \
+ { "corefile",CTLTYPE_STRING }, \
+ { "coredump", CTLTYPE_INT }, \
+ { "sugid_coredump", CTLTYPE_INT }, \
+ { "delayterm", CTLTYPE_INT }, \
+ { "shreg_private", CTLTYPE_INT }, \
+ { "proc_low_pri_io", CTLTYPE_INT }, \
+ { "low_pri_window", CTLTYPE_INT }, \
+ { "low_pri_delay", CTLTYPE_INT }, \
+ { "posix", CTLTYPE_NODE }, \
+ { "usrstack64", CTLTYPE_QUAD }, \
+ { "nx", CTLTYPE_INT }, \
+ { "tfp", CTLTYPE_NODE }, \
+ { "procname", CTLTYPE_STRING }, \
+ { "threadsigaltstack", CTLTYPE_INT }, \
+ { "speculative_reads_disabled", CTLTYPE_INT }, \
+ { "osversion", CTLTYPE_STRING }, \
+ { "safeboot", CTLTYPE_INT }, \
+ { "dummy", CTLTYPE_INT }, /* deprecated: lctx */ \
+ { "rage_vnode", CTLTYPE_INT }, \
+ { "tty", CTLTYPE_NODE }, \
+ { "check_openevt", CTLTYPE_INT }, \
+ { "thread_name", CTLTYPE_STRING } \
+}
+
+/*
+ * CTL_VFS identifiers
+ */
+#define CTL_VFS_NAMES { \
+ { "vfsconf", CTLTYPE_STRUCT } \
+}
+
+/*
+ * KERN_PROC subtypes
+ */
+#define KERN_PROC_ALL 0 /* everything */
+#define KERN_PROC_PID 1 /* by process id */
+#define KERN_PROC_PGRP 2 /* by process group id */
+#define KERN_PROC_SESSION 3 /* by session of pid */
+#define KERN_PROC_TTY 4 /* by controlling tty */
+#define KERN_PROC_UID 5 /* by effective uid */
+#define KERN_PROC_RUID 6 /* by real uid */
+#define KERN_PROC_LCID 7 /* by login context id */
+
+/*
+ * KERN_VFSNSPACE subtypes
+ */
+#define KERN_VFSNSPACE_HANDLE_PROC 1
+#define KERN_VFSNSPACE_UNHANDLE_PROC 2
+
+/*
+ * KERN_PROC subtype ops return arrays of augmented proc structures:
+ */
+
+struct _pcred {
+ char pc_lock[72]; /* opaque content */
+ struct ucred *pc_ucred; /* Current credentials. */
+ uid_t p_ruid; /* Real user id. */
+ uid_t p_svuid; /* Saved effective user id. */
+ gid_t p_rgid; /* Real group id. */
+ gid_t p_svgid; /* Saved effective group id. */
+ int p_refcnt; /* Number of references. */
+};
+
+struct _ucred {
+ int32_t cr_ref; /* reference count */
+ uid_t cr_uid; /* effective user id */
+ short cr_ngroups; /* number of groups */
+ gid_t cr_groups[NGROUPS]; /* groups */
+};
+
+struct kinfo_proc {
+ struct extern_proc kp_proc; /* proc structure */
+ struct eproc {
+ struct proc *e_paddr; /* address of proc */
+ struct session *e_sess; /* session pointer */
+ struct _pcred e_pcred; /* process credentials */
+ struct _ucred e_ucred; /* current credentials */
+ struct vmspace e_vm; /* address space */
+ pid_t e_ppid; /* parent process id */
+ pid_t e_pgid; /* process group id */
+ short e_jobc; /* job control counter */
+ dev_t e_tdev; /* controlling tty dev */
+ pid_t e_tpgid; /* tty process group id */
+ struct session *e_tsess; /* tty session pointer */
+#define WMESGLEN 7
+ char e_wmesg[WMESGLEN + 1]; /* wchan message */
+ segsz_t e_xsize; /* text size */
+ short e_xrssize; /* text rss */
+ short e_xccount; /* text references */
+ short e_xswrss;
+ int32_t e_flag;
+#define EPROC_CTTY 0x01 /* controlling tty vnode active */
+#define EPROC_SLEADER 0x02 /* session leader */
+#define COMAPT_MAXLOGNAME 12
+ char e_login[COMAPT_MAXLOGNAME]; /* short setlogin() name */
+ int32_t e_spare[4];
+ } kp_eproc;
+};
+
+
+
+/*
+ * KERN_IPC identifiers
+ */
+#define KIPC_MAXSOCKBUF 1 /* int: max size of a socket buffer */
+#define KIPC_SOCKBUF_WASTE 2 /* int: wastage factor in sockbuf */
+#define KIPC_SOMAXCONN 3 /* int: max length of connection q */
+#define KIPC_MAX_LINKHDR 4 /* int: max length of link header */
+#define KIPC_MAX_PROTOHDR 5 /* int: max length of network header */
+#define KIPC_MAX_HDR 6 /* int: max total length of headers */
+#define KIPC_MAX_DATALEN 7 /* int: max length of data? */
+#define KIPC_MBSTAT 8 /* struct: mbuf usage statistics */
+#define KIPC_NMBCLUSTERS 9 /* int: maximum mbuf clusters */
+#define KIPC_SOQLIMITCOMPAT 10 /* int: socket queue limit */
+
+/*
+ * CTL_VM identifiers
+ */
+#define VM_METER 1 /* struct vmmeter */
+#define VM_LOADAVG 2 /* struct loadavg */
+/*
+ * Note: "3" was skipped sometime ago and should probably remain unused
+ * to avoid any new entry from being accepted by older kernels...
+ */
+#define VM_MACHFACTOR 4 /* struct loadavg with mach factor*/
+#define VM_SWAPUSAGE 5 /* total swap usage */
+#define VM_MAXID 6 /* number of valid vm ids */
+
+#define CTL_VM_NAMES { \
+ { 0, 0 }, \
+ { "vmmeter", CTLTYPE_STRUCT }, \
+ { "loadavg", CTLTYPE_STRUCT }, \
+ { 0, 0 }, /* placeholder for "3" (see comment above) */ \
+ { "dummy", CTLTYPE_INT }, \
+ { "swapusage", CTLTYPE_STRUCT } \
+}
+
+struct xsw_usage {
+ u_int64_t xsu_total;
+ u_int64_t xsu_avail;
+ u_int64_t xsu_used;
+ u_int32_t xsu_pagesize;
+ boolean_t xsu_encrypted;
+};
+
+#ifdef __APPLE_API_PRIVATE
+/* Load average structure. Use of fixpt_t assume <sys/types.h> in scope. */
+/* XXX perhaps we should protect fixpt_t, and define it here (or discard it) */
+struct loadavg {
+ fixpt_t ldavg[3];
+ long fscale;
+};
+extern struct loadavg averunnable;
+#define LSCALE 1000 /* scaling for "fixed point" arithmetic */
+
+#endif /* __APPLE_API_PRIVATE */
+
+
+/*
+ * CTL_HW identifiers
+ */
+#define HW_MACHINE 1 /* string: machine class (deprecated: use HW_PRODUCT) */
+#define HW_MODEL 2 /* string: specific machine model (deprecated: use HW_TARGET) */
+#define HW_NCPU 3 /* int: number of cpus */
+#define HW_BYTEORDER 4 /* int: machine byte order */
+#define HW_PHYSMEM 5 /* int: total memory */
+#define HW_USERMEM 6 /* int: non-kernel memory */
+#define HW_PAGESIZE 7 /* int: software page size */
+#define HW_DISKNAMES 8 /* strings: disk drive names */
+#define HW_DISKSTATS 9 /* struct: diskstats[] */
+#define HW_EPOCH 10 /* int: 0 for Legacy, else NewWorld */
+#define HW_FLOATINGPT 11 /* int: has HW floating point? */
+#define HW_MACHINE_ARCH 12 /* string: machine architecture */
+#define HW_VECTORUNIT 13 /* int: has HW vector unit? */
+#define HW_BUS_FREQ 14 /* int: Bus Frequency */
+#define HW_CPU_FREQ 15 /* int: CPU Frequency */
+#define HW_CACHELINE 16 /* int: Cache Line Size in Bytes */
+#define HW_L1ICACHESIZE 17 /* int: L1 I Cache Size in Bytes */
+#define HW_L1DCACHESIZE 18 /* int: L1 D Cache Size in Bytes */
+#define HW_L2SETTINGS 19 /* int: L2 Cache Settings */
+#define HW_L2CACHESIZE 20 /* int: L2 Cache Size in Bytes */
+#define HW_L3SETTINGS 21 /* int: L3 Cache Settings */
+#define HW_L3CACHESIZE 22 /* int: L3 Cache Size in Bytes */
+#define HW_TB_FREQ 23 /* int: Bus Frequency */
+#define HW_MEMSIZE 24 /* uint64_t: physical ram size */
+#define HW_AVAILCPU 25 /* int: number of available CPUs */
+#define HW_TARGET 26 /* string: model identifier */
+#define HW_PRODUCT 27 /* string: product identifier */
+#define HW_MAXID 28 /* number of valid hw ids */
+
+#define CTL_HW_NAMES { \
+ { 0, 0 }, \
+ { "machine", CTLTYPE_STRING }, /* Deprecated: use hw.product */ \
+ { "model", CTLTYPE_STRING }, /* Deprecated: use hw.target */ \
+ { "ncpu", CTLTYPE_INT }, \
+ { "byteorder", CTLTYPE_INT }, \
+ { "physmem", CTLTYPE_INT }, \
+ { "usermem", CTLTYPE_INT }, \
+ { "pagesize", CTLTYPE_INT }, \
+ { "disknames", CTLTYPE_STRUCT }, \
+ { "diskstats", CTLTYPE_STRUCT }, \
+ { "epoch", CTLTYPE_INT }, \
+ { "floatingpoint", CTLTYPE_INT }, \
+ { "machinearch", CTLTYPE_STRING }, \
+ { "vectorunit", CTLTYPE_INT }, \
+ { "busfrequency", CTLTYPE_INT }, \
+ { "cpufrequency", CTLTYPE_INT }, \
+ { "cachelinesize", CTLTYPE_INT }, \
+ { "l1icachesize", CTLTYPE_INT }, \
+ { "l1dcachesize", CTLTYPE_INT }, \
+ { "l2settings", CTLTYPE_INT }, \
+ { "l2cachesize", CTLTYPE_INT }, \
+ { "l3settings", CTLTYPE_INT }, \
+ { "l3cachesize", CTLTYPE_INT }, \
+ { "tbfrequency", CTLTYPE_INT }, \
+ { "memsize", CTLTYPE_QUAD }, \
+ { "availcpu", CTLTYPE_INT }, \
+ { "target", CTLTYPE_STRING }, \
+ { "product", CTLTYPE_STRING }, \
+}
+
+/*
+ * XXX This information should be moved to the man page.
+ *
+ * These are the support HW selectors for sysctlbyname. Parameters that are byte counts or frequencies are 64 bit numbers.
+ * All other parameters are 32 bit numbers.
+ *
+ * hw.memsize - The number of bytes of physical memory in the system.
+ *
+ * hw.ncpu - The maximum number of processors that could be available this boot.
+ * Use this value for sizing of static per processor arrays; i.e. processor load statistics.
+ *
+ * hw.activecpu - The number of processors currently available for executing threads.
+ * Use this number to determine the number threads to create in SMP aware applications.
+ * This number can change when power management modes are changed.
+ *
+ * hw.physicalcpu - The number of physical processors available in the current power management mode.
+ * hw.physicalcpu_max - The maximum number of physical processors that could be available this boot
+ *
+ * hw.logicalcpu - The number of logical processors available in the current power management mode.
+ * hw.logicalcpu_max - The maximum number of logical processors that could be available this boot
+ *
+ * hw.tbfrequency - This gives the time base frequency used by the OS and is the basis of all timing services.
+ * In general is is better to use mach's or higher level timing services, but this value
+ * is needed to convert the PPC Time Base registers to real time.
+ *
+ * hw.cpufrequency - These values provide the current, min and max cpu frequency. The min and max are for
+ * hw.cpufrequency_max - all power management modes. The current frequency is the max frequency in the current mode.
+ * hw.cpufrequency_min - All frequencies are in Hz.
+ *
+ * hw.busfrequency - These values provide the current, min and max bus frequency. The min and max are for
+ * hw.busfrequency_max - all power management modes. The current frequency is the max frequency in the current mode.
+ * hw.busfrequency_min - All frequencies are in Hz.
+ *
+ * hw.cputype - These values provide the mach-o cpu type and subtype. A complete list is in <mach/machine.h>
+ * hw.cpusubtype - These values should be used to determine what processor family the running cpu is from so that
+ * the best binary can be chosen, or the best dynamic code generated. They should not be used
+ * to determine if a given processor feature is available.
+ * hw.cputhreadtype - This value will be present if the processor supports threads. Like hw.cpusubtype this selector
+ * should not be used to infer features, and only used to name the processors thread architecture.
+ * The values are defined in <mach/machine.h>
+ *
+ * hw.byteorder - Gives the byte order of the processor. 4321 for big endian, 1234 for little.
+ *
+ * hw.pagesize - Gives the size in bytes of the pages used by the processor and VM system.
+ *
+ * hw.cachelinesize - Gives the size in bytes of the processor's cache lines.
+ * This value should be use to control the strides of loops that use cache control instructions
+ * like dcbz, dcbt or dcbst.
+ *
+ * hw.l1dcachesize - These values provide the size in bytes of the L1, L2 and L3 caches. If a cache is not present
+ * hw.l1icachesize - then the selector will return and error.
+ * hw.l2cachesize -
+ * hw.l3cachesize -
+ *
+ * hw.packages - Gives the number of processor packages.
+ *
+ * These are the selectors for optional processor features for specific processors. Selectors that return errors are not support
+ * on the system. Supported features will return 1 if they are recommended or 0 if they are supported but are not expected to help .
+ * performance. Future versions of these selectors may return larger values as necessary so it is best to test for non zero.
+ *
+ * For PowerPC:
+ *
+ * hw.optional.floatingpoint - Floating Point Instructions
+ * hw.optional.altivec - AltiVec Instructions
+ * hw.optional.graphicsops - Graphics Operations
+ * hw.optional.64bitops - 64-bit Instructions
+ * hw.optional.fsqrt - HW Floating Point Square Root Instruction
+ * hw.optional.stfiwx - Store Floating Point as Integer Word Indexed Instructions
+ * hw.optional.dcba - Data Cache Block Allocate Instruction
+ * hw.optional.datastreams - Data Streams Instructions
+ * hw.optional.dcbtstreams - Data Cache Block Touch Steams Instruction Form
+ *
+ * For x86 Architecture:
+ *
+ * hw.optional.floatingpoint - Floating Point Instructions
+ * hw.optional.mmx - Original MMX vector instructions
+ * hw.optional.sse - Streaming SIMD Extensions
+ * hw.optional.sse2 - Streaming SIMD Extensions 2
+ * hw.optional.sse3 - Streaming SIMD Extensions 3
+ * hw.optional.supplementalsse3 - Supplemental Streaming SIMD Extensions 3
+ * hw.optional.x86_64 - 64-bit support
+ */
+
+
+/*
+ * CTL_USER definitions
+ */
+#define USER_CS_PATH 1 /* string: _CS_PATH */
+#define USER_BC_BASE_MAX 2 /* int: BC_BASE_MAX */
+#define USER_BC_DIM_MAX 3 /* int: BC_DIM_MAX */
+#define USER_BC_SCALE_MAX 4 /* int: BC_SCALE_MAX */
+#define USER_BC_STRING_MAX 5 /* int: BC_STRING_MAX */
+#define USER_COLL_WEIGHTS_MAX 6 /* int: COLL_WEIGHTS_MAX */
+#define USER_EXPR_NEST_MAX 7 /* int: EXPR_NEST_MAX */
+#define USER_LINE_MAX 8 /* int: LINE_MAX */
+#define USER_RE_DUP_MAX 9 /* int: RE_DUP_MAX */
+#define USER_POSIX2_VERSION 10 /* int: POSIX2_VERSION */
+#define USER_POSIX2_C_BIND 11 /* int: POSIX2_C_BIND */
+#define USER_POSIX2_C_DEV 12 /* int: POSIX2_C_DEV */
+#define USER_POSIX2_CHAR_TERM 13 /* int: POSIX2_CHAR_TERM */
+#define USER_POSIX2_FORT_DEV 14 /* int: POSIX2_FORT_DEV */
+#define USER_POSIX2_FORT_RUN 15 /* int: POSIX2_FORT_RUN */
+#define USER_POSIX2_LOCALEDEF 16 /* int: POSIX2_LOCALEDEF */
+#define USER_POSIX2_SW_DEV 17 /* int: POSIX2_SW_DEV */
+#define USER_POSIX2_UPE 18 /* int: POSIX2_UPE */
+#define USER_STREAM_MAX 19 /* int: POSIX2_STREAM_MAX */
+#define USER_TZNAME_MAX 20 /* int: POSIX2_TZNAME_MAX */
+#define USER_MAXID 21 /* number of valid user ids */
+
+#define CTL_USER_NAMES { \
+ { 0, 0 }, \
+ { "cs_path", CTLTYPE_STRING }, \
+ { "bc_base_max", CTLTYPE_INT }, \
+ { "bc_dim_max", CTLTYPE_INT }, \
+ { "bc_scale_max", CTLTYPE_INT }, \
+ { "bc_string_max", CTLTYPE_INT }, \
+ { "coll_weights_max", CTLTYPE_INT }, \
+ { "expr_nest_max", CTLTYPE_INT }, \
+ { "line_max", CTLTYPE_INT }, \
+ { "re_dup_max", CTLTYPE_INT }, \
+ { "posix2_version", CTLTYPE_INT }, \
+ { "posix2_c_bind", CTLTYPE_INT }, \
+ { "posix2_c_dev", CTLTYPE_INT }, \
+ { "posix2_char_term", CTLTYPE_INT }, \
+ { "posix2_fort_dev", CTLTYPE_INT }, \
+ { "posix2_fort_run", CTLTYPE_INT }, \
+ { "posix2_localedef", CTLTYPE_INT }, \
+ { "posix2_sw_dev", CTLTYPE_INT }, \
+ { "posix2_upe", CTLTYPE_INT }, \
+ { "stream_max", CTLTYPE_INT }, \
+ { "tzname_max", CTLTYPE_INT } \
+}
+
+
+
+/*
+ * CTL_DEBUG definitions
+ *
+ * Second level identifier specifies which debug variable.
+ * Third level identifier specifies which stucture component.
+ */
+#define CTL_DEBUG_NAME 0 /* string: variable name */
+#define CTL_DEBUG_VALUE 1 /* int: variable value */
+#define CTL_DEBUG_MAXID 20
+
+
+#if (CTL_MAXID != 9) || (KERN_MAXID != 72) || (VM_MAXID != 6) || (HW_MAXID != 28) || (USER_MAXID != 21) || (CTL_DEBUG_MAXID != 20)
+#error Use the SYSCTL_*() macros and OID_AUTO instead!
+#endif
+
+
+
+__BEGIN_DECLS
+int sysctl(int *, u_int, void *, size_t *, void *, size_t);
+int sysctlbyname(const char *, void *, size_t *, void *, size_t);
+int sysctlnametomib(const char *, int *, size_t *);
+__END_DECLS
+
+
+
+#endif /* SYSCTL_DEF_ENABLED */
+
+
+#endif /* !_SYS_SYSCTL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/syslimits.h b/lib/libc/include/aarch64-macos-gnu/sys/syslimits.h
new file mode 100644
index 0000000000..ee8da5a411
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/syslimits.h
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* $NetBSD: syslimits.h,v 1.15 1997/06/25 00:48:09 lukem Exp $ */
+
+/*
+ * Copyright (c) 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)syslimits.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYS_SYSLIMITS_H_
+#define _SYS_SYSLIMITS_H_
+
+#include <sys/cdefs.h>
+
+#if !defined(_ANSI_SOURCE)
+
+/* max bytes for an exec function */
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
+#define ARG_MAX (1024 * 1024)
+#else
+#define ARG_MAX (256 * 1024)
+#endif
+
+/*
+ * Note: CHILD_MAX *must* be less than hard_maxproc, which is set at
+ * compile time; you *cannot* set it higher than the hard limit!!
+ */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define CHILD_MAX 266 /* max simultaneous processes */
+#define GID_MAX 2147483647U /* max value for a gid_t (2^31-2) */
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+#define LINK_MAX 32767 /* max file link count */
+#define MAX_CANON 1024 /* max bytes in term canon input line */
+#define MAX_INPUT 1024 /* max bytes in terminal input */
+#define NAME_MAX 255 /* max bytes in a file name */
+#define NGROUPS_MAX 16 /* max supplemental group id's */
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+#define UID_MAX 2147483647U /* max value for a uid_t (2^31-2) */
+
+#define OPEN_MAX 10240 /* max open files per process - todo, make a config option? */
+
+#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
+#define PATH_MAX 1024 /* max bytes in pathname */
+#define PIPE_BUF 512 /* max bytes for atomic pipe writes */
+
+#define BC_BASE_MAX 99 /* max ibase/obase values in bc(1) */
+#define BC_DIM_MAX 2048 /* max array elements in bc(1) */
+#define BC_SCALE_MAX 99 /* max scale value in bc(1) */
+#define BC_STRING_MAX 1000 /* max const string length in bc(1) */
+#define CHARCLASS_NAME_MAX 14 /* max character class name size */
+#define COLL_WEIGHTS_MAX 2 /* max weights for order keyword */
+#define EQUIV_CLASS_MAX 2
+#define EXPR_NEST_MAX 32 /* max expressions nested in expr(1) */
+#define LINE_MAX 2048 /* max bytes in an input line */
+#define RE_DUP_MAX 255 /* max RE's in interval notation */
+
+#if __DARWIN_UNIX03
+#define NZERO 20 /* default priority [XSI] */
+ /* = ((PRIO_MAX - PRIO_MIN) / 2) + 1 */
+ /* range: 0 - 39 [(2 * NZERO) - 1] */
+ /* 0 is not actually used */
+#else /* !__DARWIN_UNIX03 */
+#define NZERO 0 /* default priority */
+ /* range: -20 - 20 */
+ /* (PRIO_MIN - PRIO_MAX) */
+#endif /* __DARWIN_UNIX03 */
+#endif /* !_ANSI_SOURCE */
+
+#endif /* !_SYS_SYSLIMITS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/uio.h b/lib/libc/include/aarch64-macos-gnu/sys/uio.h
new file mode 100644
index 0000000000..619a8f1786
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/uio.h
@@ -0,0 +1,111 @@
+/*
+ * Copyright (c) 2000-2019 Apple Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
+/*
+ * Copyright (c) 1982, 1986, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)uio.h 8.5 (Berkeley) 2/22/94
+ */
+
+#ifndef _SYS_UIO_H_
+#define _SYS_UIO_H_
+
+#include <Availability.h>
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+#include <sys/_types/_off_t.h>
+
+/*
+ * [XSI] The ssize_t and size_t types shall be defined as described
+ * in <sys/types.h>.
+ */
+#include <sys/_types/_size_t.h>
+#include <sys/_types/_ssize_t.h>
+
+/*
+ * [XSI] Structure whose address is passed as the second parameter to the
+ * readv(), preadv(), writev() and pwritev() functions.
+ */
+#include <sys/_types/_iovec_t.h>
+
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/*
+ * IO direction for uio_t.
+ * UIO_READ - data moves into iovec(s) associated with uio_t
+ * UIO_WRITE - data moves out of iovec(s) associated with uio_t
+ */
+enum uio_rw { UIO_READ, UIO_WRITE };
+#endif
+
+
+
+__BEGIN_DECLS
+ssize_t readv(int, const struct iovec *, int) __DARWIN_ALIAS_C(readv);
+ssize_t writev(int, const struct iovec *, int) __DARWIN_ALIAS_C(writev);
+
+#if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE)
+
+ssize_t preadv(int, const struct iovec *, int, off_t) __DARWIN_NOCANCEL(preadv) __API_AVAILABLE(macos(11.0), ios(14.0), watchos(7.0), tvos(14.0));
+ssize_t pwritev(int, const struct iovec *, int, off_t) __DARWIN_NOCANCEL(pwritev) __API_AVAILABLE(macos(11.0), ios(14.0), watchos(7.0), tvos(14.0));
+
+#endif /* #if (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE)) || defined(_DARWIN_C_SOURCE) */
+
+__END_DECLS
+
+
+#endif /* !_SYS_UIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/sys/un.h b/lib/libc/include/aarch64-macos-gnu/sys/un.h
new file mode 100644
index 0000000000..305196b361
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/sys/un.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. The rights granted to you under the License
+ * may not be used to create, or enable the creation or redistribution of,
+ * unlawful or unlicensed copies of an Apple operating system, or to
+ * circumvent, violate, or enable the circumvention or violation of, any
+ * terms of an Apple operating system software license agreement.
+ *
+ * Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ */
+/*
+ * Copyright (c) 1982, 1986, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)un.h 8.3 (Berkeley) 2/19/95
+ */
+
+#ifndef _SYS_UN_H_
+#define _SYS_UN_H_
+
+#include <sys/appleapiopts.h>
+#include <sys/cdefs.h>
+#include <sys/_types.h>
+
+/* [XSI] The sa_family_t type shall be defined as described in <sys/socket.h> */
+#include <sys/_types/_sa_family_t.h>
+
+/*
+ * [XSI] Definitions for UNIX IPC domain.
+ */
+struct sockaddr_un {
+ unsigned char sun_len; /* sockaddr len including null */
+ sa_family_t sun_family; /* [XSI] AF_UNIX */
+ char sun_path[104]; /* [XSI] path name (gag) */
+};
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+
+/* Level number of get/setsockopt for local domain sockets */
+#define SOL_LOCAL 0
+
+/* Socket options. */
+#define LOCAL_PEERCRED 0x001 /* retrieve peer credentials */
+#define LOCAL_PEERPID 0x002 /* retrieve peer pid */
+#define LOCAL_PEEREPID 0x003 /* retrieve eff. peer pid */
+#define LOCAL_PEERUUID 0x004 /* retrieve peer UUID */
+#define LOCAL_PEEREUUID 0x005 /* retrieve eff. peer UUID */
+#define LOCAL_PEERTOKEN 0x006 /* retrieve peer audit token */
+
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+/* actual length of an initialized sockaddr_un */
+#define SUN_LEN(su) \
+ (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+
+
+#endif /* !_SYS_UN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/xlocale/_inttypes.h b/lib/libc/include/aarch64-macos-gnu/xlocale/_inttypes.h
new file mode 100644
index 0000000000..1323b05e23
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/xlocale/_inttypes.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2005 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _XLOCALE__INTTYPES_H_
+#define _XLOCALE__INTTYPES_H_
+
+#include <sys/cdefs.h>
+#include <stdint.h>
+#include <stddef.h> /* wchar_t */
+#include <_xlocale.h>
+
+__BEGIN_DECLS
+intmax_t strtoimax_l(const char * __restrict nptr, char ** __restrict endptr,
+ int base, locale_t);
+uintmax_t strtoumax_l(const char * __restrict nptr, char ** __restrict endptr,
+ int base, locale_t);
+intmax_t wcstoimax_l(const wchar_t * __restrict nptr,
+ wchar_t ** __restrict endptr, int base, locale_t);
+uintmax_t wcstoumax_l(const wchar_t * __restrict nptr,
+ wchar_t ** __restrict endptr, int base, locale_t);
+
+/* Poison the following routines if -fshort-wchar is set */
+#if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
+#pragma GCC poison wcstoimax_l wcstoumax_l
+#endif
+__END_DECLS
+
+#endif /* _XLOCALE__INTTYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/xlocale/_wchar.h b/lib/libc/include/aarch64-macos-gnu/xlocale/_wchar.h
new file mode 100644
index 0000000000..99a2e4f259
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/xlocale/_wchar.h
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2005 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ */
+
+#ifndef _XLOCALE__WCHAR_H_
+#define _XLOCALE__WCHAR_H_
+
+#include <_stdio.h>
+#include <_xlocale.h>
+#include <sys/_types/_mbstate_t.h>
+#include <sys/_types/_wint_t.h>
+#include <stddef.h> /* wchar_t */
+
+/* Initially added in Issue 4 */
+__BEGIN_DECLS
+wint_t btowc_l(int, locale_t);
+wint_t fgetwc_l(FILE *, locale_t);
+wchar_t *fgetws_l(wchar_t * __restrict, int, FILE * __restrict, locale_t);
+wint_t fputwc_l(wchar_t, FILE *, locale_t);
+int fputws_l(const wchar_t * __restrict, FILE * __restrict, locale_t);
+int fwprintf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, ...);
+int fwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, ...);
+wint_t getwc_l(FILE *, locale_t);
+wint_t getwchar_l(locale_t);
+size_t mbrlen_l(const char * __restrict, size_t, mbstate_t * __restrict,
+ locale_t);
+size_t mbrtowc_l(wchar_t * __restrict, const char * __restrict, size_t,
+ mbstate_t * __restrict, locale_t);
+int mbsinit_l(const mbstate_t *, locale_t);
+size_t mbsrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t,
+ mbstate_t * __restrict, locale_t);
+wint_t putwc_l(wchar_t, FILE *, locale_t);
+wint_t putwchar_l(wchar_t, locale_t);
+int swprintf_l(wchar_t * __restrict, size_t n, locale_t,
+ const wchar_t * __restrict, ...);
+int swscanf_l(const wchar_t * __restrict, locale_t,
+ const wchar_t * __restrict, ...);
+wint_t ungetwc_l(wint_t, FILE *, locale_t);
+int vfwprintf_l(FILE * __restrict, locale_t, const wchar_t * __restrict,
+ __darwin_va_list);
+int vswprintf_l(wchar_t * __restrict, size_t n, locale_t,
+ const wchar_t * __restrict, __darwin_va_list);
+int vwprintf_l(locale_t, const wchar_t * __restrict, __darwin_va_list);
+size_t wcrtomb_l(char * __restrict, wchar_t, mbstate_t * __restrict,
+ locale_t);
+int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
+size_t wcsftime_l(wchar_t * __restrict, size_t, const wchar_t * __restrict,
+ const struct tm * __restrict, locale_t)
+ __DARWIN_ALIAS(wcsftime_l);
+size_t wcsrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t,
+ mbstate_t * __restrict, locale_t);
+double wcstod_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
+long wcstol_l(const wchar_t * __restrict, wchar_t ** __restrict, int,
+ locale_t);
+unsigned long
+ wcstoul_l(const wchar_t * __restrict, wchar_t ** __restrict, int,
+ locale_t);
+int wcswidth_l(const wchar_t *, size_t, locale_t);
+size_t wcsxfrm_l(wchar_t * __restrict, const wchar_t * __restrict, size_t,
+ locale_t);
+int wctob_l(wint_t, locale_t);
+int wcwidth_l(wchar_t, locale_t);
+int wprintf_l(locale_t, const wchar_t * __restrict, ...);
+int wscanf_l(locale_t, const wchar_t * __restrict, ...);
+__END_DECLS
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2001
+ */
+
+#if __DARWIN_C_LEVEL >= 200112L
+__BEGIN_DECLS
+int vfwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict,
+ __darwin_va_list);
+int vswscanf_l(const wchar_t * __restrict, locale_t,
+ const wchar_t * __restrict, __darwin_va_list);
+int vwscanf_l(locale_t, const wchar_t * __restrict, __darwin_va_list);
+float wcstof_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
+long double
+ wcstold_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
+#if !__DARWIN_NO_LONG_LONG
+long long
+ wcstoll_l(const wchar_t * __restrict, wchar_t ** __restrict, int,
+ locale_t);
+unsigned long long
+ wcstoull_l(const wchar_t * __restrict, wchar_t ** __restrict, int,
+ locale_t);
+#endif /* !__DARWIN_NO_LONG_LONG */
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2008
+ */
+
+#if __DARWIN_C_LEVEL >= 200809L
+__BEGIN_DECLS
+size_t mbsnrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t,
+ size_t, mbstate_t * __restrict, locale_t);
+int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t n, locale_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+size_t wcsnrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t,
+ size_t, mbstate_t * __restrict, locale_t);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200809L */
+
+
+
+/* Darwin extensions */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+__BEGIN_DECLS
+wchar_t *fgetwln_l(FILE * __restrict, size_t *, locale_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+
+
+/* Poison the following routines if -fshort-wchar is set */
+#if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
+#pragma GCC poison fgetwln_l fgetws_l fputwc_l fputws_l fwprintf_l fwscanf_l mbrtowc_l mbsnrtowcs_l mbsrtowcs_l putwc_l putwchar_l swprintf_l swscanf_l vfwprintf_l vfwscanf_l vswprintf_l vswscanf_l vwprintf_l vwscanf_l wcrtomb_l wcscoll_l wcsftime_l wcsftime_l wcsnrtombs_l wcsrtombs_l wcstod_l wcstof_l wcstol_l wcstold_l wcstoll_l wcstoul_l wcstoull_l wcswidth_l wcsxfrm_l wcwidth_l wprintf_l wscanf_l
+#endif
+
+#endif /* _XLOCALE__WCHAR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/xpc/availability.h b/lib/libc/include/aarch64-macos-gnu/xpc/availability.h
new file mode 100644
index 0000000000..4005a84bdf
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/xpc/availability.h
@@ -0,0 +1,124 @@
+#ifndef __XPC_AVAILABILITY_H__
+#define __XPC_AVAILABILITY_H__
+
+#include <Availability.h>
+
+// Certain parts of the project use all the project's headers but have to build
+// against newer OSX SDKs than ebuild uses -- liblaunch_host being the example.
+// So we need to define these.
+#ifndef __MAC_10_16
+#define __MAC_10_16 101600
+#endif // __MAC_10_16
+
+#ifndef __MAC_10_15
+#define __MAC_10_15 101500
+#define __AVAILABILITY_INTERNAL__MAC_10_15 \
+__attribute__((availability(macosx, introduced=10.15)))
+#endif // __MAC_10_15
+
+#ifndef __MAC_10_14
+#define __MAC_10_14 101400
+#define __AVAILABILITY_INTERNAL__MAC_10_14 \
+__attribute__((availability(macosx, introduced=10.14)))
+#endif // __MAC_10_14
+
+#ifndef __MAC_10_13
+#define __MAC_10_13 101300
+#define __AVAILABILITY_INTERNAL__MAC_10_13 \
+ __attribute__((availability(macosx, introduced=10.13)))
+#endif // __MAC_10_13
+
+#ifndef __MAC_10_12
+#define __MAC_10_12 101200
+#define __AVAILABILITY_INTERNAL__MAC_10_12 \
+ __attribute__((availability(macosx, introduced=10.12)))
+#endif // __MAC_10_12
+
+#ifndef __MAC_10_11
+#define __MAC_10_11 101100
+#define __AVAILABILITY_INTERNAL__MAC_10_11 \
+ __attribute__((availability(macosx, introduced=10.11)))
+#endif // __MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_2_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_3_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_4_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_5_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_7_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_8_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_9_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_10_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11
+#define __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11
+#endif // __AVAILABILITY_INTERNAL__MAC_10_11_DEP__MAC_10_11
+
+#ifndef __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13
+#define __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13
+#endif // __AVAILABILITY_INTERNAL__MAC_10_6_DEP__MAC_10_13
+
+#if __has_include(<simulator_host.h>)
+#include <simulator_host.h>
+#else // __has_include(<simulator_host.h>)
+#ifndef IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED
+#define IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED 999999
+#endif // IPHONE_SIMULATOR_HOST_MIN_VERSION_REQUIRED
+#endif // __has_include(<simulator_host.h>)
+
+#ifndef __WATCHOS_UNAVAILABLE
+#define __WATCHOS_UNAVAILABLE
+#endif
+
+#ifndef __TVOS_UNAVAILABLE
+#define __TVOS_UNAVAILABLE
+#endif
+
+// simulator host-side bits build against SDKs not having __*_AVAILABLE() yet
+#ifndef __OSX_AVAILABLE
+#define __OSX_AVAILABLE(...)
+#endif
+
+#ifndef __IOS_AVAILABLE
+#define __IOS_AVAILABLE(...)
+#endif
+
+#ifndef __TVOS_AVAILABLE
+#define __TVOS_AVAILABLE(...)
+#endif
+
+#ifndef __WATCHOS_AVAILABLE
+#define __WATCHOS_AVAILABLE(...)
+#endif
+
+#ifndef __API_AVAILABLE
+#define __API_AVAILABLE(...)
+#endif
+
+#endif // __XPC_AVAILABILITY_H__ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/xpc/base.h b/lib/libc/include/aarch64-macos-gnu/xpc/base.h
new file mode 100644
index 0000000000..ab708965cc
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/xpc/base.h
@@ -0,0 +1,213 @@
+// Copyright (c) 2009-2011 Apple Inc. All rights reserved.
+
+#ifndef __XPC_BASE_H__
+#define __XPC_BASE_H__
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+#if !defined(__has_include)
+#define __has_include(x) 0
+#endif // !defined(__has_include)
+
+#if !defined(__has_attribute)
+#define __has_attribute(x) 0
+#endif // !defined(__has_attribute)
+
+#if !defined(__has_feature)
+#define __has_feature(x) 0
+#endif // !defined(__has_feature)
+
+#if !defined(__has_extension)
+#define __has_extension(x) 0
+#endif // !defined(__has_extension)
+
+#if __has_include(<xpc/availability.h>)
+#include <xpc/availability.h>
+#else // __has_include(<xpc/availability.h>)
+#include <Availability.h>
+#endif // __has_include(<xpc/availability.h>)
+
+#include <os/availability.h>
+
+#ifndef __XPC_INDIRECT__
+#error "Please #include <xpc/xpc.h> instead of this file directly."
+#endif // __XPC_INDIRECT__
+
+#pragma mark Attribute Shims
+#ifdef __GNUC__
+#define XPC_CONSTRUCTOR __attribute__((constructor))
+#define XPC_NORETURN __attribute__((__noreturn__))
+#define XPC_NOTHROW __attribute__((__nothrow__))
+#define XPC_NONNULL1 __attribute__((__nonnull__(1)))
+#define XPC_NONNULL2 __attribute__((__nonnull__(2)))
+#define XPC_NONNULL3 __attribute__((__nonnull__(3)))
+#define XPC_NONNULL4 __attribute__((__nonnull__(4)))
+#define XPC_NONNULL5 __attribute__((__nonnull__(5)))
+#define XPC_NONNULL6 __attribute__((__nonnull__(6)))
+#define XPC_NONNULL7 __attribute__((__nonnull__(7)))
+#define XPC_NONNULL8 __attribute__((__nonnull__(8)))
+#define XPC_NONNULL9 __attribute__((__nonnull__(9)))
+#define XPC_NONNULL10 __attribute__((__nonnull__(10)))
+#define XPC_NONNULL11 __attribute__((__nonnull__(11)))
+#define XPC_NONNULL_ALL __attribute__((__nonnull__))
+#define XPC_SENTINEL __attribute__((__sentinel__))
+#define XPC_PURE __attribute__((__pure__))
+#define XPC_WARN_RESULT __attribute__((__warn_unused_result__))
+#define XPC_MALLOC __attribute__((__malloc__))
+#define XPC_UNUSED __attribute__((__unused__))
+#define XPC_USED __attribute__((__used__))
+#define XPC_PACKED __attribute__((__packed__))
+#define XPC_PRINTF(m, n) __attribute__((format(printf, m, n)))
+#define XPC_INLINE static __inline__ __attribute__((__always_inline__))
+#define XPC_NOINLINE __attribute__((noinline))
+#define XPC_NOIMPL __attribute__((unavailable))
+
+#if __has_attribute(noescape)
+#define XPC_NOESCAPE __attribute__((__noescape__))
+#else
+#define XPC_NOESCAPE
+#endif
+
+#if __has_extension(attribute_unavailable_with_message)
+#define XPC_UNAVAILABLE(m) __attribute__((unavailable(m)))
+#else // __has_extension(attribute_unavailable_with_message)
+#define XPC_UNAVAILABLE(m) XPC_NOIMPL
+#endif // __has_extension(attribute_unavailable_with_message)
+
+#define XPC_EXPORT extern __attribute__((visibility("default")))
+#define XPC_NOEXPORT __attribute__((visibility("hidden")))
+#define XPC_WEAKIMPORT extern __attribute__((weak_import))
+#define XPC_DEBUGGER_EXCL XPC_NOEXPORT XPC_USED
+#define XPC_TRANSPARENT_UNION __attribute__((transparent_union))
+#if __clang__
+#define XPC_DEPRECATED(m) __attribute__((deprecated(m)))
+#else // __clang__
+#define XPC_DEPRECATED(m) __attribute__((deprecated))
+#endif // __clang
+
+#if defined(__XPC_TEST__) && __XPC_TEST__
+#define XPC_TESTSTATIC
+#define XPC_TESTEXTERN extern
+#else // defined(__XPC_TEST__) && __XPC_TEST__
+#define XPC_TESTSTATIC static
+#endif // defined(__XPC_TEST__) && __XPC_TEST__
+
+#if __has_feature(objc_arc)
+#define XPC_GIVES_REFERENCE __strong
+#define XPC_UNRETAINED __unsafe_unretained
+#define XPC_BRIDGE(xo) ((__bridge void *)(xo))
+#define XPC_BRIDGEREF_BEGIN(xo) ((__bridge_retained void *)(xo))
+#define XPC_BRIDGEREF_BEGIN_WITH_REF(xo) ((__bridge void *)(xo))
+#define XPC_BRIDGEREF_MIDDLE(xo) ((__bridge id)(xo))
+#define XPC_BRIDGEREF_END(xo) ((__bridge_transfer id)(xo))
+#else // __has_feature(objc_arc)
+#define XPC_GIVES_REFERENCE
+#define XPC_UNRETAINED
+#define XPC_BRIDGE(xo) (xo)
+#define XPC_BRIDGEREF_BEGIN(xo) (xo)
+#define XPC_BRIDGEREF_BEGIN_WITH_REF(xo) (xo)
+#define XPC_BRIDGEREF_MIDDLE(xo) (xo)
+#define XPC_BRIDGEREF_END(xo) (xo)
+#endif // __has_feature(objc_arc)
+
+#define _xpc_unreachable() __builtin_unreachable()
+#else // __GNUC__
+/*! @parseOnly */
+#define XPC_CONSTRUCTOR
+/*! @parseOnly */
+#define XPC_NORETURN
+/*! @parseOnly */
+#define XPC_NOTHROW
+/*! @parseOnly */
+#define XPC_NONNULL1
+/*! @parseOnly */
+#define XPC_NONNULL2
+/*! @parseOnly */
+#define XPC_NONNULL3
+/*! @parseOnly */
+#define XPC_NONNULL4
+/*! @parseOnly */
+#define XPC_NONNULL5
+/*! @parseOnly */
+#define XPC_NONNULL6
+/*! @parseOnly */
+#define XPC_NONNULL7
+/*! @parseOnly */
+#define XPC_NONNULL8
+/*! @parseOnly */
+#define XPC_NONNULL9
+/*! @parseOnly */
+#define XPC_NONNULL10
+/*! @parseOnly */
+#define XPC_NONNULL11
+/*! @parseOnly */
+#define XPC_NONNULL(n)
+/*! @parseOnly */
+#define XPC_NONNULL_ALL
+/*! @parseOnly */
+#define XPC_SENTINEL
+/*! @parseOnly */
+#define XPC_PURE
+/*! @parseOnly */
+#define XPC_WARN_RESULT
+/*! @parseOnly */
+#define XPC_MALLOC
+/*! @parseOnly */
+#define XPC_UNUSED
+/*! @parseOnly */
+#define XPC_PACKED
+/*! @parseOnly */
+#define XPC_PRINTF(m, n)
+/*! @parseOnly */
+#define XPC_INLINE static inline
+/*! @parseOnly */
+#define XPC_NOINLINE
+/*! @parseOnly */
+#define XPC_NOIMPL
+/*! @parseOnly */
+#define XPC_EXPORT extern
+/*! @parseOnly */
+#define XPC_WEAKIMPORT
+/*! @parseOnly */
+#define XPC_DEPRECATED
+/*! @parseOnly */
+#define XPC_UNAVAILABLE(m)
+/*! @parseOnly */
+#define XPC_NOESCAPE
+#endif // __GNUC__
+
+#if __has_feature(assume_nonnull)
+#define XPC_ASSUME_NONNULL_BEGIN _Pragma("clang assume_nonnull begin")
+#define XPC_ASSUME_NONNULL_END _Pragma("clang assume_nonnull end")
+#else
+#define XPC_ASSUME_NONNULL_BEGIN
+#define XPC_ASSUME_NONNULL_END
+#endif
+
+#if __has_feature(nullability_on_arrays)
+#define XPC_NONNULL_ARRAY _Nonnull
+#else
+#define XPC_NONNULL_ARRAY
+#endif
+
+#ifdef OS_CLOSED_OPTIONS
+#define XPC_FLAGS_ENUM(_name, _type, ...) \
+ OS_CLOSED_OPTIONS(_name, _type, __VA_ARGS__)
+#else // OS_CLOSED_ENUM
+#define XPC_FLAGS_ENUM(_name, _type, ...) \
+ OS_ENUM(_name, _type, __VA_ARGS__)
+#endif // OS_CLOSED_ENUM
+
+#ifdef OS_CLOSED_ENUM
+#define XPC_ENUM(_name, _type, ...) \
+ OS_CLOSED_ENUM(_name, _type, __VA_ARGS__)
+#else // OS_CLOSED_ENUM
+#define XPC_ENUM(_name, _type, ...) \
+ OS_ENUM(_name, _type, __VA_ARGS__)
+#endif // OS_CLOSED_ENUM
+
+__END_DECLS
+
+#endif // __XPC_BASE_H__ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/xpc/connection.h b/lib/libc/include/aarch64-macos-gnu/xpc/connection.h
new file mode 100644
index 0000000000..fda085bb12
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/xpc/connection.h
@@ -0,0 +1,748 @@
+#ifndef __XPC_CONNECTION_H__
+#define __XPC_CONNECTION_H__
+
+#ifndef __XPC_INDIRECT__
+#error "Please #include <xpc/xpc.h> instead of this file directly."
+// For HeaderDoc.
+#include <xpc/base.h>
+#endif // __XPC_INDIRECT__
+
+#ifndef __BLOCKS__
+#error "XPC connections require Blocks support."
+#endif // __BLOCKS__
+
+XPC_ASSUME_NONNULL_BEGIN
+__BEGIN_DECLS
+
+/*!
+ * @constant XPC_ERROR_CONNECTION_INTERRUPTED
+ * Will be delivered to the connection's event handler if the remote service
+ * exited. The connection is still live even in this case, and resending a
+ * message will cause the service to be launched on-demand. This error serves
+ * as a client's indication that it should resynchronize any state that it had
+ * given the service.
+ *
+ * Any messages in the queue to be sent will be unwound and canceled when this
+ * error occurs. In the case where a message waiting to be sent has a reply
+ * handler, that handler will be invoked with this error. In the context of the
+ * reply handler, this error indicates that a reply to the message will never
+ * arrive.
+ *
+ * Messages that do not have reply handlers associated with them will be
+ * silently disposed of. This error will only be given to peer connections.
+ */
+#define XPC_ERROR_CONNECTION_INTERRUPTED \
+ XPC_GLOBAL_OBJECT(_xpc_error_connection_interrupted)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+const struct _xpc_dictionary_s _xpc_error_connection_interrupted;
+
+/*!
+ * @constant XPC_ERROR_CONNECTION_INVALID
+ * Will be delivered to the connection's event handler if the named service
+ * provided to xpc_connection_create() could not be found in the XPC service
+ * namespace. The connection is useless and should be disposed of.
+ *
+ * Any messages in the queue to be sent will be unwound and canceled when this
+ * error occurs, similarly to the behavior when XPC_ERROR_CONNECTION_INTERRUPTED
+ * occurs. The only difference is that the XPC_ERROR_CONNECTION_INVALID will be
+ * given to outstanding reply handlers and the connection's event handler.
+ *
+ * This error may be given to any type of connection.
+ */
+#define XPC_ERROR_CONNECTION_INVALID \
+ XPC_GLOBAL_OBJECT(_xpc_error_connection_invalid)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+const struct _xpc_dictionary_s _xpc_error_connection_invalid;
+
+/*!
+ * @constant XPC_ERROR_TERMINATION_IMMINENT
+ * On macOS, this error will be delivered to a peer connection's event handler
+ * when the XPC runtime has determined that the program should exit and that
+ * all outstanding transactions must be wound down, and no new transactions can
+ * be opened.
+ *
+ * After this error has been delivered to the event handler, no more messages
+ * will be received by the connection. The runtime will still attempt to deliver
+ * outgoing messages, but this error should be treated as an indication that
+ * the program will exit very soon, and any outstanding business over the
+ * connection should be wrapped up as quickly as possible and the connection
+ * canceled shortly thereafter.
+ *
+ * This error will only be delivered to peer connections received through a
+ * listener or the xpc_main() event handler.
+ */
+#define XPC_ERROR_TERMINATION_IMMINENT \
+ XPC_GLOBAL_OBJECT(_xpc_error_termination_imminent)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+const struct _xpc_dictionary_s _xpc_error_termination_imminent;
+
+/*!
+ * @constant XPC_CONNECTION_MACH_SERVICE_LISTENER
+ * Passed to xpc_connection_create_mach_service(). This flag indicates that the
+ * caller is the listener for the named service. This flag may only be passed
+ * for services which are advertised in the process' launchd.plist(5). You may
+ * not use this flag to dynamically add services to the Mach bootstrap
+ * namespace.
+ */
+#define XPC_CONNECTION_MACH_SERVICE_LISTENER (1 << 0)
+
+/*!
+ * @constant XPC_CONNECTION_MACH_SERVICE_PRIVILEGED
+ * Passed to xpc_connection_create_mach_service(). This flag indicates that the
+ * job advertising the service name in its launchd.plist(5) should be in the
+ * privileged Mach bootstrap. This is typically accomplished by placing your
+ * launchd.plist(5) in /Library/LaunchDaemons. If specified alongside the
+ * XPC_CONNECTION_MACH_SERVICE_LISTENER flag, this flag is a no-op.
+ */
+#define XPC_CONNECTION_MACH_SERVICE_PRIVILEGED (1 << 1)
+
+/*!
+ * @typedef xpc_finalizer_f
+ * A function that is invoked when a connection is being torn down and its
+ * context needs to be freed. The sole argument is the value that was given to
+ * {@link xpc_connection_set_context} or NULL if no context has been set. It is
+ * not safe to reference the connection from within this function.
+ *
+ * @param value
+ * The context object that is to be disposed of.
+ */
+typedef void (*xpc_finalizer_t)(void * _Nullable value);
+
+/*!
+ * @function xpc_connection_create
+ * Creates a new connection object.
+ *
+ * @param name
+ * If non-NULL, the name of the service with which to connect. The returned
+ * connection will be a peer.
+ *
+ * If NULL, an anonymous listener connection will be created. You can embed the
+ * ability to create new peer connections in an endpoint, which can be inserted
+ * into a message and sent to another process .
+ *
+ * @param targetq
+ * The GCD queue to which the event handler block will be submitted. This
+ * parameter may be NULL, in which case the connection's target queue will be
+ * libdispatch's default target queue, defined as DISPATCH_TARGET_QUEUE_DEFAULT.
+ * The target queue may be changed later with a call to
+ * xpc_connection_set_target_queue().
+ *
+ * @result
+ * A new connection object. The caller is responsible for disposing of the
+ * returned object with {@link xpc_release} when it is no longer needed.
+ *
+ * @discussion
+ * This method will succeed even if the named service does not exist. This is
+ * because the XPC namespace is not queried for the service name until the
+ * connection has been activated. See {@link xpc_connection_activate()}.
+ *
+ * XPC connections, like dispatch sources, are returned in an inactive state, so
+ * you must call {@link xpc_connection_activate()} in order to begin receiving
+ * events from the connection. Also like dispatch sources, connections must be
+ * activated and not suspended in order to be safely released. It is
+ * a programming error to release an inactive or suspended connection.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_connection_t
+xpc_connection_create(const char * _Nullable name,
+ dispatch_queue_t _Nullable targetq);
+
+/*!
+ * @function xpc_connection_create_mach_service
+ * Creates a new connection object representing a Mach service.
+ *
+ * @param name
+ * The name of the remote service with which to connect. The service name must
+ * exist in a Mach bootstrap that is accessible to the process and be advertised
+ * in a launchd.plist.
+ *
+ * @param targetq
+ * The GCD queue to which the event handler block will be submitted. This
+ * parameter may be NULL, in which case the connection's target queue will be
+ * libdispatch's default target queue, defined as DISPATCH_TARGET_QUEUE_DEFAULT.
+ * The target queue may be changed later with a call to
+ * xpc_connection_set_target_queue().
+ *
+ * @param flags
+ * Additional attributes with which to create the connection.
+ *
+ * @result
+ * A new connection object.
+ *
+ * @discussion
+ * If the XPC_CONNECTION_MACH_SERVICE_LISTENER flag is given to this method,
+ * then the connection returned will be a listener connection. Otherwise, a peer
+ * connection will be returned. See the documentation for
+ * {@link xpc_connection_set_event_handler()} for the semantics of listener
+ * connections versus peer connections.
+ *
+ * This method will succeed even if the named service does not exist. This is
+ * because the Mach namespace is not queried for the service name until the
+ * connection has been activated. See {@link xpc_connection_activate()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
+xpc_connection_t
+xpc_connection_create_mach_service(const char *name,
+ dispatch_queue_t _Nullable targetq, uint64_t flags);
+
+/*!
+ * @function xpc_connection_create_from_endpoint
+ * Creates a new connection from the given endpoint.
+ *
+ * @param endpoint
+ * The endpoint from which to create the new connection.
+ *
+ * @result
+ * A new peer connection to the listener represented by the given endpoint.
+ *
+ * The same responsibilities of setting an event handler and activating the
+ * connection after calling xpc_connection_create() apply to the connection
+ * returned by this API. Since the connection yielded by this API is not
+ * associated with a name (and therefore is not rediscoverable), this connection
+ * will receive XPC_ERROR_CONNECTION_INVALID if the listening side crashes,
+ * exits or cancels the listener connection.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL_ALL
+xpc_connection_t
+xpc_connection_create_from_endpoint(xpc_endpoint_t endpoint);
+
+/*!
+ * @function xpc_connection_set_target_queue
+ * Sets the target queue of the given connection.
+ *
+ * @param connection
+ * The connection object which is to be manipulated.
+ *
+ * @param targetq
+ * The GCD queue to which the event handler block will be submitted. This
+ * parameter may be NULL, in which case the connection's target queue will be
+ * libdispatch's default target queue, defined as DISPATCH_TARGET_QUEUE_DEFAULT.
+ *
+ * @discussion
+ * Setting the target queue is asynchronous and non-preemptive and therefore
+ * this method will not interrupt the execution of an already-running event
+ * handler block. Setting the target queue may be likened to issuing a barrier
+ * to the connection which does the actual work of changing the target queue.
+ *
+ * The XPC runtime guarantees this non-preemptiveness even for concurrent target
+ * queues. If the target queue is a concurrent queue, then XPC still guarantees
+ * that there will never be more than one invocation of the connection's event
+ * handler block executing concurrently. If you wish to process events
+ * concurrently, you can dispatch_async(3) to a concurrent queue from within
+ * the event handler.
+ *
+ * IMPORTANT: When called from within the event handler block,
+ * dispatch_get_current_queue(3) is NOT guaranteed to return a pointer to the
+ * queue set with this method.
+ *
+ * Despite this seeming inconsistency, the XPC runtime guarantees that, when the
+ * target queue is a serial queue, the event handler block will execute
+ * synchonously with respect to other blocks submitted to that same queue. When
+ * the target queue is a concurrent queue, the event handler block may run
+ * concurrently with other blocks submitted to that queue, but it will never run
+ * concurrently with other invocations of itself for the same connection, as
+ * discussed previously.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_connection_set_target_queue(xpc_connection_t connection,
+ dispatch_queue_t _Nullable targetq);
+
+/*!
+ * @function xpc_connection_set_event_handler
+ * Sets the event handler block for the connection.
+ *
+ * @param connection
+ * The connection object which is to be manipulated.
+ *
+ * @param handler
+ * The event handler block.
+ *
+ * @discussion
+ * Setting the event handler is asynchronous and non-preemptive, and therefore
+ * this method will not interrupt the execution of an already-running event
+ * handler block. If the event handler is executing at the time of this call, it
+ * will finish, and then the connection's event handler will be changed before
+ * the next invocation of the event handler. The XPC runtime guarantees this
+ * non-preemptiveness even for concurrent target queues.
+ *
+ * Connection event handlers are non-reentrant, so it is safe to call
+ * xpc_connection_set_event_handler() from within the event handler block.
+ *
+ * The event handler's execution should be treated as a barrier to all
+ * connection activity. When it is executing, the connection will not attempt to
+ * send or receive messages, including reply messages. Thus, it is not safe to
+ * call xpc_connection_send_message_with_reply_sync() on the connection from
+ * within the event handler.
+ *
+ * You do not hold a reference on the object received as the event handler's
+ * only argument. Regardless of the type of object received, it is safe to call
+ * xpc_retain() on the object to obtain a reference to it.
+ *
+ * A connection may receive different events depending upon whether it is a
+ * listener or not. Any connection may receive an error in its event handler.
+ * But while normal connections may receive messages in addition to errors,
+ * listener connections will receive connections and and not messages.
+ *
+ * Connections received by listeners are equivalent to those returned by
+ * xpc_connection_create() with a non-NULL name argument and a NULL targetq
+ * argument with the exception that you do not hold a reference on them.
+ * You must set an event handler and activate the connection. If you do not wish
+ * to accept the connection, you may simply call xpc_connection_cancel() on it
+ * and return. The runtime will dispose of it for you.
+ *
+ * If there is an error in the connection, this handler will be invoked with the
+ * error dictionary as its argument. This dictionary will be one of the well-
+ * known XPC_ERROR_* dictionaries.
+ *
+ * Regardless of the type of event, ownership of the event object is NOT
+ * implicitly transferred. Thus, the object will be released and deallocated at
+ * some point in the future after the event handler returns. If you wish the
+ * event's lifetime to persist, you must retain it with xpc_retain().
+ *
+ * Connections received through the event handler will be released and
+ * deallocated after the connection has gone invalid and delivered that event to
+ * its event handler.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+void
+xpc_connection_set_event_handler(xpc_connection_t connection,
+ xpc_handler_t handler);
+
+/*!
+ * @function xpc_connection_activate
+ * Activates the connection. Connections start in an inactive state, so you must
+ * call xpc_connection_activate() on a connection before it will send or receive
+ * any messages.
+ *
+ * @param connection
+ * The connection object which is to be manipulated.
+ *
+ * @discussion
+ * Calling xpc_connection_activate() on an active connection has no effect.
+ * Releasing the last reference on an inactive connection that was created with
+ * an xpc_connection_create*() call is undefined.
+ *
+ * For backward compatibility reasons, xpc_connection_resume() on an inactive
+ * and not otherwise suspended xpc connection has the same effect as calling
+ * xpc_connection_activate(). For new code, using xpc_connection_activate()
+ * is preferred.
+ */
+__OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
+__TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0)
+XPC_EXPORT XPC_NONNULL_ALL
+void
+xpc_connection_activate(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_suspend
+ * Suspends the connection so that the event handler block will not fire and
+ * that the connection will not attempt to send any messages it has in its
+ * queue. All calls to xpc_connection_suspend() must be balanced with calls to
+ * xpc_connection_resume() before releasing the last reference to the
+ * connection.
+ *
+ * @param connection
+ * The connection object which is to be manipulated.
+ *
+ * @discussion
+ * Suspension is asynchronous and non-preemptive, and therefore this method will
+ * not interrupt the execution of an already-running event handler block. If
+ * the event handler is executing at the time of this call, it will finish, and
+ * then the connection will be suspended before the next scheduled invocation
+ * of the event handler. The XPC runtime guarantees this non-preemptiveness even
+ * for concurrent target queues.
+ *
+ * Connection event handlers are non-reentrant, so it is safe to call
+ * xpc_connection_suspend() from within the event handler block.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+void
+xpc_connection_suspend(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_resume
+ * Resumes the connection.
+ *
+ * @param connection
+ * The connection object which is to be manipulated.
+ *
+ * @discussion
+ * In order for a connection to become live, every call to
+ * xpc_connection_suspend() must be balanced with a call to
+ * xpc_connection_resume().
+ *
+ * For backward compatibility reasons, xpc_connection_resume() on an inactive
+ * and not otherwise suspended xpc connection has the same effect as calling
+ * xpc_connection_activate(). For new code, using xpc_connection_activate()
+ * is preferred.
+ *
+ * Calling xpc_connection_resume() more times than xpc_connection_suspend()
+ * has been called is otherwise considered an error.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+void
+xpc_connection_resume(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_send_message
+ * Sends a message over the connection to the destination service.
+ *
+ * @param connection
+ * The connection over which the message shall be sent.
+ *
+ * @param message
+ * The message to send. This must be a dictionary object. This dictionary is
+ * logically copied by the connection, so it is safe to modify the dictionary
+ * after this call.
+ *
+ * @discussion
+ * Messages are delivered in FIFO order. This API is safe to call from multiple
+ * GCD queues. There is no indication that a message was delivered successfully.
+ * This is because even once the message has been successfully enqueued on the
+ * remote end, there are no guarantees about when the runtime will dequeue the
+ * message and invoke the other connection's event handler block.
+ *
+ * If this API is used to send a message that is in reply to another message,
+ * there is no guarantee of ordering between the invocations of the connection's
+ * event handler and the reply handler for that message, even if they are
+ * targeted to the same queue.
+ *
+ * After extensive study, we have found that clients who are interested in
+ * the state of the message on the server end are typically holding open
+ * transactions related to that message. And the only reliable way to track the
+ * lifetime of that transaction is at the protocol layer. So the server should
+ * send a reply message, which upon receiving, will cause the client to close
+ * its transaction.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+void
+xpc_connection_send_message(xpc_connection_t connection, xpc_object_t message);
+
+/*!
+ * @function xpc_connection_send_barrier
+ * Issues a barrier against the connection's message-send activity.
+ *
+ * @param connection
+ * The connection against which the barrier is to be issued.
+ *
+ * @param barrier
+ * The barrier block to issue. This barrier prevents concurrent message-send
+ * activity on the connection. No messages will be sent while the barrier block
+ * is executing.
+ *
+ * @discussion
+ * XPC guarantees that, even if the connection's target queue is a concurrent
+ * queue, there are no other messages being sent concurrently while the barrier
+ * block is executing. XPC does not guarantee that the receipt of messages
+ * (either through the connection's event handler or through reply handlers)
+ * will be suspended while the barrier is executing.
+ *
+ * A barrier is issued relative to the message-send queue. Thus, if you call
+ * xpc_connection_send_message() five times and then call
+ * xpc_connection_send_barrier(), the barrier will be invoked after the fifth
+ * message has been sent and its memory disposed of. You may safely cancel a
+ * connection from within a barrier block.
+ *
+ * If a barrier is issued after sending a message which expects a reply, the
+ * behavior is the same as described above. The receipt of a reply message will
+ * not influence when the barrier runs.
+ *
+ * A barrier block can be useful for throttling resource consumption on the
+ * connected side of a connection. For example, if your connection sends many
+ * large messages, you can use a barrier to limit the number of messages that
+ * are inflight at any given time. This can be particularly useful for messages
+ * that contain kernel resources (like file descriptors) which have a system-
+ * wide limit.
+ *
+ * If a barrier is issued on a canceled connection, it will be invoked
+ * immediately. If a connection has been canceled and still has outstanding
+ * barriers, those barriers will be invoked as part of the connection's
+ * unwinding process.
+ *
+ * It is important to note that a barrier block's execution order is not
+ * guaranteed with respect to other blocks that have been scheduled on the
+ * target queue of the connection. Or said differently,
+ * xpc_connection_send_barrier(3) is not equivalent to dispatch_async(3).
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+void
+xpc_connection_send_barrier(xpc_connection_t connection,
+ dispatch_block_t barrier);
+
+/*!
+ * @function xpc_connection_send_message_with_reply
+ * Sends a message over the connection to the destination service and associates
+ * a handler to be invoked when the remote service sends a reply message.
+ *
+ * @param connection
+ * The connection over which the message shall be sent.
+ *
+ * @param message
+ * The message to send. This must be a dictionary object.
+ *
+ * @param replyq
+ * The GCD queue to which the reply handler will be submitted. This may be a
+ * concurrent queue.
+ *
+ * @param handler
+ * The handler block to invoke when a reply to the message is received from
+ * the connection. If the remote service exits prematurely before the reply was
+ * received, the XPC_ERROR_CONNECTION_INTERRUPTED error will be returned.
+ * If the connection went invalid before the message could be sent, the
+ * XPC_ERROR_CONNECTION_INVALID error will be returned.
+ *
+ * @discussion
+ * If the given GCD queue is a concurrent queue, XPC cannot guarantee that there
+ * will not be multiple reply handlers being invoked concurrently. XPC does not
+ * guarantee any ordering for the invocation of reply handers. So if multiple
+ * messages are waiting for replies and the connection goes invalid, there is no
+ * guarantee that the reply handlers will be invoked in FIFO order. Similarly,
+ * XPC does not guarantee that reply handlers will not run concurrently with
+ * the connection's event handler in the case that the reply queue and the
+ * connection's target queue are the same concurrent queue.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL4
+void
+xpc_connection_send_message_with_reply(xpc_connection_t connection,
+ xpc_object_t message, dispatch_queue_t _Nullable replyq,
+ xpc_handler_t handler);
+
+/*!
+ * @function xpc_connection_send_message_with_reply_sync
+ * Sends a message over the connection and blocks the caller until a reply is
+ * received.
+ *
+ * @param connection
+ * The connection over which the message shall be sent.
+ *
+ * @param message
+ * The message to send. This must be a dictionary object.
+ *
+ * @result
+ * The message that the remote service sent in reply to the original message.
+ * If the remote service exits prematurely before the reply was received, the
+ * XPC_ERROR_CONNECTION_INTERRUPTED error will be returned. If the connection
+ * went invalid before the message could be sent, the
+ * XPC_ERROR_CONNECTION_INVALID error will be returned.
+ *
+ * You are responsible for releasing the returned object.
+ *
+ * @discussion
+ * This API supports priority inversion avoidance, and should be used instead of
+ * combining xpc_connection_send_message_with_reply() with a semaphore.
+ *
+ * Invoking this API from a queue that is a part of the target queue hierarchy
+ * results in deadlocks under certain conditions.
+ *
+ * Be judicious about your use of this API. It can block indefinitely, so if you
+ * are using it to implement an API that can be called from the main thread, you
+ * may wish to consider allowing the API to take a queue and callback block so
+ * that results may be delivered asynchronously if possible.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT XPC_RETURNS_RETAINED
+xpc_object_t
+xpc_connection_send_message_with_reply_sync(xpc_connection_t connection,
+ xpc_object_t message);
+
+/*!
+ * @function xpc_connection_cancel
+ * Cancels the connection and ensures that its event handler will not fire
+ * again. After this call, any messages that have not yet been sent will be
+ * discarded, and the connection will be unwound. If there are messages that are
+ * awaiting replies, they will have their reply handlers invoked with the
+ * XPC_ERROR_CONNECTION_INVALID error.
+ *
+ * @param connection
+ * The connection object which is to be manipulated.
+ *
+ * @discussion
+ * Cancellation is asynchronous and non-preemptive and therefore this method
+ * will not interrupt the execution of an already-running event handler block.
+ * If the event handler is executing at the time of this call, it will finish,
+ * and then the connection will be canceled, causing a final invocation of the
+ * event handler to be scheduled with the XPC_ERROR_CONNECTION_INVALID error.
+ * After that invocation, there will be no further invocations of the event
+ * handler.
+ *
+ * The XPC runtime guarantees this non-preemptiveness even for concurrent target
+ * queues.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+void
+xpc_connection_cancel(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_get_name
+ * Returns the name of the service with which the connections was created.
+ *
+ * @param connection
+ * The connection object which is to be examined.
+ *
+ * @result
+ * The name of the remote service. If you obtained the connection through an
+ * invocation of another connection's event handler, NULL is returned.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT
+const char * _Nullable
+xpc_connection_get_name(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_get_euid
+ * Returns the EUID of the remote peer.
+ *
+ * @param connection
+ * The connection object which is to be examined.
+ *
+ * @result
+ * The EUID of the remote peer at the time the connection was made.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT
+uid_t
+xpc_connection_get_euid(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_get_egid
+ * Returns the EGID of the remote peer.
+ *
+ * @param connection
+ * The connection object which is to be examined.
+ *
+ * @result
+ * The EGID of the remote peer at the time the connection was made.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT
+gid_t
+xpc_connection_get_egid(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_get_pid
+ * Returns the PID of the remote peer.
+ *
+ * @param connection
+ * The connection object which is to be examined.
+ *
+ * @result
+ * The PID of the remote peer.
+ *
+ * @discussion
+ * A given PID is not guaranteed to be unique across an entire boot cycle.
+ * Great care should be taken when dealing with this information, as it can go
+ * stale after the connection is established. OS X recycles PIDs, and therefore
+ * another process could spawn and claim the PID before a message is actually
+ * received from the connection.
+ *
+ * XPC will deliver an error to your event handler if the remote process goes
+ * away, but there are no guarantees as to the timing of this notification's
+ * delivery either at the kernel layer or at the XPC layer.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT
+pid_t
+xpc_connection_get_pid(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_get_asid
+ * Returns the audit session identifier of the remote peer.
+ *
+ * @param connection
+ * The connection object which is to be examined.
+ *
+ * @result
+ * The audit session ID of the remote peer at the time the connection was made.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT
+au_asid_t
+xpc_connection_get_asid(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_set_context
+ * Sets context on an connection.
+ *
+ * @param connection
+ * The connection which is to be manipulated.
+ *
+ * @param context
+ * The context to associate with the connection.
+ *
+ * @discussion
+ * If you must manage the memory of the context object, you must set a finalizer
+ * to dispose of it. If this method is called on a connection which already has
+ * context associated with it, the finalizer will NOT be invoked. The finalizer
+ * is only invoked when the connection is being deallocated.
+ *
+ * It is recommended that, instead of changing the actual context pointer
+ * associated with the object, you instead change the state of the context
+ * object itself.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_connection_set_context(xpc_connection_t connection,
+ void * _Nullable context);
+
+/*!
+ * @function xpc_connection_get_context
+ * Returns the context associated with the connection.
+ *
+ * @param connection
+ * The connection which is to be examined.
+ *
+ * @result
+ * The context associated with the connection. NULL if there has been no context
+ * associated with the object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT
+void * _Nullable
+xpc_connection_get_context(xpc_connection_t connection);
+
+/*!
+ * @function xpc_connection_set_finalizer_f
+ * Sets the finalizer for the given connection.
+ *
+ * @param connection
+ * The connection on which to set the finalizer.
+ *
+ * @param finalizer
+ * The function that will be invoked when the connection's retain count has
+ * dropped to zero and is being torn down.
+ *
+ * @discussion
+ * This method disposes of the context value associated with a connection, as
+ * set by {@link xpc_connection_set_context}.
+ *
+ * For many uses of context objects, this API allows for a convenient shorthand
+ * for freeing them. For example, for a context object allocated with malloc(3):
+ *
+ * xpc_connection_set_finalizer_f(object, free);
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_connection_set_finalizer_f(xpc_connection_t connection,
+ xpc_finalizer_t _Nullable finalizer);
+
+__END_DECLS
+XPC_ASSUME_NONNULL_END
+
+#endif // __XPC_CONNECTION_H__ \ No newline at end of file
diff --git a/lib/libc/include/aarch64-macos-gnu/xpc/xpc.h b/lib/libc/include/aarch64-macos-gnu/xpc/xpc.h
new file mode 100644
index 0000000000..5fdc35ee8c
--- /dev/null
+++ b/lib/libc/include/aarch64-macos-gnu/xpc/xpc.h
@@ -0,0 +1,2701 @@
+// Copyright (c) 2009-2020 Apple Inc. All rights reserved.
+
+#ifndef __XPC_H__
+#define __XPC_H__
+
+#include <os/object.h>
+#include <dispatch/dispatch.h>
+
+#include <sys/mman.h>
+#include <uuid/uuid.h>
+#include <bsm/audit.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#ifndef __XPC_INDIRECT__
+#define __XPC_INDIRECT__
+#endif // __XPC_INDIRECT__
+
+#include <xpc/base.h>
+
+#if __has_include(<xpc/xpc_transaction_deprecate.h>)
+#include <xpc/xpc_transaction_deprecate.h>
+#else // __has_include(<xpc/transaction_deprecate.h>)
+#define XPC_TRANSACTION_DEPRECATED
+#endif // __has_include(<xpc/transaction_deprecate.h>)
+
+XPC_ASSUME_NONNULL_BEGIN
+__BEGIN_DECLS
+
+#ifndef __OSX_AVAILABLE_STARTING
+#define __OSX_AVAILABLE_STARTING(x, y)
+#endif // __OSX_AVAILABLE_STARTING
+
+#define XPC_API_VERSION 20200610
+
+/*!
+ * @typedef xpc_type_t
+ * A type that describes XPC object types.
+ */
+typedef const struct _xpc_type_s * xpc_type_t;
+#ifndef XPC_TYPE
+#define XPC_TYPE(type) const struct _xpc_type_s type
+#endif // XPC_TYPE
+
+/*!
+ * @typedef xpc_object_t
+ * A type that can describe all XPC objects. Dictionaries, arrays, strings, etc.
+ * are all described by this type.
+ *
+ * XPC objects are created with a retain count of 1, and therefore it is the
+ * caller's responsibility to call xpc_release() on them when they are no longer
+ * needed.
+ */
+
+#if OS_OBJECT_USE_OBJC
+/* By default, XPC objects are declared as Objective-C types when building with
+ * an Objective-C compiler. This allows them to participate in ARC, in RR
+ * management by the Blocks runtime and in leaks checking by the static
+ * analyzer, and enables them to be added to Cocoa collections.
+ *
+ * See <os/object.h> for details.
+ */
+OS_OBJECT_DECL(xpc_object);
+#ifndef XPC_DECL
+#define XPC_DECL(name) typedef xpc_object_t name##_t
+#endif // XPC_DECL
+
+#define XPC_GLOBAL_OBJECT(object) ((OS_OBJECT_BRIDGE xpc_object_t)&(object))
+#define XPC_RETURNS_RETAINED OS_OBJECT_RETURNS_RETAINED
+XPC_INLINE XPC_NONNULL_ALL
+void
+_xpc_object_validate(xpc_object_t object) {
+ (void)*(unsigned long volatile *)(OS_OBJECT_BRIDGE void *)object;
+}
+#else // OS_OBJECT_USE_OBJC
+typedef void * xpc_object_t;
+#define XPC_DECL(name) typedef struct _##name##_s * name##_t
+#define XPC_GLOBAL_OBJECT(object) (&(object))
+#define XPC_RETURNS_RETAINED
+#endif // OS_OBJECT_USE_OBJC
+
+/*!
+ * @typedef xpc_handler_t
+ * The type of block that is accepted by the XPC connection APIs.
+ *
+ * @param object
+ * An XPC object that is to be handled. If there was an error, this object will
+ * be equal to one of the well-known XPC_ERROR_* dictionaries and can be
+ * compared with the equality operator.
+ *
+ * @discussion
+ * You are not responsible for releasing the event object.
+ */
+#if __BLOCKS__
+typedef void (^xpc_handler_t)(xpc_object_t object);
+#endif // __BLOCKS__
+
+/*!
+ * @define XPC_TYPE_CONNECTION
+ * A type representing a connection to a named service. This connection is
+ * bidirectional and can be used to both send and receive messages. A
+ * connection carries the credentials of the remote service provider.
+ */
+#define XPC_TYPE_CONNECTION (&_xpc_type_connection)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_connection);
+XPC_DECL(xpc_connection);
+
+/*!
+ * @typedef xpc_connection_handler_t
+ * The type of the function that will be invoked for a bundled XPC service when
+ * there is a new connection on the service.
+ *
+ * @param connection
+ * A new connection that is equivalent to one received by a listener connection.
+ * See the documentation for {@link xpc_connection_set_event_handler} for the
+ * semantics associated with the received connection.
+ */
+typedef void (*xpc_connection_handler_t)(xpc_connection_t connection);
+
+/*!
+ * @define XPC_TYPE_ENDPOINT
+ * A type representing a connection in serialized form. Unlike a connection, an
+ * endpoint is an inert object that does not have any runtime activity
+ * associated with it. Thus, it is safe to pass an endpoint in a message. Upon
+ * receiving an endpoint, the recipient can use
+ * xpc_connection_create_from_endpoint() to create as many distinct connections
+ * as desired.
+ */
+#define XPC_TYPE_ENDPOINT (&_xpc_type_endpoint)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_endpoint);
+XPC_DECL(xpc_endpoint);
+
+/*!
+ * @define XPC_TYPE_NULL
+ * A type representing a null object. This type is useful for disambiguating
+ * an unset key in a dictionary and one which has been reserved but set empty.
+ * Also, this type is a way to represent a "null" value in dictionaries, which
+ * do not accept NULL.
+ */
+#define XPC_TYPE_NULL (&_xpc_type_null)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_null);
+
+/*!
+ * @define XPC_TYPE_BOOL
+ * A type representing a Boolean value.
+ */
+#define XPC_TYPE_BOOL (&_xpc_type_bool)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_bool);
+
+/*!
+ * @define XPC_BOOL_TRUE
+ * A constant representing a Boolean value of true. You may compare a Boolean
+ * object against this constant to determine its value.
+ */
+#define XPC_BOOL_TRUE XPC_GLOBAL_OBJECT(_xpc_bool_true)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+const struct _xpc_bool_s _xpc_bool_true;
+
+/*!
+ * @define XPC_BOOL_FALSE
+ * A constant representing a Boolean value of false. You may compare a Boolean
+ * object against this constant to determine its value.
+ */
+#define XPC_BOOL_FALSE XPC_GLOBAL_OBJECT(_xpc_bool_false)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+const struct _xpc_bool_s _xpc_bool_false;
+
+/*!
+ * @define XPC_TYPE_INT64
+ * A type representing a signed, 64-bit integer value.
+ */
+#define XPC_TYPE_INT64 (&_xpc_type_int64)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_int64);
+
+/*!
+ * @define XPC_TYPE_UINT64
+ * A type representing an unsigned, 64-bit integer value.
+ */
+#define XPC_TYPE_UINT64 (&_xpc_type_uint64)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_uint64);
+
+/*!
+ * @define XPC_TYPE_DOUBLE
+ * A type representing an IEEE-compliant, double-precision floating point value.
+ */
+#define XPC_TYPE_DOUBLE (&_xpc_type_double)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_double);
+
+/*!
+ * @define XPC_TYPE_DATE
+* A type representing a date interval. The interval is with respect to the
+ * Unix epoch. XPC dates are in Unix time and are thus unaware of local time
+ * or leap seconds.
+ */
+#define XPC_TYPE_DATE (&_xpc_type_date)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_date);
+
+/*!
+ * @define XPC_TYPE_DATA
+ * A type representing a an arbitrary buffer of bytes.
+ */
+#define XPC_TYPE_DATA (&_xpc_type_data)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_data);
+
+/*!
+ * @define XPC_TYPE_STRING
+ * A type representing a NUL-terminated C-string.
+ */
+#define XPC_TYPE_STRING (&_xpc_type_string)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_string);
+
+/*!
+ * @define XPC_TYPE_UUID
+ * A type representing a Universally Unique Identifier as defined by uuid(3).
+ */
+#define XPC_TYPE_UUID (&_xpc_type_uuid)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_uuid);
+
+/*!
+ * @define XPC_TYPE_FD
+ * A type representing a POSIX file descriptor.
+ */
+#define XPC_TYPE_FD (&_xpc_type_fd)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_fd);
+
+/*!
+ * @define XPC_TYPE_SHMEM
+ * A type representing a region of shared memory.
+ */
+#define XPC_TYPE_SHMEM (&_xpc_type_shmem)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_shmem);
+
+/*!
+ * @define XPC_TYPE_ARRAY
+ * A type representing an array of XPC objects. This array must be contiguous,
+ * i.e. it cannot contain NULL values. If you wish to indicate that a slot
+ * is empty, you can insert a null object. The array will grow as needed to
+ * accommodate more objects.
+ */
+#define XPC_TYPE_ARRAY (&_xpc_type_array)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_array);
+
+/*!
+ * @define XPC_TYPE_DICTIONARY
+ * A type representing a dictionary of XPC objects, keyed off of C-strings.
+ * You may insert NULL values into this collection. The dictionary will grow
+ * as needed to accommodate more key/value pairs.
+ */
+#define XPC_TYPE_DICTIONARY (&_xpc_type_dictionary)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_dictionary);
+
+/*!
+ * @define XPC_TYPE_ERROR
+ * A type representing an error object. Errors in XPC are dictionaries, but
+ * xpc_get_type() will return this type when given an error object. You
+ * cannot create an error object directly; XPC will only give them to handlers.
+ * These error objects have pointer values that are constant across the lifetime
+ * of your process and can be safely compared.
+ *
+ * These constants are enumerated in the header for the connection object. Error
+ * dictionaries may reserve keys so that they can be queried to obtain more
+ * detailed information about the error. Currently, the only reserved key is
+ * XPC_ERROR_KEY_DESCRIPTION.
+ */
+#define XPC_TYPE_ERROR (&_xpc_type_error)
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+XPC_TYPE(_xpc_type_error);
+
+/*!
+ * @define XPC_ERROR_KEY_DESCRIPTION
+ * In an error dictionary, querying for this key will return a string object
+ * that describes the error in a human-readable way.
+ */
+#define XPC_ERROR_KEY_DESCRIPTION _xpc_error_key_description
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+const char * const _xpc_error_key_description;
+
+/*!
+ * @define XPC_EVENT_KEY_NAME
+ * In an event dictionary, this querying for this key will return a string
+ * object that describes the event.
+ */
+#define XPC_EVENT_KEY_NAME _xpc_event_key_name
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+const char * const _xpc_event_key_name;
+
+XPC_ASSUME_NONNULL_END
+#if !defined(__XPC_BUILDING_XPC__) || !__XPC_BUILDING_XPC__
+#include <xpc/endpoint.h>
+#include <xpc/debug.h>
+#if __BLOCKS__
+#include <xpc/connection.h>
+#include <xpc/activity.h>
+#endif // __BLOCKS__
+#undef __XPC_INDIRECT__
+#include <launch.h>
+#endif // !defined(__XPC_BUILDING_XPC__) || !__XPC_BUILDING_XPC__
+XPC_ASSUME_NONNULL_BEGIN
+
+#pragma mark XPC Object Protocol
+/*!
+ * @function xpc_retain
+ *
+ * @abstract
+ * Increments the reference count of an object.
+ *
+ * @param object
+ * The object which is to be manipulated.
+ *
+ * @result
+ * The object which was given.
+ *
+ * @discussion
+ * Calls to xpc_retain() must be balanced with calls to xpc_release()
+ * to avoid leaking memory.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+xpc_object_t
+xpc_retain(xpc_object_t object);
+#if OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+#undef xpc_retain
+#define xpc_retain(object) ({ xpc_object_t _o = (object); \
+ _xpc_object_validate(_o); [_o retain]; })
+#endif // OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+
+/*!
+ * @function xpc_release
+ *
+ * @abstract
+ * Decrements the reference count of an object.
+ *
+ * @param object
+ * The object which is to be manipulated.
+ *
+ * @discussion
+ * The caller must take care to balance retains and releases. When creating or
+ * retaining XPC objects, the creator obtains a reference on the object. Thus,
+ * it is the caller's responsibility to call xpc_release() on those objects when
+ * they are no longer needed.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_release(xpc_object_t object);
+#if OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+#undef xpc_release
+#define xpc_release(object) ({ xpc_object_t _o = (object); \
+ _xpc_object_validate(_o); [_o release]; })
+#endif // OS_OBJECT_USE_OBJC_RETAIN_RELEASE
+
+/*!
+ * @function xpc_get_type
+ *
+ * @abstract
+ * Returns the type of an object.
+ *
+ * @param object
+ * The object to examine.
+ *
+ * @result
+ * An opaque pointer describing the type of the object. This pointer is suitable
+ * direct comparison to exported type constants with the equality operator.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT
+xpc_type_t
+xpc_get_type(xpc_object_t object);
+
+/*!
+ * @function xpc_type_get_name
+ *
+ * @abstract
+ * Returns a string describing an XPC object type.
+ *
+ * @param type
+ * The type to describe.
+ *
+ * @result
+ * A string describing the type of an object, like "string" or "int64".
+ * This string should not be freed or modified.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_15, __IPHONE_13_0)
+XPC_EXPORT XPC_NONNULL1
+const char *
+xpc_type_get_name(xpc_type_t type);
+
+/*!
+ * @function xpc_copy
+ *
+ * @abstract
+ * Creates a copy of the object.
+ *
+ * @param object
+ * The object to copy.
+ *
+ * @result
+ * The new object. NULL if the object type does not support copying or if
+ * sufficient memory for the copy could not be allocated. Service objects do
+ * not support copying.
+ *
+ * @discussion
+ * When called on an array or dictionary, xpc_copy() will perform a deep copy.
+ *
+ * The object returned is not necessarily guaranteed to be a new object, and
+ * whether it is will depend on the implementation of the object being copied.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL XPC_WARN_RESULT XPC_RETURNS_RETAINED
+xpc_object_t _Nullable
+xpc_copy(xpc_object_t object);
+
+/*!
+ * @function xpc_equal
+ *
+ * @abstract
+ * Compares two objects for equality.
+ *
+ * @param object1
+ * The first object to compare.
+ *
+ * @param object2
+ * The second object to compare.
+ *
+ * @result
+ * Returns true if the objects are equal, otherwise false. Two objects must be
+ * of the same type in order to be equal.
+ *
+ * For two arrays to be equal, they must contain the same values at the
+ * same indexes. For two dictionaries to be equal, they must contain the same
+ * values for the same keys.
+ *
+ * Two objects being equal implies that their hashes (as returned by xpc_hash())
+ * are also equal.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_WARN_RESULT
+bool
+xpc_equal(xpc_object_t object1, xpc_object_t object2);
+
+/*!
+ * @function xpc_hash
+ *
+ * @abstract
+ * Calculates a hash value for the given object.
+ *
+ * @param object
+ * The object for which to calculate a hash value. This value may be modded
+ * with a table size for insertion into a dictionary-like data structure.
+ *
+ * @result
+ * The calculated hash value.
+ *
+ * @discussion
+ * Note that the computed hash values for any particular type and value of an
+ * object can change from across releases and platforms and should not be
+ * assumed to be constant across all time and space or stored persistently.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_WARN_RESULT
+size_t
+xpc_hash(xpc_object_t object);
+
+/*!
+ * @function xpc_copy_description
+ *
+ * @abstract
+ * Copies a debug string describing the object.
+ *
+ * @param object
+ * The object which is to be examined.
+ *
+ * @result
+ * A string describing object which contains information useful for debugging.
+ * This string should be disposed of with free(3) when done.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_WARN_RESULT XPC_NONNULL1
+char *
+xpc_copy_description(xpc_object_t object);
+
+#pragma mark XPC Object Types
+#pragma mark Null
+/*!
+ * @function xpc_null_create
+ *
+ * @abstract
+ * Creates an XPC object representing the null object.
+ *
+ * @result
+ * A new null object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_null_create(void);
+
+#pragma mark Boolean
+/*!
+ * @function xpc_bool_create
+ *
+ * @abstract
+ * Creates an XPC Boolean object.
+ *
+ * @param value
+ * The Boolean primitive value which is to be boxed.
+ *
+ * @result
+ * A new Boolean object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_bool_create(bool value);
+
+/*!
+ * @function xpc_bool_get_value
+ *
+ * @abstract
+ * Returns the underlying Boolean value from the object.
+ *
+ * @param xbool
+ * The Boolean object which is to be examined.
+ *
+ * @result
+ * The underlying Boolean value or false if the given object was not an XPC
+ * Boolean object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT
+bool
+xpc_bool_get_value(xpc_object_t xbool);
+
+#pragma mark Signed Integer
+/*!
+ * @function xpc_int64_create
+ *
+ * @abstract
+ * Creates an XPC signed integer object.
+ *
+ * @param value
+ * The signed integer value which is to be boxed.
+ *
+ * @result
+ * A new signed integer object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_int64_create(int64_t value);
+
+/*!
+ * @function xpc_int64_get_value
+ *
+ * @abstract
+ * Returns the underlying signed 64-bit integer value from an object.
+ *
+ * @param xint
+ * The signed integer object which is to be examined.
+ *
+ * @result
+ * The underlying signed 64-bit value or 0 if the given object was not an XPC
+ * integer object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+int64_t
+xpc_int64_get_value(xpc_object_t xint);
+
+#pragma mark Unsigned Integer
+/*!
+ * @function xpc_uint64_create
+ *
+ * @abstract
+ * Creates an XPC unsigned integer object.
+ *
+ * @param value
+ * The unsigned integer value which is to be boxed.
+ *
+ * @result
+ * A new unsigned integer object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_uint64_create(uint64_t value);
+
+/*!
+ * @function xpc_uint64_get_value
+ *
+ * @abstract
+ * Returns the underlying unsigned 64-bit integer value from an object.
+ *
+ * @param xuint
+ * The unsigned integer object which is to be examined.
+ *
+ * @result
+ * The underlying unsigned integer value or 0 if the given object was not an XPC
+ * unsigned integer object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+uint64_t
+xpc_uint64_get_value(xpc_object_t xuint);
+
+#pragma mark Double
+/*!
+ * @function xpc_double_create
+ *
+ * @abstract
+ * Creates an XPC double object.
+ *
+ * @param value
+ * The floating point quantity which is to be boxed.
+ *
+ * @result
+ * A new floating point object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_double_create(double value);
+
+/*!
+ * @function xpc_double_get_value
+ *
+ * @abstract
+ * Returns the underlying double-precision floating point value from an object.
+ *
+ * @param xdouble
+ * The floating point object which is to be examined.
+ *
+ * @result
+ * The underlying floating point value or NAN if the given object was not an XPC
+ * floating point object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+double
+xpc_double_get_value(xpc_object_t xdouble);
+
+#pragma mark Date
+/*!
+ * @function xpc_date_create
+ *
+ * @abstract
+ * Creates an XPC date object.
+ *
+ * @param interval
+ * The date interval which is to be boxed. Negative values indicate the number
+ * of nanoseconds before the epoch. Positive values indicate the number of
+ * nanoseconds after the epoch.
+ *
+ * @result
+ * A new date object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_date_create(int64_t interval);
+
+/*!
+ * @function xpc_date_create_from_current
+ *
+ * @abstract
+ * Creates an XPC date object representing the current date.
+ *
+ * @result
+ * A new date object representing the current date.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_date_create_from_current(void);
+
+/*!
+ * @function xpc_date_get_value
+ *
+ * @abstract
+ * Returns the underlying date interval from an object.
+ *
+ * @param xdate
+ * The date object which is to be examined.
+ *
+ * @result
+ * The underlying date interval or 0 if the given object was not an XPC date
+ * object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+int64_t
+xpc_date_get_value(xpc_object_t xdate);
+
+#pragma mark Data
+/*!
+ * @function xpc_data_create
+ *
+ * @abstract
+ * Creates an XPC object representing buffer of bytes.
+ *
+ * @param bytes
+ * The buffer of bytes which is to be boxed. You may create an empty data object
+ * by passing NULL for this parameter and 0 for the length. Passing NULL with
+ * any other length will result in undefined behavior.
+ *
+ * @param length
+ * The number of bytes which are to be boxed.
+ *
+ * @result
+ * A new data object.
+ *
+ * @discussion
+ * This method will copy the buffer given into internal storage. After calling
+ * this method, it is safe to dispose of the given buffer.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_data_create(const void * _Nullable bytes, size_t length);
+
+/*!
+ * @function xpc_data_create_with_dispatch_data
+ *
+ * @abstract
+ * Creates an XPC object representing buffer of bytes described by the given GCD
+ * data object.
+ *
+ * @param ddata
+ * The GCD data object containing the bytes which are to be boxed. This object
+ * is retained by the data object.
+ *
+ * @result
+ * A new data object.
+ *
+ * @discussion
+ * The object returned by this method will refer to the buffer returned by
+ * dispatch_data_create_map(). The point where XPC will make the call to
+ * dispatch_data_create_map() is undefined.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
+xpc_object_t
+xpc_data_create_with_dispatch_data(dispatch_data_t ddata);
+
+/*!
+ * @function xpc_data_get_length
+ *
+ * @abstract
+ * Returns the length of the data encapsulated by an XPC data object.
+ *
+ * @param xdata
+ * The data object which is to be examined.
+ *
+ * @result
+ * The length of the underlying boxed data or 0 if the given object was not an
+ * XPC data object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+size_t
+xpc_data_get_length(xpc_object_t xdata);
+
+/*!
+ * @function xpc_data_get_bytes_ptr
+ *
+ * @abstract
+ * Returns a pointer to the internal storage of a data object.
+ *
+ * @param xdata
+ * The data object which is to be examined.
+ *
+ * @result
+ * A pointer to the underlying boxed data or NULL if the given object was not an
+ * XPC data object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+const void * _Nullable
+xpc_data_get_bytes_ptr(xpc_object_t xdata);
+
+/*!
+ * @function xpc_data_get_bytes
+ *
+ * @abstract
+ * Copies the bytes stored in an data objects into the specified buffer.
+ *
+ * @param xdata
+ * The data object which is to be examined.
+ *
+ * @param buffer
+ * The buffer in which to copy the data object's bytes.
+ *
+ * @param off
+ * The offset at which to begin the copy. If this offset is greater than the
+ * length of the data element, nothing is copied. Pass 0 to start the copy
+ * at the beginning of the buffer.
+ *
+ * @param length
+ * The length of the destination buffer.
+ *
+ * @result
+ * The number of bytes that were copied into the buffer or 0 if the given object
+ * was not an XPC data object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1 XPC_NONNULL2
+size_t
+xpc_data_get_bytes(xpc_object_t xdata,
+ void *buffer, size_t off, size_t length);
+
+#pragma mark String
+/*!
+ * @function xpc_string_create
+ *
+ * @abstract
+ * Creates an XPC object representing a NUL-terminated C-string.
+ *
+ * @param string
+ * The C-string which is to be boxed.
+ *
+ * @result
+ * A new string object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
+xpc_object_t
+xpc_string_create(const char *string);
+
+/*!
+ * @function xpc_string_create_with_format
+ *
+ * @abstract
+ * Creates an XPC object representing a C-string that is generated from the
+ * given format string and arguments.
+ *
+ * @param fmt
+ * The printf(3)-style format string from which to construct the final C-string
+ * to be boxed.
+ *
+ * @param ...
+ * The arguments which correspond to those specified in the format string.
+ *
+ * @result
+ * A new string object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
+XPC_PRINTF(1, 2)
+xpc_object_t
+xpc_string_create_with_format(const char *fmt, ...);
+
+/*!
+ * @function xpc_string_create_with_format_and_arguments
+ *
+ * @abstract
+ * Creates an XPC object representing a C-string that is generated from the
+ * given format string and argument list pointer.
+ *
+ * @param fmt
+ * The printf(3)-style format string from which to construct the final C-string
+ * to be boxed.
+ *
+ * @param ap
+ * A pointer to the arguments which correspond to those specified in the format
+ * string.
+ *
+ * @result
+ * A new string object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
+XPC_PRINTF(1, 0)
+xpc_object_t
+xpc_string_create_with_format_and_arguments(const char *fmt, va_list ap);
+
+/*!
+ * @function xpc_string_get_length
+ *
+ * @abstract
+ * Returns the length of the underlying string.
+ *
+ * @param xstring
+ * The string object which is to be examined.
+ *
+ * @result
+ * The length of the underlying string, not including the NUL-terminator, or 0
+ * if the given object was not an XPC string object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+size_t
+xpc_string_get_length(xpc_object_t xstring);
+
+/*!
+ * @function xpc_string_get_string_ptr
+ *
+ * @abstract
+ * Returns a pointer to the internal storage of a string object.
+ *
+ * @param xstring
+ * The string object which is to be examined.
+ *
+ * @result
+ * A pointer to the string object's internal storage or NULL if the given object
+ * was not an XPC string object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+const char * _Nullable
+xpc_string_get_string_ptr(xpc_object_t xstring);
+
+#pragma mark UUID
+/*!
+ * @function xpc_uuid_create
+ *
+ * @abstract
+ * Creates an XPC object representing a universally-unique identifier (UUID) as
+ * described by uuid(3).
+ *
+ * @param uuid
+ * The UUID which is to be boxed.
+ *
+ * @result
+ * A new UUID object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
+xpc_object_t
+xpc_uuid_create(const uuid_t XPC_NONNULL_ARRAY uuid);
+
+/*!
+ * @function xpc_uuid_get_bytes
+ *
+ * @abstract
+ * Returns a pointer to the the boxed UUID bytes in an XPC UUID object.
+ *
+ * @param xuuid
+ * The UUID object which is to be examined.
+ *
+ * @result
+ * The underlying <code>uuid_t</code> bytes or NULL if the given object was not
+ * an XPC UUID object. The returned pointer may be safely passed to the uuid(3)
+ * APIs.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+const uint8_t * _Nullable
+xpc_uuid_get_bytes(xpc_object_t xuuid);
+
+#pragma mark File Descriptors
+/*!
+ * @function xpc_fd_create
+ *
+ * @abstract
+ * Creates an XPC object representing a POSIX file descriptor.
+ *
+ * @param fd
+ * The file descriptor which is to be boxed.
+ *
+ * @result
+ * A new file descriptor object. NULL if sufficient memory could not be
+ * allocated or if the given file descriptor was not valid.
+ *
+ * @discussion
+ * This method performs the equivalent of a dup(2) on the descriptor, and thus
+ * it is safe to call close(2) on the descriptor after boxing it with a file
+ * descriptor object.
+ *
+ * IMPORTANT: Pointer equality is the ONLY valid test for equality between two
+ * file descriptor objects. There is no reliable way to determine whether two
+ * file descriptors refer to the same inode with the same capabilities, so two
+ * file descriptor objects created from the same underlying file descriptor
+ * number will not compare equally with xpc_equal(). This is also true of a
+ * file descriptor object created using xpc_copy() and the original.
+ *
+ * This also implies that two collections containing file descriptor objects
+ * cannot be equal unless the exact same object was inserted into both.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t _Nullable
+xpc_fd_create(int fd);
+
+/*!
+ * @function xpc_fd_dup
+ *
+ * @abstract
+ * Returns a file descriptor that is equivalent to the one boxed by the file
+ * file descriptor object.
+ *
+ * @param xfd
+ * The file descriptor object which is to be examined.
+ *
+ * @result
+ * A file descriptor that is equivalent to the one originally given to
+ * xpc_fd_create(). If the descriptor could not be created or if the given
+ * object was not an XPC file descriptor, -1 is returned.
+ *
+ * @discussion
+ * Multiple invocations of xpc_fd_dup() will not return the same file descriptor
+ * number, but they will return descriptors that are equivalent, as though they
+ * had been created by dup(2).
+ *
+ * The caller is responsible for calling close(2) on the returned descriptor.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+int
+xpc_fd_dup(xpc_object_t xfd);
+
+#pragma mark Shared Memory
+/*!
+ * @function xpc_shmem_create
+ *
+ * @abstract
+ * Creates an XPC object representing the given shared memory region.
+ *
+ * @param region
+ * A pointer to a region of shared memory, created through a call to mmap(2)
+ * with the MAP_SHARED flag, which is to be boxed.
+ *
+ * @param length
+ * The length of the region.
+ *
+ * @result
+ * A new shared memory object.
+ *
+ * @discussion
+ * Only memory regions whose exact characteristics are known to the caller
+ * should be boxed using this API. Memory returned from malloc(3) may not be
+ * safely shared on either OS X or iOS because the underlying virtual memory
+ * objects for malloc(3)ed allocations are owned by the malloc(3) subsystem and
+ * not the caller of malloc(3).
+ *
+ * If you wish to share a memory region that you receive from another subsystem,
+ * part of the interface contract with that other subsystem must include how to
+ * create the region of memory, or sharing it may be unsafe.
+ *
+ * Certain operations may internally fragment a region of memory in a way that
+ * would truncate the range detected by the shared memory object. vm_copy(), for
+ * example, may split the region into multiple parts to avoid copying certain
+ * page ranges. For this reason, it is recommended that you delay all VM
+ * operations until the shared memory object has been created so that the VM
+ * system knows that the entire range is intended for sharing.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
+xpc_object_t
+xpc_shmem_create(void *region, size_t length);
+
+/*!
+ * @function xpc_shmem_map
+ *
+ * @abstract
+ * Maps the region boxed by the XPC shared memory object into the caller's
+ * address space.
+ *
+ * @param xshmem
+ * The shared memory object to be examined.
+ *
+ * @param region
+ * On return, this will point to the region at which the shared memory was
+ * mapped.
+ *
+ * @result
+ * The length of the region that was mapped. If the mapping failed or if the
+ * given object was not an XPC shared memory object, 0 is returned. The length
+ * of the mapped region will always be an integral page size, even if the
+ * creator of the region specified a non-integral page size.
+ *
+ * @discussion
+ * The resulting region must be disposed of with munmap(2).
+ *
+ * It is the responsibility of the caller to manage protections on the new
+ * region accordingly.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+size_t
+xpc_shmem_map(xpc_object_t xshmem, void * _Nullable * _Nonnull region);
+
+#pragma mark Array
+/*!
+ * @typedef xpc_array_applier_t
+ * A block to be invoked for every value in the array.
+ *
+ * @param index
+ * The current index in the iteration.
+ *
+ * @param value
+ * The current value in the iteration.
+ *
+ * @result
+ * A Boolean indicating whether iteration should continue.
+ */
+#ifdef __BLOCKS__
+typedef bool (^xpc_array_applier_t)(size_t index, xpc_object_t _Nonnull value);
+#endif // __BLOCKS__
+
+/*!
+ * @function xpc_array_create
+ *
+ * @abstract
+ * Creates an XPC object representing an array of XPC objects.
+ *
+ * @discussion
+ * This array must be contiguous and cannot contain any NULL values. If you
+ * wish to insert the equivalent of a NULL value, you may use the result of
+ * {@link xpc_null_create}.
+ *
+ * @param objects
+ * An array of XPC objects which is to be boxed. The order of this array is
+ * preserved in the object. If this array contains a NULL value, the behavior
+ * is undefined. This parameter may be NULL only if the count is 0.
+ *
+ * @param count
+ * The number of objects in the given array. If the number passed is less than
+ * the actual number of values in the array, only the specified number of items
+ * are inserted into the resulting array. If the number passed is more than
+ * the the actual number of values, the behavior is undefined.
+ *
+ * @result
+ * A new array object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_array_create(const xpc_object_t _Nonnull * _Nullable objects, size_t count);
+
+/*!
+ * @function xpc_array_create_empty
+ *
+ * @abstract
+ * Creates an XPC object representing an array of XPC objects.
+ *
+ * @result
+ * A new array object.
+ *
+ * @see
+ * xpc_array_create
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_array_create_empty(void);
+
+/*!
+ * @function xpc_array_set_value
+ *
+ * @abstract
+ * Inserts the specified object into the array at the specified index.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array).
+ * If the index is outside that range, the behavior is undefined.
+ *
+ * @param value
+ * The object to insert. This value is retained by the array and cannot be
+ * NULL. If there is already a value at the specified index, it is released,
+ * and the new value is inserted in its place.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL3
+void
+xpc_array_set_value(xpc_object_t xarray, size_t index, xpc_object_t value);
+
+/*!
+ * @function xpc_array_append_value
+ *
+ * @abstract
+ * Appends an object to an XPC array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param value
+ * The object to append. This object is retained by the array.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2
+void
+xpc_array_append_value(xpc_object_t xarray, xpc_object_t value);
+
+/*!
+ * @function xpc_array_get_count
+ *
+ * @abstract
+ * Returns the count of values currently in the array.
+ *
+ * @param xarray
+ * The array object which is to be examined.
+ *
+ * @result
+ * The count of values in the array or 0 if the given object was not an XPC
+ * array.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+size_t
+xpc_array_get_count(xpc_object_t xarray);
+
+/*!
+ * @function xpc_array_get_value
+ *
+ * @abstract
+ * Returns the value at the specified index in the array.
+ *
+ * @param xarray
+ * The array object which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the range of
+ * indexes as specified in xpc_array_set_value().
+ *
+ * @result
+ * The object at the specified index within the array or NULL if the given
+ * object was not an XPC array.
+ *
+ * @discussion
+ * This method does not grant the caller a reference to the underlying object,
+ * and thus the caller is not responsible for releasing the object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+xpc_object_t
+xpc_array_get_value(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_apply
+ *
+ * @abstract
+ * Invokes the given block for every value in the array.
+ *
+ * @param xarray
+ * The array object which is to be examined.
+ *
+ * @param applier
+ * The block which this function applies to every element in the array.
+ *
+ * @result
+ * A Boolean indicating whether iteration of the array completed successfully.
+ * Iteration will only fail if the applier block returns false.
+ *
+ * @discussion
+ * You should not modify an array's contents during iteration. The array indexes
+ * are iterated in order.
+ */
+#ifdef __BLOCKS__
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+bool
+xpc_array_apply(xpc_object_t xarray, XPC_NOESCAPE xpc_array_applier_t applier);
+#endif // __BLOCKS__
+
+#pragma mark Array Primitive Setters
+/*!
+ * @define XPC_ARRAY_APPEND
+ * A constant that may be passed as the destination index to the class of
+ * primitive XPC array setters indicating that the given primitive should be
+ * appended to the array.
+ */
+#define XPC_ARRAY_APPEND ((size_t)(-1))
+
+/*!
+ * @function xpc_array_set_bool
+ *
+ * @abstract
+ * Inserts a <code>bool</code> (primitive) value into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param value
+ * The <code>bool</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_array_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_array_set_bool(xpc_object_t xarray, size_t index, bool value);
+
+/*!
+ * @function xpc_array_set_int64
+ *
+ * @abstract
+ * Inserts an <code>int64_t</code> (primitive) value into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param value
+ * The <code>int64_t</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_array_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_array_set_int64(xpc_object_t xarray, size_t index, int64_t value);
+
+/*!
+ * @function xpc_array_set_uint64
+ *
+ * @abstract
+ * Inserts a <code>uint64_t</code> (primitive) value into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param value
+ * The <code>uint64_t</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_array_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_array_set_uint64(xpc_object_t xarray, size_t index, uint64_t value);
+
+/*!
+ * @function xpc_array_set_double
+ *
+ * @abstract
+ * Inserts a <code>double</code> (primitive) value into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param value
+ * The <code>double</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_array_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_array_set_double(xpc_object_t xarray, size_t index, double value);
+
+/*!
+ * @function xpc_array_set_date
+ *
+ * @abstract
+ * Inserts a date value into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param value
+ * The date value to insert, represented as an <code>int64_t</code>. After
+ * calling this method, the XPC object corresponding to the primitive value
+ * inserted may be safely retrieved with {@link xpc_array_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_array_set_date(xpc_object_t xarray, size_t index, int64_t value);
+
+/*!
+ * @function xpc_array_set_data
+ *
+ * @abstract
+ * Inserts a raw data value into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param bytes
+ * The raw data to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved with
+ * {@link xpc_array_get_value()}.
+ *
+ * @param length
+ * The length of the data.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL3
+void
+xpc_array_set_data(xpc_object_t xarray, size_t index, const void *bytes,
+ size_t length);
+
+/*!
+ * @function xpc_array_set_string
+ *
+ * @abstract
+ * Inserts a C string into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param string
+ * The C string to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved with
+ * {@link xpc_array_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL3
+void
+xpc_array_set_string(xpc_object_t xarray, size_t index, const char *string);
+
+/*!
+ * @function xpc_array_set_uuid
+ *
+ * @abstract
+ * Inserts a <code>uuid_t</code> (primitive) value into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param uuid
+ * The UUID primitive to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved with
+ * {@link xpc_array_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL3
+void
+xpc_array_set_uuid(xpc_object_t xarray, size_t index,
+ const uuid_t XPC_NONNULL_ARRAY uuid);
+
+/*!
+ * @function xpc_array_set_fd
+ *
+ * @abstract
+ * Inserts a file descriptor into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param fd
+ * The file descriptor to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved with
+ * {@link xpc_array_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1
+void
+xpc_array_set_fd(xpc_object_t xarray, size_t index, int fd);
+
+/*!
+ * @function xpc_array_set_connection
+ *
+ * @abstract
+ * Inserts a connection into an array.
+ *
+ * @param xarray
+ * The array object which is to be manipulated.
+ *
+ * @param index
+ * The index at which to insert the value. This value must lie within the index
+ * space of the array (0 to N-1 inclusive, where N is the count of the array) or
+ * be XPC_ARRAY_APPEND. If the index is outside that range, the behavior is
+ * undefined.
+ *
+ * @param connection
+ * The connection to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved with
+ * {@link xpc_array_get_value()}. The connection is NOT retained by the array.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL3
+void
+xpc_array_set_connection(xpc_object_t xarray, size_t index,
+ xpc_connection_t connection);
+
+#pragma mark Array Primitive Getters
+/*!
+ * @function xpc_array_get_bool
+ *
+ * @abstract
+ * Gets a <code>bool</code> primitive value from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * The underlying <code>bool</code> value at the specified index. false if the
+ * value at the specified index is not a Boolean value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+bool
+xpc_array_get_bool(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_get_int64
+ *
+ * @abstract
+ * Gets an <code>int64_t</code> primitive value from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * The underlying <code>int64_t</code> value at the specified index. 0 if the
+ * value at the specified index is not a signed integer value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+int64_t
+xpc_array_get_int64(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_get_uint64
+ *
+ * @abstract
+ * Gets a <code>uint64_t</code> primitive value from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * The underlying <code>uint64_t</code> value at the specified index. 0 if the
+ * value at the specified index is not an unsigned integer value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+uint64_t
+xpc_array_get_uint64(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_get_double
+ *
+ * @abstract
+ * Gets a <code>double</code> primitive value from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * The underlying <code>double</code> value at the specified index. NAN if the
+ * value at the specified index is not a floating point value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+double
+xpc_array_get_double(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_get_date
+ *
+ * @abstract
+ * Gets a date interval from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * The underlying date interval at the specified index. 0 if the value at the
+ * specified index is not a date value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+int64_t
+xpc_array_get_date(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_get_data
+ *
+ * @abstract
+ * Gets a pointer to the raw bytes of a data object from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @param length
+ * Upon return output, will contain the length of the data corresponding to the
+ * specified key.
+ *
+ * @result
+ * The underlying bytes at the specified index. NULL if the value at the
+ * specified index is not a data value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+const void * _Nullable
+xpc_array_get_data(xpc_object_t xarray, size_t index,
+ size_t * _Nullable length);
+
+/*!
+ * @function xpc_array_get_string
+ *
+ * @abstract
+ * Gets a C string value from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * The underlying C string at the specified index. NULL if the value at the
+ * specified index is not a C string value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+const char * _Nullable
+xpc_array_get_string(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_get_uuid
+ *
+ * @abstract
+ * Gets a <code>uuid_t</code> value from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * The underlying <code>uuid_t</code> value at the specified index. The null
+ * UUID if the value at the specified index is not a UUID value. The returned
+ * pointer may be safely passed to the uuid(3) APIs.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+const uint8_t * _Nullable
+xpc_array_get_uuid(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_dup_fd
+ *
+ * @abstract
+ * Gets a file descriptor from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * A new file descriptor created from the value at the specified index. You are
+ * responsible for close(2)ing this descriptor. -1 if the value at the specified
+ * index is not a file descriptor value.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+int
+xpc_array_dup_fd(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_create_connection
+ *
+ * @abstract
+ * Creates a connection object from an array directly.
+ *
+ * @param xarray
+ * The array which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the index space
+ * of the array (0 to N-1 inclusive, where N is the count of the array). If the
+ * index is outside that range, the behavior is undefined.
+ *
+ * @result
+ * A new connection created from the value at the specified index. You are
+ * responsible for calling xpc_release() on the returned connection. NULL if the
+ * value at the specified index is not an endpoint containing a connection. Each
+ * call to this method for the same index in the same array will yield a
+ * different connection. See {@link xpc_connection_create_from_endpoint()} for
+ * discussion as to the responsibilities when dealing with the returned
+ * connection.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
+xpc_connection_t _Nullable
+xpc_array_create_connection(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_get_dictionary
+ *
+ * @abstract
+ * Returns the dictionary at the specified index in the array.
+ *
+ * @param xarray
+ * The array object which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the range of
+ * indexes as specified in xpc_array_set_value().
+ *
+ * @result
+ * The object at the specified index within the array or NULL if the given
+ * object was not an XPC array or if the the value at the specified index was
+ * not a dictionary.
+ *
+ * @discussion
+ * This method does not grant the caller a reference to the underlying object,
+ * and thus the caller is not responsible for releasing the object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+xpc_object_t _Nullable
+xpc_array_get_dictionary(xpc_object_t xarray, size_t index);
+
+/*!
+ * @function xpc_array_get_array
+ *
+ * @abstract
+ * Returns the array at the specified index in the array.
+ *
+ * @param xarray
+ * The array object which is to be examined.
+ *
+ * @param index
+ * The index of the value to obtain. This value must lie within the range of
+ * indexes as specified in xpc_array_set_value().
+ *
+ * @result
+ * The object at the specified index within the array or NULL if the given
+ * object was not an XPC array or if the the value at the specified index was
+ * not an array.
+ *
+ * @discussion
+ * This method does not grant the caller a reference to the underlying object,
+ * and thus the caller is not responsible for releasing the object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+xpc_object_t _Nullable
+xpc_array_get_array(xpc_object_t xarray, size_t index);
+
+#pragma mark Dictionary
+/*!
+ * @typedef xpc_dictionary_applier_t
+ * A block to be invoked for every key/value pair in the dictionary.
+ *
+ * @param key
+ * The current key in the iteration.
+ *
+ * @param value
+ * The current value in the iteration.
+ *
+ * @result
+ * A Boolean indicating whether iteration should continue.
+ */
+#ifdef __BLOCKS__
+typedef bool (^xpc_dictionary_applier_t)(const char * _Nonnull key,
+ xpc_object_t _Nonnull value);
+#endif // __BLOCKS__
+
+/*!
+ * @function xpc_dictionary_create
+ *
+ * @abstract
+ * Creates an XPC object representing a dictionary of XPC objects keyed to
+ * C-strings.
+ *
+ * @param keys
+ * An array of C-strings that are to be the keys for the values to be inserted.
+ * Each element of this array is copied into the dictionary's internal storage.
+ * Elements of this array may NOT be NULL.
+ *
+ * @param values
+ * A C-array that is parallel to the array of keys, consisting of objects that
+ * are to be inserted. Each element in this array is retained. Elements in this
+ * array may be NULL.
+ *
+ * @param count
+ * The number of key/value pairs in the given arrays. If the count is less than
+ * the actual count of values, only that many key/value pairs will be inserted
+ * into the dictionary.
+ *
+ * If the count is more than the the actual count of key/value pairs, the
+ * behavior is undefined. If one array is NULL and the other is not, the
+ * behavior is undefined. If both arrays are NULL and the count is non-0, the
+ * behavior is undefined.
+ *
+ * @result
+ * The new dictionary object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_dictionary_create(const char * _Nonnull const * _Nullable keys,
+ const xpc_object_t _Nullable * _Nullable values, size_t count);
+
+/*!
+ * @function xpc_dictionary_create_empty
+ *
+ * @abstract
+ * Creates an XPC object representing a dictionary of XPC objects keyed to
+ * C-strings.
+ *
+ * @result
+ * The new dictionary object.
+ *
+ * @see
+ * xpc_dictionary_create
+ */
+API_AVAILABLE(macos(11.0), ios(14.0), tvos(14.0), watchos(7.0))
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT
+xpc_object_t
+xpc_dictionary_create_empty(void);
+
+/*!
+ * @function xpc_dictionary_create_reply
+ *
+ * @abstract
+ * Creates a dictionary that is in reply to the given dictionary.
+ *
+ * @param original
+ * The original dictionary that is to be replied to.
+ *
+ * @result
+ * The new dictionary object. NULL if the object was not a dictionary with a
+ * reply context.
+ *
+ * @discussion
+ * After completing successfully on a dictionary, this method may not be called
+ * again on that same dictionary. Attempts to do so will return NULL.
+ *
+ * When this dictionary is sent across the reply connection, the remote end's
+ * reply handler is invoked.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL_ALL
+xpc_object_t _Nullable
+xpc_dictionary_create_reply(xpc_object_t original);
+
+/*!
+ * @function xpc_dictionary_set_value
+ *
+ * @abstract
+ * Sets the value for the specified key to the specified object.
+ *
+ * @param xdict
+ * The dictionary object which is to be manipulated.
+ *
+ * @param key
+ * The key for which the value shall be set.
+ *
+ * @param value
+ * The object to insert. The object is retained by the dictionary. If there
+ * already exists a value for the specified key, the old value is released
+ * and overwritten by the new value. This parameter may be NULL, in which case
+ * the value corresponding to the specified key is deleted if present.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2
+void
+xpc_dictionary_set_value(xpc_object_t xdict, const char *key,
+ xpc_object_t _Nullable value);
+
+/*!
+ * @function xpc_dictionary_get_value
+ *
+ * @abstract
+ * Returns the value for the specified key.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The object for the specified key within the dictionary. NULL if there is no
+ * value associated with the specified key or if the given object was not an
+ * XPC dictionary.
+ *
+ * @discussion
+ * This method does not grant the caller a reference to the underlying object,
+ * and thus the caller is not responsible for releasing the object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1 XPC_NONNULL2
+xpc_object_t _Nullable
+xpc_dictionary_get_value(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_count
+ *
+ * @abstract
+ * Returns the number of values stored in the dictionary.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @result
+ * The number of values stored in the dictionary or 0 if the given object was
+ * not an XPC dictionary. Calling xpc_dictionary_set_value() with a non-NULL
+ * value will increment the count. Calling xpc_dictionary_set_value() with a
+ * NULL value will decrement the count.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+size_t
+xpc_dictionary_get_count(xpc_object_t xdict);
+
+/*!
+ * @function xpc_dictionary_apply
+ *
+ * @abstract
+ * Invokes the given block for every key/value pair in the dictionary.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param applier
+ * The block which this function applies to every key/value pair in the
+ * dictionary.
+ *
+ * @result
+ * A Boolean indicating whether iteration of the dictionary completed
+ * successfully. Iteration will only fail if the applier block returns false.
+ *
+ * @discussion
+ * You should not modify a dictionary's contents during iteration. There is no
+ * guaranteed order of iteration over dictionaries.
+ */
+#ifdef __BLOCKS__
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL_ALL
+bool
+xpc_dictionary_apply(xpc_object_t xdict,
+ XPC_NOESCAPE xpc_dictionary_applier_t applier);
+#endif // __BLOCKS__
+
+/*!
+ * @function xpc_dictionary_get_remote_connection
+ *
+ * @abstract
+ * Returns the connection from which the dictionary was received.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @result
+ * If the dictionary was received by a connection event handler or a dictionary
+ * created through xpc_dictionary_create_reply(), a connection object over which
+ * a reply message can be sent is returned. For any other dictionary, NULL is
+ * returned.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+xpc_connection_t _Nullable
+xpc_dictionary_get_remote_connection(xpc_object_t xdict);
+
+#pragma mark Dictionary Primitive Setters
+/*!
+ * @function xpc_dictionary_set_bool
+ *
+ * @abstract
+ * Inserts a <code>bool</code> (primitive) value into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param value
+ * The <code>bool</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_dictionary_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2
+void
+xpc_dictionary_set_bool(xpc_object_t xdict, const char *key, bool value);
+
+/*!
+ * @function xpc_dictionary_set_int64
+ *
+ * @abstract
+ * Inserts an <code>int64_t</code> (primitive) value into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param value
+ * The <code>int64_t</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_dictionary_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2
+void
+xpc_dictionary_set_int64(xpc_object_t xdict, const char *key, int64_t value);
+
+/*!
+ * @function xpc_dictionary_set_uint64
+ *
+ * @abstract
+ * Inserts a <code>uint64_t</code> (primitive) value into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param value
+ * The <code>uint64_t</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_dictionary_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2
+void
+xpc_dictionary_set_uint64(xpc_object_t xdict, const char *key, uint64_t value);
+
+/*!
+ * @function xpc_dictionary_set_double
+ *
+ * @abstract
+ * Inserts a <code>double</code> (primitive) value into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param value
+ * The <code>double</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_dictionary_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2
+void
+xpc_dictionary_set_double(xpc_object_t xdict, const char *key, double value);
+
+/*!
+ * @function xpc_dictionary_set_date
+ *
+ * @abstract
+ * Inserts a date (primitive) value into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param value
+ * The date value to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved with
+ * {@link xpc_dictionary_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2
+void
+xpc_dictionary_set_date(xpc_object_t xdict, const char *key, int64_t value);
+
+/*!
+ * @function xpc_dictionary_set_data
+ *
+ * @abstract
+ * Inserts a raw data value into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param bytes
+ * The bytes to insert. After calling this method, the XPC object corresponding
+ * to the primitive value inserted may be safely retrieved with
+ * {@link xpc_dictionary_get_value()}.
+ *
+ * @param length
+ * The length of the data.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3
+void
+xpc_dictionary_set_data(xpc_object_t xdict, const char *key, const void *bytes,
+ size_t length);
+
+/*!
+ * @function xpc_dictionary_set_string
+ *
+ * @abstract
+ * Inserts a C string value into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param string
+ * The C string to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved with
+ * {@link xpc_dictionary_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3
+void
+xpc_dictionary_set_string(xpc_object_t xdict, const char *key,
+ const char *string);
+
+/*!
+ * @function xpc_dictionary_set_uuid
+ *
+ * @abstract
+ * Inserts a uuid (primitive) value into an array.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param uuid
+ * The <code>uuid_t</code> value to insert. After calling this method, the XPC
+ * object corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_dictionary_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3
+void
+xpc_dictionary_set_uuid(xpc_object_t xdict, const char *key,
+ const uuid_t XPC_NONNULL_ARRAY uuid);
+
+/*!
+ * @function xpc_dictionary_set_fd
+ *
+ * @abstract
+ * Inserts a file descriptor into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param fd
+ * The file descriptor to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_dictionary_get_value()}.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2
+void
+xpc_dictionary_set_fd(xpc_object_t xdict, const char *key, int fd);
+
+/*!
+ * @function xpc_dictionary_set_connection
+ *
+ * @abstract
+ * Inserts a connection into a dictionary.
+ *
+ * @param xdict
+ * The dictionary which is to be manipulated.
+ *
+ * @param key
+ * The key for which the primitive value shall be set.
+ *
+ * @param connection
+ * The connection to insert. After calling this method, the XPC object
+ * corresponding to the primitive value inserted may be safely retrieved
+ * with {@link xpc_dictionary_get_value()}. The connection is NOT retained by
+ * the dictionary.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL2 XPC_NONNULL3
+void
+xpc_dictionary_set_connection(xpc_object_t xdict, const char *key,
+ xpc_connection_t connection);
+
+#pragma mark Dictionary Primitive Getters
+/*!
+ * @function xpc_dictionary_get_bool
+ *
+ * @abstract
+ * Gets a <code>bool</code> primitive value from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The underlying <code>bool</code> value for the specified key. false if the
+ * the value for the specified key is not a Boolean value or if there is no
+ * value for the specified key.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+bool
+xpc_dictionary_get_bool(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_int64
+ *
+ * @abstract
+ * Gets an <code>int64</code> primitive value from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The underlying <code>int64_t</code> value for the specified key. 0 if the
+ * value for the specified key is not a signed integer value or if there is no
+ * value for the specified key.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+int64_t
+xpc_dictionary_get_int64(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_uint64
+ *
+ * @abstract
+ * Gets a <code>uint64</code> primitive value from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The underlying <code>uint64_t</code> value for the specified key. 0 if the
+ * value for the specified key is not an unsigned integer value or if there is
+ * no value for the specified key.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+uint64_t
+xpc_dictionary_get_uint64(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_double
+ *
+ * @abstract
+ * Gets a <code>double</code> primitive value from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The underlying <code>double</code> value for the specified key. NAN if the
+ * value for the specified key is not a floating point value or if there is no
+ * value for the specified key.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+double
+xpc_dictionary_get_double(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_date
+ *
+ * @abstract
+ * Gets a date value from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The underlying date interval for the specified key. 0 if the value for the
+ * specified key is not a date value or if there is no value for the specified
+ * key.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+int64_t
+xpc_dictionary_get_date(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_data
+ *
+ * @abstract
+ * Gets a raw data value from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @param length
+ * For the data type, the third parameter, upon output, will contain the length
+ * of the data corresponding to the specified key. May be NULL.
+ *
+ * @result
+ * The underlying raw data for the specified key. NULL if the value for the
+ * specified key is not a data value or if there is no value for the specified
+ * key.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1
+const void * _Nullable
+xpc_dictionary_get_data(xpc_object_t xdict, const char *key,
+ size_t * _Nullable length);
+
+/*!
+ * @function xpc_dictionary_get_string
+ *
+ * @abstract
+ * Gets a C string value from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The underlying C string for the specified key. NULL if the value for the
+ * specified key is not a C string value or if there is no value for the
+ * specified key.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+const char * _Nullable
+xpc_dictionary_get_string(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_uuid
+ *
+ * @abstract
+ * Gets a uuid value from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The underlying <code>uuid_t</code> value for the specified key. NULL is the
+ * value at the specified index is not a UUID value. The returned pointer may be
+ * safely passed to the uuid(3) APIs.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL1 XPC_NONNULL2
+const uint8_t * _Nullable
+xpc_dictionary_get_uuid(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_dup_fd
+ *
+ * @abstract
+ * Creates a file descriptor from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * A new file descriptor created from the value for the specified key. You are
+ * responsible for close(2)ing this descriptor. -1 if the value for the
+ * specified key is not a file descriptor value or if there is no value for the
+ * specified key.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+int
+xpc_dictionary_dup_fd(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_create_connection
+ *
+ * @abstract
+ * Creates a connection from a dictionary directly.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * A new connection created from the value for the specified key. You are
+ * responsible for calling xpc_release() on the returned connection. NULL if the
+ * value for the specified key is not an endpoint containing a connection or if
+ * there is no value for the specified key. Each call to this method for the
+ * same key in the same dictionary will yield a different connection. See
+ * {@link xpc_connection_create_from_endpoint()} for discussion as to the
+ * responsibilities when dealing with the returned connection.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL_ALL
+xpc_connection_t _Nullable
+xpc_dictionary_create_connection(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_dictionary
+ *
+ * @abstract
+ * Returns the dictionary value for the specified key.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The object for the specified key within the dictionary. NULL if there is no
+ * value associated with the specified key, if the given object was not an
+ * XPC dictionary, or if the object for the specified key is not a dictionary.
+ *
+ * @discussion
+ * This method does not grant the caller a reference to the underlying object,
+ * and thus the caller is not responsible for releasing the object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+xpc_object_t _Nullable
+xpc_dictionary_get_dictionary(xpc_object_t xdict, const char *key);
+
+/*!
+ * @function xpc_dictionary_get_array
+ *
+ * @abstract
+ * Returns the array value for the specified key.
+ *
+ * @param xdict
+ * The dictionary object which is to be examined.
+ *
+ * @param key
+ * The key whose value is to be obtained.
+ *
+ * @result
+ * The object for the specified key within the dictionary. NULL if there is no
+ * value associated with the specified key, if the given object was not an
+ * XPC dictionary, or if the object for the specified key is not an array.
+ *
+ * @discussion
+ * This method does not grant the caller a reference to the underlying object,
+ * and thus the caller is not responsible for releasing the object.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0)
+XPC_EXPORT XPC_WARN_RESULT XPC_NONNULL_ALL
+xpc_object_t _Nullable
+xpc_dictionary_get_array(xpc_object_t xdict, const char *key);
+
+#pragma mark Runtime
+/*!
+ * @function xpc_main
+ * The springboard into the XPCService runtime. This function will set up your
+ * service bundle's listener connection and manage it automatically. After this
+ * initial setup, this function will, by default, call dispatch_main(). You may
+ * override this behavior by setting the RunLoopType key in your XPC service
+ * bundle's Info.plist under the XPCService dictionary.
+ *
+ * @param handler
+ * The handler with which to accept new connections.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NORETURN XPC_NONNULL1
+void
+xpc_main(xpc_connection_handler_t handler);
+
+#pragma mark Transactions
+/*!
+ * @function xpc_transaction_begin
+ * Informs the XPC runtime that a transaction has begun and that the service
+ * should not exit due to inactivity.
+ *
+ * @discussion
+ * A service with no outstanding transactions may automatically exit due to
+ * inactivity as determined by the system.
+ *
+ * This function may be used to manually manage transactions in cases where
+ * their automatic management (as described below) does not meet the needs of an
+ * XPC service. This function also updates the transaction count used for sudden
+ * termination, i.e. vproc_transaction_begin(), and these two interfaces may be
+ * used in combination.
+ *
+ * The XPC runtime will automatically begin a transaction on behalf of a service
+ * when a new message is received. If no reply message is expected, the
+ * transaction is automatically ended when the connection event handler returns.
+ * If a reply message is created, the transaction will end when the reply
+ * message is sent or released. An XPC service may use xpc_transaction_begin()
+ * and xpc_transaction_end() to inform the XPC runtime about activity that
+ * occurs outside of this common pattern.
+ *
+ * On macOS, when the XPC runtime has determined that the service should exit,
+ * the event handlers for all active peer connections will receive
+ * {@link XPC_ERROR_TERMINATION_IMMINENT} as an indication that they should
+ * unwind their existing transactions. After this error is delivered to a
+ * connection's event handler, no more messages will be delivered to the
+ * connection.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_TRANSACTION_DEPRECATED
+XPC_EXPORT
+void
+xpc_transaction_begin(void);
+
+/*!
+ * @function xpc_transaction_end
+ * Informs the XPC runtime that a transaction has ended.
+ *
+ * @discussion
+ * As described in {@link xpc_transaction_begin()}, this API may be used
+ * interchangeably with vproc_transaction_end().
+ *
+ * See the discussion for {@link xpc_transaction_begin()} for details regarding
+ * the XPC runtime's idle-exit policy.
+ */
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_TRANSACTION_DEPRECATED
+XPC_EXPORT
+void
+xpc_transaction_end(void);
+
+#pragma mark XPC Event Stream
+/*!
+ * @function xpc_set_event_stream_handler
+ * Sets the event handler to invoke when streamed events are received.
+ *
+ * @param stream
+ * The name of the event stream for which this handler will be invoked.
+ *
+ * @param targetq
+ * The GCD queue to which the event handler block will be submitted. This
+ * parameter may be NULL, in which case the connection's target queue will be
+ * libdispatch's default target queue, defined as DISPATCH_TARGET_QUEUE_DEFAULT.
+ *
+ * @param handler
+ * The event handler block. The event which this block receives as its first
+ * parameter will always be a dictionary which contains the XPC_EVENT_KEY_NAME
+ * key. The value for this key will be a string whose value is the name assigned
+ * to the XPC event specified in the launchd.plist. Future keys may be added to
+ * this dictionary.
+ *
+ * @discussion
+ * Multiple calls to this function for the same event stream will result in
+ * undefined behavior.
+ *
+ * There is no API to pause delivery of XPC events. If a process that
+ * has set an XPC event handler exits, events may be dropped due to races
+ * between the event handler running and the process exiting.
+ */
+#if __BLOCKS__
+__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0)
+XPC_EXPORT XPC_NONNULL1 XPC_NONNULL3
+void
+xpc_set_event_stream_handler(const char *stream,
+ dispatch_queue_t _Nullable targetq, xpc_handler_t handler);
+#endif // __BLOCKS__
+
+__END_DECLS
+XPC_ASSUME_NONNULL_END
+
+#endif // __XPC_H__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/AssertMacros.h b/lib/libc/include/any-macos-any/AssertMacros.h
index c338a0f9e4..7dc2e589af 100644
--- a/lib/libc/include/x86_64-macos-gnu/AssertMacros.h
+++ b/lib/libc/include/any-macos-any/AssertMacros.h
@@ -1438,4 +1438,4 @@
#endif /* ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES */
-#endif /* __ASSERTMACROS__ */
+#endif /* __ASSERTMACROS__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/Block.h b/lib/libc/include/any-macos-any/Block.h
index a98d83539c..2e27bd800a 100644
--- a/lib/libc/include/x86_64-macos-gnu/Block.h
+++ b/lib/libc/include/any-macos-any/Block.h
@@ -61,4 +61,4 @@ BLOCK_EXPORT void * _NSConcreteStackBlock[32]
#define Block_release(...) _Block_release((const void *)(__VA_ARGS__))
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/ConditionalMacros.h b/lib/libc/include/any-macos-any/ConditionalMacros.h
index 5344fb985f..4f817ec1c1 100644
--- a/lib/libc/include/x86_64-macos-gnu/ConditionalMacros.h
+++ b/lib/libc/include/any-macos-any/ConditionalMacros.h
@@ -615,5 +615,4 @@
-#endif /* __CONDITIONALMACROS__ */
-
+#endif /* __CONDITIONALMACROS__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/MacTypes.h b/lib/libc/include/any-macos-any/MacTypes.h
index 135fad0fd2..b4bba7e446 100644
--- a/lib/libc/include/x86_64-macos-gnu/MacTypes.h
+++ b/lib/libc/include/any-macos-any/MacTypes.h
@@ -804,5 +804,4 @@ SysBreakFunc(ConstStr255Param debuggerMsg) __OSX_AVAILABLE_BU
}
#endif
-#endif /* __MACTYPES__ */
-
+#endif /* __MACTYPES__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/__wctype.h b/lib/libc/include/any-macos-any/__wctype.h
index 3b4eb2c8a7..0e1d8d2d86 100644
--- a/lib/libc/include/x86_64-macos-gnu/__wctype.h
+++ b/lib/libc/include/any-macos-any/__wctype.h
@@ -71,4 +71,4 @@
#include <ctype.h>
-#endif /* ___WCTYPE_H_ */
+#endif /* ___WCTYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_ctype.h b/lib/libc/include/any-macos-any/_ctype.h
index 86e8b229b4..34824a0e67 100644
--- a/lib/libc/include/x86_64-macos-gnu/_ctype.h
+++ b/lib/libc/include/any-macos-any/_ctype.h
@@ -384,4 +384,4 @@ __END_DECLS
#include <xlocale/_ctype.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* !_CTYPE_H_ */
+#endif /* !_CTYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_locale.h b/lib/libc/include/any-macos-any/_locale.h
index b87458ddf5..e59625eb5f 100644
--- a/lib/libc/include/x86_64-macos-gnu/_locale.h
+++ b/lib/libc/include/any-macos-any/_locale.h
@@ -73,4 +73,4 @@ __BEGIN_DECLS
struct lconv *localeconv(void);
__END_DECLS
-#endif /* __LOCALE_H_ */
+#endif /* __LOCALE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_regex.h b/lib/libc/include/any-macos-any/_regex.h
index 1fb98e312d..0e6f48a04d 100644
--- a/lib/libc/include/x86_64-macos-gnu/_regex.h
+++ b/lib/libc/include/any-macos-any/_regex.h
@@ -118,4 +118,4 @@ typedef struct {
regoff_t rm_eo; /* end of match */
} regmatch_t;
-#endif /* !__REGEX_H_ */
+#endif /* !__REGEX_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_stdio.h b/lib/libc/include/any-macos-any/_stdio.h
index 0f3ae7a7ba..5c46369ce5 100644
--- a/lib/libc/include/x86_64-macos-gnu/_stdio.h
+++ b/lib/libc/include/any-macos-any/_stdio.h
@@ -156,4 +156,4 @@ typedef struct __sFILE {
fpos_t _offset; /* current lseek offset (see WARNING) */
} FILE;
-#endif /* __STDIO_H_ */
+#endif /* __STDIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_types.h b/lib/libc/include/any-macos-any/_types.h
index 83cd510175..bbd89d0f16 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types.h
+++ b/lib/libc/include/any-macos-any/_types.h
@@ -66,4 +66,4 @@ typedef unsigned long __darwin_wctype_t;
# endif
#endif
-#endif /* __TYPES_H_ */
+#endif /* __TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_intmax_t.h b/lib/libc/include/any-macos-any/_types/_intmax_t.h
index abb585e653..286fe6b732 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_intmax_t.h
+++ b/lib/libc/include/any-macos-any/_types/_intmax_t.h
@@ -37,4 +37,4 @@ typedef long int intmax_t;
typedef long long int intmax_t;
#endif /* __LP64__ */
#endif /* __INTMAX_TYPE__ */
-#endif /* _INTMAX_T */
+#endif /* _INTMAX_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_nl_item.h b/lib/libc/include/any-macos-any/_types/_nl_item.h
index 4339653ce1..4339653ce1 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_nl_item.h
+++ b/lib/libc/include/any-macos-any/_types/_nl_item.h
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_uint16_t.h b/lib/libc/include/any-macos-any/_types/_uint16_t.h
index 9ce9976013..ff8521b488 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_uint16_t.h
+++ b/lib/libc/include/any-macos-any/_types/_uint16_t.h
@@ -29,4 +29,4 @@
#ifndef _UINT16_T
#define _UINT16_T
typedef unsigned short uint16_t;
-#endif /* _UINT16_T */
+#endif /* _UINT16_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_uint32_t.h b/lib/libc/include/any-macos-any/_types/_uint32_t.h
index 8c9c92e310..b5cecad80e 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_uint32_t.h
+++ b/lib/libc/include/any-macos-any/_types/_uint32_t.h
@@ -29,4 +29,4 @@
#ifndef _UINT32_T
#define _UINT32_T
typedef unsigned int uint32_t;
-#endif /* _UINT32_T */
+#endif /* _UINT32_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_uint64_t.h b/lib/libc/include/any-macos-any/_types/_uint64_t.h
index 37866cfe02..e50a58e428 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_uint64_t.h
+++ b/lib/libc/include/any-macos-any/_types/_uint64_t.h
@@ -29,4 +29,4 @@
#ifndef _UINT64_T
#define _UINT64_T
typedef unsigned long long uint64_t;
-#endif /* _UINT64_T */
+#endif /* _UINT64_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_uint8_t.h b/lib/libc/include/any-macos-any/_types/_uint8_t.h
index 9fb2a8e51a..676f112413 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_uint8_t.h
+++ b/lib/libc/include/any-macos-any/_types/_uint8_t.h
@@ -29,4 +29,4 @@
#ifndef _UINT8_T
#define _UINT8_T
typedef unsigned char uint8_t;
-#endif /* _UINT8_T */
+#endif /* _UINT8_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_uintmax_t.h b/lib/libc/include/any-macos-any/_types/_uintmax_t.h
index ee52755772..334a65267b 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_uintmax_t.h
+++ b/lib/libc/include/any-macos-any/_types/_uintmax_t.h
@@ -37,4 +37,4 @@ typedef long unsigned int uintmax_t;
typedef long long unsigned int uintmax_t;
#endif /* __LP64__ */
#endif /* __UINTMAX_TYPE__ */
-#endif /* _UINTMAX_T */
+#endif /* _UINTMAX_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_wctrans_t.h b/lib/libc/include/any-macos-any/_types/_wctrans_t.h
index 2b664352ff..2b664352ff 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_wctrans_t.h
+++ b/lib/libc/include/any-macos-any/_types/_wctrans_t.h
diff --git a/lib/libc/include/x86_64-macos-gnu/_types/_wctype_t.h b/lib/libc/include/any-macos-any/_types/_wctype_t.h
index 8d76a5d723..8d76a5d723 100644
--- a/lib/libc/include/x86_64-macos-gnu/_types/_wctype_t.h
+++ b/lib/libc/include/any-macos-any/_types/_wctype_t.h
diff --git a/lib/libc/include/x86_64-macos-gnu/_wctype.h b/lib/libc/include/any-macos-any/_wctype.h
index 04da7960ef..3bc10b16d3 100644
--- a/lib/libc/include/x86_64-macos-gnu/_wctype.h
+++ b/lib/libc/include/any-macos-any/_wctype.h
@@ -161,4 +161,4 @@ __END_DECLS
#include <xlocale/__wctype.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* __WCTYPE_H_ */
+#endif /* __WCTYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_xlocale.h b/lib/libc/include/any-macos-any/_xlocale.h
index 0ba412c5bd..ed6da667da 100644
--- a/lib/libc/include/x86_64-macos-gnu/_xlocale.h
+++ b/lib/libc/include/any-macos-any/_xlocale.h
@@ -34,4 +34,4 @@ int ___mb_cur_max(void);
int ___mb_cur_max_l(locale_t);
__END_DECLS
-#endif /* __XLOCALE_H_ */
+#endif /* __XLOCALE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/aio.h b/lib/libc/include/any-macos-any/aio.h
index b031764468..36b7812682 100644
--- a/lib/libc/include/x86_64-macos-gnu/aio.h
+++ b/lib/libc/include/any-macos-any/aio.h
@@ -34,4 +34,4 @@
#include <sys/aio.h>
-#endif /* _AIO_H_ */
+#endif /* _AIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/alloca.h b/lib/libc/include/any-macos-any/alloca.h
index 0264ae680d..acb3390005 100644
--- a/lib/libc/include/x86_64-macos-gnu/alloca.h
+++ b/lib/libc/include/any-macos-any/alloca.h
@@ -40,4 +40,4 @@ __END_DECLS
#define __alloca(size) __builtin_alloca(size)
#endif
-#endif /* _ALLOCA_H_ */
+#endif /* _ALLOCA_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/architecture/byte_order.h b/lib/libc/include/any-macos-any/architecture/byte_order.h
index 7a04ff899c..82ef17af08 100644
--- a/lib/libc/include/x86_64-macos-gnu/architecture/byte_order.h
+++ b/lib/libc/include/any-macos-any/architecture/byte_order.h
@@ -378,4 +378,4 @@ NXSwapHostFloatToLittle(
return (NXSwappedFloat)OSSwapHostToLittleInt32((uint32_t)NXConvertHostFloatToSwapped(x));
}
-#endif /* _ARCHITECTURE_BYTE_ORDER_H_ */
+#endif /* _ARCHITECTURE_BYTE_ORDER_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/arpa/inet.h b/lib/libc/include/any-macos-any/arpa/inet.h
index 46f44e1a82..68a17d7313 100644
--- a/lib/libc/include/x86_64-macos-gnu/arpa/inet.h
+++ b/lib/libc/include/any-macos-any/arpa/inet.h
@@ -94,4 +94,4 @@ char *inet_nsap_ntoa(int, const unsigned char *, char *);
__END_DECLS
-#endif /* !_ARPA_INET_H_ */
+#endif /* !_ARPA_INET_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/assert.h b/lib/libc/include/any-macos-any/assert.h
index 2cc0ac0a24..e08d52cb28 100644
--- a/lib/libc/include/x86_64-macos-gnu/assert.h
+++ b/lib/libc/include/any-macos-any/assert.h
@@ -108,4 +108,4 @@ __END_DECLS
#endif /* __STDC_VERSION__ */
#endif /* !__cplusplus */
-#endif /* _ASSERT_H_ */
+#endif /* _ASSERT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/complex.h b/lib/libc/include/any-macos-any/complex.h
index fd47a890a9..7d09126ef4 100644
--- a/lib/libc/include/x86_64-macos-gnu/complex.h
+++ b/lib/libc/include/any-macos-any/complex.h
@@ -164,4 +164,4 @@ extern double creal(double complex);
extern long double creall(long double complex);
__END_DECLS
-#endif /* __COMPLEX_H__ */
+#endif /* __COMPLEX_H__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/copyfile.h b/lib/libc/include/any-macos-any/copyfile.h
index dfe4d0824d..50239ee191 100644
--- a/lib/libc/include/x86_64-macos-gnu/copyfile.h
+++ b/lib/libc/include/any-macos-any/copyfile.h
@@ -130,4 +130,4 @@ typedef int (*copyfile_callback_t)(int, int, copyfile_state_t, const char *, con
__END_DECLS
-#endif /* _COPYFILE_H_ */
+#endif /* _COPYFILE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/cpio.h b/lib/libc/include/any-macos-any/cpio.h
index d287af631c..09e00dbcbb 100644
--- a/lib/libc/include/x86_64-macos-gnu/cpio.h
+++ b/lib/libc/include/any-macos-any/cpio.h
@@ -52,4 +52,4 @@
#define MAGIC "070707"
-#endif /* _CPIO_H_ */
+#endif /* _CPIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/crt_externs.h b/lib/libc/include/any-macos-any/crt_externs.h
index eb3729adad..d4367a9101 100644
--- a/lib/libc/include/x86_64-macos-gnu/crt_externs.h
+++ b/lib/libc/include/any-macos-any/crt_externs.h
@@ -44,4 +44,4 @@ extern struct mach_header_64 *
extern struct mach_header *
#endif /* __LP64__ */
_NSGetMachExecuteHeader(void);
-__END_DECLS
+__END_DECLS \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/ctype.h b/lib/libc/include/any-macos-any/ctype.h
index b8933696a4..dbdd5a440b 100644
--- a/lib/libc/include/x86_64-macos-gnu/ctype.h
+++ b/lib/libc/include/any-macos-any/ctype.h
@@ -72,4 +72,4 @@
#include <xlocale/_ctype.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* !_CTYPE_H_ */
+#endif /* !_CTYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/device/device_types.h b/lib/libc/include/any-macos-any/device/device_types.h
index 2125026e9b..2878666853 100644
--- a/lib/libc/include/x86_64-macos-gnu/device/device_types.h
+++ b/lib/libc/include/any-macos-any/device/device_types.h
@@ -115,4 +115,4 @@ typedef mach_port_t io_object_t;
#endif /* IOKIT */
-#endif /* DEVICE_TYPES_H */
+#endif /* DEVICE_TYPES_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dirent.h b/lib/libc/include/any-macos-any/dirent.h
index 0791063fdf..b9b8d33830 100644
--- a/lib/libc/include/x86_64-macos-gnu/dirent.h
+++ b/lib/libc/include/any-macos-any/dirent.h
@@ -188,4 +188,4 @@ __END_DECLS
#endif /* !KERNEL */
-#endif /* !_DIRENT_H_ */
+#endif /* !_DIRENT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/base.h b/lib/libc/include/any-macos-any/dispatch/base.h
index 8ede9615bc..86ed15d144 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/base.h
+++ b/lib/libc/include/any-macos-any/dispatch/base.h
@@ -303,4 +303,4 @@
typedef void (*dispatch_function_t)(void *_Nullable);
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/data.h b/lib/libc/include/any-macos-any/dispatch/data.h
index 8250669183..7d8557dd39 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/data.h
+++ b/lib/libc/include/any-macos-any/dispatch/data.h
@@ -275,4 +275,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif /* __DISPATCH_DATA__ */
+#endif /* __DISPATCH_DATA__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/io.h b/lib/libc/include/any-macos-any/dispatch/io.h
index db9733d829..2dfc3fc0a6 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/io.h
+++ b/lib/libc/include/any-macos-any/dispatch/io.h
@@ -594,4 +594,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif /* __DISPATCH_IO__ */
+#endif /* __DISPATCH_IO__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/once.h b/lib/libc/include/any-macos-any/dispatch/once.h
index fbce4b111e..8ea5ecf100 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/once.h
+++ b/lib/libc/include/any-macos-any/dispatch/once.h
@@ -122,4 +122,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/time.h b/lib/libc/include/any-macos-any/dispatch/time.h
index a1cd2006ef..79e91e2ccb 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/time.h
+++ b/lib/libc/include/any-macos-any/dispatch/time.h
@@ -133,4 +133,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dlfcn.h b/lib/libc/include/any-macos-any/dlfcn.h
index f11d3f5e68..8b5db209ce 100644
--- a/lib/libc/include/x86_64-macos-gnu/dlfcn.h
+++ b/lib/libc/include/any-macos-any/dlfcn.h
@@ -94,4 +94,4 @@ extern bool dlopen_preflight(const char* __path) __OSX_AVAILABLE_STARTING(__MAC_
}
#endif
-#endif /* _DLFCN_H_ */
+#endif /* _DLFCN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/errno.h b/lib/libc/include/any-macos-any/errno.h
index 9879cc4fc2..7768ed7e94 100644
--- a/lib/libc/include/x86_64-macos-gnu/errno.h
+++ b/lib/libc/include/any-macos-any/errno.h
@@ -20,5 +20,4 @@
*
* @APPLE_LICENSE_HEADER_END@
*/
-#include <sys/errno.h>
-
+#include <sys/errno.h> \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/execinfo.h b/lib/libc/include/any-macos-any/execinfo.h
index 97d942274c..65d9d20486 100644
--- a/lib/libc/include/x86_64-macos-gnu/execinfo.h
+++ b/lib/libc/include/any-macos-any/execinfo.h
@@ -60,4 +60,4 @@ void backtrace_image_offsets(void* const* array,
__END_DECLS
-#endif /* !_EXECINFO_H_ */
+#endif /* !_EXECINFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/fcntl.h b/lib/libc/include/any-macos-any/fcntl.h
index d4b1ae2b29..838022fd72 100644
--- a/lib/libc/include/x86_64-macos-gnu/fcntl.h
+++ b/lib/libc/include/any-macos-any/fcntl.h
@@ -20,4 +20,4 @@
*
* @APPLE_LICENSE_HEADER_END@
*/
-#include <sys/fcntl.h>
+#include <sys/fcntl.h> \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/fenv.h b/lib/libc/include/any-macos-any/fenv.h
index d5ebc83654..df59070441 100644
--- a/lib/libc/include/x86_64-macos-gnu/fenv.h
+++ b/lib/libc/include/any-macos-any/fenv.h
@@ -357,5 +357,4 @@ extern int feupdateenv(const fenv_t * /* envp */);
}
#endif
-#endif /* __FENV_H__ */
-
+#endif /* __FENV_H__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/float.h b/lib/libc/include/any-macos-any/float.h
index d0c159657a..3a533f3284 100644
--- a/lib/libc/include/x86_64-macos-gnu/float.h
+++ b/lib/libc/include/any-macos-any/float.h
@@ -137,4 +137,4 @@
# define LDBL_DECIMAL_DIG __LDBL_DECIMAL_DIG__
#endif
-#endif /* __FLOAT_H */
+#endif /* __FLOAT_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/fmtmsg.h b/lib/libc/include/any-macos-any/fmtmsg.h
index 256cf335e6..408fbaa3ac 100644
--- a/lib/libc/include/x86_64-macos-gnu/fmtmsg.h
+++ b/lib/libc/include/any-macos-any/fmtmsg.h
@@ -70,4 +70,4 @@
int fmtmsg(long, const char *, int, const char *, const char *,
const char *);
-#endif /* !_FMTMSG_H_ */
+#endif /* !_FMTMSG_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/fnmatch.h b/lib/libc/include/any-macos-any/fnmatch.h
index e1ffaea62a..55c45f0719 100644
--- a/lib/libc/include/x86_64-macos-gnu/fnmatch.h
+++ b/lib/libc/include/any-macos-any/fnmatch.h
@@ -79,4 +79,4 @@ __BEGIN_DECLS
int fnmatch(const char *, const char *, int) __DARWIN_ALIAS(fnmatch);
__END_DECLS
-#endif /* !_FNMATCH_H_ */
+#endif /* !_FNMATCH_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/ftw.h b/lib/libc/include/any-macos-any/ftw.h
index acf0bc54c6..c1666beee7 100644
--- a/lib/libc/include/x86_64-macos-gnu/ftw.h
+++ b/lib/libc/include/any-macos-any/ftw.h
@@ -57,4 +57,4 @@ int nftw(const char *, int (*)(const char *, const struct stat *, int,
struct FTW *), int, int) __DARWIN_ALIAS_I(nftw);
__END_DECLS
-#endif /* !_FTW_H */
+#endif /* !_FTW_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/gethostuuid.h b/lib/libc/include/any-macos-any/gethostuuid.h
index 94808a7f74..cc7f473118 100644
--- a/lib/libc/include/x86_64-macos-gnu/gethostuuid.h
+++ b/lib/libc/include/any-macos-any/gethostuuid.h
@@ -39,4 +39,4 @@ int gethostuuid(uuid_t, const struct timespec *) __OSX_AVAILABLE_BUT_DEPRECATED_
int gethostuuid(uuid_t, const struct timespec *) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_NA);
#endif
-#endif /* __GETHOSTUUID_H */
+#endif /* __GETHOSTUUID_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/glob.h b/lib/libc/include/any-macos-any/glob.h
index 50881d7a05..c8fd109174 100644
--- a/lib/libc/include/x86_64-macos-gnu/glob.h
+++ b/lib/libc/include/any-macos-any/glob.h
@@ -127,4 +127,4 @@ int glob_b(const char * __restrict, int, int (^)(const char *, int) __glob_noesc
void globfree(glob_t *);
__END_DECLS
-#endif /* !_GLOB_H_ */
+#endif /* !_GLOB_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/grp.h b/lib/libc/include/any-macos-any/grp.h
index 0091ee44c7..5cf7f0c5db 100644
--- a/lib/libc/include/x86_64-macos-gnu/grp.h
+++ b/lib/libc/include/any-macos-any/grp.h
@@ -90,4 +90,4 @@ int setgroupent(int);
__END_DECLS
#endif
-#endif /* !_GRP_H_ */
+#endif /* !_GRP_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/hfs/hfs_format.h b/lib/libc/include/any-macos-any/hfs/hfs_format.h
index 89df0dc69b..4fc240cf69 100644
--- a/lib/libc/include/x86_64-macos-gnu/hfs/hfs_format.h
+++ b/lib/libc/include/any-macos-any/hfs/hfs_format.h
@@ -815,4 +815,4 @@ enum {
}
#endif
-#endif /* __HFS_FORMAT__ */
+#endif /* __HFS_FORMAT__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/hfs/hfs_unistr.h b/lib/libc/include/any-macos-any/hfs/hfs_unistr.h
index 5b300a28d1..9331d30436 100644
--- a/lib/libc/include/x86_64-macos-gnu/hfs/hfs_unistr.h
+++ b/lib/libc/include/any-macos-any/hfs/hfs_unistr.h
@@ -61,4 +61,4 @@ typedef const HFSUniStr255 *ConstHFSUniStr255Param;
#endif
-#endif /* __HFS_UNISTR__ */
+#endif /* __HFS_UNISTR__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/iconv.h b/lib/libc/include/any-macos-any/iconv.h
index 2a6cc01c30..a0e45daf8a 100644
--- a/lib/libc/include/x86_64-macos-gnu/iconv.h
+++ b/lib/libc/include/any-macos-any/iconv.h
@@ -190,4 +190,4 @@ extern __LIBICONV_DLL_EXPORTED void libiconv_set_relocation_prefix (const char *
#endif
-#endif /* _LIBICONV_H */
+#endif /* _LIBICONV_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/ifaddrs.h b/lib/libc/include/any-macos-any/ifaddrs.h
index cf78188537..04d0703b1b 100644
--- a/lib/libc/include/x86_64-macos-gnu/ifaddrs.h
+++ b/lib/libc/include/any-macos-any/ifaddrs.h
@@ -67,4 +67,4 @@ extern int getifmaddrs(struct ifmaddrs **) API_AVAILABLE(macos(10.7), ios(4.3),
extern void freeifmaddrs(struct ifmaddrs *) API_AVAILABLE(macos(10.7), ios(4.3), watchos(4.0), tvos(11.0));
__END_DECLS
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/inttypes.h b/lib/libc/include/any-macos-any/inttypes.h
index c29873da31..2872c18f1e 100644
--- a/lib/libc/include/x86_64-macos-gnu/inttypes.h
+++ b/lib/libc/include/any-macos-any/inttypes.h
@@ -294,4 +294,4 @@ __END_DECLS
not where it is #defined.
*/
-#endif /* !_INTTYPES_H_ */
+#endif /* !_INTTYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/langinfo.h b/lib/libc/include/any-macos-any/langinfo.h
index a7a3b2b53e..424ff84aa0 100644
--- a/lib/libc/include/x86_64-macos-gnu/langinfo.h
+++ b/lib/libc/include/any-macos-any/langinfo.h
@@ -117,4 +117,4 @@ __END_DECLS
#include <xlocale/_langinfo.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* !_LANGINFO_H_ */
+#endif /* !_LANGINFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/launch.h b/lib/libc/include/any-macos-any/launch.h
index 905b9ef931..88a849b7e2 100644
--- a/lib/libc/include/x86_64-macos-gnu/launch.h
+++ b/lib/libc/include/any-macos-any/launch.h
@@ -406,4 +406,4 @@ __END_DECLS
_Pragma("clang assume_nonnull end")
#endif
-#endif // __XPC_LAUNCH_H__
+#endif // __XPC_LAUNCH_H__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libgen.h b/lib/libc/include/any-macos-any/libgen.h
index 4200fc6c40..3fbd2806ce 100644
--- a/lib/libc/include/x86_64-macos-gnu/libgen.h
+++ b/lib/libc/include/any-macos-any/libgen.h
@@ -60,4 +60,4 @@ char *dirname_r(const char *, char *)
__END_DECLS
-#endif /* _LIBGEN_H_ */
+#endif /* _LIBGEN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomic.h b/lib/libc/include/any-macos-any/libkern/OSAtomic.h
index ac38f94409..37ef16ce44 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomic.h
+++ b/lib/libc/include/any-macos-any/libkern/OSAtomic.h
@@ -44,4 +44,4 @@
#include "OSSpinLockDeprecated.h"
#include "OSAtomicQueue.h"
-#endif /* _OSATOMIC_H_ */
+#endif /* _OSATOMIC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/OSSpinLockDeprecated.h b/lib/libc/include/any-macos-any/libkern/OSSpinLockDeprecated.h
index f22b14199d..a654a7bbc2 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/OSSpinLockDeprecated.h
+++ b/lib/libc/include/any-macos-any/libkern/OSSpinLockDeprecated.h
@@ -209,4 +209,4 @@ __END_DECLS
#endif /* OSSPINLOCK_USE_INLINED */
-#endif /* _OSSPINLOCK_DEPRECATED_H_ */
+#endif /* _OSSPINLOCK_DEPRECATED_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/OSTypes.h b/lib/libc/include/any-macos-any/libkern/OSTypes.h
index 451ef763c8..0fff18c1f6 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/OSTypes.h
+++ b/lib/libc/include/any-macos-any/libkern/OSTypes.h
@@ -39,4 +39,4 @@ typedef signed int SInt;
#include <sys/_types/_os_inline.h>
-#endif /* _OS_OSTYPES_H */
+#endif /* _OS_OSTYPES_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/limits.h b/lib/libc/include/any-macos-any/limits.h
index 2ed444e09d..52f4e9add6 100644
--- a/lib/libc/include/x86_64-macos-gnu/limits.h
+++ b/lib/libc/include/any-macos-any/limits.h
@@ -164,4 +164,4 @@
/* NZERO to be defined here. TBD. See also sys/param.h */
-#endif /* !_LIMITS_H_ */
+#endif /* !_LIMITS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/locale.h b/lib/libc/include/any-macos-any/locale.h
index ab28ceba40..5936af133e 100644
--- a/lib/libc/include/x86_64-macos-gnu/locale.h
+++ b/lib/libc/include/any-macos-any/locale.h
@@ -53,4 +53,4 @@ __BEGIN_DECLS
char *setlocale(int, const char *);
__END_DECLS
-#endif /* _LOCALE_H_ */
+#endif /* _LOCALE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/boolean.h b/lib/libc/include/any-macos-any/mach/boolean.h
index 6ef6d4bcd5..ba88429343 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/boolean.h
+++ b/lib/libc/include/any-macos-any/mach/boolean.h
@@ -85,4 +85,4 @@
#define FALSE 0
#endif /* FALSE */
-#endif /* _MACH_BOOLEAN_H_ */
+#endif /* _MACH_BOOLEAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/clock.h b/lib/libc/include/any-macos-any/mach/clock.h
index 81e90eea3b..ec293fc9c1 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/clock.h
+++ b/lib/libc/include/any-macos-any/mach/clock.h
@@ -242,4 +242,4 @@ union __ReplyUnion__clock_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _clock_user_ */
+#endif /* _clock_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/clock_priv.h b/lib/libc/include/any-macos-any/mach/clock_priv.h
index ec6a65840d..0c9d11d9c6 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/clock_priv.h
+++ b/lib/libc/include/any-macos-any/mach/clock_priv.h
@@ -196,4 +196,4 @@ union __ReplyUnion__clock_priv_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _clock_priv_user_ */
+#endif /* _clock_priv_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/clock_types.h b/lib/libc/include/any-macos-any/mach/clock_types.h
index 9b3d49a94b..87daf9270a 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/clock_types.h
+++ b/lib/libc/include/any-macos-any/mach/clock_types.h
@@ -124,4 +124,4 @@ typedef struct mach_timespec mach_timespec_t;
#define BAD_ALRMTYPE(t) (((t) &~ TIME_RELATIVE) != 0)
-#endif /* _MACH_CLOCK_TYPES_H_ */
+#endif /* _MACH_CLOCK_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/dyld_kernel.h b/lib/libc/include/any-macos-any/mach/dyld_kernel.h
index b28e45f199..606ac289f2 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/dyld_kernel.h
+++ b/lib/libc/include/any-macos-any/mach/dyld_kernel.h
@@ -63,4 +63,4 @@ typedef struct dyld_kernel_image_info dyld_kernel_image_info_t;
typedef struct dyld_kernel_process_info dyld_kernel_process_info_t;
typedef dyld_kernel_image_info_t *dyld_kernel_image_info_array_t;
-#endif /* _MACH_DYLIB_INFO_H_ */
+#endif /* _MACH_DYLIB_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/error.h b/lib/libc/include/any-macos-any/mach/error.h
index 50c77b9cda..0643a9881f 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/error.h
+++ b/lib/libc/include/any-macos-any/mach/error.h
@@ -111,4 +111,4 @@
typedef kern_return_t mach_error_t;
typedef mach_error_t (* mach_error_fn_t)( void );
-#endif /* _MACH_ERROR_H_ */
+#endif /* _MACH_ERROR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/exception_types.h b/lib/libc/include/any-macos-any/mach/exception_types.h
index ccbcf0bb42..a0026b9ce2 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/exception_types.h
+++ b/lib/libc/include/any-macos-any/mach/exception_types.h
@@ -201,4 +201,4 @@ typedef mach_exception_data_type_t mach_exception_subcode_t;
#endif /* ASSEMBLER */
-#endif /* _MACH_EXCEPTION_TYPES_H_ */
+#endif /* _MACH_EXCEPTION_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/host_info.h b/lib/libc/include/any-macos-any/mach/host_info.h
index 648d25ca79..362a7d40c8 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/host_info.h
+++ b/lib/libc/include/any-macos-any/mach/host_info.h
@@ -257,4 +257,4 @@ typedef struct host_preferred_user_arch *host_preferred_user_arch_t;
-#endif /* _MACH_HOST_INFO_H_ */
+#endif /* _MACH_HOST_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/host_notify.h b/lib/libc/include/any-macos-any/mach/host_notify.h
index cda654bf4c..9816fcbbf4 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/host_notify.h
+++ b/lib/libc/include/any-macos-any/mach/host_notify.h
@@ -36,4 +36,4 @@
#define HOST_CALENDAR_CHANGED_REPLYID 950
#define HOST_CALENDAR_SET_REPLYID 951
-#endif /* _MACH_HOST_NOTIFY_H_ */
+#endif /* _MACH_HOST_NOTIFY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/host_priv.h b/lib/libc/include/any-macos-any/mach/host_priv.h
index 33d87f2f23..9445ae5d93 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/host_priv.h
+++ b/lib/libc/include/any-macos-any/mach/host_priv.h
@@ -1160,4 +1160,4 @@ union __ReplyUnion__host_priv_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _host_priv_user_ */
+#endif /* _host_priv_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/host_security.h b/lib/libc/include/any-macos-any/mach/host_security.h
index a7928db8ef..1c1b6d9144 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/host_security.h
+++ b/lib/libc/include/any-macos-any/mach/host_security.h
@@ -218,4 +218,4 @@ union __ReplyUnion__host_security_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _host_security_user_ */
+#endif /* _host_security_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/host_special_ports.h b/lib/libc/include/any-macos-any/mach/host_special_ports.h
index d09b44b6b6..8d4cdbefce 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/host_special_ports.h
+++ b/lib/libc/include/any-macos-any/mach/host_special_ports.h
@@ -278,4 +278,4 @@
* All lookups go through send_resource_violation()
*/
-#endif /* _MACH_HOST_SPECIAL_PORTS_H_ */
+#endif /* _MACH_HOST_SPECIAL_PORTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/kmod.h b/lib/libc/include/any-macos-any/mach/kmod.h
index d23086b52f..57ff5bd22f 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/kmod.h
+++ b/lib/libc/include/any-macos-any/mach/kmod.h
@@ -177,4 +177,4 @@ typedef kmod_info_t * kmod_info_array_t;
__END_DECLS
-#endif /* _MACH_KMOD_H_ */
+#endif /* _MACH_KMOD_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/lock_set.h b/lib/libc/include/any-macos-any/mach/lock_set.h
index e4dcf8a829..752d7c2976 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/lock_set.h
+++ b/lib/libc/include/any-macos-any/mach/lock_set.h
@@ -347,4 +347,4 @@ union __ReplyUnion__lock_set_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _lock_set_user_ */
+#endif /* _lock_set_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach.h b/lib/libc/include/any-macos-any/mach/mach.h
index 9ebf5c8c7c..159fd67b99 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach.h
+++ b/lib/libc/include/any-macos-any/mach/mach.h
@@ -242,4 +242,4 @@ extern void voucher_mach_msg_revert(voucher_mach_msg_state_t state);
__END_DECLS
-#endif /* _MACH_H_ */
+#endif /* _MACH_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_error.h b/lib/libc/include/any-macos-any/mach/mach_error.h
index 538b5cb1b0..bf800a9b07 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_error.h
+++ b/lib/libc/include/any-macos-any/mach/mach_error.h
@@ -90,4 +90,4 @@ char *mach_error_type(
);
__END_DECLS
-#endif /* _MACH_ERROR_ */
+#endif /* _MACH_ERROR_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_host.h b/lib/libc/include/any-macos-any/mach/mach_host.h
index 41c68050b8..a5b6d2cd84 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_host.h
+++ b/lib/libc/include/any-macos-any/mach/mach_host.h
@@ -1292,4 +1292,4 @@ union __ReplyUnion__mach_host_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _mach_host_user_ */
+#endif /* _mach_host_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_init.h b/lib/libc/include/any-macos-any/mach/mach_init.h
index 4d9d51f466..d61d6e90b5 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_init.h
+++ b/lib/libc/include/any-macos-any/mach/mach_init.h
@@ -107,4 +107,4 @@ extern int (*vprintf_stderr_func)(const char *format, va_list ap);
__END_DECLS
-#endif /* _MACH_INIT_ */
+#endif /* _MACH_INIT_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_interface.h b/lib/libc/include/any-macos-any/mach/mach_interface.h
index e6c6b7acf6..466a57a348 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_interface.h
+++ b/lib/libc/include/any-macos-any/mach/mach_interface.h
@@ -50,4 +50,4 @@
#include <mach/thread_act.h>
#include <mach/vm_map.h>
-#endif /* _MACH_INTERFACE_H_ */
+#endif /* _MACH_INTERFACE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_time.h b/lib/libc/include/any-macos-any/mach/mach_time.h
index 2853aac32c..4a936ca6cc 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_time.h
+++ b/lib/libc/include/any-macos-any/mach/mach_time.h
@@ -70,4 +70,4 @@ uint64_t mach_continuous_approximate_time(void);
__END_DECLS
-#endif /* _MACH_MACH_TIME_H_ */
+#endif /* _MACH_MACH_TIME_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_voucher_types.h b/lib/libc/include/any-macos-any/mach/mach_voucher_types.h
index 89d3821642..b5b34d7e4c 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_voucher_types.h
+++ b/lib/libc/include/any-macos-any/mach/mach_voucher_types.h
@@ -242,4 +242,4 @@ typedef uint32_t mach_voucher_attr_importance_refs;
*/
#define MACH_ACTIVITY_ID_COUNT_MAX 16
-#endif /* _MACH_VOUCHER_TYPES_H_ */
+#endif /* _MACH_VOUCHER_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/memory_object_types.h b/lib/libc/include/any-macos-any/mach/memory_object_types.h
index 1a731d5b26..fec6e53593 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/memory_object_types.h
+++ b/lib/libc/include/any-macos-any/mach/memory_object_types.h
@@ -296,4 +296,4 @@ typedef struct memory_object_attr_info memory_object_attr_info_data_t;
MAP_MEM_FLAGS_USER)
-#endif /* _MACH_MEMORY_OBJECT_TYPES_H_ */
+#endif /* _MACH_MEMORY_OBJECT_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mig.h b/lib/libc/include/any-macos-any/mach/mig.h
index 066ffa75b4..aa7bcf7448 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mig.h
+++ b/lib/libc/include/any-macos-any/mach/mig.h
@@ -177,4 +177,4 @@ extern void mig_deallocate(vm_address_t, vm_size_t);
__END_DECLS
-#endif /* _MACH_MIG_H_ */
+#endif /* _MACH_MIG_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mig_errors.h b/lib/libc/include/any-macos-any/mach/mig_errors.h
index 418a05da3a..9af52d06d9 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mig_errors.h
+++ b/lib/libc/include/any-macos-any/mach/mig_errors.h
@@ -122,4 +122,4 @@ __NDR_convert__mig_reply_error_t(__unused mig_reply_error_t *x)
__END_DECLS
-#endif /* _MACH_MIG_ERRORS_H_ */
+#endif /* _MACH_MIG_ERRORS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mig_strncpy_zerofill_support.h b/lib/libc/include/any-macos-any/mach/mig_strncpy_zerofill_support.h
index 92d0ff8e44..1aacea41df 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mig_strncpy_zerofill_support.h
+++ b/lib/libc/include/any-macos-any/mach/mig_strncpy_zerofill_support.h
@@ -32,4 +32,4 @@
#ifndef __MACH_MIG_STRNCPY_ZEROFILL_SUPPORT__
#define __MACH_MIG_STRNCPY_ZEROFILL_SUPPORT__
-#endif // __MACH_MIG_STRNCPY_ZEROFILL_SUPPORT__
+#endif // __MACH_MIG_STRNCPY_ZEROFILL_SUPPORT__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/ndr.h b/lib/libc/include/any-macos-any/mach/ndr.h
index 61c00ff1d3..608f9acc38 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/ndr.h
+++ b/lib/libc/include/any-macos-any/mach/ndr.h
@@ -204,4 +204,4 @@ __END_DECLS
#endif /* __NDR_convert__ */
-#endif /* _MACH_NDR_H_ */
+#endif /* _MACH_NDR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/notify.h b/lib/libc/include/any-macos-any/mach/notify.h
index 5737dbc9de..d8cace1f5e 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/notify.h
+++ b/lib/libc/include/any-macos-any/mach/notify.h
@@ -138,4 +138,4 @@ typedef struct {
mach_msg_format_0_trailer_t trailer;
} mach_dead_name_notification_t;
-#endif /* _MACH_NOTIFY_H_ */
+#endif /* _MACH_NOTIFY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/policy.h b/lib/libc/include/any-macos-any/mach/policy.h
index 836b95f747..4f0df4917c 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/policy.h
+++ b/lib/libc/include/any-macos-any/mach/policy.h
@@ -232,4 +232,4 @@ typedef struct policy_bases policy_base_data_t;
typedef struct policy_limits policy_limit_data_t;
typedef struct policy_infos policy_info_data_t;
-#endif /* _MACH_POLICY_H_ */
+#endif /* _MACH_POLICY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/processor.h b/lib/libc/include/any-macos-any/mach/processor.h
index a1b9c3ba56..64cf6b97b3 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/processor.h
+++ b/lib/libc/include/any-macos-any/mach/processor.h
@@ -357,4 +357,4 @@ union __ReplyUnion__processor_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _processor_user_ */
+#endif /* _processor_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/processor_info.h b/lib/libc/include/any-macos-any/mach/processor_info.h
index 8553760799..c66a7bbee8 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/processor_info.h
+++ b/lib/libc/include/any-macos-any/mach/processor_info.h
@@ -150,4 +150,4 @@ typedef struct processor_set_load_info *processor_set_load_info_t;
(sizeof(processor_set_load_info_data_t)/sizeof(natural_t)))
-#endif /* _MACH_PROCESSOR_INFO_H_ */
+#endif /* _MACH_PROCESSOR_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/rpc.h b/lib/libc/include/any-macos-any/mach/rpc.h
index f3361d7690..a5579594a9 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/rpc.h
+++ b/lib/libc/include/any-macos-any/mach/rpc.h
@@ -132,4 +132,4 @@ typedef struct rpc_subsystem *rpc_subsystem_t;
#define RPC_SUBSYSTEM_NULL ((rpc_subsystem_t) 0)
-#endif /* _MACH_RPC_H_ */
+#endif /* _MACH_RPC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/semaphore.h b/lib/libc/include/any-macos-any/mach/semaphore.h
index 1ff46e4140..7779a58faf 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/semaphore.h
+++ b/lib/libc/include/any-macos-any/mach/semaphore.h
@@ -75,4 +75,4 @@ extern kern_return_t semaphore_signal_thread(semaphore_t semaphore,
__END_DECLS
-#endif /* _MACH_SEMAPHORE_H_ */
+#endif /* _MACH_SEMAPHORE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/std_types.h b/lib/libc/include/any-macos-any/mach/std_types.h
index 5815302d42..b83ff2f57e 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/std_types.h
+++ b/lib/libc/include/any-macos-any/mach/std_types.h
@@ -72,4 +72,4 @@
#include <sys/_types.h>
#include <sys/_types/_uuid_t.h>
-#endif /* _MACH_STD_TYPES_H_ */
+#endif /* _MACH_STD_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/sync_policy.h b/lib/libc/include/any-macos-any/mach/sync_policy.h
index ff487f6a80..a4c477bf5d 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/sync_policy.h
+++ b/lib/libc/include/any-macos-any/mach/sync_policy.h
@@ -46,4 +46,4 @@ typedef int sync_policy_t;
#define SYNC_POLICY_MAX 0x7
-#endif /* _MACH_SYNC_POLICY_H_ */
+#endif /* _MACH_SYNC_POLICY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/task_inspect.h b/lib/libc/include/any-macos-any/mach/task_inspect.h
index b13310f75e..1ae3c6e5f1 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/task_inspect.h
+++ b/lib/libc/include/any-macos-any/mach/task_inspect.h
@@ -51,4 +51,4 @@ typedef struct task_inspect_basic_counts *task_inspect_basic_counts_t;
typedef integer_t *task_inspect_info_t;
-#endif /* !defined(MACH_TASK_INSPECT_H) */
+#endif /* !defined(MACH_TASK_INSPECT_H) */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/thread_info.h b/lib/libc/include/any-macos-any/mach/thread_info.h
index c31a27b024..d0fdffc40b 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/thread_info.h
+++ b/lib/libc/include/any-macos-any/mach/thread_info.h
@@ -208,4 +208,4 @@ typedef struct io_stat_info *io_stat_info_t;
#define THREAD_SCHED_RR_INFO 11
#define THREAD_SCHED_FIFO_INFO 12
-#endif /* _MACH_THREAD_INFO_H_ */
+#endif /* _MACH_THREAD_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/thread_policy.h b/lib/libc/include/any-macos-any/mach/thread_policy.h
index d5c8c1bafa..e15504cff4 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/thread_policy.h
+++ b/lib/libc/include/any-macos-any/mach/thread_policy.h
@@ -263,4 +263,4 @@ typedef struct thread_throughput_qos_policy *thread_throughput_qos_policy_t;
-#endif /* _MACH_THREAD_POLICY_H_ */
+#endif /* _MACH_THREAD_POLICY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/thread_switch.h b/lib/libc/include/any-macos-any/mach/thread_switch.h
index 4ac56bfafb..79bcc00a8c 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/thread_switch.h
+++ b/lib/libc/include/any-macos-any/mach/thread_switch.h
@@ -74,4 +74,4 @@
#define valid_switch_option(opt) (0 <= (opt) && (opt) <= 5)
-#endif /* _MACH_THREAD_SWITCH_H_ */
+#endif /* _MACH_THREAD_SWITCH_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/time_value.h b/lib/libc/include/any-macos-any/mach/time_value.h
index 8cfd37d740..4bbf2ea567 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/time_value.h
+++ b/lib/libc/include/any-macos-any/mach/time_value.h
@@ -93,4 +93,4 @@ typedef struct time_value time_value_t;
} \
}
-#endif /* _MACH_TIME_VALUE_H_ */
+#endif /* _MACH_TIME_VALUE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_attributes.h b/lib/libc/include/any-macos-any/mach/vm_attributes.h
index bac0993cb3..2ec117793d 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_attributes.h
+++ b/lib/libc/include/any-macos-any/mach/vm_attributes.h
@@ -96,4 +96,4 @@ typedef int vm_machine_attribute_val_t;
#define MATTR_VAL_GET_INFO 10 /* get page info (stats) */
-#endif /* _MACH_VM_ATTRIBUTES_H_ */
+#endif /* _MACH_VM_ATTRIBUTES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_behavior.h b/lib/libc/include/any-macos-any/mach/vm_behavior.h
index 727980d51e..33db5ca54c 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_behavior.h
+++ b/lib/libc/include/any-macos-any/mach/vm_behavior.h
@@ -76,4 +76,4 @@ typedef int vm_behavior_t;
#define VM_BEHAVIOR_CAN_REUSE ((vm_behavior_t) 10)
#define VM_BEHAVIOR_PAGEOUT ((vm_behavior_t) 11)
-#endif /*_MACH_VM_BEHAVIOR_H_*/
+#endif /*_MACH_VM_BEHAVIOR_H_*/ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_inherit.h b/lib/libc/include/any-macos-any/mach/vm_inherit.h
index 528d691798..ffb7eb812a 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_inherit.h
+++ b/lib/libc/include/any-macos-any/mach/vm_inherit.h
@@ -86,4 +86,4 @@ typedef unsigned int vm_inherit_t; /* might want to change this */
#define VM_INHERIT_DEFAULT VM_INHERIT_COPY
#define VM_INHERIT_LAST_VALID VM_INHERIT_NONE
-#endif /* _MACH_VM_INHERIT_H_ */
+#endif /* _MACH_VM_INHERIT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_map.h b/lib/libc/include/any-macos-any/mach/vm_map.h
index 6c419075f1..59b3e7ffac 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_map.h
+++ b/lib/libc/include/any-macos-any/mach/vm_map.h
@@ -1437,4 +1437,4 @@ union __ReplyUnion__vm_map_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _vm_map_user_ */
+#endif /* _vm_map_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_page_size.h b/lib/libc/include/any-macos-any/mach/vm_page_size.h
index 26d7a73039..a818eabbeb 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_page_size.h
+++ b/lib/libc/include/any-macos-any/mach/vm_page_size.h
@@ -65,4 +65,4 @@ extern int vm_kernel_page_shift __OSX_AVAILABLE_STARTING(__MAC_1
__END_DECLS
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_purgable.h b/lib/libc/include/any-macos-any/mach/vm_purgable.h
index 80ea756d9d..bbc6ae9641 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_purgable.h
+++ b/lib/libc/include/any-macos-any/mach/vm_purgable.h
@@ -159,4 +159,4 @@ typedef int vm_purgable_t;
VM_VOLATILE_GROUP_MASK | \
VM_PURGABLE_DEBUG_MASK | \
VM_PURGABLE_NO_AGING_MASK)
-#endif /* _MACH_VM_PURGABLE_H_ */
+#endif /* _MACH_VM_PURGABLE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_region.h b/lib/libc/include/any-macos-any/mach/vm_region.h
index f6f371fa44..0fd4b17ff3 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_region.h
+++ b/lib/libc/include/any-macos-any/mach/vm_region.h
@@ -346,4 +346,4 @@ typedef struct vm_page_info_basic vm_page_info_basic_data_t;
(sizeof(vm_page_info_basic_data_t)/sizeof(int)))
-#endif /*_MACH_VM_REGION_H_*/
+#endif /*_MACH_VM_REGION_H_*/ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_sync.h b/lib/libc/include/any-macos-any/mach/vm_sync.h
index 8dccb9c2c9..a928fb037d 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_sync.h
+++ b/lib/libc/include/any-macos-any/mach/vm_sync.h
@@ -77,4 +77,4 @@ typedef unsigned vm_sync_t;
#define VM_SYNC_CONTIGUOUS ((vm_sync_t) 0x20)
#define VM_SYNC_REUSABLEPAGES ((vm_sync_t) 0x40)
-#endif /* _MACH_VM_SYNC_H_ */
+#endif /* _MACH_VM_SYNC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach_debug/hash_info.h b/lib/libc/include/any-macos-any/mach_debug/hash_info.h
index ba4bd39e85..56d0a4b07e 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach_debug/hash_info.h
+++ b/lib/libc/include/any-macos-any/mach_debug/hash_info.h
@@ -72,4 +72,4 @@ typedef struct hash_info_bucket {
typedef hash_info_bucket_t *hash_info_bucket_array_t;
-#endif /* _MACH_DEBUG_HASH_INFO_H_ */
+#endif /* _MACH_DEBUG_HASH_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach_debug/ipc_info.h b/lib/libc/include/any-macos-any/mach_debug/ipc_info.h
index 520830894a..deb07cac5e 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach_debug/ipc_info.h
+++ b/lib/libc/include/any-macos-any/mach_debug/ipc_info.h
@@ -113,4 +113,4 @@ typedef struct ipc_info_tree_name {
typedef ipc_info_tree_name_t *ipc_info_tree_name_array_t;
-#endif /* _MACH_DEBUG_IPC_INFO_H_ */
+#endif /* _MACH_DEBUG_IPC_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach_debug/lockgroup_info.h b/lib/libc/include/any-macos-any/mach_debug/lockgroup_info.h
index ee744bb576..38bb6dece4 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach_debug/lockgroup_info.h
+++ b/lib/libc/include/any-macos-any/mach_debug/lockgroup_info.h
@@ -71,4 +71,4 @@ typedef struct lockgroup_info {
typedef lockgroup_info_t *lockgroup_info_array_t;
-#endif /* _MACH_DEBUG_LOCKGROUP_INFO_H_ */
+#endif /* _MACH_DEBUG_LOCKGROUP_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach_debug/mach_debug_types.h b/lib/libc/include/any-macos-any/mach_debug/mach_debug_types.h
index 8781b108e7..a4a2f3d7c7 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach_debug/mach_debug_types.h
+++ b/lib/libc/include/any-macos-any/mach_debug/mach_debug_types.h
@@ -92,4 +92,4 @@ struct mach_core_fileheader {
#define KOBJECT_DESCRIPTION_LENGTH 512
typedef char kobject_description_t[KOBJECT_DESCRIPTION_LENGTH];
-#endif /* _MACH_DEBUG_MACH_DEBUG_TYPES_H_ */
+#endif /* _MACH_DEBUG_MACH_DEBUG_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach_debug/page_info.h b/lib/libc/include/any-macos-any/mach_debug/page_info.h
index b0b5db3872..2c4d4a67aa 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach_debug/page_info.h
+++ b/lib/libc/include/any-macos-any/mach_debug/page_info.h
@@ -61,4 +61,4 @@
#include <mach/machine/vm_types.h>
typedef vm_offset_t *page_address_array_t;
-#endif /* MACH_DEBUG_PAGE_INFO_H */
+#endif /* MACH_DEBUG_PAGE_INFO_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach_debug/vm_info.h b/lib/libc/include/any-macos-any/mach_debug/vm_info.h
index 8e2eb5f059..4efebb0488 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach_debug/vm_info.h
+++ b/lib/libc/include/any-macos-any/mach_debug/vm_info.h
@@ -146,4 +146,4 @@ typedef vm_info_object_t *vm_info_object_array_t;
#pragma pack()
-#endif /* _MACH_DEBUG_VM_INFO_H_ */
+#endif /* _MACH_DEBUG_VM_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach_debug/zone_info.h b/lib/libc/include/any-macos-any/mach_debug/zone_info.h
index 1022eca68c..b91d4d4138 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach_debug/zone_info.h
+++ b/lib/libc/include/any-macos-any/mach_debug/zone_info.h
@@ -198,4 +198,4 @@ typedef struct zone_btrecord {
typedef zone_btrecord_t *zone_btrecord_array_t;
-#endif /* _MACH_DEBUG_ZONE_INFO_H_ */
+#endif /* _MACH_DEBUG_ZONE_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/memory.h b/lib/libc/include/any-macos-any/memory.h
index cb9c8b5f77..c95c218099 100644
--- a/lib/libc/include/x86_64-macos-gnu/memory.h
+++ b/lib/libc/include/any-macos-any/memory.h
@@ -33,4 +33,4 @@
* @(#)memory.h 8.1 (Berkeley) 6/2/93
*/
-#include <string.h>
+#include <string.h> \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/monetary.h b/lib/libc/include/any-macos-any/monetary.h
index a32f404d0e..590b856caa 100644
--- a/lib/libc/include/x86_64-macos-gnu/monetary.h
+++ b/lib/libc/include/any-macos-any/monetary.h
@@ -42,4 +42,4 @@ __END_DECLS
#include <xlocale/_monetary.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* !_MONETARY_H_ */
+#endif /* !_MONETARY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/ndbm.h b/lib/libc/include/any-macos-any/ndbm.h
index b400c6207e..a26ddd4b56 100644
--- a/lib/libc/include/x86_64-macos-gnu/ndbm.h
+++ b/lib/libc/include/any-macos-any/ndbm.h
@@ -117,4 +117,4 @@ DBM *dbm_open(const char *, int, mode_t);
int dbm_store(DBM *, datum, datum, int);
__END_DECLS
-#endif /* !_NDBM_H_ */
+#endif /* !_NDBM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/net/if_dl.h b/lib/libc/include/any-macos-any/net/if_dl.h
index 728e2f1e8b..230e09ca76 100644
--- a/lib/libc/include/x86_64-macos-gnu/net/if_dl.h
+++ b/lib/libc/include/any-macos-any/net/if_dl.h
@@ -118,4 +118,4 @@ char *link_ntoa(const struct sockaddr_dl *);
__END_DECLS
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/net/net_kev.h b/lib/libc/include/any-macos-any/net/net_kev.h
index 4bb71821fb..0919e59ff2 100644
--- a/lib/libc/include/x86_64-macos-gnu/net/net_kev.h
+++ b/lib/libc/include/any-macos-any/net/net_kev.h
@@ -95,4 +95,4 @@
#define KEV_INET6_REQUEST_NAT64_PREFIX 7 /* Asking for the NAT64-prefix */
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
-#endif /* _NET_NETKEV_H_ */
+#endif /* _NET_NETKEV_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/netdb.h b/lib/libc/include/any-macos-any/netdb.h
index ea30449e60..9ff0a92b8a 100644
--- a/lib/libc/include/x86_64-macos-gnu/netdb.h
+++ b/lib/libc/include/any-macos-any/netdb.h
@@ -316,4 +316,4 @@ void setnetgrent(const char *);
__END_DECLS
-#endif /* !_NETDB_H_ */
+#endif /* !_NETDB_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/nl_types.h b/lib/libc/include/any-macos-any/nl_types.h
index 72d0da254d..2cc919e727 100644
--- a/lib/libc/include/x86_64-macos-gnu/nl_types.h
+++ b/lib/libc/include/any-macos-any/nl_types.h
@@ -100,4 +100,4 @@ char *catgets(nl_catd, int, int, const char *)
int catclose(nl_catd);
__END_DECLS
-#endif /* _NL_TYPES_H_ */
+#endif /* _NL_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/objc/NSObjCRuntime.h b/lib/libc/include/any-macos-any/objc/NSObjCRuntime.h
index ab0b6b9b75..c0d01f928e 100644
--- a/lib/libc/include/x86_64-macos-gnu/objc/NSObjCRuntime.h
+++ b/lib/libc/include/any-macos-any/objc/NSObjCRuntime.h
@@ -30,4 +30,4 @@ typedef unsigned int NSUInteger;
#endif
#endif
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/objc/NSObject.h b/lib/libc/include/any-macos-any/objc/NSObject.h
index 2172abaf4e..cbb2fc8aa2 100644
--- a/lib/libc/include/x86_64-macos-gnu/objc/NSObject.h
+++ b/lib/libc/include/any-macos-any/objc/NSObject.h
@@ -109,4 +109,4 @@ OBJC_EXPORT
#endif
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/objc/message.h b/lib/libc/include/any-macos-any/objc/message.h
index 31bd544bc8..3c9a5e0d08 100644
--- a/lib/libc/include/x86_64-macos-gnu/objc/message.h
+++ b/lib/libc/include/any-macos-any/objc/message.h
@@ -385,4 +385,4 @@ objc_msgSendv_fpret(id _Nullable self, SEL _Nonnull op,
#endif
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/objc/objc.h b/lib/libc/include/any-macos-any/objc/objc.h
index 4c68159452..76da49110b 100644
--- a/lib/libc/include/x86_64-macos-gnu/objc/objc.h
+++ b/lib/libc/include/any-macos-any/objc/objc.h
@@ -256,4 +256,4 @@ typedef char *STR;
#endif
-#endif /* _OBJC_OBJC_H_ */
+#endif /* _OBJC_OBJC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/os/availability.h b/lib/libc/include/any-macos-any/os/availability.h
index 1b3f5d9ddd..1068bd663d 100644
--- a/lib/libc/include/x86_64-macos-gnu/os/availability.h
+++ b/lib/libc/include/any-macos-any/os/availability.h
@@ -162,4 +162,4 @@
#define SPI_DEPRECATED_WITH_REPLACEMENT(...)
#endif
-#endif /* __OS_AVAILABILITY__ */
+#endif /* __OS_AVAILABILITY__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/os/lock.h b/lib/libc/include/any-macos-any/os/lock.h
index 5c46f28e94..889ad2a3df 100644
--- a/lib/libc/include/x86_64-macos-gnu/os/lock.h
+++ b/lib/libc/include/any-macos-any/os/lock.h
@@ -186,4 +186,4 @@ __END_DECLS
OS_ASSUME_NONNULL_END
-#endif // __OS_LOCK__
+#endif // __OS_LOCK__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/poll.h b/lib/libc/include/any-macos-any/poll.h
index 75f90feee5..18f97cf7ae 100644
--- a/lib/libc/include/x86_64-macos-gnu/poll.h
+++ b/lib/libc/include/any-macos-any/poll.h
@@ -20,7 +20,4 @@
*
* @APPLE_LICENSE_HEADER_END@
*/
-#include <sys/poll.h>
-
-
-
+#include <sys/poll.h> \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/pthread/pthread_impl.h b/lib/libc/include/any-macos-any/pthread/pthread_impl.h
index 35d32d3021..aae74c2c03 100644
--- a/lib/libc/include/x86_64-macos-gnu/pthread/pthread_impl.h
+++ b/lib/libc/include/any-macos-any/pthread/pthread_impl.h
@@ -63,4 +63,4 @@ _Pragma("clang assume_nonnull begin")
_Pragma("clang assume_nonnull end")
#endif
-#endif /* _PTHREAD_IMPL_H_ */
+#endif /* _PTHREAD_IMPL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/pthread/qos.h b/lib/libc/include/any-macos-any/pthread/qos.h
index 9c1bfd8a2b..530d5db24d 100644
--- a/lib/libc/include/x86_64-macos-gnu/pthread/qos.h
+++ b/lib/libc/include/any-macos-any/pthread/qos.h
@@ -301,4 +301,4 @@ _Pragma("clang assume_nonnull end")
#endif // __DARWIN_C_LEVEL >= __DARWIN_C_FULL
-#endif // _PTHREAD_QOS_H
+#endif // _PTHREAD_QOS_H \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/pwd.h b/lib/libc/include/any-macos-any/pwd.h
index 67cc5a69fc..18cc0ab288 100644
--- a/lib/libc/include/x86_64-macos-gnu/pwd.h
+++ b/lib/libc/include/any-macos-any/pwd.h
@@ -116,4 +116,4 @@ int getpwuuid_r(uuid_t, struct passwd *, char *, size_t, struct passwd **);
__END_DECLS
#endif
-#endif /* !_PWD_H_ */
+#endif /* !_PWD_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/regex.h b/lib/libc/include/any-macos-any/regex.h
index 11f592b3fb..f84f764a93 100644
--- a/lib/libc/include/x86_64-macos-gnu/regex.h
+++ b/lib/libc/include/any-macos-any/regex.h
@@ -214,4 +214,4 @@ __END_DECLS
#include <xlocale/_regex.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* !_REGEX_H_ */
+#endif /* !_REGEX_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/runetype.h b/lib/libc/include/any-macos-any/runetype.h
index b3dcce26fd..e1369709ce 100644
--- a/lib/libc/include/x86_64-macos-gnu/runetype.h
+++ b/lib/libc/include/any-macos-any/runetype.h
@@ -112,4 +112,4 @@ extern _RuneLocale _DefaultRuneLocale;
extern _RuneLocale *_CurrentRuneLocale;
__END_DECLS
-#endif /* !_RUNETYPE_H_ */
+#endif /* !_RUNETYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/search.h b/lib/libc/include/any-macos-any/search.h
index 58d69e76b7..36d30fb3e6 100644
--- a/lib/libc/include/x86_64-macos-gnu/search.h
+++ b/lib/libc/include/any-macos-any/search.h
@@ -59,4 +59,4 @@ void *tsearch(const void *, void **, int (*)(const void *, const void *));
void twalk(const void *, void (*)(const void *, VISIT, int));
__END_DECLS
-#endif /* !_SEARCH_H_ */
+#endif /* !_SEARCH_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/secure/_common.h b/lib/libc/include/any-macos-any/secure/_common.h
index a7acfaa0de..7e1e43d722 100644
--- a/lib/libc/include/x86_64-macos-gnu/secure/_common.h
+++ b/lib/libc/include/any-macos-any/secure/_common.h
@@ -38,4 +38,4 @@
#define __darwin_obsz0(object) __builtin_object_size (object, 0)
#define __darwin_obsz(object) __builtin_object_size (object, _USE_FORTIFY_LEVEL > 1 ? 1 : 0)
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/secure/_stdio.h b/lib/libc/include/any-macos-any/secure/_stdio.h
index c4dc7b2343..89e4c90ae0 100644
--- a/lib/libc/include/x86_64-macos-gnu/secure/_stdio.h
+++ b/lib/libc/include/any-macos-any/secure/_stdio.h
@@ -83,4 +83,4 @@ extern int __vsnprintf_chk (char * __restrict, size_t, int, size_t,
#endif
#endif /* _USE_FORTIFY_LEVEL > 0 */
-#endif /* _SECURE__STDIO_H_ */
+#endif /* _SECURE__STDIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/secure/_string.h b/lib/libc/include/any-macos-any/secure/_string.h
index f101c134c9..9fac5296c7 100644
--- a/lib/libc/include/x86_64-macos-gnu/secure/_string.h
+++ b/lib/libc/include/any-macos-any/secure/_string.h
@@ -147,4 +147,4 @@
#undef __HAS_FIXED_CHK_PROTOTYPES
#endif /* _USE_FORTIFY_LEVEL > 0 */
-#endif /* _SECURE__STRING_H_ */
+#endif /* _SECURE__STRING_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/secure/_strings.h b/lib/libc/include/any-macos-any/secure/_strings.h
index 9069e59591..c50dcb5cf5 100644
--- a/lib/libc/include/x86_64-macos-gnu/secure/_strings.h
+++ b/lib/libc/include/any-macos-any/secure/_strings.h
@@ -56,4 +56,4 @@
#endif
#endif /* _USE_FORTIFY_LEVEL > 0 */
-#endif /* _SECURE__STRINGS_H_ */
+#endif /* _SECURE__STRINGS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/semaphore.h b/lib/libc/include/any-macos-any/semaphore.h
index 638aa6138f..96fa229741 100644
--- a/lib/libc/include/x86_64-macos-gnu/semaphore.h
+++ b/lib/libc/include/any-macos-any/semaphore.h
@@ -28,4 +28,4 @@
#include <sys/semaphore.h>
-#endif /* _BSD_SEMAPHORE_H */
+#endif /* _BSD_SEMAPHORE_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/setjmp.h b/lib/libc/include/any-macos-any/setjmp.h
index f54ddefa57..24ec583696 100644
--- a/lib/libc/include/x86_64-macos-gnu/setjmp.h
+++ b/lib/libc/include/any-macos-any/setjmp.h
@@ -99,4 +99,4 @@ void longjmperror(void);
#endif /* neither ANSI nor POSIX */
__END_DECLS
-#endif /* _BSD_SETJMP_H */
+#endif /* _BSD_SETJMP_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/base.h b/lib/libc/include/any-macos-any/simd/base.h
index 01371186dc..fdc2e3c879 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/base.h
+++ b/lib/libc/include/any-macos-any/simd/base.h
@@ -119,4 +119,4 @@ typedef _Bool simd_bool;
typedef simd_bool __SIMD_BOOLEAN_TYPE__;
# endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* defined SIMD_BASE */
+#endif /* defined SIMD_BASE */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/extern.h b/lib/libc/include/any-macos-any/simd/extern.h
index b4b6b8f53d..83f37e2351 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/extern.h
+++ b/lib/libc/include/any-macos-any/simd/extern.h
@@ -46,4 +46,4 @@ extern simd_double4x4 __invert_d4(simd_double4x4);
}
#endif
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* __SIMD_EXTERN_HEADER__ */
+#endif /* __SIMD_EXTERN_HEADER__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/geometry.h b/lib/libc/include/any-macos-any/simd/geometry.h
index 80b2e5f0f6..649bfb6237 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/geometry.h
+++ b/lib/libc/include/any-macos-any/simd/geometry.h
@@ -1080,4 +1080,4 @@ static double SIMD_CFUNC simd_insphere(simd_double3 __x, simd_double3 __a, simd_
}
#endif
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* __SIMD_COMMON_HEADER__ */
+#endif /* __SIMD_COMMON_HEADER__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/matrix.h b/lib/libc/include/any-macos-any/simd/matrix.h
index 6c0941a296..a62384e133 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/matrix.h
+++ b/lib/libc/include/any-macos-any/simd/matrix.h
@@ -1783,4 +1783,4 @@ static simd_bool SIMD_CFUNC simd_almost_equal_elements_relative(simd_double4x4 _
}
#endif
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* __SIMD_HEADER__ */
+#endif /* __SIMD_HEADER__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/matrix_types.h b/lib/libc/include/any-macos-any/simd/matrix_types.h
index 0f2e90df66..904df687a6 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/matrix_types.h
+++ b/lib/libc/include/any-macos-any/simd/matrix_types.h
@@ -261,4 +261,4 @@ namespace simd {
}
#endif /* __cplusplus */
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* SIMD_MATRIX_TYPES_HEADER */
+#endif /* SIMD_MATRIX_TYPES_HEADER */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/simd.h b/lib/libc/include/any-macos-any/simd/simd.h
index 2850d75ae9..e504527ef6 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/simd.h
+++ b/lib/libc/include/any-macos-any/simd/simd.h
@@ -18,4 +18,4 @@
#include <simd/matrix.h>
#include <simd/quaternion.h>
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/types.h b/lib/libc/include/any-macos-any/simd/types.h
index e094467047..85ae1b2924 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/types.h
+++ b/lib/libc/include/any-macos-any/simd/types.h
@@ -125,4 +125,4 @@ typedef struct { simd_float4 vector; } simd_quatf;
typedef struct { simd_double4 vector; } simd_quatd;
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* SIMD_TYPES */
+#endif /* SIMD_TYPES */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/vector.h b/lib/libc/include/any-macos-any/simd/vector.h
index 7ab8f2adbc..0bc2e9ec44 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/vector.h
+++ b/lib/libc/include/any-macos-any/simd/vector.h
@@ -49,4 +49,4 @@
#include <simd/geometry.h>
#include <simd/conversion.h>
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/vector_make.h b/lib/libc/include/any-macos-any/simd/vector_make.h
index 34396b2608..b8e2323944 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/vector_make.h
+++ b/lib/libc/include/any-macos-any/simd/vector_make.h
@@ -6765,4 +6765,4 @@ template <typename typeN> static SIMD_CPPFUNC double8 make_double8_undef(typeN o
} /* namespace simd */
#endif /* __cplusplus */
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* SIMD_VECTOR_CONSTRUCTORS */
+#endif /* SIMD_VECTOR_CONSTRUCTORS */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/vector_types.h b/lib/libc/include/any-macos-any/simd/vector_types.h
index 223d696e10..09701acfa9 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/vector_types.h
+++ b/lib/libc/include/any-macos-any/simd/vector_types.h
@@ -1278,4 +1278,4 @@ typedef simd_double4 vector_double4;
typedef simd_double8 vector_double8;
# endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/stdint.h b/lib/libc/include/any-macos-any/stdint.h
index f4bb4cd758..9ad9bbedb5 100644
--- a/lib/libc/include/x86_64-macos-gnu/stdint.h
+++ b/lib/libc/include/any-macos-any/stdint.h
@@ -202,4 +202,4 @@ typedef uint64_t uint_fast64_t;
#define SIG_ATOMIC_MIN INT32_MIN
#define SIG_ATOMIC_MAX INT32_MAX
-#endif /* _STDINT_H_ */
+#endif /* _STDINT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/strings.h b/lib/libc/include/any-macos-any/strings.h
index c0e915f8ac..aad5d6a46e 100644
--- a/lib/libc/include/x86_64-macos-gnu/strings.h
+++ b/lib/libc/include/any-macos-any/strings.h
@@ -97,5 +97,4 @@ __END_DECLS
#include <secure/_strings.h>
#endif
-#endif /* _STRINGS_H_ */
-
+#endif /* _STRINGS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_endian.h b/lib/libc/include/any-macos-any/sys/_endian.h
index 4b8daa8521..ed7452a381 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_endian.h
+++ b/lib/libc/include/any-macos-any/sys/_endian.h
@@ -148,4 +148,4 @@ __END_DECLS
#define HTONLL(x) (x) = htonll((__uint64_t)x)
#endif /* defined(KERNEL) || (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) */
#endif /* __DARWIN_BYTE_ORDER */
-#endif /* !_SYS__ENDIAN_H_ */
+#endif /* !_SYS__ENDIAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_posix_availability.h b/lib/libc/include/any-macos-any/sys/_posix_availability.h
index a540f26a17..62199619a6 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_posix_availability.h
+++ b/lib/libc/include/any-macos-any/sys/_posix_availability.h
@@ -69,5 +69,4 @@
#define ___POSIX_C_DEPRECATED_STARTING_200809L __deprecated
#else
#define ___POSIX_C_DEPRECATED_STARTING_200809L
-#endif
-
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_key_t.h b/lib/libc/include/any-macos-any/sys/_pthread/_pthread_key_t.h
index 20d7a0a444..272982564d 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_key_t.h
+++ b/lib/libc/include/any-macos-any/sys/_pthread/_pthread_key_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_KEY_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_key_t */
typedef __darwin_pthread_key_t pthread_key_t;
-#endif /* _PTHREAD_KEY_T */
+#endif /* _PTHREAD_KEY_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_mutex_t.h b/lib/libc/include/any-macos-any/sys/_pthread/_pthread_mutex_t.h
index e5aff0bc2e..44b2bedb9a 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_mutex_t.h
+++ b/lib/libc/include/any-macos-any/sys/_pthread/_pthread_mutex_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_MUTEX_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_mutex_t */
typedef __darwin_pthread_mutex_t pthread_mutex_t;
-#endif /*_PTHREAD_MUTEX_T */
+#endif /*_PTHREAD_MUTEX_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_mutexattr_t.h b/lib/libc/include/any-macos-any/sys/_pthread/_pthread_mutexattr_t.h
index 218d74a91c..07bd2801c9 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_mutexattr_t.h
+++ b/lib/libc/include/any-macos-any/sys/_pthread/_pthread_mutexattr_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_MUTEXATTR_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_mutexattr_t */
typedef __darwin_pthread_mutexattr_t pthread_mutexattr_t;
-#endif /* _PTHREAD_MUTEXATTR_T */
+#endif /* _PTHREAD_MUTEXATTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_once_t.h b/lib/libc/include/any-macos-any/sys/_pthread/_pthread_once_t.h
index d50a6244f9..85a63a60f1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_once_t.h
+++ b/lib/libc/include/any-macos-any/sys/_pthread/_pthread_once_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_ONCE_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_once_t */
typedef __darwin_pthread_once_t pthread_once_t;
-#endif /* _PTHREAD_ONCE_T */
+#endif /* _PTHREAD_ONCE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types.h b/lib/libc/include/any-macos-any/sys/_types.h
index 43be468d7b..8d8f62d445 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types.h
+++ b/lib/libc/include/any-macos-any/sys/_types.h
@@ -86,4 +86,4 @@ typedef char __darwin_uuid_string_t[37];
#endif /* (gcc >= 3.5) */
-#endif /* _SYS__TYPES_H_ */
+#endif /* _SYS__TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_blkcnt_t.h b/lib/libc/include/any-macos-any/sys/_types/_blkcnt_t.h
index 9d4d1ee883..4ac9463a46 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_blkcnt_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_blkcnt_t.h
@@ -29,4 +29,4 @@
#define _BLKCNT_T
#include <sys/_types.h> /* __darwin_blkcnt_t */
typedef __darwin_blkcnt_t blkcnt_t;
-#endif /* _BLKCNT_T */
+#endif /* _BLKCNT_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_blksize_t.h b/lib/libc/include/any-macos-any/sys/_types/_blksize_t.h
index 82931f7bfa..59ccf3de3c 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_blksize_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_blksize_t.h
@@ -29,4 +29,4 @@
#define _BLKSIZE_T
#include <sys/_types.h> /* __darwin_blksize_t */
typedef __darwin_blksize_t blksize_t;
-#endif /* _BLKSIZE_T */
+#endif /* _BLKSIZE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_caddr_t.h b/lib/libc/include/any-macos-any/sys/_types/_caddr_t.h
index 159e186d39..64c58299af 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_caddr_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_caddr_t.h
@@ -28,4 +28,4 @@
#ifndef _CADDR_T
#define _CADDR_T
typedef char * caddr_t;
-#endif /* _CADDR_T */
+#endif /* _CADDR_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_clock_t.h b/lib/libc/include/any-macos-any/sys/_types/_clock_t.h
index 991d2cd528..4a34772e46 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_clock_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_clock_t.h
@@ -29,4 +29,4 @@
#define _CLOCK_T
#include <machine/types.h> /* __darwin_clock_t */
typedef __darwin_clock_t clock_t;
-#endif /* _CLOCK_T */
+#endif /* _CLOCK_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ct_rune_t.h b/lib/libc/include/any-macos-any/sys/_types/_ct_rune_t.h
index 3878dff806..da2f6603f2 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ct_rune_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_ct_rune_t.h
@@ -30,4 +30,4 @@
#define _CT_RUNE_T
#include <machine/_types.h> /* __darwin_ct_rune_t */
typedef __darwin_ct_rune_t ct_rune_t;
-#endif /* _CT_RUNE_T */
+#endif /* _CT_RUNE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_dev_t.h b/lib/libc/include/any-macos-any/sys/_types/_dev_t.h
index be5c73ee50..95125a6509 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_dev_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_dev_t.h
@@ -29,4 +29,4 @@
#define _DEV_T
#include <sys/_types.h> /* __darwin_dev_t */
typedef __darwin_dev_t dev_t; /* device number */
-#endif /* _DEV_T */
+#endif /* _DEV_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_errno_t.h b/lib/libc/include/any-macos-any/sys/_types/_errno_t.h
index 557282a2d3..081bae2e0f 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_errno_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_errno_t.h
@@ -28,4 +28,4 @@
#ifndef _ERRNO_T
#define _ERRNO_T
typedef int errno_t;
-#endif /* _ERRNO_T */
+#endif /* _ERRNO_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_clr.h b/lib/libc/include/any-macos-any/sys/_types/_fd_clr.h
index eeb65b3627..8cd61878c0 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_clr.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fd_clr.h
@@ -27,4 +27,4 @@
*/
#ifndef FD_CLR
#define FD_CLR(n, p) __DARWIN_FD_CLR(n, p)
-#endif /* FD_CLR */
+#endif /* FD_CLR */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_copy.h b/lib/libc/include/any-macos-any/sys/_types/_fd_copy.h
index d0e9c1ec9a..19248ec806 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_copy.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fd_copy.h
@@ -27,4 +27,4 @@
*/
#ifndef FD_COPY
#define FD_COPY(f, t) __DARWIN_FD_COPY(f, t)
-#endif /* FD_COPY */
+#endif /* FD_COPY */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_isset.h b/lib/libc/include/any-macos-any/sys/_types/_fd_isset.h
index e3b3d98561..4aaa92fdec 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_isset.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fd_isset.h
@@ -27,4 +27,4 @@
*/
#ifndef FD_ISSET
#define FD_ISSET(n, p) __DARWIN_FD_ISSET(n, p)
-#endif /* FD_ISSET */
+#endif /* FD_ISSET */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_set.h b/lib/libc/include/any-macos-any/sys/_types/_fd_set.h
index 67f4fa4df3..fe21ec1bb9 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_set.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fd_set.h
@@ -27,4 +27,4 @@
*/
#ifndef FD_SET
#define FD_SET(n, p) __DARWIN_FD_SET(n, p)
-#endif /* FD_SET */
+#endif /* FD_SET */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_setsize.h b/lib/libc/include/any-macos-any/sys/_types/_fd_setsize.h
index c5c3ec9d8f..b45f19ac69 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_setsize.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fd_setsize.h
@@ -27,4 +27,4 @@
*/
#ifndef FD_SETSIZE
#define FD_SETSIZE __DARWIN_FD_SETSIZE
-#endif /* FD_SETSIZE */
+#endif /* FD_SETSIZE */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_zero.h b/lib/libc/include/any-macos-any/sys/_types/_fd_zero.h
index 8363df3bd7..c065a6fa67 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_zero.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fd_zero.h
@@ -27,4 +27,4 @@
*/
#ifndef FD_ZERO
#define FD_ZERO(p) __DARWIN_FD_ZERO(p)
-#endif /* FD_ZERO */
+#endif /* FD_ZERO */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_filesec_t.h b/lib/libc/include/any-macos-any/sys/_types/_filesec_t.h
index 6812eba467..dbaa6f2947 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_filesec_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_filesec_t.h
@@ -29,4 +29,4 @@
#define _FILESEC_T
struct _filesec;
typedef struct _filesec *filesec_t;
-#endif /* _FILESEC_T */
+#endif /* _FILESEC_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fsblkcnt_t.h b/lib/libc/include/any-macos-any/sys/_types/_fsblkcnt_t.h
index a80d02f671..5c4bbaada1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fsblkcnt_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fsblkcnt_t.h
@@ -29,4 +29,4 @@
#define _FSBLKCNT_T
#include <sys/_types.h> /* __darwin_fsblkcnt_t */
typedef __darwin_fsblkcnt_t fsblkcnt_t;
-#endif /* _FSBLKCNT_T */
+#endif /* _FSBLKCNT_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fsfilcnt_t.h b/lib/libc/include/any-macos-any/sys/_types/_fsfilcnt_t.h
index be5e9b4aba..e5c2dd54e3 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fsfilcnt_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fsfilcnt_t.h
@@ -29,4 +29,4 @@
#define _FSFILCNT_T
#include <sys/_types.h> /* __darwin_fsfilcnt_t */
typedef __darwin_fsfilcnt_t fsfilcnt_t;
-#endif /* _FSFILCNT_T */
+#endif /* _FSFILCNT_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fsid_t.h b/lib/libc/include/any-macos-any/sys/_types/_fsid_t.h
index d4e70f2997..c7cec84752 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fsid_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fsid_t.h
@@ -29,4 +29,4 @@
#define _FSID_T
#include <sys/_types/_int32_t.h> /* int32_t */
typedef struct fsid { int32_t val[2]; } fsid_t; /* file system id type */
-#endif /* _FSID_T */
+#endif /* _FSID_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fsobj_id_t.h b/lib/libc/include/any-macos-any/sys/_types/_fsobj_id_t.h
index a396cdff9e..eaaab2e53f 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fsobj_id_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_fsobj_id_t.h
@@ -35,4 +35,4 @@ typedef struct fsobj_id {
u_int32_t fid_generation;
} fsobj_id_t;
-#endif /* _FSOBJ_ID_T */
+#endif /* _FSOBJ_ID_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_gid_t.h b/lib/libc/include/any-macos-any/sys/_types/_gid_t.h
index ebf4970689..c5cb252206 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_gid_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_gid_t.h
@@ -29,4 +29,4 @@
#define _GID_T
#include <sys/_types.h> /* __darwin_gid_t */
typedef __darwin_gid_t gid_t;
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_guid_t.h b/lib/libc/include/any-macos-any/sys/_types/_guid_t.h
index df29f9ca39..22e28de8db 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_guid_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_guid_t.h
@@ -34,4 +34,4 @@ typedef union {
unsigned int g_guid_asint[KAUTH_GUID_SIZE / sizeof(unsigned int)];
} guid_t;
#define _GUID_T
-#endif /* _KAUTH_GUID */
+#endif /* _KAUTH_GUID */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_id_t.h b/lib/libc/include/any-macos-any/sys/_types/_id_t.h
index 9af9610a27..839a8de1b8 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_id_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_id_t.h
@@ -29,4 +29,4 @@
#define _ID_T
#include <sys/_types.h> /* __darwin_id_t */
typedef __darwin_id_t id_t; /* can hold pid_t, gid_t, or uid_t */
-#endif /* _ID_T */
+#endif /* _ID_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_in_addr_t.h b/lib/libc/include/any-macos-any/sys/_types/_in_addr_t.h
index edcf66e507..2b40b85cb2 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_in_addr_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_in_addr_t.h
@@ -29,4 +29,4 @@
#define _IN_ADDR_T
#include <machine/types.h> /* __uint32_t */
typedef __uint32_t in_addr_t; /* base type for internet address */
-#endif /* _IN_ADDR_T */
+#endif /* _IN_ADDR_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_in_port_t.h b/lib/libc/include/any-macos-any/sys/_types/_in_port_t.h
index 8b102566c9..42f2f8c2a6 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_in_port_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_in_port_t.h
@@ -29,4 +29,4 @@
#define _IN_PORT_T
#include <machine/types.h> /* __uint16_t */
typedef __uint16_t in_port_t;
-#endif /* _IN_PORT_T */
+#endif /* _IN_PORT_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ino64_t.h b/lib/libc/include/any-macos-any/sys/_types/_ino64_t.h
index c142b1baec..4fdc1ca3e0 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ino64_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_ino64_t.h
@@ -29,4 +29,4 @@
#define _INO64_T
#include <sys/_types.h> /* __darwin_ino64_t */
typedef __darwin_ino64_t ino64_t; /* 64bit inode number */
-#endif /* _INO64_T */
+#endif /* _INO64_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ino_t.h b/lib/libc/include/any-macos-any/sys/_types/_ino_t.h
index 2a693ddbfd..0c5dacd648 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ino_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_ino_t.h
@@ -29,4 +29,4 @@
#define _INO_T
#include <sys/_types.h> /* __darwin_ino_t */
typedef __darwin_ino_t ino_t; /* inode number */
-#endif /* _INO_T */
+#endif /* _INO_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_int16_t.h b/lib/libc/include/any-macos-any/sys/_types/_int16_t.h
index 3bf3da0681..d104e06cb8 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_int16_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_int16_t.h
@@ -28,4 +28,4 @@
#ifndef _INT16_T
#define _INT16_T
typedef short int16_t;
-#endif /* _INT16_T */
+#endif /* _INT16_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_int32_t.h b/lib/libc/include/any-macos-any/sys/_types/_int32_t.h
index 9b1d72ba74..d46ca4cb15 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_int32_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_int32_t.h
@@ -28,4 +28,4 @@
#ifndef _INT32_T
#define _INT32_T
typedef int int32_t;
-#endif /* _INT32_T */
+#endif /* _INT32_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_int64_t.h b/lib/libc/include/any-macos-any/sys/_types/_int64_t.h
index 4f3e7de38a..5d8253c74f 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_int64_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_int64_t.h
@@ -28,4 +28,4 @@
#ifndef _INT64_T
#define _INT64_T
typedef long long int64_t;
-#endif /* _INT64_T */
+#endif /* _INT64_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_intptr_t.h b/lib/libc/include/any-macos-any/sys/_types/_intptr_t.h
index 0f494b9e5c..71966e3097 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_intptr_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_intptr_t.h
@@ -30,4 +30,4 @@
#include <machine/types.h> /* __darwin_intptr_t */
typedef __darwin_intptr_t intptr_t;
-#endif /* _INTPTR_T */
+#endif /* _INTPTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_iovec_t.h b/lib/libc/include/any-macos-any/sys/_types/_iovec_t.h
index f89c7306f2..96b7326ba6 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_iovec_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_iovec_t.h
@@ -32,4 +32,4 @@ struct iovec {
void * iov_base; /* [XSI] Base address of I/O memory region */
size_t iov_len; /* [XSI] Size of region iov_base points to */
};
-#endif /* _STRUCT_IOVEC */
+#endif /* _STRUCT_IOVEC */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_key_t.h b/lib/libc/include/any-macos-any/sys/_types/_key_t.h
index ec093d7699..3d30305ee5 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_key_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_key_t.h
@@ -29,4 +29,4 @@
#define _KEY_T
#include <machine/types.h> /* __int32_t */
typedef __int32_t key_t; /* IPC key (for Sys V IPC) */
-#endif /* _KEY_T */
+#endif /* _KEY_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_mach_port_t.h b/lib/libc/include/any-macos-any/sys/_types/_mach_port_t.h
index fa96565f66..df36dc2b7a 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_mach_port_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_mach_port_t.h
@@ -48,4 +48,4 @@
#define _MACH_PORT_T
#include <sys/_types.h> /* __darwin_mach_port_t */
typedef __darwin_mach_port_t mach_port_t;
-#endif /* _MACH_PORT_T */
+#endif /* _MACH_PORT_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_mbstate_t.h b/lib/libc/include/any-macos-any/sys/_types/_mbstate_t.h
index 771728bfa7..2d85de97f6 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_mbstate_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_mbstate_t.h
@@ -30,4 +30,4 @@
#define _MBSTATE_T
#include <machine/types.h> /* __darwin_mbstate_t */
typedef __darwin_mbstate_t mbstate_t;
-#endif /* _MBSTATE_T */
+#endif /* _MBSTATE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_mode_t.h b/lib/libc/include/any-macos-any/sys/_types/_mode_t.h
index 36f8d2b324..ee9c3aaffc 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_mode_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_mode_t.h
@@ -29,4 +29,4 @@
#define _MODE_T
#include <sys/_types.h> /* __darwin_mode_t */
typedef __darwin_mode_t mode_t;
-#endif /* _MODE_T */
+#endif /* _MODE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_nlink_t.h b/lib/libc/include/any-macos-any/sys/_types/_nlink_t.h
index c3f83365ff..19bdbab55b 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_nlink_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_nlink_t.h
@@ -29,4 +29,4 @@
#define _NLINK_T
#include <machine/types.h> /* __uint16_t */
typedef __uint16_t nlink_t; /* link count */
-#endif /* _NLINK_T */
+#endif /* _NLINK_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_null.h b/lib/libc/include/any-macos-any/sys/_types/_null.h
index 9c21571ea4..310a71788b 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_null.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_null.h
@@ -28,4 +28,4 @@
#ifndef NULL
#include <sys/_types.h> /* __DARWIN_NULL */
#define NULL __DARWIN_NULL
-#endif /* NULL */
+#endif /* NULL */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_o_dsync.h b/lib/libc/include/any-macos-any/sys/_types/_o_dsync.h
index bd4f2884fa..3012119653 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_o_dsync.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_o_dsync.h
@@ -27,4 +27,4 @@
*/
#ifndef O_DSYNC
#define O_DSYNC 0x400000 /* synch I/O data integrity */
-#endif /* O_DSYNC */
+#endif /* O_DSYNC */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_o_sync.h b/lib/libc/include/any-macos-any/sys/_types/_o_sync.h
index a3952cc35f..334754973b 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_o_sync.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_o_sync.h
@@ -27,4 +27,4 @@
*/
#ifndef O_SYNC
#define O_SYNC 0x0080 /* synch I/O file integrity */
-#endif /* O_SYNC */
+#endif /* O_SYNC */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_off_t.h b/lib/libc/include/any-macos-any/sys/_types/_off_t.h
index bdc3d5e383..32c92d5803 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_off_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_off_t.h
@@ -29,4 +29,4 @@
#define _OFF_T
#include <sys/_types.h> /* __darwin_off_t */
typedef __darwin_off_t off_t;
-#endif /* _OFF_T */
+#endif /* _OFF_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_os_inline.h b/lib/libc/include/any-macos-any/sys/_types/_os_inline.h
index fd68cff47a..36c1c8f07b 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_os_inline.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_os_inline.h
@@ -31,4 +31,4 @@
# else
# define OS_INLINE static __inline__
# endif
-#endif /* OS_INLINE */
+#endif /* OS_INLINE */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_pid_t.h b/lib/libc/include/any-macos-any/sys/_types/_pid_t.h
index 994f84e87d..ad6c990052 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_pid_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_pid_t.h
@@ -29,4 +29,4 @@
#define _PID_T
#include <sys/_types.h> /* __darwin_pid_t */
typedef __darwin_pid_t pid_t;
-#endif /* _PID_T */
+#endif /* _PID_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_posix_vdisable.h b/lib/libc/include/any-macos-any/sys/_types/_posix_vdisable.h
index 970f1b5d73..6c663dd8f1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_posix_vdisable.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_posix_vdisable.h
@@ -27,4 +27,4 @@
*/
#ifndef _POSIX_VDISABLE
#define _POSIX_VDISABLE ((unsigned char)'\377')
-#endif /* POSIX_VDISABLE */
+#endif /* POSIX_VDISABLE */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_rsize_t.h b/lib/libc/include/any-macos-any/sys/_types/_rsize_t.h
index 6aa2f6b320..8bea5a8fe3 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_rsize_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_rsize_t.h
@@ -29,4 +29,4 @@
#define _RSIZE_T
#include <machine/types.h> /* __darwin_size_t */
typedef __darwin_size_t rsize_t;
-#endif /* _RSIZE_T */
+#endif /* _RSIZE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_rune_t.h b/lib/libc/include/any-macos-any/sys/_types/_rune_t.h
index bd10ef1ba5..713444c945 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_rune_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_rune_t.h
@@ -29,4 +29,4 @@
#define _RUNE_T
#include <machine/_types.h> /* __darwin_rune_t */
typedef __darwin_rune_t rune_t;
-#endif /* _RUNE_T */
+#endif /* _RUNE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_s_ifmt.h b/lib/libc/include/any-macos-any/sys/_types/_s_ifmt.h
index 1139cb25b7..66f3f068f0 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_s_ifmt.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_s_ifmt.h
@@ -71,4 +71,4 @@
#define S_IWRITE S_IWUSR /* backward compatability */
#define S_IEXEC S_IXUSR /* backward compatability */
#endif
-#endif /* !S_IFMT */
+#endif /* !S_IFMT */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_sa_family_t.h b/lib/libc/include/any-macos-any/sys/_types/_sa_family_t.h
index 857cdd09c3..d1f5aaf724 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_sa_family_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_sa_family_t.h
@@ -29,4 +29,4 @@
#define _SA_FAMILY_T
#include <machine/types.h> /* __uint8_t */
typedef __uint8_t sa_family_t;
-#endif /* _SA_FAMILY_T */
+#endif /* _SA_FAMILY_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_seek_set.h b/lib/libc/include/any-macos-any/sys/_types/_seek_set.h
index f55175ad1f..2ba1d6b0d1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_seek_set.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_seek_set.h
@@ -43,4 +43,4 @@
#ifndef SEEK_DATA
#define SEEK_DATA 4 /* set file offset to the start of the next non-hole file region greater than or equal to the supplied offset */
#endif
-#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_sigaltstack.h b/lib/libc/include/any-macos-any/sys/_types/_sigaltstack.h
index 8c34305842..1274acbe3a 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_sigaltstack.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_sigaltstack.h
@@ -47,4 +47,4 @@ _STRUCT_SIGALTSTACK
};
typedef _STRUCT_SIGALTSTACK stack_t; /* [???] signal stack */
-#endif /* _STRUCT_SIGALTSTACK */
+#endif /* _STRUCT_SIGALTSTACK */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_sigset_t.h b/lib/libc/include/any-macos-any/sys/_types/_sigset_t.h
index 51844dddbb..cdf1551b03 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_sigset_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_sigset_t.h
@@ -29,4 +29,4 @@
#define _SIGSET_T
#include <sys/_types.h> /* __darwin_sigset_t */
typedef __darwin_sigset_t sigset_t;
-#endif /* _SIGSET_T */
+#endif /* _SIGSET_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_size_t.h b/lib/libc/include/any-macos-any/sys/_types/_size_t.h
index a14a8885fa..8cd30fccd5 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_size_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_size_t.h
@@ -29,4 +29,4 @@
#define _SIZE_T
#include <machine/_types.h> /* __darwin_size_t */
typedef __darwin_size_t size_t;
-#endif /* _SIZE_T */
+#endif /* _SIZE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_socklen_t.h b/lib/libc/include/any-macos-any/sys/_types/_socklen_t.h
index a7b8431561..221d68a6ed 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_socklen_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_socklen_t.h
@@ -29,4 +29,4 @@
#define _SOCKLEN_T
#include <machine/types.h> /* __darwin_socklen_t */
typedef __darwin_socklen_t socklen_t;
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ssize_t.h b/lib/libc/include/any-macos-any/sys/_types/_ssize_t.h
index 056607814d..426361129a 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ssize_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_ssize_t.h
@@ -29,4 +29,4 @@
#define _SSIZE_T
#include <machine/types.h> /* __darwin_ssize_t */
typedef __darwin_ssize_t ssize_t;
-#endif /* _SSIZE_T */
+#endif /* _SSIZE_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_suseconds_t.h b/lib/libc/include/any-macos-any/sys/_types/_suseconds_t.h
index 3980dfedf5..9e338c6c23 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_suseconds_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_suseconds_t.h
@@ -29,4 +29,4 @@
#define _SUSECONDS_T
#include <sys/_types.h> /* __darwin_suseconds_t */
typedef __darwin_suseconds_t suseconds_t;
-#endif /* _SUSECONDS_T */
+#endif /* _SUSECONDS_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_time_t.h b/lib/libc/include/any-macos-any/sys/_types/_time_t.h
index 2a91ef225a..29546387f0 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_time_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_time_t.h
@@ -29,4 +29,4 @@
#define _TIME_T
#include <machine/types.h> /* __darwin_time_t */
typedef __darwin_time_t time_t;
-#endif /* _TIME_T */
+#endif /* _TIME_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_timespec.h b/lib/libc/include/any-macos-any/sys/_types/_timespec.h
index 82cc723ec6..7a34f30c98 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_timespec.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_timespec.h
@@ -35,4 +35,4 @@ _STRUCT_TIMESPEC
__darwin_time_t tv_sec;
long tv_nsec;
};
-#endif /* _STRUCT_TIMESPEC */
+#endif /* _STRUCT_TIMESPEC */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval.h b/lib/libc/include/any-macos-any/sys/_types/_timeval.h
index 1b9a000a6b..653ea0e6b2 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_timeval.h
@@ -36,4 +36,4 @@ _STRUCT_TIMEVAL
__darwin_time_t tv_sec; /* seconds */
__darwin_suseconds_t tv_usec; /* and microseconds */
};
-#endif /* _STRUCT_TIMEVAL */
+#endif /* _STRUCT_TIMEVAL */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval32.h b/lib/libc/include/any-macos-any/sys/_types/_timeval32.h
index 71518173a3..411f4aa3fe 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval32.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_timeval32.h
@@ -35,4 +35,4 @@ _STRUCT_TIMEVAL32
__int32_t tv_sec; /* seconds */
__int32_t tv_usec; /* and microseconds */
};
-#endif /* _STRUCT_TIMEVAL32 */
+#endif /* _STRUCT_TIMEVAL32 */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval64.h b/lib/libc/include/any-macos-any/sys/_types/_timeval64.h
index 2eb3c434fb..ed1959359e 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_timeval64.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_timeval64.h
@@ -35,4 +35,4 @@ struct timeval64 {
__int64_t tv_sec; /* seconds */
__int64_t tv_usec; /* and microseconds */
};
-#endif /* _STRUCT_TIMEVAL32 */
+#endif /* _STRUCT_TIMEVAL32 */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_char.h b/lib/libc/include/any-macos-any/sys/_types/_u_char.h
index b6add3feb3..fa1d9d9543 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_char.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_u_char.h
@@ -28,4 +28,4 @@
#ifndef _U_CHAR
#define _U_CHAR
typedef unsigned char u_char;
-#endif /* _U_CHAR */
+#endif /* _U_CHAR */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int.h b/lib/libc/include/any-macos-any/sys/_types/_u_int.h
index 161b3baf14..df928def41 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_u_int.h
@@ -28,4 +28,4 @@
#ifndef _U_INT
#define _U_INT
typedef unsigned int u_int;
-#endif /* _U_INT */
+#endif /* _U_INT */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int16_t.h b/lib/libc/include/any-macos-any/sys/_types/_u_int16_t.h
index 5a01fc450b..9726b93934 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int16_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_u_int16_t.h
@@ -28,4 +28,4 @@
#ifndef _U_INT16_T
#define _U_INT16_T
typedef unsigned short u_int16_t;
-#endif /* _U_INT16_T */
+#endif /* _U_INT16_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int32_t.h b/lib/libc/include/any-macos-any/sys/_types/_u_int32_t.h
index 4f01b22bd2..2361ef622f 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int32_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_u_int32_t.h
@@ -28,4 +28,4 @@
#ifndef _U_INT32_T
#define _U_INT32_T
typedef unsigned int u_int32_t;
-#endif /* _U_INT32_T */
+#endif /* _U_INT32_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int64_t.h b/lib/libc/include/any-macos-any/sys/_types/_u_int64_t.h
index bd866cbc2a..af2d9f4537 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int64_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_u_int64_t.h
@@ -28,4 +28,4 @@
#ifndef _U_INT64_T
#define _U_INT64_T
typedef unsigned long long u_int64_t;
-#endif /* _U_INT64_T */
+#endif /* _U_INT64_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int8_t.h b/lib/libc/include/any-macos-any/sys/_types/_u_int8_t.h
index ac9bf77111..bd1539c862 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_int8_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_u_int8_t.h
@@ -28,4 +28,4 @@
#ifndef _U_INT8_T
#define _U_INT8_T
typedef unsigned char u_int8_t;
-#endif /* _U_INT8_T */
+#endif /* _U_INT8_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_short.h b/lib/libc/include/any-macos-any/sys/_types/_u_short.h
index 58816d3576..b693b30028 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_u_short.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_u_short.h
@@ -28,4 +28,4 @@
#ifndef _U_SHORT
#define _U_SHORT
typedef unsigned short u_short;
-#endif /* _U_SHORT */
+#endif /* _U_SHORT */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_uid_t.h b/lib/libc/include/any-macos-any/sys/_types/_uid_t.h
index a9769db30d..2b8aaea3a8 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_uid_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_uid_t.h
@@ -29,4 +29,4 @@
#define _UID_T
#include <sys/_types.h> /* __darwin_uid_t */
typedef __darwin_uid_t uid_t;
-#endif /* _UID_T */
+#endif /* _UID_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_uintptr_t.h b/lib/libc/include/any-macos-any/sys/_types/_uintptr_t.h
index c22d02b1cc..7971dbc86a 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_uintptr_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_uintptr_t.h
@@ -28,4 +28,4 @@
#ifndef _UINTPTR_T
#define _UINTPTR_T
typedef unsigned long uintptr_t;
-#endif /* _UINTPTR_T */
+#endif /* _UINTPTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_useconds_t.h b/lib/libc/include/any-macos-any/sys/_types/_useconds_t.h
index 1b020a3bd2..aad70c2fc2 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_useconds_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_useconds_t.h
@@ -29,4 +29,4 @@
#define _USECONDS_T
#include <sys/_types.h> /* __darwin_useconds_t */
typedef __darwin_useconds_t useconds_t;
-#endif /* _USECONDS_T */
+#endif /* _USECONDS_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_uuid_t.h b/lib/libc/include/any-macos-any/sys/_types/_uuid_t.h
index 66e7da7949..20acb344b8 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_uuid_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_uuid_t.h
@@ -29,4 +29,4 @@
#define _UUID_T
#include <sys/_types.h> /* __darwin_uuid_t */
typedef __darwin_uuid_t uuid_t;
-#endif /* _UUID_T */
+#endif /* _UUID_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_va_list.h b/lib/libc/include/any-macos-any/sys/_types/_va_list.h
index f7687baea9..2525aaa658 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_va_list.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_va_list.h
@@ -30,4 +30,4 @@
#define _VA_LIST_T
#include <machine/types.h> /* __darwin_va_list */
typedef __darwin_va_list va_list;
-#endif /* _VA_LIST_T */
+#endif /* _VA_LIST_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_wchar_t.h b/lib/libc/include/any-macos-any/sys/_types/_wchar_t.h
index d67cfcdd23..6b36b33af8 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_wchar_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_wchar_t.h
@@ -33,4 +33,4 @@
#include <machine/_types.h> /* __darwin_wchar_t */
typedef __darwin_wchar_t wchar_t;
#endif /* _WCHAR_T */
-#endif /* __cplusplus */
+#endif /* __cplusplus */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_wint_t.h b/lib/libc/include/any-macos-any/sys/_types/_wint_t.h
index caad07fdb0..f2eea76671 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_wint_t.h
+++ b/lib/libc/include/any-macos-any/sys/_types/_wint_t.h
@@ -30,4 +30,4 @@
#define _WINT_T
#include <machine/_types.h> /* __darwin_wint_t */
typedef __darwin_wint_t wint_t;
-#endif /* _WINT_T */
+#endif /* _WINT_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/aio.h b/lib/libc/include/any-macos-any/sys/aio.h
index 6f8f36d7a7..8653b43fe7 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/aio.h
+++ b/lib/libc/include/any-macos-any/sys/aio.h
@@ -245,4 +245,4 @@ int lio_listio( int mode,
struct sigevent *sigp );
__END_DECLS
-#endif /* _SYS_AIO_H_ */
+#endif /* _SYS_AIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/appleapiopts.h b/lib/libc/include/any-macos-any/sys/appleapiopts.h
index 92e9fd6919..a773c93b54 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/appleapiopts.h
+++ b/lib/libc/include/any-macos-any/sys/appleapiopts.h
@@ -58,4 +58,4 @@
#endif /* __APPLE_API_STRICT_CONFORMANCE */
-#endif /* __SYS_APPLEAPIOPTS_H__ */
+#endif /* __SYS_APPLEAPIOPTS_H__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/dirent.h b/lib/libc/include/any-macos-any/sys/dirent.h
index 9a107a016c..f7992e3714 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/dirent.h
+++ b/lib/libc/include/any-macos-any/sys/dirent.h
@@ -138,4 +138,4 @@ struct dirent __DARWIN_STRUCT_DIRENTRY;
#endif
-#endif /* _SYS_DIRENT_H */
+#endif /* _SYS_DIRENT_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/errno.h b/lib/libc/include/any-macos-any/sys/errno.h
index 0360a496f0..7dc6a481dd 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/errno.h
+++ b/lib/libc/include/any-macos-any/sys/errno.h
@@ -263,4 +263,4 @@ __END_DECLS
#define ELAST 106 /* Must be equal largest errno */
#endif
-#endif /* _SYS_ERRNO_H_ */
+#endif /* _SYS_ERRNO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/file.h b/lib/libc/include/any-macos-any/sys/file.h
index b24ec6a292..7187715558 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/file.h
+++ b/lib/libc/include/any-macos-any/sys/file.h
@@ -83,4 +83,4 @@ typedef struct posix_cred *posix_cred_t;
__BEGIN_DECLS
__END_DECLS
-#endif /* !_SYS_FILE_H_ */
+#endif /* !_SYS_FILE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/filio.h b/lib/libc/include/any-macos-any/sys/filio.h
index 81e4b89474..60ec8185f6 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/filio.h
+++ b/lib/libc/include/any-macos-any/sys/filio.h
@@ -82,4 +82,4 @@
#define FIODTYPE _IOR('f', 122, int) /* get d_type */
-#endif /* !_SYS_FILIO_H_ */
+#endif /* !_SYS_FILIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/ioctl.h b/lib/libc/include/any-macos-any/sys/ioctl.h
index aee7d6163f..bb84842dd2 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/ioctl.h
+++ b/lib/libc/include/any-macos-any/sys/ioctl.h
@@ -107,4 +107,4 @@ __END_DECLS
*/
#if defined(USE_OLD_TTY) || defined(BSD_KERNEL_PRIVATE)
#include <sys/ioctl_compat.h>
-#endif /* !_SYS_IOCTL_H_ */
+#endif /* !_SYS_IOCTL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/ipc.h b/lib/libc/include/any-macos-any/sys/ipc.h
index b2ce992a7c..86b665e04f 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/ipc.h
+++ b/lib/libc/include/any-macos-any/sys/ipc.h
@@ -173,4 +173,4 @@ key_t ftok(const char *, int);
__END_DECLS
-#endif /* !_SYS_IPC_H_ */
+#endif /* !_SYS_IPC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/lock.h b/lib/libc/include/any-macos-any/sys/lock.h
index cafc4e04d8..90c963a9e7 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/lock.h
+++ b/lib/libc/include/any-macos-any/sys/lock.h
@@ -73,4 +73,4 @@
#include <sys/cdefs.h>
-#endif /* _SYS_LOCK_H_ */
+#endif /* _SYS_LOCK_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/msg.h b/lib/libc/include/any-macos-any/sys/msg.h
index 3bbe9e1e1d..657ae2db00 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/msg.h
+++ b/lib/libc/include/any-macos-any/sys/msg.h
@@ -222,4 +222,4 @@ int msgsnd(int, const void *, size_t, int) __DARWIN_ALIAS_C(msgsnd);
__END_DECLS
-#endif /* !_SYS_MSG_H_ */
+#endif /* !_SYS_MSG_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/poll.h b/lib/libc/include/any-macos-any/sys/poll.h
index 7467936a9b..fccd5d034d 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/poll.h
+++ b/lib/libc/include/any-macos-any/sys/poll.h
@@ -115,4 +115,4 @@ extern int poll(struct pollfd *, nfds_t, int) __DARWIN_ALIAS_C(poll);
__END_DECLS
-#endif /* !_SYS_POLL_H_ */
+#endif /* !_SYS_POLL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/qos.h b/lib/libc/include/any-macos-any/sys/qos.h
index 2aa7dcd5c6..0edcbffdab 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/qos.h
+++ b/lib/libc/include/any-macos-any/sys/qos.h
@@ -197,4 +197,4 @@ __END_DECLS
#endif // KERNEL
-#endif // _SYS_QOS_H
+#endif // _SYS_QOS_H \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/queue.h b/lib/libc/include/any-macos-any/sys/queue.h
index 4ae79ffc23..b3394c2cfc 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/queue.h
+++ b/lib/libc/include/any-macos-any/sys/queue.h
@@ -906,4 +906,4 @@ void remque(void *a);
#endif /* NOTFB31 */
#endif /* _KERNEL */
-#endif /* !_SYS_QUEUE_H_ */
+#endif /* !_SYS_QUEUE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/select.h b/lib/libc/include/any-macos-any/sys/select.h
index 50c5ce98d6..5ef1a78597 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/select.h
+++ b/lib/libc/include/any-macos-any/sys/select.h
@@ -131,4 +131,4 @@ __DARWIN_ALIAS_C(pselect)
__END_DECLS
-#endif /* !_SYS_SELECT_H_ */
+#endif /* !_SYS_SELECT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/sem.h b/lib/libc/include/any-macos-any/sys/sem.h
index 32777590d6..8f5f08411b 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/sem.h
+++ b/lib/libc/include/any-macos-any/sys/sem.h
@@ -203,4 +203,4 @@ int semop(int, struct sembuf *, size_t);
__END_DECLS
-#endif /* !_SEM_H_ */
+#endif /* !_SEM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/semaphore.h b/lib/libc/include/any-macos-any/sys/semaphore.h
index 6e945f6906..3e32669f1a 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/semaphore.h
+++ b/lib/libc/include/any-macos-any/sys/semaphore.h
@@ -61,4 +61,4 @@ int sem_wait(sem_t *) __DARWIN_ALIAS_C(sem_wait);
__END_DECLS
-#endif /* _SYS_SEMAPHORE_H_ */
+#endif /* _SYS_SEMAPHORE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/signal.h b/lib/libc/include/any-macos-any/sys/signal.h
index 7c5de71a10..6ba6806200 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/signal.h
+++ b/lib/libc/include/any-macos-any/sys/signal.h
@@ -389,4 +389,4 @@ struct sigstack {
__BEGIN_DECLS
void(*signal(int, void (*)(int)))(int);
__END_DECLS
-#endif /* !_SYS_SIGNAL_H_ */
+#endif /* !_SYS_SIGNAL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/statvfs.h b/lib/libc/include/any-macos-any/sys/statvfs.h
index a8d661a5c6..3a2b5cde36 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/statvfs.h
+++ b/lib/libc/include/any-macos-any/sys/statvfs.h
@@ -57,4 +57,4 @@ int fstatvfs(int, struct statvfs *);
int statvfs(const char * __restrict, struct statvfs * __restrict);
__END_DECLS
-#endif /* _SYS_STATVFS_H_ */
+#endif /* _SYS_STATVFS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/stdio.h b/lib/libc/include/any-macos-any/sys/stdio.h
index 5b42672c01..c51c1b9c7d 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/stdio.h
+++ b/lib/libc/include/any-macos-any/sys/stdio.h
@@ -52,4 +52,4 @@ __END_DECLS
#endif /* __DARWIN_C_LEVEL >= 200809L */
-#endif /* _SYS_STDIO_H_ */
+#endif /* _SYS_STDIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/syslog.h b/lib/libc/include/any-macos-any/sys/syslog.h
index c72d998b8f..a2f4e4daab 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/syslog.h
+++ b/lib/libc/include/any-macos-any/sys/syslog.h
@@ -233,4 +233,4 @@ void vsyslog(int, const char *, __darwin_va_list) __printflike(2, 0) __not_ta
#endif
__END_DECLS
-#endif /* !_SYS_SYSLOG_H_ */
+#endif /* !_SYS_SYSLOG_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/termios.h b/lib/libc/include/any-macos-any/sys/termios.h
index 3d7778bdff..2f746b7d99 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/termios.h
+++ b/lib/libc/include/any-macos-any/sys/termios.h
@@ -363,4 +363,4 @@ __END_DECLS
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#include <sys/ttydefaults.h>
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/time.h b/lib/libc/include/any-macos-any/sys/time.h
index 9c35edb9f1..192ae1c0f2 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/time.h
+++ b/lib/libc/include/any-macos-any/sys/time.h
@@ -205,4 +205,4 @@ int utimes(const char *, const struct timeval *);
__END_DECLS
-#endif /* !_SYS_TIME_H_ */
+#endif /* !_SYS_TIME_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/times.h b/lib/libc/include/any-macos-any/sys/times.h
index 3fc3000281..9739e311cf 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/times.h
+++ b/lib/libc/include/any-macos-any/sys/times.h
@@ -89,4 +89,4 @@ struct tms {
__BEGIN_DECLS
clock_t times(struct tms *);
__END_DECLS
-#endif /* !_SYS_TIMES_H_ */
+#endif /* !_SYS_TIMES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/ttycom.h b/lib/libc/include/any-macos-any/sys/ttycom.h
index 547dd3c180..e3830c8627 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/ttycom.h
+++ b/lib/libc/include/any-macos-any/sys/ttycom.h
@@ -170,4 +170,4 @@ struct winsize {
#define SLIPDISC 4 /* serial IP discipline */
#define PPPDISC 5 /* PPP discipline */
-#endif /* !_SYS_TTYCOM_H_ */
+#endif /* !_SYS_TTYCOM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/ttydefaults.h b/lib/libc/include/any-macos-any/sys/ttydefaults.h
index eed46dded2..27b17da43a 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/ttydefaults.h
+++ b/lib/libc/include/any-macos-any/sys/ttydefaults.h
@@ -121,4 +121,4 @@ static cc_t ttydefchars[NCCS] = {
CDISCARD, CMIN, CTIME, CSTATUS, _POSIX_VDISABLE
};
#undef TTYDEFCHARS
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/types.h b/lib/libc/include/any-macos-any/sys/types.h
index 6e06f7dee5..adf67a3b0d 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/types.h
+++ b/lib/libc/include/any-macos-any/sys/types.h
@@ -232,4 +232,4 @@ typedef __int32_t fd_mask;
#include <sys/_types/_fsblkcnt_t.h>
#include <sys/_types/_fsfilcnt_t.h>
-#endif /* !_SYS_TYPES_H_ */
+#endif /* !_SYS_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/ucred.h b/lib/libc/include/any-macos-any/sys/ucred.h
index 1a4c10dd88..0dc5465485 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/ucred.h
+++ b/lib/libc/include/any-macos-any/sys/ucred.h
@@ -113,4 +113,4 @@ struct xucred {
#endif /* __APPLE_API_UNSTABLE */
-#endif /* !_SYS_UCRED_H_ */
+#endif /* !_SYS_UCRED_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/unistd.h b/lib/libc/include/any-macos-any/sys/unistd.h
index e8105ea007..53d0331b06 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/unistd.h
+++ b/lib/libc/include/any-macos-any/sys/unistd.h
@@ -215,4 +215,4 @@ __END_DECLS
#endif /* __DARWIN_C_LEVEL >= 200809L */
-#endif /* !_SYS_UNISTD_H_ */
+#endif /* !_SYS_UNISTD_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/utsname.h b/lib/libc/include/any-macos-any/sys/utsname.h
index b4ae9f4c49..0772b2bfc9 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/utsname.h
+++ b/lib/libc/include/any-macos-any/sys/utsname.h
@@ -83,4 +83,4 @@ __BEGIN_DECLS
int uname(struct utsname *);
__END_DECLS
-#endif /* !_SYS_UTSNAME_H */
+#endif /* !_SYS_UTSNAME_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/vm.h b/lib/libc/include/any-macos-any/sys/vm.h
index 52152e8a8b..8f32f5e2c1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/vm.h
+++ b/lib/libc/include/any-macos-any/sys/vm.h
@@ -86,4 +86,4 @@ struct vmspace {
-#endif /* _SYS_VM_H */
+#endif /* _SYS_VM_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/wait.h b/lib/libc/include/any-macos-any/sys/wait.h
index e3cbb5833f..236d0f9015 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/wait.h
+++ b/lib/libc/include/any-macos-any/sys/wait.h
@@ -255,4 +255,4 @@ pid_t wait3(int *, int, struct rusage *);
pid_t wait4(pid_t, int *, int, struct rusage *);
#endif /* (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) */
__END_DECLS
-#endif /* !_SYS_WAIT_H_ */
+#endif /* !_SYS_WAIT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sysexits.h b/lib/libc/include/any-macos-any/sysexits.h
index 464cb11bab..84c139f3b1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sysexits.h
+++ b/lib/libc/include/any-macos-any/sysexits.h
@@ -115,4 +115,4 @@
#define EX__MAX 78 /* maximum listed value */
-#endif /* !_SYSEXITS_H_ */
+#endif /* !_SYSEXITS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/syslog.h b/lib/libc/include/any-macos-any/syslog.h
index d3f4192ba5..03d2fb4658 100644
--- a/lib/libc/include/x86_64-macos-gnu/syslog.h
+++ b/lib/libc/include/any-macos-any/syslog.h
@@ -20,5 +20,4 @@
*
* @APPLE_LICENSE_HEADER_END@
*/
-#include <sys/syslog.h>
-
+#include <sys/syslog.h> \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/tar.h b/lib/libc/include/any-macos-any/tar.h
index 764ca01a10..13bb90a9a0 100644
--- a/lib/libc/include/x86_64-macos-gnu/tar.h
+++ b/lib/libc/include/any-macos-any/tar.h
@@ -70,4 +70,4 @@
#define TOWRITE 00002 /* Write by other */
#define TOEXEC 00001 /* Execute/Search by other */
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/termios.h b/lib/libc/include/any-macos-any/termios.h
index 94f315b58c..44007f0013 100644
--- a/lib/libc/include/x86_64-macos-gnu/termios.h
+++ b/lib/libc/include/any-macos-any/termios.h
@@ -32,4 +32,4 @@ __BEGIN_DECLS
pid_t tcgetsid(int);
__END_DECLS
-#endif /* __TERMIOS_H__ */
+#endif /* __TERMIOS_H__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/tgmath.h b/lib/libc/include/any-macos-any/tgmath.h
index c4760071be..16c04107d9 100644
--- a/lib/libc/include/x86_64-macos-gnu/tgmath.h
+++ b/lib/libc/include/any-macos-any/tgmath.h
@@ -1369,4 +1369,4 @@ static long double
#undef _TG_ATTRS
#endif /* __cplusplus */
-#endif /* __TGMATH_H */
+#endif /* __TGMATH_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/time.h b/lib/libc/include/any-macos-any/time.h
index dafb113e00..b2edfb95cd 100644
--- a/lib/libc/include/x86_64-macos-gnu/time.h
+++ b/lib/libc/include/any-macos-any/time.h
@@ -205,4 +205,4 @@ __END_DECLS
#include <xlocale/_time.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* !_TIME_H_ */
+#endif /* !_TIME_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/ulimit.h b/lib/libc/include/any-macos-any/ulimit.h
index c6a451c75f..a73058aedd 100644
--- a/lib/libc/include/x86_64-macos-gnu/ulimit.h
+++ b/lib/libc/include/any-macos-any/ulimit.h
@@ -38,4 +38,4 @@ __BEGIN_DECLS
long ulimit(int, ...);
__END_DECLS
-#endif /* !_ULIMIT_H_ */
+#endif /* !_ULIMIT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/unistd.h b/lib/libc/include/any-macos-any/unistd.h
index 8350f5d226..d07a4a61f5 100644
--- a/lib/libc/include/x86_64-macos-gnu/unistd.h
+++ b/lib/libc/include/any-macos-any/unistd.h
@@ -784,4 +784,4 @@ extern int optreset;
__END_DECLS
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
-#endif /* _UNISTD_H_ */
+#endif /* _UNISTD_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/utime.h b/lib/libc/include/any-macos-any/utime.h
index 106e494940..16fcc283ba 100644
--- a/lib/libc/include/x86_64-macos-gnu/utime.h
+++ b/lib/libc/include/any-macos-any/utime.h
@@ -72,4 +72,4 @@ __BEGIN_DECLS
int utime(const char *, const struct utimbuf *);
__END_DECLS
-#endif /* !_UTIME_H_ */
+#endif /* !_UTIME_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/utmpx.h b/lib/libc/include/any-macos-any/utmpx.h
index a461c9ecbc..96871e4c0e 100644
--- a/lib/libc/include/x86_64-macos-gnu/utmpx.h
+++ b/lib/libc/include/any-macos-any/utmpx.h
@@ -173,4 +173,4 @@ int wtmpxname(const char *) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);
__END_DECLS
-#endif /* !_UTMPX_H_ */
+#endif /* !_UTMPX_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/uuid/uuid.h b/lib/libc/include/any-macos-any/uuid/uuid.h
index 28f231f8b4..ce75c9e0e1 100644
--- a/lib/libc/include/x86_64-macos-gnu/uuid/uuid.h
+++ b/lib/libc/include/any-macos-any/uuid/uuid.h
@@ -76,4 +76,4 @@ void uuid_unparse_upper(const uuid_t uu, uuid_string_t out);
}
#endif
-#endif /* _UUID_UUID_H */
+#endif /* _UUID_UUID_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/wchar.h b/lib/libc/include/any-macos-any/wchar.h
index 38f84f8bb5..0b3916c0e9 100644
--- a/lib/libc/include/x86_64-macos-gnu/wchar.h
+++ b/lib/libc/include/any-macos-any/wchar.h
@@ -228,4 +228,4 @@ __END_DECLS
#include <xlocale/_wchar.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* !_WCHAR_H_ */
+#endif /* !_WCHAR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/wctype.h b/lib/libc/include/any-macos-any/wctype.h
index c270cc60d6..db3b5477f3 100644
--- a/lib/libc/include/x86_64-macos-gnu/wctype.h
+++ b/lib/libc/include/any-macos-any/wctype.h
@@ -127,4 +127,4 @@ __END_DECLS
#include <xlocale/_wctype.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* _WCTYPE_H_ */
+#endif /* _WCTYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/wordexp.h b/lib/libc/include/any-macos-any/wordexp.h
index 705b15c4e1..41a0b5f18f 100644
--- a/lib/libc/include/x86_64-macos-gnu/wordexp.h
+++ b/lib/libc/include/any-macos-any/wordexp.h
@@ -82,4 +82,4 @@ int wordexp(const char * __restrict, wordexp_t * __restrict, int) __OSX_AVAILABL
void wordfree(wordexp_t *) __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA);
__END_DECLS
-#endif /* _WORDEXP_H */
+#endif /* _WORDEXP_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale.h b/lib/libc/include/any-macos-any/xlocale.h
index f5824b3b1a..e89e359620 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale.h
+++ b/lib/libc/include/any-macos-any/xlocale.h
@@ -108,4 +108,4 @@ __END_DECLS
#include <xlocale/_wctype.h>
#endif /* _WCTYPE_H_ */
-#endif /* _XLOCALE_H_ */
+#endif /* _XLOCALE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/__wctype.h b/lib/libc/include/any-macos-any/xlocale/__wctype.h
index 2246382739..d377bf5a76 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/__wctype.h
+++ b/lib/libc/include/any-macos-any/xlocale/__wctype.h
@@ -140,4 +140,4 @@ wctype_t
wctype_l(const char *, locale_t);
__END_DECLS
-#endif /* _XLOCALE___WCTYPE_H_ */
+#endif /* _XLOCALE___WCTYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_ctype.h b/lib/libc/include/any-macos-any/xlocale/_ctype.h
index 99fe94ddd8..316b55dad5 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_ctype.h
+++ b/lib/libc/include/any-macos-any/xlocale/_ctype.h
@@ -234,4 +234,4 @@ int toupper_l(int, locale_t);
__END_DECLS
#endif /* using inlines */
-#endif /* _XLOCALE__CTYPE_H_ */
+#endif /* _XLOCALE__CTYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_langinfo.h b/lib/libc/include/any-macos-any/xlocale/_langinfo.h
index 0190cf6b6c..28577e9353 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_langinfo.h
+++ b/lib/libc/include/any-macos-any/xlocale/_langinfo.h
@@ -32,4 +32,4 @@ __BEGIN_DECLS
char *nl_langinfo_l(nl_item, locale_t);
__END_DECLS
-#endif /* _XLOCALE__LANGINFO_H_ */
+#endif /* _XLOCALE__LANGINFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_monetary.h b/lib/libc/include/any-macos-any/xlocale/_monetary.h
index cf1046868c..d553c86baf 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_monetary.h
+++ b/lib/libc/include/any-macos-any/xlocale/_monetary.h
@@ -35,4 +35,4 @@ ssize_t strfmon_l(char *, size_t, locale_t, const char *, ...)
__strfmonlike(4, 5);
__END_DECLS
-#endif /* _XLOCALE__MONETARY_H_ */
+#endif /* _XLOCALE__MONETARY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_regex.h b/lib/libc/include/any-macos-any/xlocale/_regex.h
index 8f4fcf374d..3aaf4bef23 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_regex.h
+++ b/lib/libc/include/any-macos-any/xlocale/_regex.h
@@ -52,4 +52,4 @@ int regwnexec_l(const regex_t * __restrict, const wchar_t * __restrict,
__END_DECLS
-#endif /* _XLOCALE__REGEX_H_ */
+#endif /* _XLOCALE__REGEX_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_stdio.h b/lib/libc/include/any-macos-any/xlocale/_stdio.h
index f9272ff76c..7620a3ea04 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_stdio.h
+++ b/lib/libc/include/any-macos-any/xlocale/_stdio.h
@@ -79,4 +79,4 @@ int vasprintf_l(char ** __restrict, locale_t __restrict, const char * __restric
__END_DECLS
-#endif /* _XLOCALE__STDIO_H_ */
+#endif /* _XLOCALE__STDIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_stdlib.h b/lib/libc/include/any-macos-any/xlocale/_stdlib.h
index add77d696f..494502d3f7 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_stdlib.h
+++ b/lib/libc/include/any-macos-any/xlocale/_stdlib.h
@@ -71,4 +71,4 @@ int wctomb_l(char *, wchar_t, locale_t);
#endif
__END_DECLS
-#endif /* _XLOCALE__STDLIB_H_ */
+#endif /* _XLOCALE__STDLIB_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_string.h b/lib/libc/include/any-macos-any/xlocale/_string.h
index 8aa73fac45..46b31e395d 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_string.h
+++ b/lib/libc/include/any-macos-any/xlocale/_string.h
@@ -36,4 +36,4 @@ char *strcasestr_l(const char *, const char *, locale_t);
int strncasecmp_l(const char *, const char *, size_t, locale_t);
__END_DECLS
-#endif /* _XLOCALE__STRING_H_ */
+#endif /* _XLOCALE__STRING_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_time.h b/lib/libc/include/any-macos-any/xlocale/_time.h
index c2c0965446..ed497992ec 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_time.h
+++ b/lib/libc/include/any-macos-any/xlocale/_time.h
@@ -38,4 +38,4 @@ char *strptime_l(const char * __restrict, const char * __restrict,
__DARWIN_ALIAS(strptime_l) __strftimelike(2);
__END_DECLS
-#endif /* _XLOCALE__TIME_H_ */
+#endif /* _XLOCALE__TIME_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_wctype.h b/lib/libc/include/any-macos-any/xlocale/_wctype.h
index 2b0c6846f7..be65829381 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_wctype.h
+++ b/lib/libc/include/any-macos-any/xlocale/_wctype.h
@@ -94,4 +94,4 @@ wctrans_t
wctrans_l(const char *, locale_t);
__END_DECLS
-#endif /* _XLOCALE__WCTYPE_H_ */
+#endif /* _XLOCALE__WCTYPE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xpc/activity.h b/lib/libc/include/any-macos-any/xpc/activity.h
index c4f58e8f6c..c48051f145 100644
--- a/lib/libc/include/x86_64-macos-gnu/xpc/activity.h
+++ b/lib/libc/include/any-macos-any/xpc/activity.h
@@ -443,5 +443,4 @@ XPC_ASSUME_NONNULL_END
#endif // __BLOCKS__
-#endif // __XPC_ACTIVITY_H__
-
+#endif // __XPC_ACTIVITY_H__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xpc/debug.h b/lib/libc/include/any-macos-any/xpc/debug.h
index b50361c6e9..8f86802951 100644
--- a/lib/libc/include/x86_64-macos-gnu/xpc/debug.h
+++ b/lib/libc/include/any-macos-any/xpc/debug.h
@@ -20,4 +20,4 @@ XPC_DEBUGGER_EXCL
const char *
xpc_debugger_api_misuse_info(void);
-#endif // __XPC_DEBUG_H__
+#endif // __XPC_DEBUG_H__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xpc/endpoint.h b/lib/libc/include/any-macos-any/xpc/endpoint.h
index aa43449b1d..a8032d98e3 100644
--- a/lib/libc/include/x86_64-macos-gnu/xpc/endpoint.h
+++ b/lib/libc/include/any-macos-any/xpc/endpoint.h
@@ -19,4 +19,4 @@ XPC_EXPORT XPC_MALLOC XPC_RETURNS_RETAINED XPC_WARN_RESULT XPC_NONNULL1
xpc_endpoint_t _Nonnull
xpc_endpoint_create(xpc_connection_t _Nonnull connection);
-#endif // __XPC_ENDPOINT_H__
+#endif // __XPC_ENDPOINT_H__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/Availability.h b/lib/libc/include/x86_64-macos-gnu/Availability.h
index c81a1940fa..bdfd794d89 100644
--- a/lib/libc/include/x86_64-macos-gnu/Availability.h
+++ b/lib/libc/include/x86_64-macos-gnu/Availability.h
@@ -602,5 +602,4 @@
#define __SPI_DEPRECATED_WITH_REPLACEMENT(...)
#endif
-#endif /* __AVAILABILITY__ */
-
+#endif /* __AVAILABILITY__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/AvailabilityInternal.h b/lib/libc/include/x86_64-macos-gnu/AvailabilityInternal.h
index 92bbd4b36f..11e6d1ed17 100644
--- a/lib/libc/include/x86_64-macos-gnu/AvailabilityInternal.h
+++ b/lib/libc/include/x86_64-macos-gnu/AvailabilityInternal.h
@@ -4669,4 +4669,4 @@
#define __SPI_AVAILABLE(...)
#endif
-#endif /* __AVAILABILITY_INTERNAL__ */
+#endif /* __AVAILABILITY_INTERNAL__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/AvailabilityMacros.h b/lib/libc/include/x86_64-macos-gnu/AvailabilityMacros.h
index 639955f2f1..9cc7100ffe 100644
--- a/lib/libc/include/x86_64-macos-gnu/AvailabilityMacros.h
+++ b/lib/libc/include/x86_64-macos-gnu/AvailabilityMacros.h
@@ -4010,6 +4010,4 @@
#define DEPRECATED_IN_MAC_OS_X_VERSION_10_14_4_AND_LATER
#endif
-#endif /* __AVAILABILITYMACROS__ */
-
-
+#endif /* __AVAILABILITYMACROS__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/TargetConditionals.h b/lib/libc/include/x86_64-macos-gnu/TargetConditionals.h
index ca021fd11b..896956f33d 100644
--- a/lib/libc/include/x86_64-macos-gnu/TargetConditionals.h
+++ b/lib/libc/include/x86_64-macos-gnu/TargetConditionals.h
@@ -499,4 +499,4 @@
#endif
-#endif /* __TARGETCONDITIONALS__ */
+#endif /* __TARGETCONDITIONALS__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/_ctermid.h b/lib/libc/include/x86_64-macos-gnu/_ctermid.h
index 540b117622..b941ea10d4 100644
--- a/lib/libc/include/x86_64-macos-gnu/_ctermid.h
+++ b/lib/libc/include/x86_64-macos-gnu/_ctermid.h
@@ -24,4 +24,4 @@
#ifndef _CTERMID_H_
#define _CTERMID_H_
char *ctermid(char *);
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/bsm/audit.h b/lib/libc/include/x86_64-macos-gnu/bsm/audit.h
index 2bac16e91a..e65ccbfab6 100644
--- a/lib/libc/include/x86_64-macos-gnu/bsm/audit.h
+++ b/lib/libc/include/x86_64-macos-gnu/bsm/audit.h
@@ -375,4 +375,4 @@ int audit_session_port(au_asid_t asid, mach_port_name_t *portname);
__END_DECLS
-#endif /* !_BSM_AUDIT_H */
+#endif /* !_BSM_AUDIT_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/block.h b/lib/libc/include/x86_64-macos-gnu/dispatch/block.h
index 4d6f5b5489..5a28f48ce4 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/block.h
+++ b/lib/libc/include/x86_64-macos-gnu/dispatch/block.h
@@ -425,4 +425,4 @@ DISPATCH_ASSUME_NONNULL_END
#endif // __BLOCKS__
-#endif // __DISPATCH_BLOCK__
+#endif // __DISPATCH_BLOCK__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/dispatch.h b/lib/libc/include/x86_64-macos-gnu/dispatch/dispatch.h
index df9beb93d4..7d5356aab6 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/dispatch.h
+++ b/lib/libc/include/x86_64-macos-gnu/dispatch/dispatch.h
@@ -72,4 +72,4 @@
#undef __DISPATCH_INDIRECT__
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/group.h b/lib/libc/include/x86_64-macos-gnu/dispatch/group.h
index 8d74ada2e4..bb9bad30e3 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/group.h
+++ b/lib/libc/include/x86_64-macos-gnu/dispatch/group.h
@@ -276,4 +276,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/object.h b/lib/libc/include/x86_64-macos-gnu/dispatch/object.h
index 7d7f0d09bb..3d89eb1fe6 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/object.h
+++ b/lib/libc/include/x86_64-macos-gnu/dispatch/object.h
@@ -603,4 +603,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/queue.h b/lib/libc/include/x86_64-macos-gnu/dispatch/queue.h
index 4ea1bf2eb0..f644b0266d 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/queue.h
+++ b/lib/libc/include/x86_64-macos-gnu/dispatch/queue.h
@@ -1671,4 +1671,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/semaphore.h b/lib/libc/include/x86_64-macos-gnu/dispatch/semaphore.h
index f5394b45dd..156fb800f3 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/semaphore.h
+++ b/lib/libc/include/x86_64-macos-gnu/dispatch/semaphore.h
@@ -114,4 +114,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif /* __DISPATCH_SEMAPHORE__ */
+#endif /* __DISPATCH_SEMAPHORE__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/source.h b/lib/libc/include/x86_64-macos-gnu/dispatch/source.h
index 40453fa3eb..968b9ff89e 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/source.h
+++ b/lib/libc/include/x86_64-macos-gnu/dispatch/source.h
@@ -777,4 +777,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/dispatch/workloop.h b/lib/libc/include/x86_64-macos-gnu/dispatch/workloop.h
index d0b17c2357..dcd1db43cc 100644
--- a/lib/libc/include/x86_64-macos-gnu/dispatch/workloop.h
+++ b/lib/libc/include/x86_64-macos-gnu/dispatch/workloop.h
@@ -133,4 +133,4 @@ __END_DECLS
DISPATCH_ASSUME_NONNULL_END
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/_limits.h b/lib/libc/include/x86_64-macos-gnu/i386/_limits.h
index 0d46e8511f..f942e7abd8 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/_limits.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/_limits.h
@@ -24,4 +24,4 @@
#define __DARWIN_CLK_TCK 100 /* ticks per second */
-#endif /* _I386__LIMITS_H_ */
+#endif /* _I386__LIMITS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/_mcontext.h b/lib/libc/include/x86_64-macos-gnu/i386/_mcontext.h
index ee3dfe990d..424ca21359 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/_mcontext.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/_mcontext.h
@@ -209,4 +209,4 @@ typedef _STRUCT_MCONTEXT32 *mcontext_t;
#endif
#endif /* _MCONTEXT_T */
-#endif /* __I386_MCONTEXT_H_ */
+#endif /* __I386_MCONTEXT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/_param.h b/lib/libc/include/x86_64-macos-gnu/i386/_param.h
index 3a0ac8bba7..d8f7b3d4bf 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/_param.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/_param.h
@@ -43,4 +43,4 @@
#define __DARWIN_ALIGN32(p) ((__darwin_size_t)((char *)(__darwin_size_t)(p) + __DARWIN_ALIGNBYTES32) &~ __DARWIN_ALIGNBYTES32)
-#endif /* _I386__PARAM_H_ */
+#endif /* _I386__PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/_types.h b/lib/libc/include/x86_64-macos-gnu/i386/_types.h
index b115ed12da..9dcffa5241 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/_types.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/_types.h
@@ -119,4 +119,4 @@ typedef __uint32_t __darwin_socklen_t; /* socklen_t (duh) */
typedef long __darwin_ssize_t; /* byte count or error */
typedef long __darwin_time_t; /* time() */
-#endif /* _BSD_I386__TYPES_H_ */
+#endif /* _BSD_I386__TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/eflags.h b/lib/libc/include/x86_64-macos-gnu/i386/eflags.h
index 1ac8b72680..dc73c43126 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/eflags.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/eflags.h
@@ -91,4 +91,4 @@
#define EFL_USER_SET (EFL_IF)
#define EFL_USER_CLEAR (EFL_IOPL|EFL_NT|EFL_RF)
-#endif /* _I386_EFLAGS_H_ */
+#endif /* _I386_EFLAGS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/endian.h b/lib/libc/include/x86_64-macos-gnu/i386/endian.h
index 06854fe46b..95ca16e406 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/endian.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/endian.h
@@ -99,4 +99,4 @@
#include <sys/_endian.h>
#endif /* defined(KERNEL) || (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)) */
-#endif /* !_I386__ENDIAN_H_ */
+#endif /* !_I386__ENDIAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/limits.h b/lib/libc/include/x86_64-macos-gnu/i386/limits.h
index 9bc2e57184..651d770335 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/limits.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/limits.h
@@ -104,4 +104,4 @@
#endif /* (!_POSIX_C_SOURCE && !_XOPEN_SOURCE) || _DARWIN_C_SOURCE */
#endif /* !_ANSI_SOURCE */
-#endif /* _I386_LIMITS_H_ */
+#endif /* _I386_LIMITS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/param.h b/lib/libc/include/x86_64-macos-gnu/i386/param.h
index bff89a5168..e8eb8272e7 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/param.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/param.h
@@ -168,4 +168,4 @@
#define DELAY(n) { int N = (n); while (--N > 0); }
#endif /* defined(KERNEL) || defined(STANDALONE) */
-#endif /* _I386_PARAM_H_ */
+#endif /* _I386_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/signal.h b/lib/libc/include/x86_64-macos-gnu/i386/signal.h
index 1843b79e51..cd837bb7f6 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/signal.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/signal.h
@@ -40,4 +40,4 @@ typedef int sig_atomic_t;
#endif /* ! _ANSI_SOURCE */
-#endif /* _I386_SIGNAL_H_ */
+#endif /* _I386_SIGNAL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/i386/types.h b/lib/libc/include/x86_64-macos-gnu/i386/types.h
index fa219b1c7a..00dee1a917 100644
--- a/lib/libc/include/x86_64-macos-gnu/i386/types.h
+++ b/lib/libc/include/x86_64-macos-gnu/i386/types.h
@@ -111,4 +111,4 @@ typedef int64_t user_off_t;
typedef u_int64_t syscall_arg_t;
#endif /* __ASSEMBLER__ */
-#endif /* _MACHTYPES_H_ */
+#endif /* _MACHTYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicDeprecated.h b/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicDeprecated.h
index 1b0ef91c12..aef009bc04 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicDeprecated.h
+++ b/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicDeprecated.h
@@ -1174,4 +1174,4 @@ __END_DECLS
#endif // defined(OSATOMIC_USE_INLINED) && OSATOMIC_USE_INLINED
-#endif /* _OSATOMIC_DEPRECATED_H_ */
+#endif /* _OSATOMIC_DEPRECATED_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicQueue.h b/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicQueue.h
index 103f1e86ba..3f673861e3 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicQueue.h
+++ b/lib/libc/include/x86_64-macos-gnu/libkern/OSAtomicQueue.h
@@ -188,4 +188,4 @@ void* OSAtomicFifoDequeue( OSFifoQueueHead *__list, size_t __offset);
__END_DECLS
-#endif /* _OSATOMICQUEUE_H_ */
+#endif /* _OSATOMICQUEUE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/OSByteOrder.h b/lib/libc/include/x86_64-macos-gnu/libkern/OSByteOrder.h
index d9712031e5..25563e26e7 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/OSByteOrder.h
+++ b/lib/libc/include/x86_64-macos-gnu/libkern/OSByteOrder.h
@@ -302,4 +302,4 @@ _OSWriteInt64(
#error Unknown endianess.
#endif
-#endif /* ! _OS_OSBYTEORDER_H */
+#endif /* ! _OS_OSBYTEORDER_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/_OSByteOrder.h b/lib/libc/include/x86_64-macos-gnu/libkern/_OSByteOrder.h
index 89c2714b3b..06614c63ea 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/_OSByteOrder.h
+++ b/lib/libc/include/x86_64-macos-gnu/libkern/_OSByteOrder.h
@@ -127,4 +127,4 @@ _OSSwapInt64(
#endif /* __GNUC__ */
-#endif /* ! _OS__OSBYTEORDER_H */
+#endif /* ! _OS__OSBYTEORDER_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/i386/OSByteOrder.h b/lib/libc/include/x86_64-macos-gnu/libkern/i386/OSByteOrder.h
index 84c632bb52..d6783b74e0 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/i386/OSByteOrder.h
+++ b/lib/libc/include/x86_64-macos-gnu/libkern/i386/OSByteOrder.h
@@ -109,4 +109,4 @@ OSWriteSwapInt64(
*(volatile uint64_t *)((uintptr_t)base + byteOffset) = _OSSwapInt64(data);
}
-#endif /* ! _OS_OSBYTEORDERI386_H */
+#endif /* ! _OS_OSBYTEORDERI386_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/libkern/i386/_OSByteOrder.h b/lib/libc/include/x86_64-macos-gnu/libkern/i386/_OSByteOrder.h
index e95c3975d4..4b160f734f 100644
--- a/lib/libc/include/x86_64-macos-gnu/libkern/i386/_OSByteOrder.h
+++ b/lib/libc/include/x86_64-macos-gnu/libkern/i386/_OSByteOrder.h
@@ -101,4 +101,4 @@ _OSSwapInt64(
#error Unknown architecture
#endif
-#endif /* ! _OS__OSBYTEORDERI386_H */
+#endif /* ! _OS__OSBYTEORDERI386_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach-o/dyld.h b/lib/libc/include/x86_64-macos-gnu/mach-o/dyld.h
index 4e8f31f57a..0b293cbd09 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach-o/dyld.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach-o/dyld.h
@@ -260,4 +260,4 @@ extern const struct mach_header* _dyld_get_image_header_containing_address(cons
}
#endif
-#endif /* _MACH_O_DYLD_H_ */
+#endif /* _MACH_O_DYLD_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach-o/loader.h b/lib/libc/include/x86_64-macos-gnu/mach-o/loader.h
index a6bdbcbde3..a088105205 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach-o/loader.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach-o/loader.h
@@ -1574,4 +1574,4 @@ struct note_command {
uint64_t size; /* length of data region */
};
-#endif /* _MACHO_LOADER_H_ */
+#endif /* _MACHO_LOADER_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/_structs.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/_structs.h
index c9cc8992cf..f041af9f3f 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/_structs.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/_structs.h
@@ -1229,4 +1229,4 @@ _STRUCT_X86_CPMU_STATE64
};
#endif /* !__DARWIN_UNIX03 */
-#endif /* _MACH_I386__STRUCTS_H_ */
+#endif /* _MACH_I386__STRUCTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/boolean.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/boolean.h
index 7023759383..d604dfcea2 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/boolean.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/boolean.h
@@ -71,4 +71,4 @@ typedef unsigned int boolean_t;
typedef int boolean_t;
#endif
-#endif /* _MACH_I386_BOOLEAN_H_ */
+#endif /* _MACH_I386_BOOLEAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/exception.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/exception.h
index 44b5272d30..3f21c3d4e6 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/exception.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/exception.h
@@ -132,4 +132,4 @@
*/
#define EXC_MASK_MACHINE 0
-#endif /* _MACH_I386_EXCEPTION_H_ */
+#endif /* _MACH_I386_EXCEPTION_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/fp_reg.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/fp_reg.h
index 3593705935..eb010ad950 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/fp_reg.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/fp_reg.h
@@ -115,4 +115,4 @@
#define FP_387 3 /* 80387 or 80486 */
#define FP_FXSR 4 /* Fast save/restore SIMD Extension */
-#endif /* _I386_FP_SAVE_H_ */
+#endif /* _I386_FP_SAVE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/kern_return.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/kern_return.h
index 5caefe8a6f..47aa4b8753 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/kern_return.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/kern_return.h
@@ -71,4 +71,4 @@
typedef int kern_return_t;
#endif /* ASSEMBLER */
-#endif /* _MACH_I386_KERN_RETURN_H_ */
+#endif /* _MACH_I386_KERN_RETURN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/processor_info.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/processor_info.h
index a1930895ec..4426e0041c 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/processor_info.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/processor_info.h
@@ -34,4 +34,4 @@
#ifndef _MACH_I386_PROCESSOR_INFO_H_
#define _MACH_I386_PROCESSOR_INFO_H_
-#endif /* _MACH_I386_PROCESSOR_INFO_H_ */
+#endif /* _MACH_I386_PROCESSOR_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/rpc.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/rpc.h
index 396bdea32c..0298ebb804 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/rpc.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/rpc.h
@@ -32,4 +32,4 @@
#ifndef _MACH_I386_RPC_H_
#define _MACH_I386_RPC_H_
-#endif /* _MACH_I386_RPC_H_ */
+#endif /* _MACH_I386_RPC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/thread_state.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/thread_state.h
index 759489dcf7..78595255a3 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/thread_state.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/thread_state.h
@@ -39,4 +39,4 @@
#define THREAD_STATE_MAX I386_THREAD_STATE_MAX
#endif
-#endif /* _MACH_I386_THREAD_STATE_H_ */
+#endif /* _MACH_I386_THREAD_STATE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/thread_status.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/thread_status.h
index 105fe352df..233e0f22a6 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/thread_status.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/thread_status.h
@@ -342,4 +342,4 @@ typedef struct x86_avx512_state x86_avx512_state_t;
#define MACHINE_THREAD_STATE_COUNT x86_THREAD_STATE_COUNT
-#endif /* _MACH_I386_THREAD_STATUS_H_ */
+#endif /* _MACH_I386_THREAD_STATUS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/vm_param.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/vm_param.h
index fc37cd1d80..a85ee924b7 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/vm_param.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/vm_param.h
@@ -167,4 +167,4 @@
-#endif /* _MACH_I386_VM_PARAM_H_ */
+#endif /* _MACH_I386_VM_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/i386/vm_types.h b/lib/libc/include/x86_64-macos-gnu/mach/i386/vm_types.h
index f75fd05a91..8a95db53ee 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/i386/vm_types.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/i386/vm_types.h
@@ -139,4 +139,4 @@ typedef mach_vm_address_t mach_port_context_t;
*/
#define MACH_MSG_TYPE_INTEGER_T MACH_MSG_TYPE_INTEGER_32
-#endif /* _MACH_I386_VM_TYPES_H_ */
+#endif /* _MACH_I386_VM_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/kern_return.h b/lib/libc/include/x86_64-macos-gnu/mach/kern_return.h
index cbc29d9374..62d6415f52 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/kern_return.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/kern_return.h
@@ -327,4 +327,4 @@
/* Maximum return value allowable
*/
-#endif /* _MACH_KERN_RETURN_H_ */
+#endif /* _MACH_KERN_RETURN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_port.h b/lib/libc/include/x86_64-macos-gnu/mach/mach_port.h
index 8f587e3bfa..fcec114ccf 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_port.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/mach_port.h
@@ -1805,4 +1805,4 @@ union __ReplyUnion__mach_port_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _mach_port_user_ */
+#endif /* _mach_port_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_traps.h b/lib/libc/include/x86_64-macos-gnu/mach/mach_traps.h
index e38647c7a6..d3aaf577ed 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_traps.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/mach_traps.h
@@ -300,4 +300,4 @@ extern kern_return_t debug_control_port_for_pid(
__END_DECLS
-#endif /* _MACH_MACH_TRAPS_H_ */
+#endif /* _MACH_MACH_TRAPS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/mach_types.h b/lib/libc/include/x86_64-macos-gnu/mach/mach_types.h
index bd4bc3424c..0c35705acf 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/mach_types.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/mach_types.h
@@ -251,4 +251,4 @@ typedef char *labelstr_t;
*/
#include <mach/std_types.h>
-#endif /* _MACH_MACH_TYPES_H_ */
+#endif /* _MACH_MACH_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine.h b/lib/libc/include/x86_64-macos-gnu/mach/machine.h
index a209623264..30aafcc812 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine.h
@@ -392,4 +392,4 @@ typedef integer_t cpu_threadtype_t;
#define CPUFAMILY_INTEL_6_26 CPUFAMILY_INTEL_NEHALEM
-#endif /* _MACH_MACHINE_H_ */
+#endif /* _MACH_MACHINE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/_structs.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/_structs.h
index e0bdc10828..0a61125417 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/_structs.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/_structs.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE__STRUCTS_H_ */
+#endif /* _MACH_MACHINE__STRUCTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/boolean.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/boolean.h
index 6423078b8b..d373913b40 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/boolean.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/boolean.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_BOOLEAN_H_ */
+#endif /* _MACH_MACHINE_BOOLEAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/exception.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/exception.h
index 5a85bd37f3..f3e960d436 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/exception.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/exception.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_EXCEPTION_H_ */
+#endif /* _MACH_MACHINE_EXCEPTION_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/kern_return.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/kern_return.h
index 276656cbc5..b764492d29 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/kern_return.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/kern_return.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_KERN_RETURN_H_ */
+#endif /* _MACH_MACHINE_KERN_RETURN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/processor_info.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/processor_info.h
index da865d7fc5..4e5028d24d 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/processor_info.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/processor_info.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_PROCESSOR_INFO_H_ */
+#endif /* _MACH_MACHINE_PROCESSOR_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/rpc.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/rpc.h
index 196a1546d6..7d6ccee5f8 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/rpc.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/rpc.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_RPC_H_ */
+#endif /* _MACH_MACHINE_RPC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/thread_state.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/thread_state.h
index 7dbfecefc3..91daad8671 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/thread_state.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/thread_state.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_THREAD_STATE_H_ */
+#endif /* _MACH_MACHINE_THREAD_STATE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/thread_status.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/thread_status.h
index 1c389658b0..7e65df246e 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/thread_status.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/thread_status.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_THREAD_STATUS_H_ */
+#endif /* _MACH_MACHINE_THREAD_STATUS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/vm_param.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/vm_param.h
index 08f4ac5fc9..7f272f5b70 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/vm_param.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/vm_param.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_VM_PARAM_H_ */
+#endif /* _MACH_MACHINE_VM_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/machine/vm_types.h b/lib/libc/include/x86_64-macos-gnu/mach/machine/vm_types.h
index 66cbebfda9..5d16a871ea 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/machine/vm_types.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/machine/vm_types.h
@@ -35,4 +35,4 @@
#error architecture not supported
#endif
-#endif /* _MACH_MACHINE_VM_TYPES_H_ */
+#endif /* _MACH_MACHINE_VM_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/message.h b/lib/libc/include/x86_64-macos-gnu/mach/message.h
index 59e9fa07fb..3f9f9a0605 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/message.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/message.h
@@ -899,4 +899,4 @@ extern kern_return_t mach_voucher_deallocate(
__END_DECLS
-#endif /* _MACH_MESSAGE_H_ */
+#endif /* _MACH_MESSAGE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/port.h b/lib/libc/include/x86_64-macos-gnu/mach/port.h
index bd1fc19fd4..3547576e80 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/port.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/port.h
@@ -419,4 +419,4 @@ typedef mach_port_name_t *port_name_array_t;
#endif /* !__DARWIN_UNIX03 && !_NO_PORT_T_FROM_MACH */
-#endif /* _MACH_PORT_H_ */
+#endif /* _MACH_PORT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/processor_set.h b/lib/libc/include/x86_64-macos-gnu/mach/processor_set.h
index c306155ff2..c7637d1f19 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/processor_set.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/processor_set.h
@@ -537,4 +537,4 @@ union __ReplyUnion__processor_set_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _processor_set_user_ */
+#endif /* _processor_set_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/task.h b/lib/libc/include/x86_64-macos-gnu/mach/task.h
index 20019654bb..5f0de2dcd5 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/task.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/task.h
@@ -2520,4 +2520,4 @@ union __ReplyUnion__task_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _task_user_ */
+#endif /* _task_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/task_info.h b/lib/libc/include/x86_64-macos-gnu/mach/task_info.h
index 86cfdb3492..5b2046a700 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/task_info.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/task_info.h
@@ -475,4 +475,4 @@ typedef uint32_t task_exc_guard_behavior_t;
#pragma pack(pop)
-#endif /* _MACH_TASK_INFO_H_ */
+#endif /* _MACH_TASK_INFO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/task_policy.h b/lib/libc/include/x86_64-macos-gnu/mach/task_policy.h
index 04970a5b63..4b6d3f9449 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/task_policy.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/task_policy.h
@@ -186,4 +186,4 @@ typedef struct task_qos_policy *task_qos_policy_t;
-#endif /* _MACH_TASK_POLICY_H_ */
+#endif /* _MACH_TASK_POLICY_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/task_special_ports.h b/lib/libc/include/x86_64-macos-gnu/mach/task_special_ports.h
index ded90941a4..f8ee7c2bbf 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/task_special_ports.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/task_special_ports.h
@@ -129,4 +129,4 @@ typedef int task_special_port_t;
(task_set_special_port((task), TASK_DEBUG_CONTROL_PORT, (port)))
-#endif /* _MACH_TASK_SPECIAL_PORTS_H_ */
+#endif /* _MACH_TASK_SPECIAL_PORTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/thread_act.h b/lib/libc/include/x86_64-macos-gnu/mach/thread_act.h
index 5a21aa7e81..88561082cd 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/thread_act.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/thread_act.h
@@ -1333,4 +1333,4 @@ union __ReplyUnion__thread_act_subsystem {
__AfterMigUserHeader
#endif /* __AfterMigUserHeader */
-#endif /* _thread_act_user_ */
+#endif /* _thread_act_user_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/thread_special_ports.h b/lib/libc/include/x86_64-macos-gnu/mach/thread_special_ports.h
index 02199835a4..f777e0060c 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/thread_special_ports.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/thread_special_ports.h
@@ -80,4 +80,4 @@
#define thread_set_kernel_port(thread, port) \
(thread_set_special_port((thread), THREAD_KERNEL_PORT, (port)))
-#endif /* _MACH_THREAD_SPECIAL_PORTS_H_ */
+#endif /* _MACH_THREAD_SPECIAL_PORTS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/thread_status.h b/lib/libc/include/x86_64-macos-gnu/mach/thread_status.h
index a91b936eba..886cae365c 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/thread_status.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/thread_status.h
@@ -94,4 +94,4 @@ typedef natural_t thread_state_data_t[THREAD_STATE_MAX];
typedef int thread_state_flavor_t;
typedef thread_state_flavor_t *thread_state_flavor_array_t;
-#endif /* _MACH_THREAD_STATUS_H_ */
+#endif /* _MACH_THREAD_STATUS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_prot.h b/lib/libc/include/x86_64-macos-gnu/mach/vm_prot.h
index 8914da2372..75812fedf6 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_prot.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/vm_prot.h
@@ -149,4 +149,4 @@ typedef int vm_prot_t;
#define VM_PROT_STRIP_READ ((vm_prot_t) 0x80)
#define VM_PROT_EXECUTE_ONLY (VM_PROT_EXECUTE|VM_PROT_STRIP_READ)
-#endif /* _MACH_VM_PROT_H_ */
+#endif /* _MACH_VM_PROT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_statistics.h b/lib/libc/include/x86_64-macos-gnu/mach/vm_statistics.h
index 0a2ee5b74c..2bfd8136b4 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_statistics.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/vm_statistics.h
@@ -520,4 +520,4 @@ enum virtual_memory_guard_exception_codes {
-#endif /* _MACH_VM_STATISTICS_H_ */
+#endif /* _MACH_VM_STATISTICS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/mach/vm_types.h b/lib/libc/include/x86_64-macos-gnu/mach/vm_types.h
index 1367f255b0..18ff9ae771 100644
--- a/lib/libc/include/x86_64-macos-gnu/mach/vm_types.h
+++ b/lib/libc/include/x86_64-macos-gnu/mach/vm_types.h
@@ -92,4 +92,4 @@ typedef mach_port_t vm_named_entry_t;
#define UPL_NULL ((upl_t) 0)
#define VM_NAMED_ENTRY_NULL ((vm_named_entry_t) 0)
-#endif /* _MACH_VM_TYPES_H_ */
+#endif /* _MACH_VM_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/machine/_mcontext.h b/lib/libc/include/x86_64-macos-gnu/machine/_mcontext.h
index 27ac45190e..9ccd985fcc 100644
--- a/lib/libc/include/x86_64-macos-gnu/machine/_mcontext.h
+++ b/lib/libc/include/x86_64-macos-gnu/machine/_mcontext.h
@@ -29,4 +29,4 @@
#include "i386/_mcontext.h"
#else
#error architecture not supported
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/machine/_param.h b/lib/libc/include/x86_64-macos-gnu/machine/_param.h
index c8e35a1c29..c40232c3c2 100644
--- a/lib/libc/include/x86_64-macos-gnu/machine/_param.h
+++ b/lib/libc/include/x86_64-macos-gnu/machine/_param.h
@@ -29,4 +29,4 @@
#include "i386/_param.h"
#else
#error architecture not supported
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/machine/_types.h b/lib/libc/include/x86_64-macos-gnu/machine/_types.h
index 2873a84a85..0ed6acf677 100644
--- a/lib/libc/include/x86_64-macos-gnu/machine/_types.h
+++ b/lib/libc/include/x86_64-macos-gnu/machine/_types.h
@@ -34,4 +34,4 @@
#error architecture not supported
#endif
-#endif /* _BSD_MACHINE__TYPES_H_ */
+#endif /* _BSD_MACHINE__TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/machine/endian.h b/lib/libc/include/x86_64-macos-gnu/machine/endian.h
index 4bbc8c4df8..85c8f12508 100644
--- a/lib/libc/include/x86_64-macos-gnu/machine/endian.h
+++ b/lib/libc/include/x86_64-macos-gnu/machine/endian.h
@@ -37,4 +37,4 @@
#error architecture not supported
#endif
-#endif /* _BSD_MACHINE_ENDIAN_H_ */
+#endif /* _BSD_MACHINE_ENDIAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/machine/limits.h b/lib/libc/include/x86_64-macos-gnu/machine/limits.h
index bfe42ba649..9763e810b6 100644
--- a/lib/libc/include/x86_64-macos-gnu/machine/limits.h
+++ b/lib/libc/include/x86_64-macos-gnu/machine/limits.h
@@ -6,4 +6,4 @@
#include <i386/limits.h>
#else
#error architecture not supported
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/machine/param.h b/lib/libc/include/x86_64-macos-gnu/machine/param.h
index 10f8f6332e..8435acbdfb 100644
--- a/lib/libc/include/x86_64-macos-gnu/machine/param.h
+++ b/lib/libc/include/x86_64-macos-gnu/machine/param.h
@@ -37,4 +37,4 @@
#error architecture not supported
#endif
-#endif /* _BSD_MACHINE_PARAM_H_ */
+#endif /* _BSD_MACHINE_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/machine/signal.h b/lib/libc/include/x86_64-macos-gnu/machine/signal.h
index def4d744b7..19ef535ebd 100644
--- a/lib/libc/include/x86_64-macos-gnu/machine/signal.h
+++ b/lib/libc/include/x86_64-macos-gnu/machine/signal.h
@@ -34,4 +34,4 @@
#error architecture not supported
#endif
-#endif /* _BSD_MACHINE_SIGNAL_H_ */
+#endif /* _BSD_MACHINE_SIGNAL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/machine/types.h b/lib/libc/include/x86_64-macos-gnu/machine/types.h
index a991f733e5..5d1a1e575f 100644
--- a/lib/libc/include/x86_64-macos-gnu/machine/types.h
+++ b/lib/libc/include/x86_64-macos-gnu/machine/types.h
@@ -37,4 +37,4 @@
#error architecture not supported
#endif
-#endif /* _BSD_MACHINE_TYPES_H_ */
+#endif /* _BSD_MACHINE_TYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/malloc/_malloc.h b/lib/libc/include/x86_64-macos-gnu/malloc/_malloc.h
index c0270235da..91555d11bb 100644
--- a/lib/libc/include/x86_64-macos-gnu/malloc/_malloc.h
+++ b/lib/libc/include/x86_64-macos-gnu/malloc/_malloc.h
@@ -53,4 +53,4 @@ int posix_memalign(void **__memptr, size_t __alignment, size_t __size) __OSX_A
__END_DECLS
-#endif /* _MALLOC_UNDERSCORE_MALLOC_H_ */
+#endif /* _MALLOC_UNDERSCORE_MALLOC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/malloc/malloc.h b/lib/libc/include/x86_64-macos-gnu/malloc/malloc.h
index 40e7469da3..0bddfda43b 100644
--- a/lib/libc/include/x86_64-macos-gnu/malloc/malloc.h
+++ b/lib/libc/include/x86_64-macos-gnu/malloc/malloc.h
@@ -311,4 +311,4 @@ extern void malloc_zone_enumerate_discharged_pointers(malloc_zone_t *zone, void
__END_DECLS
-#endif /* _MALLOC_MALLOC_H_ */
+#endif /* _MALLOC_MALLOC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/math.h b/lib/libc/include/x86_64-macos-gnu/math.h
index 535d7b5976..8bb019247e 100644
--- a/lib/libc/include/x86_64-macos-gnu/math.h
+++ b/lib/libc/include/x86_64-macos-gnu/math.h
@@ -768,4 +768,4 @@ struct exception {
#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
__END_DECLS
-#endif /* __MATH_H__ */
+#endif /* __MATH_H__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/net/if.h b/lib/libc/include/x86_64-macos-gnu/net/if.h
index 946332ff00..c0729f0eb8 100644
--- a/lib/libc/include/x86_64-macos-gnu/net/if.h
+++ b/lib/libc/include/x86_64-macos-gnu/net/if.h
@@ -439,4 +439,4 @@ void if_freenameindex(struct if_nameindex *);
__END_DECLS
-#endif /* !_NET_IF_H_ */
+#endif /* !_NET_IF_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/net/if_var.h b/lib/libc/include/x86_64-macos-gnu/net/if_var.h
index 4787d9e145..6dcaa3842e 100644
--- a/lib/libc/include/x86_64-macos-gnu/net/if_var.h
+++ b/lib/libc/include/x86_64-macos-gnu/net/if_var.h
@@ -239,4 +239,4 @@ struct ifqueue {
-#endif /* !_NET_IF_VAR_H_ */
+#endif /* !_NET_IF_VAR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/netinet/in.h b/lib/libc/include/x86_64-macos-gnu/netinet/in.h
index 0fc452a587..0e921c2965 100644
--- a/lib/libc/include/x86_64-macos-gnu/netinet/in.h
+++ b/lib/libc/include/x86_64-macos-gnu/netinet/in.h
@@ -668,4 +668,4 @@ struct sockaddr;
int bindresvport_sa(int, struct sockaddr *);
__END_DECLS
#endif
-#endif /* _NETINET_IN_H_ */
+#endif /* _NETINET_IN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/netinet/tcp.h b/lib/libc/include/x86_64-macos-gnu/netinet/tcp.h
index 4a716d498b..f089db156e 100644
--- a/lib/libc/include/x86_64-macos-gnu/netinet/tcp.h
+++ b/lib/libc/include/x86_64-macos-gnu/netinet/tcp.h
@@ -280,4 +280,4 @@ struct tcp_connection_info {
};
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/netinet6/in6.h b/lib/libc/include/x86_64-macos-gnu/netinet6/in6.h
index fc4550f3fc..19899090ad 100644
--- a/lib/libc/include/x86_64-macos-gnu/netinet6/in6.h
+++ b/lib/libc/include/x86_64-macos-gnu/netinet6/in6.h
@@ -664,4 +664,4 @@ extern struct in6_addr *inet6_rth_getaddr(const void *, int);
__END_DECLS
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
-#endif /* !_NETINET6_IN6_H_ */
+#endif /* !_NETINET6_IN6_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/objc/objc-api.h b/lib/libc/include/x86_64-macos-gnu/objc/objc-api.h
index a098b6afc8..504fee6113 100644
--- a/lib/libc/include/x86_64-macos-gnu/objc/objc-api.h
+++ b/lib/libc/include/x86_64-macos-gnu/objc/objc-api.h
@@ -277,4 +277,4 @@
# endif
#endif
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/objc/runtime.h b/lib/libc/include/x86_64-macos-gnu/objc/runtime.h
index e66756d1b4..0b49b72559 100644
--- a/lib/libc/include/x86_64-macos-gnu/objc/runtime.h
+++ b/lib/libc/include/x86_64-macos-gnu/objc/runtime.h
@@ -2166,4 +2166,4 @@ OBJC_EXPORT void
(* _Nonnull _error)(id _Nullable, const char * _Nonnull, va_list)
OBJC2_UNAVAILABLE;
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/os/base.h b/lib/libc/include/x86_64-macos-gnu/os/base.h
index e8e9059272..a57f8373a4 100644
--- a/lib/libc/include/x86_64-macos-gnu/os/base.h
+++ b/lib/libc/include/x86_64-macos-gnu/os/base.h
@@ -322,4 +322,4 @@ typedef void (*os_function_t)(void *_Nullable);
typedef void (^os_block_t)(void);
#endif
-#endif // __OS_BASE__
+#endif // __OS_BASE__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/os/object.h b/lib/libc/include/x86_64-macos-gnu/os/object.h
index 2979de8919..be281bcd9a 100644
--- a/lib/libc/include/x86_64-macos-gnu/os/object.h
+++ b/lib/libc/include/x86_64-macos-gnu/os/object.h
@@ -268,4 +268,4 @@ os_release(void *object);
__END_DECLS
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/pthread.h b/lib/libc/include/x86_64-macos-gnu/pthread.h
index a042c82aed..0826a7dc70 100644
--- a/lib/libc/include/x86_64-macos-gnu/pthread.h
+++ b/lib/libc/include/x86_64-macos-gnu/pthread.h
@@ -565,4 +565,4 @@ __END_DECLS
_Pragma("clang assume_nonnull end")
#endif
-#endif /* _PTHREAD_H */
+#endif /* _PTHREAD_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/pthread/sched.h b/lib/libc/include/x86_64-macos-gnu/pthread/sched.h
index 91efb4eae3..3c49e7980d 100644
--- a/lib/libc/include/x86_64-macos-gnu/pthread/sched.h
+++ b/lib/libc/include/x86_64-macos-gnu/pthread/sched.h
@@ -40,5 +40,4 @@ extern int sched_get_priority_min(int);
extern int sched_get_priority_max(int);
__END_DECLS
-#endif /* _SCHED_H_ */
-
+#endif /* _SCHED_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/pthread_impl.h b/lib/libc/include/x86_64-macos-gnu/pthread_impl.h
index 35d32d3021..aae74c2c03 100644
--- a/lib/libc/include/x86_64-macos-gnu/pthread_impl.h
+++ b/lib/libc/include/x86_64-macos-gnu/pthread_impl.h
@@ -63,4 +63,4 @@ _Pragma("clang assume_nonnull begin")
_Pragma("clang assume_nonnull end")
#endif
-#endif /* _PTHREAD_IMPL_H_ */
+#endif /* _PTHREAD_IMPL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sched.h b/lib/libc/include/x86_64-macos-gnu/sched.h
index 91efb4eae3..3c49e7980d 100644
--- a/lib/libc/include/x86_64-macos-gnu/sched.h
+++ b/lib/libc/include/x86_64-macos-gnu/sched.h
@@ -40,5 +40,4 @@ extern int sched_get_priority_min(int);
extern int sched_get_priority_max(int);
__END_DECLS
-#endif /* _SCHED_H_ */
-
+#endif /* _SCHED_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/signal.h b/lib/libc/include/x86_64-macos-gnu/signal.h
index 94c4c1bb4d..dbc5b35f2b 100644
--- a/lib/libc/include/x86_64-macos-gnu/signal.h
+++ b/lib/libc/include/x86_64-macos-gnu/signal.h
@@ -126,4 +126,4 @@ __sigbits(int __signo)
#define sigfillset(set) (*(set) = ~(sigset_t)0, 0)
#endif /* !_ANSI_SOURCE */
-#endif /* !_USER_SIGNAL_H */
+#endif /* !_USER_SIGNAL_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/common.h b/lib/libc/include/x86_64-macos-gnu/simd/common.h
index 059e852e37..4c2f4d0760 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/common.h
+++ b/lib/libc/include/x86_64-macos-gnu/simd/common.h
@@ -4455,4 +4455,4 @@ static inline SIMD_CFUNC double simd_reduce_max(simd_double8 x) {
}
#endif
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* SIMD_COMMON_HEADER */
+#endif /* SIMD_COMMON_HEADER */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/conversion.h b/lib/libc/include/x86_64-macos-gnu/simd/conversion.h
index 184358e258..cc6c533e8f 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/conversion.h
+++ b/lib/libc/include/x86_64-macos-gnu/simd/conversion.h
@@ -1873,4 +1873,4 @@ static simd_double8 SIMD_CFUNC simd_double(simd_double8 __x) { return __builti
}
#endif
#endif // SIMD_COMPILER_HAS_REQUIRED_FEATURES
-#endif // __SIMD_CONVERSION_HEADER__
+#endif // __SIMD_CONVERSION_HEADER__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/logic.h b/lib/libc/include/x86_64-macos-gnu/simd/logic.h
index ef5b125e34..38bd9bf58c 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/logic.h
+++ b/lib/libc/include/x86_64-macos-gnu/simd/logic.h
@@ -1312,4 +1312,4 @@ static inline SIMD_CFUNC simd_double8 simd_bitselect(simd_double8 x, simd_double
}
#endif
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* __SIMD_LOGIC_HEADER__ */
+#endif /* __SIMD_LOGIC_HEADER__ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/math.h b/lib/libc/include/x86_64-macos-gnu/simd/math.h
index 7443b51fc9..5e2b31cae2 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/math.h
+++ b/lib/libc/include/x86_64-macos-gnu/simd/math.h
@@ -5376,4 +5376,4 @@ static inline SIMD_CFUNC simd_double8 simd_muladd(simd_double8 x, simd_double8 y
} /* extern "C" */
#endif
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* SIMD_MATH_HEADER */
+#endif /* SIMD_MATH_HEADER */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/packed.h b/lib/libc/include/x86_64-macos-gnu/simd/packed.h
index 435608df73..dfdc199999 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/packed.h
+++ b/lib/libc/include/x86_64-macos-gnu/simd/packed.h
@@ -1028,4 +1028,4 @@ typedef simd_packed_double4 packed_double4;
typedef simd_packed_double8 packed_double8;
# endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/simd/quaternion.h b/lib/libc/include/x86_64-macos-gnu/simd/quaternion.h
index a1b46be335..32158d7e8d 100644
--- a/lib/libc/include/x86_64-macos-gnu/simd/quaternion.h
+++ b/lib/libc/include/x86_64-macos-gnu/simd/quaternion.h
@@ -1189,4 +1189,4 @@ static SIMD_NOINLINE simd_quatd simd_bezier(simd_quatd q0, simd_quatd q1, simd_q
} /* extern "C" */
#endif /* __cplusplus */
#endif /* SIMD_COMPILER_HAS_REQUIRED_FEATURES */
-#endif /* SIMD_QUATERNIONS */
+#endif /* SIMD_QUATERNIONS */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/spawn.h b/lib/libc/include/x86_64-macos-gnu/spawn.h
index a80f4d936a..8441df3abe 100644
--- a/lib/libc/include/x86_64-macos-gnu/spawn.h
+++ b/lib/libc/include/x86_64-macos-gnu/spawn.h
@@ -162,4 +162,4 @@ int posix_spawn_file_actions_addfchdir_np(posix_spawn_file_actions_t *,
__END_DECLS
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
-#endif /* _SPAWN_H_ */
+#endif /* _SPAWN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/stdio.h b/lib/libc/include/x86_64-macos-gnu/stdio.h
index ab46f071ea..0a756d415d 100644
--- a/lib/libc/include/x86_64-macos-gnu/stdio.h
+++ b/lib/libc/include/x86_64-macos-gnu/stdio.h
@@ -407,4 +407,4 @@ __END_DECLS
#include <secure/_stdio.h>
#endif
-#endif /* _STDIO_H_ */
+#endif /* _STDIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/stdlib.h b/lib/libc/include/x86_64-macos-gnu/stdlib.h
index 035e6c0adc..a5b61930fd 100644
--- a/lib/libc/include/x86_64-macos-gnu/stdlib.h
+++ b/lib/libc/include/x86_64-macos-gnu/stdlib.h
@@ -367,4 +367,4 @@ __END_DECLS
#include <xlocale/_stdlib.h>
#endif /* _USE_EXTENDED_LOCALES_ */
-#endif /* _STDLIB_H_ */
+#endif /* _STDLIB_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/string.h b/lib/libc/include/x86_64-macos-gnu/string.h
index 6329c62d8b..bca8f8c881 100644
--- a/lib/libc/include/x86_64-macos-gnu/string.h
+++ b/lib/libc/include/x86_64-macos-gnu/string.h
@@ -190,4 +190,4 @@ __END_DECLS
#include <secure/_string.h>
#endif
-#endif /* _STRING_H_ */
+#endif /* _STRING_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_attr_t.h b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_attr_t.h
index cba5882afb..a71842cb99 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_attr_t.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_attr_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_ATTR_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_attr_t */
typedef __darwin_pthread_attr_t pthread_attr_t;
-#endif /* _PTHREAD_ATTR_T */
+#endif /* _PTHREAD_ATTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_cond_t.h b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_cond_t.h
index b6a7b42f4a..3eceff6274 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_cond_t.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_cond_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_COND_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_cond_t */
typedef __darwin_pthread_cond_t pthread_cond_t;
-#endif /* _PTHREAD_COND_T */
+#endif /* _PTHREAD_COND_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_condattr_t.h b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_condattr_t.h
index 6e9227a8a3..7fd62badd7 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_condattr_t.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_condattr_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_CONDATTR_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_condattr_t */
typedef __darwin_pthread_condattr_t pthread_condattr_t;
-#endif /* _PTHREAD_CONDATTR_T */
+#endif /* _PTHREAD_CONDATTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h
index 75c4e350b4..dc1f013f3b 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlock_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_RWLOCK_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_rwlock_t */
typedef __darwin_pthread_rwlock_t pthread_rwlock_t;
-#endif /* _PTHREAD_RWLOCK_T */
+#endif /* _PTHREAD_RWLOCK_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h
index 6ccd234725..99fda712f4 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_rwlockattr_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_RWLOCKATTR_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_rwlockattr_t */
typedef __darwin_pthread_rwlockattr_t pthread_rwlockattr_t;
-#endif /* _PTHREAD_RWLOCKATTR_T */
+#endif /* _PTHREAD_RWLOCKATTR_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_t.h b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_t.h
index 4d9e3dac95..87f42ee9aa 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_t.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_t.h
@@ -29,4 +29,4 @@
#define _PTHREAD_T
#include <sys/_pthread/_pthread_types.h> /* __darwin_pthread_t */
typedef __darwin_pthread_t pthread_t;
-#endif /* _PTHREAD_T */
+#endif /* _PTHREAD_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_types.h b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_types.h
index d9d51b89ea..7aa42bdff1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_types.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_pthread/_pthread_types.h
@@ -117,4 +117,4 @@ typedef struct _opaque_pthread_rwlock_t __darwin_pthread_rwlock_t;
typedef struct _opaque_pthread_rwlockattr_t __darwin_pthread_rwlockattr_t;
typedef struct _opaque_pthread_t *__darwin_pthread_t;
-#endif // _SYS__PTHREAD_TYPES_H_
+#endif // _SYS__PTHREAD_TYPES_H_ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_select.h b/lib/libc/include/x86_64-macos-gnu/sys/_select.h
index 567d621856..70842ca2f5 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_select.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_select.h
@@ -49,4 +49,4 @@ __DARWIN_ALIAS_C(select)
#endif /* _DARWIN_C_SOURCE || _DARWIN_UNLIMITED_SELECT */
;
-#endif /* !_SYS__SELECT_H_ */
+#endif /* !_SYS__SELECT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_symbol_aliasing.h b/lib/libc/include/x86_64-macos-gnu/sys/_symbol_aliasing.h
index 1bbcd58ebd..17b4d6fe37 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_symbol_aliasing.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_symbol_aliasing.h
@@ -495,5 +495,4 @@
#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15_1(x) x
#else
#define __DARWIN_ALIAS_STARTING_MAC___MAC_10_15_1(x)
-#endif
-
+#endif \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_def.h b/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_def.h
index daadcfe6ec..ec0bad4289 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_def.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_types/_fd_def.h
@@ -111,4 +111,4 @@ __darwin_fd_clr(int _fd, struct fd_set *const _p)
#endif
#define __DARWIN_FD_COPY(f, t) bcopy(f, t, sizeof(*(f)))
-#endif /* _FD_SET */
+#endif /* _FD_SET */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_int8_t.h b/lib/libc/include/x86_64-macos-gnu/sys/_types/_int8_t.h
index 9176298a5f..15b281d533 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_int8_t.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_types/_int8_t.h
@@ -28,4 +28,4 @@
#ifndef _INT8_T
#define _INT8_T
typedef __signed char int8_t;
-#endif /* _INT8_T */
+#endif /* _INT8_T */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ucontext.h b/lib/libc/include/x86_64-macos-gnu/sys/_types/_ucontext.h
index 65184e44e4..1e563f4581 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/_types/_ucontext.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/_types/_ucontext.h
@@ -55,4 +55,4 @@ _STRUCT_UCONTEXT
/* user context */
typedef _STRUCT_UCONTEXT ucontext_t; /* [???] user context */
-#endif /* _STRUCT_UCONTEXT */
+#endif /* _STRUCT_UCONTEXT */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/acl.h b/lib/libc/include/x86_64-macos-gnu/sys/acl.h
index 62240bfc87..dc134613d1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/acl.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/acl.h
@@ -208,4 +208,4 @@ extern ssize_t acl_size(acl_t acl);
extern char *acl_to_text(acl_t acl, ssize_t *len_p);
__END_DECLS
-#endif /* _SYS_ACL_H */
+#endif /* _SYS_ACL_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/attr.h b/lib/libc/include/x86_64-macos-gnu/sys/attr.h
index c9b825b0ae..7de047ec5b 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/attr.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/attr.h
@@ -576,4 +576,4 @@ struct searchstate {
#define FST_EOF (-1) /* end-of-file offset */
#endif /* __APPLE_API_UNSTABLE */
-#endif /* !_SYS_ATTR_H_ */
+#endif /* !_SYS_ATTR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/cdefs.h b/lib/libc/include/x86_64-macos-gnu/sys/cdefs.h
index 443b7496a5..b2b091e28e 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/cdefs.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/cdefs.h
@@ -852,4 +852,4 @@
typedef _type _name; enum __VA_ARGS__ __enum_closed __enum_options
#endif
-#endif /* !_CDEFS_H_ */
+#endif /* !_CDEFS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/event.h b/lib/libc/include/x86_64-macos-gnu/sys/event.h
index de14e54236..1fbce9a75c 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/event.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/event.h
@@ -393,4 +393,4 @@ __END_DECLS
-#endif /* !_SYS_EVENT_H_ */
+#endif /* !_SYS_EVENT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/fcntl.h b/lib/libc/include/x86_64-macos-gnu/sys/fcntl.h
index ef0db5a3cf..9326ed0dab 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/fcntl.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/fcntl.h
@@ -554,4 +554,4 @@ int filesec_unset_property(filesec_t, filesec_property_t) __OSX_AVAILABLE_ST
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
__END_DECLS
-#endif /* !_SYS_FCNTL_H_ */
+#endif /* !_SYS_FCNTL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/ioccom.h b/lib/libc/include/x86_64-macos-gnu/sys/ioccom.h
index cabce8cf7e..39c6964568 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/ioccom.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/ioccom.h
@@ -96,4 +96,4 @@
/* this should be _IORW, but stdio got there first */
#define _IOWR(g, n, t) _IOC(IOC_INOUT, (g), (n), sizeof(t))
-#endif /* !_SYS_IOCCOM_H_ */
+#endif /* !_SYS_IOCCOM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/kauth.h b/lib/libc/include/x86_64-macos-gnu/sys/kauth.h
index d2f1916262..99784e35c8 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/kauth.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/kauth.h
@@ -404,4 +404,4 @@ typedef struct kauth_filesec *kauth_filesec_t;
#endif /* __APPLE_API_EVOLVING */
-#endif /* _SYS_KAUTH_H */
+#endif /* _SYS_KAUTH_H */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/mman.h b/lib/libc/include/x86_64-macos-gnu/sys/mman.h
index 45ed2b8f8c..fec1caac71 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/mman.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/mman.h
@@ -247,4 +247,4 @@ int minherit(void *, size_t, int);
__END_DECLS
-#endif /* !_SYS_MMAN_H_ */
+#endif /* !_SYS_MMAN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/mount.h b/lib/libc/include/x86_64-macos-gnu/sys/mount.h
index b1d5386eae..0a77b455a6 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/mount.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/mount.h
@@ -420,4 +420,4 @@ int unmount(const char *, int);
int getvfsbyname(const char *, struct vfsconf *);
__END_DECLS
-#endif /* !_SYS_MOUNT_H_ */
+#endif /* !_SYS_MOUNT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/param.h b/lib/libc/include/x86_64-macos-gnu/sys/param.h
index e271b592b3..88330ebbe7 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/param.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/param.h
@@ -250,4 +250,4 @@
#define FSHIFT 11 /* bits to right of fixed binary point */
#define FSCALE (1<<FSHIFT)
-#endif /* _SYS_PARAM_H_ */
+#endif /* _SYS_PARAM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/proc.h b/lib/libc/include/x86_64-macos-gnu/sys/proc.h
index ff25bdd61b..56d8b874d5 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/proc.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/proc.h
@@ -220,4 +220,4 @@ struct extern_proc {
-#endif /* !_SYS_PROC_H_ */
+#endif /* !_SYS_PROC_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/resource.h b/lib/libc/include/x86_64-macos-gnu/sys/resource.h
index a1d512cb2e..b6bf678d37 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/resource.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/resource.h
@@ -455,4 +455,4 @@ int setiopolicy_np(int, int, int) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPH
int setrlimit(int, const struct rlimit *) __DARWIN_ALIAS(setrlimit);
__END_DECLS
-#endif /* !_SYS_RESOURCE_H_ */
+#endif /* !_SYS_RESOURCE_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/shm.h b/lib/libc/include/x86_64-macos-gnu/sys/shm.h
index ab138cf564..0e5070a03b 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/shm.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/shm.h
@@ -183,4 +183,4 @@ int shmget(key_t, size_t, int);
__END_DECLS
-#endif /* !_SYS_SHM_H_ */
+#endif /* !_SYS_SHM_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/socket.h b/lib/libc/include/x86_64-macos-gnu/sys/socket.h
index eb4bf144a1..c8a0d27615 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/socket.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/socket.h
@@ -729,4 +729,4 @@ int disconnectx(int, sae_associd_t, sae_connid_t);
__END_DECLS
-#endif /* !_SYS_SOCKET_H_ */
+#endif /* !_SYS_SOCKET_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/sockio.h b/lib/libc/include/x86_64-macos-gnu/sys/sockio.h
index 367b96d498..c18d55b522 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/sockio.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/sockio.h
@@ -177,4 +177,4 @@
#define SIOCGIF6LOWPAN _IOWR('i', 197, struct ifreq) /* get 6LOWPAN config */
-#endif /* !_SYS_SOCKIO_H_ */
+#endif /* !_SYS_SOCKIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/spawn.h b/lib/libc/include/x86_64-macos-gnu/sys/spawn.h
index 498e6a9476..483f017b69 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/spawn.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/spawn.h
@@ -74,4 +74,4 @@
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
-#endif /* _SYS_SPAWN_H_ */
+#endif /* _SYS_SPAWN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/stat.h b/lib/libc/include/x86_64-macos-gnu/sys/stat.h
index 79dbd1dc95..7f2a490ee1 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/stat.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/stat.h
@@ -427,4 +427,4 @@ int stat64(const char *, struct stat64 *) __OSX_AVAILABLE_BUT_DEPRECATED(__M
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
__END_DECLS
-#endif /* !_SYS_STAT_H_ */
+#endif /* !_SYS_STAT_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/sysctl.h b/lib/libc/include/x86_64-macos-gnu/sys/sysctl.h
index 73293ac8f4..9e3d84e04c 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/sysctl.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/sysctl.h
@@ -772,4 +772,4 @@ __END_DECLS
#endif /* SYSCTL_DEF_ENABLED */
-#endif /* !_SYS_SYSCTL_H_ */
+#endif /* !_SYS_SYSCTL_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/syslimits.h b/lib/libc/include/x86_64-macos-gnu/sys/syslimits.h
index 28424700fa..ff60b66ff5 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/syslimits.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/syslimits.h
@@ -114,4 +114,4 @@
#endif /* __DARWIN_UNIX03 */
#endif /* !_ANSI_SOURCE */
-#endif /* !_SYS_SYSLIMITS_H_ */
+#endif /* !_SYS_SYSLIMITS_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/uio.h b/lib/libc/include/x86_64-macos-gnu/sys/uio.h
index 40305923fa..a5b1bad7cf 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/uio.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/uio.h
@@ -97,4 +97,4 @@ ssize_t readv(int, const struct iovec *, int) __DARWIN_ALIAS_C(readv);
ssize_t writev(int, const struct iovec *, int) __DARWIN_ALIAS_C(writev);
__END_DECLS
-#endif /* !_SYS_UIO_H_ */
+#endif /* !_SYS_UIO_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/sys/un.h b/lib/libc/include/x86_64-macos-gnu/sys/un.h
index 93d37f9e6e..a27ead5406 100644
--- a/lib/libc/include/x86_64-macos-gnu/sys/un.h
+++ b/lib/libc/include/x86_64-macos-gnu/sys/un.h
@@ -102,4 +102,4 @@ struct sockaddr_un {
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
-#endif /* !_SYS_UN_H_ */
+#endif /* !_SYS_UN_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_inttypes.h b/lib/libc/include/x86_64-macos-gnu/xlocale/_inttypes.h
index db72853f86..4da8f90c6d 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_inttypes.h
+++ b/lib/libc/include/x86_64-macos-gnu/xlocale/_inttypes.h
@@ -44,4 +44,4 @@ uintmax_t wcstoumax_l(const wchar_t * __restrict nptr,
#endif
__END_DECLS
-#endif /* _XLOCALE__INTTYPES_H_ */
+#endif /* _XLOCALE__INTTYPES_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xlocale/_wchar.h b/lib/libc/include/x86_64-macos-gnu/xlocale/_wchar.h
index 260f540bd6..b4af0f816e 100644
--- a/lib/libc/include/x86_64-macos-gnu/xlocale/_wchar.h
+++ b/lib/libc/include/x86_64-macos-gnu/xlocale/_wchar.h
@@ -142,4 +142,4 @@ __END_DECLS
#pragma GCC poison fgetwln_l fgetws_l fputwc_l fputws_l fwprintf_l fwscanf_l mbrtowc_l mbsnrtowcs_l mbsrtowcs_l putwc_l putwchar_l swprintf_l swscanf_l vfwprintf_l vfwscanf_l vswprintf_l vswscanf_l vwprintf_l vwscanf_l wcrtomb_l wcscoll_l wcsftime_l wcsftime_l wcsnrtombs_l wcsrtombs_l wcstod_l wcstof_l wcstol_l wcstold_l wcstoll_l wcstoul_l wcstoull_l wcswidth_l wcsxfrm_l wcwidth_l wprintf_l wscanf_l
#endif
-#endif /* _XLOCALE__WCHAR_H_ */
+#endif /* _XLOCALE__WCHAR_H_ */ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xpc/availability.h b/lib/libc/include/x86_64-macos-gnu/xpc/availability.h
index a8339935bc..d4efcec685 100644
--- a/lib/libc/include/x86_64-macos-gnu/xpc/availability.h
+++ b/lib/libc/include/x86_64-macos-gnu/xpc/availability.h
@@ -117,4 +117,4 @@ __attribute__((availability(macosx, introduced=10.14)))
#define __API_AVAILABLE(...)
#endif
-#endif // __XPC_AVAILABILITY_H__
+#endif // __XPC_AVAILABILITY_H__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xpc/base.h b/lib/libc/include/x86_64-macos-gnu/xpc/base.h
index 830ae5b36b..8fce33a1d4 100644
--- a/lib/libc/include/x86_64-macos-gnu/xpc/base.h
+++ b/lib/libc/include/x86_64-macos-gnu/xpc/base.h
@@ -208,4 +208,4 @@ __BEGIN_DECLS
__END_DECLS
-#endif // __XPC_BASE_H__
+#endif // __XPC_BASE_H__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xpc/connection.h b/lib/libc/include/x86_64-macos-gnu/xpc/connection.h
index 4afa6c5a48..7a6ac1a2f9 100644
--- a/lib/libc/include/x86_64-macos-gnu/xpc/connection.h
+++ b/lib/libc/include/x86_64-macos-gnu/xpc/connection.h
@@ -744,4 +744,4 @@ xpc_connection_set_finalizer_f(xpc_connection_t connection,
__END_DECLS
XPC_ASSUME_NONNULL_END
-#endif // __XPC_CONNECTION_H__
+#endif // __XPC_CONNECTION_H__ \ No newline at end of file
diff --git a/lib/libc/include/x86_64-macos-gnu/xpc/xpc.h b/lib/libc/include/x86_64-macos-gnu/xpc/xpc.h
index 48ab7c8d65..cb6cbb3997 100644
--- a/lib/libc/include/x86_64-macos-gnu/xpc/xpc.h
+++ b/lib/libc/include/x86_64-macos-gnu/xpc/xpc.h
@@ -2660,4 +2660,4 @@ xpc_set_event_stream_handler(const char *stream,
__END_DECLS
XPC_ASSUME_NONNULL_END
-#endif // __XPC_H__
+#endif // __XPC_H__ \ No newline at end of file
diff --git a/lib/std/macho.zig b/lib/std/macho.zig
index ec0d23cd92..016590e36b 100644
--- a/lib/std/macho.zig
+++ b/lib/std/macho.zig
@@ -1257,6 +1257,33 @@ pub const VM_PROT_WRITE: vm_prot_t = 0x2;
/// VM execute permission
pub const VM_PROT_EXECUTE: vm_prot_t = 0x4;
+pub const BIND_TYPE_POINTER: u8 = 1;
+pub const BIND_TYPE_TEXT_ABSOLUTE32: u8 = 2;
+pub const BIND_TYPE_TEXT_PCREL32: u8 = 3;
+
+pub const BIND_SPECIAL_DYLIB_SELF: i8 = 0;
+pub const BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE: i8 = -1;
+pub const BIND_SPECIAL_DYLIB_FLAT_LOOKUP: i8 = -2;
+
+pub const BIND_SYMBOL_FLAGS_WEAK_IMPORT: u8 = 0x1;
+pub const BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION: u8 = 0x8;
+
+pub const BIND_OPCODE_MASK: u8 = 0xf0;
+pub const BIND_IMMEDIATE_MASK: u8 = 0x0f;
+pub const BIND_OPCODE_DONE: u8 = 0x00;
+pub const BIND_OPCODE_SET_DYLIB_ORDINAL_IMM: u8 = 0x10;
+pub const BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB: u8 = 0x20;
+pub const BIND_OPCODE_SET_DYLIB_SPECIAL_IMM: u8 = 0x30;
+pub const BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM: u8 = 0x40;
+pub const BIND_OPCODE_SET_TYPE_IMM: u8 = 0x50;
+pub const BIND_OPCODE_SET_ADDEND_SLEB: u8 = 0x60;
+pub const BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB: u8 = 0x70;
+pub const BIND_OPCODE_ADD_ADDR_ULEB: 0x80;
+pub const BIND_OPCODE_DO_BIND: u8 = 0x90;
+pub const BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB: u8 = 0xa0;
+pub const BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED: u8 = 0xb0;
+pub const BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB: u8 = xc0;
+
pub const reloc_type_x86_64 = packed enum(u4) {
/// for absolute addresses
X86_64_RELOC_UNSIGNED = 0,