Commit 26c88e4f45
Changed files (31)
lib
libc
include
aarch64-macos.13-none
mach
any-macos-any
sys
any-macos.12-any
any-macos.13-any
libkern
mach-o
net
simd
x86_64-macos.13-none
mach
i386
lib/libc/include/aarch64-macos.13-none/mach/arm/thread_status.h
@@ -76,6 +76,11 @@
#define ARM_STATE_FLAVOR_IS_OTHER_VALID(_flavor_) 0
#endif
+#define FLAVOR_MODIFIES_CORE_CPU_REGISTERS(x) \
+((x == ARM_THREAD_STATE) || \
+ (x == ARM_THREAD_STATE32) || \
+ (x == ARM_THREAD_STATE64))
+
#define VALID_THREAD_STATE_FLAVOR(x) \
((x == ARM_THREAD_STATE) || \
(x == ARM_VFP_STATE) || \
lib/libc/include/any-macos-any/sys/timex.h
@@ -0,0 +1,198 @@
+/*-
+ ***********************************************************************
+ * *
+ * Copyright (c) David L. Mills 1993-2001 *
+ * Copyright (c) Poul-Henning Kamp 2000-2001 *
+ * *
+ * 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, and that the name *
+ * University of Delaware not be used in advertising or publicity *
+ * pertaining to distribution of the software without specific, *
+ * written prior permission. The University of Delaware makes no *
+ * representations about the suitability this software for any *
+ * purpose. It is provided "as is" without express or implied *
+ * warranty. *
+ * *
+ ***********************************************************************
+ *
+ * $FreeBSD$
+ *
+ * This header file defines the Network Time Protocol (NTP) interfaces
+ * for user and daemon application programs.
+ *
+ * This file was originally created 17 Sep 93 by David L. Mills, Professor
+ * of University of Delaware, building on work which had already been ongoing
+ * for a decade and a half at that point in time.
+ *
+ * In 2000 the APIs got a upgrade from microseconds to nanoseconds,
+ * a joint work between Poul-Henning Kamp and David L. Mills.
+ *
+ */
+
+/*
+ * Copyright (c) 2017 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 _SYS_TIMEX_H_
+#define _SYS_TIMEX_H_ 1
+
+#include <sys/time.h>
+
+#define NTP_API 4 /* NTP API version */
+
+/*
+ * The following defines establish the performance envelope of the
+ * kernel discipline loop. Phase or frequency errors greater than
+ * NAXPHASE or MAXFREQ are clamped to these maxima. For update intervals
+ * less than MINSEC, the loop always operates in PLL mode; while, for
+ * update intervals greater than MAXSEC, the loop always operates in FLL
+ * mode. Between these two limits the operating mode is selected by the
+ * STA_FLL bit in the status word.
+ */
+
+#define MAXPHASE 500000000L /* max phase error (ns) */
+#define MAXFREQ 500000L /* max freq error (ns/s) */
+#define MINSEC 256 /* min FLL update interval (s) */
+#define MAXSEC 2048 /* max PLL update interval (s) */
+#define NANOSECOND 1000000000L /* nanoseconds in one second */
+#define SCALE_PPM (65536 / 1000) /* crude ns/s to scaled PPM */
+#define MAXTC 10 /* max time constant */
+
+/* Codes for PPS (pulse-per-second) signals or leap seconds are not used but kept
+ * unchanged and commented for future compatibility.
+ */
+
+/*
+ * Control mode codes (timex.modes)
+ */
+#define MOD_OFFSET 0x0001 /* set time offset */
+#define MOD_FREQUENCY 0x0002 /* set frequency offset */
+#define MOD_MAXERROR 0x0004 /* set maximum time error */
+#define MOD_ESTERROR 0x0008 /* set estimated time error */
+#define MOD_STATUS 0x0010 /* set clock status bits */
+#define MOD_TIMECONST 0x0020 /* set PLL time constant */
+#define MOD_PPSMAX 0x0040 /* set PPS maximum averaging time */
+#define MOD_TAI 0x0080 /* set TAI offset */
+#define MOD_MICRO 0x1000 /* select microsecond resolution */
+#define MOD_NANO 0x2000 /* select nanosecond resolution */
+#define MOD_CLKB 0x4000 /* select clock B */
+#define MOD_CLKA 0x8000 /* select clock A */
+
+/*
+ * Status codes (timex.status)
+ */
+#define STA_PLL 0x0001 /* enable PLL updates (rw) */
+#define STA_PPSFREQ 0x0002 /* enable PPS freq discipline (rw) */
+#define STA_PPSTIME 0x0004 /* enable PPS time discipline (rw) */
+#define STA_FLL 0x0008 /* enable FLL mode (rw) */
+#define STA_INS 0x0010 /* insert leap (rw) */
+#define STA_DEL 0x0020 /* delete leap (rw) */
+#define STA_UNSYNC 0x0040 /* clock unsynchronized (rw) */
+#define STA_FREQHOLD 0x0080 /* hold frequency (rw) */
+#define STA_PPSSIGNAL 0x0100 /* PPS signal present (ro) */
+#define STA_PPSJITTER 0x0200 /* PPS signal jitter exceeded (ro) */
+#define STA_PPSWANDER 0x0400 /* PPS signal wander exceeded (ro) */
+#define STA_PPSERROR 0x0800 /* PPS signal calibration error (ro) */
+#define STA_CLOCKERR 0x1000 /* clock hardware fault (ro) */
+#define STA_NANO 0x2000 /* resolution (0 = us, 1 = ns) (ro) */
+#define STA_MODE 0x4000 /* mode (0 = PLL, 1 = FLL) (ro) */
+#define STA_CLK 0x8000 /* clock source (0 = A, 1 = B) (ro) */
+
+#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
+ STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
+
+#define STA_SUPPORTED (STA_PLL | STA_FLL | STA_UNSYNC | STA_FREQHOLD | \
+ STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
+
+/*
+ * Clock states (ntptimeval.time_state)
+ */
+#define TIME_OK 0 /* no leap second warning */
+#define TIME_INS 1 /* insert leap second warning */
+#define TIME_DEL 2 /* delete leap second warning */
+#define TIME_OOP 3 /* leap second in progress */
+#define TIME_WAIT 4 /* leap second has occurred */
+#define TIME_ERROR 5 /* error (see status word) */
+
+/*
+ * NTP user interface -- ntp_gettime - used to read kernel clock values
+ */
+struct ntptimeval {
+ struct timespec time; /* current time (ns) (ro) */
+ long maxerror; /* maximum error (us) (ro) */
+ long esterror; /* estimated error (us) (ro) */
+ long tai; /* TAI offset */
+ int time_state; /* time status */
+};
+
+/*
+ * NTP daemon interface -- ntp_adjtime -- used to discipline CPU clock
+ * oscillator and control/determine status.
+ *
+ * Note: The offset, precision and jitter members are in microseconds if
+ * STA_NANO is zero and nanoseconds if not.
+ */
+struct timex {
+ unsigned int modes; /* clock mode bits (wo) */
+ long offset; /* time offset (ns/us) (rw) */
+ long freq; /* frequency offset (scaled PPM) (rw) */
+ long maxerror; /* maximum error (us) (rw) */
+ long esterror; /* estimated error (us) (rw) */
+ int status; /* clock status bits (rw) */
+ long constant; /* poll interval (log2 s) (rw) */
+ long precision; /* clock precision (ns/us) (ro) */
+ long tolerance; /* clock frequency tolerance (scaled
+ * PPM) (ro) */
+ /*
+ * The following read-only structure members are used by
+ * the PPS signal discipline that is currently not supported.
+ * They are included for compatibility.
+ */
+ long ppsfreq; /* PPS frequency (scaled PPM) (ro) */
+ long jitter; /* PPS jitter (ns/us) (ro) */
+ int shift; /* interval duration (s) (shift) (ro) */
+ long stabil; /* PPS stability (scaled PPM) (ro) */
+ long jitcnt; /* jitter limit exceeded (ro) */
+ long calcnt; /* calibration intervals (ro) */
+ long errcnt; /* calibration errors (ro) */
+ long stbcnt; /* stability limit exceeded (ro) */
+};
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+int ntp_adjtime(struct timex *);
+int ntp_gettime(struct ntptimeval *);
+#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
+__END_DECLS
+
+
+#endif /* !_SYS_TIMEX_H_ */
\ No newline at end of file
lib/libc/include/any-macos-any/libkern/OSKextLib.h → lib/libc/include/any-macos.12-any/libkern/OSKextLib.h
File renamed without changes
lib/libc/include/any-macos-any/sys/attr.h → lib/libc/include/any-macos.12-any/sys/attr.h
File renamed without changes
lib/libc/include/any-macos-any/xpc/availability.h → lib/libc/include/any-macos.12-any/xpc/availability.h
File renamed without changes
lib/libc/include/any-macos-any/unistd.h → lib/libc/include/any-macos.12-any/unistd.h
File renamed without changes
lib/libc/include/any-macos.13-any/libkern/OSKextLib.h
@@ -0,0 +1,572 @@
+/*
+ * Copyright (c) 2008 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 _LIBKERN_OSKEXTLIB_H
+#define _LIBKERN_OSKEXTLIB_H
+
+#include <sys/cdefs.h>
+__BEGIN_DECLS
+
+#include <stdint.h>
+#include <mach/kmod.h>
+#include <mach/vm_types.h>
+#include <uuid/uuid.h>
+
+#include <libkern/OSReturn.h>
+
+/*!
+ * @header
+ *
+ * Declares functions, basic return values, and other constants
+ * related to kernel extensions (kexts).
+ */
+
+#if PRAGMA_MARK
+#pragma mark -
+/********************************************************************/
+#pragma mark OSReturn Values for Kernel Extensions
+/********************************************************************/
+#endif
+/*!
+ * @group OSReturn Values for Kernel Extensions
+ * Many kext-related functions return these values,
+ * as well as those defined under
+ * <code>@link //apple_ref/c/tdef/OSReturn OSReturn@/link</code>
+ * and other variants of <code>kern_return_t</code>.
+ */
+
+
+#define sub_libkern_kext err_sub(2)
+#define libkern_kext_err(code) (sys_libkern|sub_libkern_kext|(code))
+
+
+/*!
+ * @define kOSKextReturnInternalError
+ * @abstract An internal error in the kext library.
+ * Contrast with <code>@link //apple_ref/c/econst/OSReturnError
+ * OSReturnError@/link</code>.
+ */
+#define kOSKextReturnInternalError libkern_kext_err(0x1)
+
+/*!
+ * @define kOSKextReturnNoMemory
+ * @abstract Memory allocation failed.
+ */
+#define kOSKextReturnNoMemory libkern_kext_err(0x2)
+
+/*!
+ * @define kOSKextReturnNoResources
+ * @abstract Some resource other than memory (such as available load tags)
+ * is exhausted.
+ */
+#define kOSKextReturnNoResources libkern_kext_err(0x3)
+
+/*!
+ * @define kOSKextReturnNotPrivileged
+ * @abstract The caller lacks privileges to perform the requested operation.
+ */
+#define kOSKextReturnNotPrivileged libkern_kext_err(0x4)
+
+/*!
+ * @define kOSKextReturnInvalidArgument
+ * @abstract Invalid argument.
+ */
+#define kOSKextReturnInvalidArgument libkern_kext_err(0x5)
+
+/*!
+ * @define kOSKextReturnNotFound
+ * @abstract Search item not found.
+ */
+#define kOSKextReturnNotFound libkern_kext_err(0x6)
+
+/*!
+ * @define kOSKextReturnBadData
+ * @abstract Malformed data (not used for XML).
+ */
+#define kOSKextReturnBadData libkern_kext_err(0x7)
+
+/*!
+ * @define kOSKextReturnSerialization
+ * @abstract Error converting or (un)serializing URL, string, or XML.
+ */
+#define kOSKextReturnSerialization libkern_kext_err(0x8)
+
+/*!
+ * @define kOSKextReturnUnsupported
+ * @abstract Operation is no longer or not yet supported.
+ */
+#define kOSKextReturnUnsupported libkern_kext_err(0x9)
+
+/*!
+ * @define kOSKextReturnDisabled
+ * @abstract Operation is currently disabled.
+ */
+#define kOSKextReturnDisabled libkern_kext_err(0xa)
+
+/*!
+ * @define kOSKextReturnNotAKext
+ * @abstract Bundle is not a kernel extension.
+ */
+#define kOSKextReturnNotAKext libkern_kext_err(0xb)
+
+/*!
+ * @define kOSKextReturnValidation
+ * @abstract Validation failures encountered; check diagnostics for details.
+ */
+#define kOSKextReturnValidation libkern_kext_err(0xc)
+
+/*!
+ * @define kOSKextReturnAuthentication
+ * @abstract Authetication failures encountered; check diagnostics for details.
+ */
+#define kOSKextReturnAuthentication libkern_kext_err(0xd)
+
+/*!
+ * @define kOSKextReturnDependencies
+ * @abstract Dependency resolution failures encountered; check diagnostics for details.
+ */
+#define kOSKextReturnDependencies libkern_kext_err(0xe)
+
+/*!
+ * @define kOSKextReturnArchNotFound
+ * @abstract Kext does not contain code for the requested architecture.
+ */
+#define kOSKextReturnArchNotFound libkern_kext_err(0xf)
+
+/*!
+ * @define kOSKextReturnCache
+ * @abstract An error occurred processing a system kext cache.
+ */
+#define kOSKextReturnCache libkern_kext_err(0x10)
+
+/*!
+ * @define kOSKextReturnDeferred
+ * @abstract Operation has been posted asynchronously to user space (kernel only).
+ */
+#define kOSKextReturnDeferred libkern_kext_err(0x11)
+
+/*!
+ * @define kOSKextReturnBootLevel
+ * @abstract Kext not loadable or operation not allowed at current boot level.
+ */
+#define kOSKextReturnBootLevel libkern_kext_err(0x12)
+
+/*!
+ * @define kOSKextReturnNotLoadable
+ * @abstract Kext cannot be loaded; check diagnostics for details.
+ */
+#define kOSKextReturnNotLoadable libkern_kext_err(0x13)
+
+/*!
+ * @define kOSKextReturnLoadedVersionDiffers
+ * @abstract A different version (or executable UUID, or executable by checksum)
+ * of the requested kext is already loaded.
+ */
+#define kOSKextReturnLoadedVersionDiffers libkern_kext_err(0x14)
+
+/*!
+ * @define kOSKextReturnDependencyLoadError
+ * @abstract A load error occurred on a dependency of the kext being loaded.
+ */
+#define kOSKextReturnDependencyLoadError libkern_kext_err(0x15)
+
+/*!
+ * @define kOSKextReturnLinkError
+ * @abstract A link failure occured with this kext or a dependency.
+ */
+#define kOSKextReturnLinkError libkern_kext_err(0x16)
+
+/*!
+ * @define kOSKextReturnStartStopError
+ * @abstract The kext start or stop routine returned an error.
+ */
+#define kOSKextReturnStartStopError libkern_kext_err(0x17)
+
+/*!
+ * @define kOSKextReturnInUse
+ * @abstract The kext is currently in use or has outstanding references,
+ * and cannot be unloaded.
+ */
+#define kOSKextReturnInUse libkern_kext_err(0x18)
+
+/*!
+ * @define kOSKextReturnTimeout
+ * @abstract A kext request has timed out.
+ */
+#define kOSKextReturnTimeout libkern_kext_err(0x19)
+
+/*!
+ * @define kOSKextReturnStopping
+ * @abstract The kext is in the process of stopping; requests cannot be made.
+ */
+#define kOSKextReturnStopping libkern_kext_err(0x1a)
+
+/*!
+ * @define kOSKextReturnSystemPolicy
+ * @abstract The kext was prevented from loading due to system policy.
+ */
+#define kOSKextReturnSystemPolicy libkern_kext_err(0x1b)
+
+/*!
+ * @define kOSKextReturnKCLoadFailure
+ * @abstract Loading of the System KC failed
+ */
+#define kOSKextReturnKCLoadFailure libkern_kext_err(0x1c)
+
+/*!
+ * @define kOSKextReturnKCLoadFailureSystemKC
+ * @abstract Loading of the System KC failed
+ *
+ * This a sub-code of kOSKextReturnKCLoadFailure. It can be OR'd together
+ * with: kOSKextReturnKCLoadFailureAuxKC
+ *
+ * If both the System and Aux KCs fail to load, then the error code will be:
+ * libkern_kext_err(0x1f)
+ */
+#define kOSKextReturnKCLoadFailureSystemKC libkern_kext_err(0x1d)
+
+/*!
+ * @define kOSKextReturnKCLoadFailureAuxKC
+ * @abstract Loading of the Aux KC failed
+ *
+ * This a sub-code of kOSKextReturnKCLoadFailure. It can be OR'd together
+ * with: kOSKextReturnKCLoadFailureSystemKC
+ *
+ * If both the System and Aux KCs fail to load, then the error code will be:
+ * libkern_kext_err(0x1f)
+ */
+#define kOSKextReturnKCLoadFailureAuxKC libkern_kext_err(0x1e)
+
+/* next available error is: libkern_kext_err(0x20) */
+
+#if PRAGMA_MARK
+#pragma mark -
+/********************************************************************/
+#pragma mark Kext/OSBundle Property List Keys
+/********************************************************************/
+#endif
+/*!
+ * @group Kext Property List Keys
+ * These constants cover CFBundle properties defined for kernel extensions.
+ * Because they are used in the kernel, if you want to use one with
+ * CFBundle APIs you'll need to wrap it in a <code>CFSTR()</code> macro.
+ */
+
+
+/*!
+ * @define kOSBundleCompatibleVersionKey
+ * @abstract A string giving the backwards-compatible version of a library kext
+ * in extended Mac OS 'vers' format (####.##.##s{1-255} where 's'
+ * is a build stage 'd', 'a', 'b', 'f' or 'fc').
+ */
+#define kOSBundleCompatibleVersionKey "OSBundleCompatibleVersion"
+
+/*!
+ * @define kOSBundleEnableKextLoggingKey
+ * @abstract Set to true to have the kernel kext logging spec applied
+ * to the kext.
+ * See <code>@link //apple_ref/c/econst/OSKextLogSpec
+ * OSKextLogSpec@/link</code>.
+ */
+#define kOSBundleEnableKextLoggingKey "OSBundleEnableKextLogging"
+
+/*!
+ * @define kOSBundleIsInterfaceKey
+ * @abstract A boolean value indicating whether the kext executable
+ * contains only symbol references.
+ */
+#define kOSBundleIsInterfaceKey "OSBundleIsInterface"
+
+/*!
+ * @define kOSBundleLibrariesKey
+ * @abstract A dictionary listing link dependencies for this kext.
+ * Keys are bundle identifiers, values are version strings.
+ */
+#define kOSBundleLibrariesKey "OSBundleLibraries"
+
+/*!
+ * @define kOSBundleRequiredKey
+ * @abstract A string indicating in which kinds of startup this kext
+ * may need to load during early startup (before
+ * <code>@link //apple_ref/doc/man/8/kextd kextcache(8)@/link</code>).
+ * @discussion
+ * The value is one of:
+ * <ul>
+ * <li>@link kOSBundleRequiredRoot "OSBundleRequiredRoot"@/link</li>
+ * <li>@link kOSBundleRequiredLocalRoot "OSBundleRequiredLocalRoot"@/link</li>
+ * <li>@link kOSBundleRequiredNetworkRoot "OSBundleRequiredNetworkRoot"@/link</li>
+ * <li>@link kOSBundleRequiredSafeBoot "OSBundleRequiredSafeBoot"@/link</li>
+ * <li>@link kOSBundleRequiredConsole "OSBundleRequiredConsole"@/link</li>
+ * </ul>
+ *
+ * Use this property judiciously.
+ * Every kext that declares a value other than "OSBundleRequiredSafeBoot"
+ * increases startup time, as the booter must read it into memory,
+ * or startup kext caches must include it.
+ */
+#define kOSBundleRequiredKey "OSBundleRequired"
+
+/*!
+ * @define kOSBundleRequireExplicitLoadKey
+ * @abstract A boolean value indicating whether the kext requires an
+ * explicit kextload in order to start/match.
+ */
+#define kOSBundleRequireExplicitLoadKey "OSBundleRequireExplicitLoad"
+
+/*!
+ * @define kOSBundleAllowUserLoadKey
+ * @abstract A boolean value indicating whether
+ * <code>@link //apple_ref/doc/man/8/kextd kextcache(8)@/link</code>
+ * will honor a non-root process's request to load a kext.
+ * @discussion
+ * See <code>@link //apple_ref/doc/compositePage/c/func/KextManagerLoadKextWithURL
+ * KextManagerLoadKextWithURL@/link</code>
+ * and <code>@link //apple_ref/doc/compositePage/c/func/KextManagerLoadKextWithIdentifier
+ * KextManagerLoadKextWithIdentifier@/link</code>.
+ */
+#define kOSBundleAllowUserLoadKey "OSBundleAllowUserLoad"
+
+/*!
+ * @define kOSBundleAllowUserTerminateKey
+ * @abstract A boolean value indicating whether the kextunload tool
+ * is allowed to issue IOService terminate to classes defined in this kext.
+ * @discussion A boolean value indicating whether the kextunload tool
+ * is allowed to issue IOService terminate to classes defined in this kext.
+ */
+#define kOSBundleAllowUserTerminateKey "OSBundleAllowUserTerminate"
+
+/*!
+ * @define kOSKernelResourceKey
+ * @abstract A boolean value indicating whether the kext represents a built-in
+ * component of the kernel.
+ */
+#define kOSKernelResourceKey "OSKernelResource"
+
+/*!
+ * @define kOSKextVariantOverrideKey
+ * @abstract A dictionary with target names as key and a target-specific variant
+ * name as value.
+ */
+#define kOSKextVariantOverrideKey "OSKextVariantOverride"
+
+/*!
+ * @define kIOKitPersonalitiesKey
+ * @abstract A dictionary of dictionaries used in matching for I/O Kit drivers.
+ */
+#define kIOKitPersonalitiesKey "IOKitPersonalities"
+
+/*
+ * @define kIOPersonalityPublisherKey
+ * @abstract Used in personalities sent to the I/O Kit,
+ * contains the CFBundleIdentifier of the kext
+ * that the personality originated in.
+ */
+#define kIOPersonalityPublisherKey "IOPersonalityPublisher"
+
+#if CONFIG_KEC_FIPS
+/*
+ * @define kAppleTextHashesKey
+ * @abstract A dictionary conataining hashes for corecrypto kext.
+ */
+#define kAppleTextHashesKey "AppleTextHashes"
+#endif
+
+/*!
+ * @define kOSMutableSegmentCopy
+ * @abstract A boolean value indicating whether the kext requires a copy of
+ * its mutable segments to be kept in memory, and then reset when the kext
+ * unloads. This should be used with caution as it will increase the
+ * amount of memory used by the kext.
+ */
+#define kOSMutableSegmentCopy "OSMutableSegmentCopy"
+
+
+#if PRAGMA_MARK
+/********************************************************************/
+#pragma mark Kext/OSBundle Property Deprecated Keys
+/********************************************************************/
+#endif
+/*
+ * @define kOSBundleDebugLevelKey
+ * @abstract
+ * Deprecated (used on some releases of Mac OS X prior to 10.6 Snow Leopard).
+ * Value is an integer from 1-6, corresponding to the verbose levels
+ * of kext tools on those releases.
+ * On 10.6 Snow Leopard, use <code>@link OSKextEnableKextLogging
+ * OSKextEnableKextLogging@/link</code>.
+ */
+#define kOSBundleDebugLevelKey "OSBundleDebugLevel"
+
+/*!
+ * @define kOSBundleSharedExecutableIdentifierKey
+ * @abstract Deprecated (used on some releases of Mac OS X
+ * prior to 10.6 Snow Leopard).
+ * Value is the bundle identifier of the pseudokext
+ * that contains an executable shared by this kext.
+ */
+#define kOSBundleSharedExecutableIdentifierKey "OSBundleSharedExecutableIdentifier"
+
+
+#if PRAGMA_MARK
+/********************************************************************/
+#pragma mark Kext/OSBundle Property List Values
+/********************************************************************/
+#endif
+
+/*!
+ * @group Kext Property List Values
+ * These constants encompass established values
+ * for kernel extension bundle properties.
+ */
+
+/*!
+ * @define kOSKextKernelIdentifier
+ * @abstract
+ * This is the CFBundleIdentifier user for the kernel itself.
+ */
+#define kOSKextKernelIdentifier "__kernel__"
+
+
+/*!
+ * @define kOSKextBundlePackageTypeKext
+ * @abstract
+ * The bundle type value for Kernel Extensions.
+ */
+#define kOSKextBundlePackageTypeKext "KEXT"
+
+/*!
+ * @define kOSKextBundlePackageTypeDriverKit
+ * @abstract
+ * The bundle type value for Driver Extensions.
+ */
+#define kOSKextBundlePackageTypeDriverKit "DEXT"
+
+/*!
+ * @define kOSBundleRequiredRoot
+ * @abstract
+ * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>
+ * value indicates that the kext may be needed to mount the root filesystem
+ * whether starting from a local or a network volume.
+ */
+#define kOSBundleRequiredRoot "Root"
+
+/*!
+ * @define kOSBundleRequiredLocalRoot
+ * @abstract
+ * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>
+ * value indicates that the kext may be needed to mount the root filesystem
+ * when starting from a local disk.
+ */
+#define kOSBundleRequiredLocalRoot "Local-Root"
+
+/*!
+ * @define kOSBundleRequiredNetworkRoot
+ * @abstract
+ * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>
+ * value indicates that the kext may be needed to mount the root filesystem
+ * when starting over a network connection.
+ */
+#define kOSBundleRequiredNetworkRoot "Network-Root"
+
+/*!
+ * @define kOSBundleRequiredSafeBoot
+ * @abstract
+ * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>
+ * value indicates that the kext can be loaded during a safe startup.
+ * This value does not normally cause the kext to be read by the booter
+ * or included in startup kext caches.
+ */
+#define kOSBundleRequiredSafeBoot "Safe Boot"
+
+/*!
+ * @define kOSBundleRequiredConsole
+ * @abstract
+ * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>
+ * value indicates that the kext may be needed for console access
+ * (specifically in a single-user startup when
+ * <code>@link //apple_ref/doc/man/8/kextd kextd(8)@/link</code>.
+ * does not run)
+ * and should be loaded during early startup.
+ */
+#define kOSBundleRequiredConsole "Console"
+
+/*!
+ * @define kOSBundleRequiredDriverKit
+ * @abstract
+ * This <code>@link kOSBundleRequiredKey OSBundleRequired@/link</code>
+ * value indicates that the driver extension's (DriverKit driver's)
+ * personalities must be present in the kernel at early boot (specifically
+ * before <code>@link //apple_ref/doc/man/8/kextd kextd(8)@/link</code> starts)
+ * in order to compete with kexts built into the prelinkedkernel. Note that
+ * kextd is still required to launch the user space driver binary. The IOKit
+ * matching will happen during early boot, and the actual driver launch
+ * will happen after kextd starts.
+ */
+#define kOSBundleRequiredDriverKit "DriverKit"
+
+#if PRAGMA_MARK
+#pragma mark -
+/********************************************************************/
+#pragma mark Kext Information
+/********************************************************************/
+#endif
+/*!
+ * @group Kext Information
+ * Types, constants, and macros providing a kext with information
+ * about itself.
+ */
+
+/*!
+ * @typedef OSKextLoadTag
+ *
+ * @abstract
+ * A unique identifier assigned to a loaded instanace of a kext.
+ *
+ * @discussion
+ * If a kext is unloaded and later reloaded, the new instance
+ * has a different load tag.
+ *
+ * A kext can get its own load tag in the <code>kmod_info_t</code>
+ * structure passed into its module start routine, as the
+ * <code>id</code> field (cast to this type).
+ */
+typedef uint32_t OSKextLoadTag;
+
+/*!
+ * @define kOSKextInvalidLoadTag
+ *
+ * @abstract
+ * A load tag value that will never be used for a loaded kext;
+ * indicates kext not found.
+ */
+#define kOSKextInvalidLoadTag ((OSKextLoadTag)(-1))
+
+
+__END_DECLS
+
+#endif /* _LIBKERN_OSKEXTLIB_H */
\ No newline at end of file
lib/libc/include/any-macos.13-any/mach/mach_host.h
@@ -297,7 +297,7 @@ extern
#endif /* mig_external */
kern_return_t mach_zone_info
(
- host_priv_t host,
+ mach_port_t host,
mach_zone_name_array_t *names,
mach_msg_type_number_t *namesCnt,
mach_zone_info_array_t *info,
@@ -385,7 +385,7 @@ extern
#endif /* mig_external */
kern_return_t mach_memory_info
(
- host_priv_t host,
+ mach_port_t host,
mach_zone_name_array_t *names,
mach_msg_type_number_t *namesCnt,
mach_zone_info_array_t *info,
lib/libc/include/any-macos.13-any/mach/mach_types.h
@@ -217,8 +217,12 @@ 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 nspace_name_t[1024]; /* 1024 == PATH_MAX */
+/*
+ * 8K, c.f. FSGETPATH_MAXBUFLEN in bsd/vfs/vfs_syscalls.c.
+ * These types should NEVER be allocated on the stack.
+ */
+typedef char nspace_path_t[8192];
+typedef char nspace_name_t[8192];
#define TASK_NULL ((task_t) 0)
#define TASK_NAME_NULL ((task_name_t) 0)
lib/libc/include/any-macos.13-any/mach/port.h
@@ -400,6 +400,7 @@ enum mach_port_guard_exception_codes {
kGUARD_EXC_MOD_REFS = 2,
kGUARD_EXC_INVALID_OPTIONS = 3,
kGUARD_EXC_SET_CONTEXT = 4,
+ kGUARD_EXC_THREAD_SET_STATE = 5,
kGUARD_EXC_UNGUARDED = 1u << 3,
kGUARD_EXC_INCORRECT_GUARD = 1u << 4,
kGUARD_EXC_IMMOVABLE = 1u << 5,
lib/libc/include/any-macos.13-any/mach/vm_statistics.h
@@ -284,11 +284,12 @@ typedef struct vm_purgeable_info *vm_purgeable_info_t;
#define VM_FLAGS_RETURN_4K_DATA_ADDR 0x00800000 /* 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
+ (alias) = (((flags) >> 24) & 0xff)
#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 | \
@@ -301,9 +302,11 @@ typedef struct vm_purgeable_info *vm_purgeable_info_t;
VM_FLAGS_SUPERPAGE_MASK | \
VM_FLAGS_TPRO | \
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 | \
lib/libc/include/any-macos.13-any/mach/vm_types.h
@@ -66,7 +66,7 @@ typedef uint32_t reg64_t;
* 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 */
+typedef uint32_t ppnum_t __kernel_ptr_semantics; /* Physical page number */
#define PPNUM_MAX UINT32_MAX
lib/libc/include/any-macos.13-any/mach-o/arm64/reloc.h
@@ -0,0 +1,254 @@
+/*
+ * Copyright (c) 2010 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 _MACHO_ARM64_RELOC_H_
+#define _MACHO_ARM64_RELOC_H_
+
+/*
+ * Relocations for arm64 are a bit different than for other architectures in
+ * Mach-O: Scattered relocations are not used. Almost all relocations produced
+ * by the compiler are external relocations. An external relocation has the
+ * r_extern bit set to 1 and the r_symbolnum field contains the symbol table
+ * index of the target label.
+ *
+ * When the assembler is generating relocations, if the target label is a local
+ * label (begins with 'L'), then the previous non-local label in the same
+ * section is used as the target of the external relocation. An addend is used
+ * with the distance from that non-local label to the target label. Only when
+ * there is no previous non-local label in the section is an internal
+ * relocation used.
+ *
+ * The addend (i.e. the 4 in _foo+4) is encoded either in the instruction or
+ * in the r_symbolnum of ARM64_RELOC_ADDEND.
+ * For ARM64_RELOC_UNSIGNED and ARM64_RELOC_AUTHENTICATED_POINTER, the addend
+ * is stored in the instruction. ARM64_RELOC_PAGE21, ARM64_RELOC_PAGEOFF12 and
+ * ARM64_RELOC_BRANCH26 must be preceded by an ARM64_RELOC_ADDEND if they need
+ * an addend. No other relocations support addends.
+ *
+ * The relocation types are:
+ *
+ * ARM64_RELOC_UNSIGNED // For pointer sized fixups
+ * ARM64_RELOC_SUBTRACTOR // must be followed by a ARM64_RELOC_UNSIGNED
+ * ARM64_RELOC_BRANCH26 // a BL instruction with pc-relative +-128MB displacement
+ * ARM64_RELOC_PAGE21 // pc-rel distance to page of target
+ * ARM64_RELOC_PAGEOFF12 // offset within page, scaled by r_length
+ * ARM64_RELOC_GOT_LOAD_PAGE21 // load with a pc-rel distance to page of a GOT entry
+ * ARM64_RELOC_GOT_LOAD_PAGEOFF12 // load with an offset within page, scaled by r_length, of GOT entry
+ * ARM64_RELOC_POINTER_TO_GOT // 32-bit pc-rel (or 64-bit absolute) offset to a GOT entry
+ * ARM64_RELOC_TLVP_LOAD_PAGE21 // tlv load with a pc-rel distance to page of a GOT entry
+ * ARM64_RELOC_TLVP_LOAD_PAGEOFF12 // tlv load with an offset within page, scaled by r_length, of GOT entry
+ * ARM64_RELOC_ADDEND // must be followed by ARM64_RELOC_BRANCH26/ARM64_RELOC_PAGE21/ARM64_RELOC_PAGEOFF12
+ * ARM64_RELOC_AUTHENTICATED_POINTER // 64-bit pointer with authentication
+ *
+ * The following are sample assembly instructions, followed by the relocation
+ * and section content they generate in an object file:
+ *
+ * (arm64_32 only)
+ * .long _foo
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 00 00 00 00
+ *
+ * (arm64_32 only)
+ * .long _foo + 4
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 04 00 00 00
+ *
+ * .quad _foo
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 00 00 00 00 00 00 00 00
+ *
+ * .quad _foo + 16
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 10 00 00 00 00 00 00 00
+ *
+ * .quad L1
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_prev
+ * 10 00 00 00 00 00 00 00
+ * // assumes _prev is the first non-local label 0x10 bytes before L1
+ * 10 00 00 00 00 00 00 00
+ *
+ * (arm64_32 only)
+ * .long _foo - _bar
+ * r_type=ARM64_RELOC_SUBTRACTOR, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_bar
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 00 00 00 00
+ *
+ * (arm64_32 only)
+ * .long _foo - _bar + 4
+ * r_type=ARM64_RELOC_SUBTRACTOR, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_bar
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 04 00 00 00
+ *
+ * .quad _foo - _bar
+ * r_type=ARM64_RELOC_SUBTRACTOR, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_bar
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 00 00 00 00 00 00 00 00
+ *
+ * .quad _foo - _bar + 4
+ * r_type=ARM64_RELOC_SUBTRACTOR, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_bar
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 04 00 00 00 00 00 00 00
+ *
+ * .long _foo - .
+ * r_type=ARM64_RELOC_SUBTRACTOR, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_prev
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * f8 ff ff ff
+ * // assumes _prev is the first non-local label 0x8 bytes before this
+ * // .quad
+ *
+ * .long _foo - L1
+ * r_type=ARM64_RELOC_SUBTRACTOR, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_prev
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * f8 ff ff ff
+ * // assumes _prev is the first non-local label 0x8 bytes before L1
+ *
+ * .quad _foo - .
+ * r_type=ARM64_RELOC_SUBTRACTOR, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_prev
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * f8 ff ff ff ff ff ff ff
+ * // assumes _prev is the first non-local label 0x8 bytes before this
+ * // .quad
+ *
+ * .quad _foo - L1
+ * r_type=ARM64_RELOC_SUBTRACTOR, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_prev
+ * r_type=ARM64_RELOC_UNSIGNED, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * f8 ff ff ff ff ff ff ff
+ * // assumes _prev is the first non-local label 0x8 bytes before L1
+ *
+ * .long L1 - _prev
+ * // No relocations. This is an assembly time constant.
+ * 12 00 00 00 00 00 00 00
+ * // assumes _prev is the first non-local label 0x12 bytes before L1
+ *
+ * .quad L1 - _prev
+ * // No relocations. This is an assembly time constant.
+ * 12 00 00 00 00 00 00 00
+ * // assumes _prev is the first non-local label 0x12 bytes before L1
+ *
+ * bl _foo
+ * r_type=ARM64_RELOC_BRANCH26, r_length=2, r_extern=1, r_pcrel=1, r_symbolnum=_foo
+ * 0x14000000
+ *
+ * bl _foo + 4
+ * r_type=ARM64_RELOC_ADDEND, r_length=2, r_extern=0, r_pcrel=0, r_symbolnum=0x000004
+ * r_type=ARM64_RELOC_BRANCH26, r_length=2, r_extern=1, r_pcrel=1, r_symbolnum=_foo
+ * 0x14000000
+ *
+ * adrp x0, _foo@PAGE
+ * r_type=ARM64_RELOC_PAGE21, r_length=2, r_extern=1, r_pcrel=1, r_symbolnum=_foo
+ * 0x90000000
+ *
+ * ldr x0, [x0, _foo@PAGEOFF]
+ * r_type=ARM64_RELOC_PAGEOFF12, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 0xf9400000
+ *
+ * adrp x0, _foo@PAGE + 0x24
+ * r_type=ARM64_RELOC_ADDEND, r_length=2, r_extern=0, r_pcrel=0, r_symbolnum=0x000024
+ * r_type=ARM64_RELOC_PAGE21, r_length=2, r_extern=1, r_pcrel=1, r_symbolnum=_foo
+ * 0x90000000
+ *
+ * ldr x0, [x0, _foo@PAGEOFF + 0x24]
+ * r_type=ARM64_RELOC_ADDEND, r_length=2, r_extern=0, r_pcrel=0, r_symbolnum=0x000024
+ * r_type=ARM64_RELOC_PAGEOFF12, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 0xf9400000
+ *
+ * adrp x0, _foo@GOTPAGE
+ * r_type=ARM64_RELOC_GOT_LOAD_PAGE21, r_length=2, r_extern=1, r_pcrel=1, r_symbolnum=_foo
+ * 0x90000000
+ *
+ * ldr x0, [x0, _foo@GOTPAGEOFF]
+ * r_type=ARM64_RELOC_GOT_LOAD_PAGEOFF12, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 0xf9400000
+ *
+ * adrp x0, _foo@TLVPPAGE
+ * r_type=ARM64_RELOC_TLVP_LOAD_PAGE21, r_length=2, r_extern=1, r_pcrel=1, r_symbolnum=_foo
+ * 0x90000000
+ *
+ * ldr x0, [x0, _foo@TLVPPAGEOFF]
+ * r_type=ARM64_RELOC_TLVP_LOAD_PAGEOFF12, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 0xf9400000
+ *
+ * .long _foo@GOT - .
+ * r_type=ARM64_RELOC_POINTER_TO_GOT, r_length=2, r_extern=1, r_pcrel=1, r_symbolnum=_foo
+ * 00 00 00 00
+ *
+ * (arm64_32 only)
+ * .long _foo@GOT
+ * r_type=ARM64_RELOC_POINTER_TO_GOT, r_length=2, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 00 00 00 00
+ *
+ * .quad _foo@GOT
+ * r_type=ARM64_RELOC_POINTER_TO_GOT, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 00 00 00 00 00 00 00 00
+ *
+ * (arm64e only)
+ * .quad _foo@AUTH(da,5,addr)
+ * r_type=ARM64_RELOC_AUTHENTICATED_POINTER, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 00 00 00 00 05 00 05 80
+ *
+ * (arm64e only)
+ * .quad (_foo + 0x10)@AUTH(da,5,addr)
+ * r_type=ARM64_RELOC_AUTHENTICATED_POINTER, r_length=3, r_extern=1, r_pcrel=0, r_symbolnum=_foo
+ * 10 00 00 00 05 00 05 80
+ *
+ *
+ */
+enum reloc_type_arm64
+{
+ ARM64_RELOC_UNSIGNED, // for pointers
+ ARM64_RELOC_SUBTRACTOR, // must be followed by a ARM64_RELOC_UNSIGNED
+ ARM64_RELOC_BRANCH26, // a B/BL instruction with 26-bit displacement
+ ARM64_RELOC_PAGE21, // pc-rel distance to page of target
+ ARM64_RELOC_PAGEOFF12, // offset within page, scaled by r_length
+ ARM64_RELOC_GOT_LOAD_PAGE21, // pc-rel distance to page of GOT slot
+ ARM64_RELOC_GOT_LOAD_PAGEOFF12, // offset within page of GOT slot,
+ // scaled by r_length
+ ARM64_RELOC_POINTER_TO_GOT, // for pointers to GOT slots
+ ARM64_RELOC_TLVP_LOAD_PAGE21, // pc-rel distance to page of TLVP slot
+ ARM64_RELOC_TLVP_LOAD_PAGEOFF12, // offset within page of TLVP slot,
+ // scaled by r_length
+ ARM64_RELOC_ADDEND, // must be followed by PAGE21 or PAGEOFF12
+
+ // An arm64e authenticated pointer.
+ //
+ // Represents a pointer to a symbol (like ARM64_RELOC_UNSIGNED).
+ // Additionally, the resulting pointer is signed. The signature is
+ // specified in the target location: the addend is restricted to the lower
+ // 32 bits (instead of the full 64 bits for ARM64_RELOC_UNSIGNED):
+ //
+ // |63|62|61-51|50-49| 48 |47 - 32|31 - 0|
+ // | 1| 0| 0 | key | addr | discriminator | addend |
+ //
+ // The key is one of:
+ // IA: 00 IB: 01
+ // DA: 10 DB: 11
+ //
+ // The discriminator field is used as extra signature diversification.
+ //
+ // The addr field indicates whether the target address should be blended
+ // into the discriminator.
+ //
+ ARM64_RELOC_AUTHENTICATED_POINTER,
+};
+
+#endif /* #ifndef _MACHO_ARM64_RELOC_H_ */
\ No newline at end of file
lib/libc/include/any-macos.13-any/mach-o/compact_unwind_encoding.h
@@ -0,0 +1,532 @@
+//===----------------------------------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//
+// Darwin's alternative to DWARF based unwind encodings.
+//
+//===----------------------------------------------------------------------===//
+
+
+#ifndef __COMPACT_UNWIND_ENCODING__
+#define __COMPACT_UNWIND_ENCODING__
+
+#include <stdint.h>
+
+//
+// Compilers can emit standard DWARF FDEs in the __TEXT,__eh_frame section
+// of object files. Or compilers can emit compact unwind information in
+// the __LD,__compact_unwind section.
+//
+// When the linker creates a final linked image, it will create a
+// __TEXT,__unwind_info section. This section is a small and fast way for the
+// runtime to access unwind info for any given function. If the compiler
+// emitted compact unwind info for the function, that compact unwind info will
+// be encoded in the __TEXT,__unwind_info section. If the compiler emitted
+// DWARF unwind info, the __TEXT,__unwind_info section will contain the offset
+// of the FDE in the __TEXT,__eh_frame section in the final linked image.
+//
+// Note: Previously, the linker would transform some DWARF unwind infos into
+// compact unwind info. But that is fragile and no longer done.
+
+
+//
+// The compact unwind endoding is a 32-bit value which encoded in an
+// architecture specific way, which registers to restore from where, and how
+// to unwind out of the function.
+//
+typedef uint32_t compact_unwind_encoding_t;
+
+
+// architecture independent bits
+enum {
+ UNWIND_IS_NOT_FUNCTION_START = 0x80000000,
+ UNWIND_HAS_LSDA = 0x40000000,
+ UNWIND_PERSONALITY_MASK = 0x30000000,
+};
+
+
+
+
+//
+// x86
+//
+// 1-bit: start
+// 1-bit: has lsda
+// 2-bit: personality index
+//
+// 4-bits: 0=old, 1=ebp based, 2=stack-imm, 3=stack-ind, 4=DWARF
+// ebp based:
+// 15-bits (5*3-bits per reg) register permutation
+// 8-bits for stack offset
+// frameless:
+// 8-bits stack size
+// 3-bits stack adjust
+// 3-bits register count
+// 10-bits register permutation
+//
+enum {
+ UNWIND_X86_MODE_MASK = 0x0F000000,
+ UNWIND_X86_MODE_EBP_FRAME = 0x01000000,
+ UNWIND_X86_MODE_STACK_IMMD = 0x02000000,
+ UNWIND_X86_MODE_STACK_IND = 0x03000000,
+ UNWIND_X86_MODE_DWARF = 0x04000000,
+
+ UNWIND_X86_EBP_FRAME_REGISTERS = 0x00007FFF,
+ UNWIND_X86_EBP_FRAME_OFFSET = 0x00FF0000,
+
+ UNWIND_X86_FRAMELESS_STACK_SIZE = 0x00FF0000,
+ UNWIND_X86_FRAMELESS_STACK_ADJUST = 0x0000E000,
+ UNWIND_X86_FRAMELESS_STACK_REG_COUNT = 0x00001C00,
+ UNWIND_X86_FRAMELESS_STACK_REG_PERMUTATION = 0x000003FF,
+
+ UNWIND_X86_DWARF_SECTION_OFFSET = 0x00FFFFFF,
+};
+
+enum {
+ UNWIND_X86_REG_NONE = 0,
+ UNWIND_X86_REG_EBX = 1,
+ UNWIND_X86_REG_ECX = 2,
+ UNWIND_X86_REG_EDX = 3,
+ UNWIND_X86_REG_EDI = 4,
+ UNWIND_X86_REG_ESI = 5,
+ UNWIND_X86_REG_EBP = 6,
+};
+
+//
+// For x86 there are four modes for the compact unwind encoding:
+// UNWIND_X86_MODE_EBP_FRAME:
+// EBP based frame where EBP is push on stack immediately after return address,
+// then ESP is moved to EBP. Thus, to unwind ESP is restored with the current
+// EPB value, then EBP is restored by popping off the stack, and the return
+// is done by popping the stack once more into the pc.
+// All non-volatile registers that need to be restored must have been saved
+// in a small range in the stack that starts EBP-4 to EBP-1020. The offset/4
+// is encoded in the UNWIND_X86_EBP_FRAME_OFFSET bits. The registers saved
+// are encoded in the UNWIND_X86_EBP_FRAME_REGISTERS bits as five 3-bit entries.
+// Each entry contains which register to restore.
+// UNWIND_X86_MODE_STACK_IMMD:
+// A "frameless" (EBP not used as frame pointer) function with a small
+// constant stack size. To return, a constant (encoded in the compact
+// unwind encoding) is added to the ESP. Then the return is done by
+// popping the stack into the pc.
+// All non-volatile registers that need to be restored must have been saved
+// on the stack immediately after the return address. The stack_size/4 is
+// encoded in the UNWIND_X86_FRAMELESS_STACK_SIZE (max stack size is 1024).
+// The number of registers saved is encoded in UNWIND_X86_FRAMELESS_STACK_REG_COUNT.
+// UNWIND_X86_FRAMELESS_STACK_REG_PERMUTATION constains which registers were
+// saved and their order.
+// UNWIND_X86_MODE_STACK_IND:
+// A "frameless" (EBP not used as frame pointer) function large constant
+// stack size. This case is like the previous, except the stack size is too
+// large to encode in the compact unwind encoding. Instead it requires that
+// the function contains "subl $nnnnnnnn,ESP" in its prolog. The compact
+// encoding contains the offset to the nnnnnnnn value in the function in
+// UNWIND_X86_FRAMELESS_STACK_SIZE.
+// UNWIND_X86_MODE_DWARF:
+// No compact unwind encoding is available. Instead the low 24-bits of the
+// compact encoding is the offset of the DWARF FDE in the __eh_frame section.
+// This mode is never used in object files. It is only generated by the
+// linker in final linked images which have only DWARF unwind info for a
+// function.
+//
+// The permutation encoding is a Lehmer code sequence encoded into a
+// single variable-base number so we can encode the ordering of up to
+// six registers in a 10-bit space.
+//
+// The following is the algorithm used to create the permutation encoding used
+// with frameless stacks. It is passed the number of registers to be saved and
+// an array of the register numbers saved.
+//
+//uint32_t permute_encode(uint32_t registerCount, const uint32_t registers[6])
+//{
+// uint32_t renumregs[6];
+// for (int i=6-registerCount; i < 6; ++i) {
+// int countless = 0;
+// for (int j=6-registerCount; j < i; ++j) {
+// if ( registers[j] < registers[i] )
+// ++countless;
+// }
+// renumregs[i] = registers[i] - countless -1;
+// }
+// uint32_t permutationEncoding = 0;
+// switch ( registerCount ) {
+// case 6:
+// permutationEncoding |= (120*renumregs[0] + 24*renumregs[1]
+// + 6*renumregs[2] + 2*renumregs[3]
+// + renumregs[4]);
+// break;
+// case 5:
+// permutationEncoding |= (120*renumregs[1] + 24*renumregs[2]
+// + 6*renumregs[3] + 2*renumregs[4]
+// + renumregs[5]);
+// break;
+// case 4:
+// permutationEncoding |= (60*renumregs[2] + 12*renumregs[3]
+// + 3*renumregs[4] + renumregs[5]);
+// break;
+// case 3:
+// permutationEncoding |= (20*renumregs[3] + 4*renumregs[4]
+// + renumregs[5]);
+// break;
+// case 2:
+// permutationEncoding |= (5*renumregs[4] + renumregs[5]);
+// break;
+// case 1:
+// permutationEncoding |= (renumregs[5]);
+// break;
+// }
+// return permutationEncoding;
+//}
+//
+
+
+
+
+//
+// x86_64
+//
+// 1-bit: start
+// 1-bit: has lsda
+// 2-bit: personality index
+//
+// 4-bits: 0=old, 1=rbp based, 2=stack-imm, 3=stack-ind, 4=DWARF
+// rbp based:
+// 15-bits (5*3-bits per reg) register permutation
+// 8-bits for stack offset
+// frameless:
+// 8-bits stack size
+// 3-bits stack adjust
+// 3-bits register count
+// 10-bits register permutation
+//
+enum {
+ UNWIND_X86_64_MODE_MASK = 0x0F000000,
+ UNWIND_X86_64_MODE_RBP_FRAME = 0x01000000,
+ UNWIND_X86_64_MODE_STACK_IMMD = 0x02000000,
+ UNWIND_X86_64_MODE_STACK_IND = 0x03000000,
+ UNWIND_X86_64_MODE_DWARF = 0x04000000,
+
+ UNWIND_X86_64_RBP_FRAME_REGISTERS = 0x00007FFF,
+ UNWIND_X86_64_RBP_FRAME_OFFSET = 0x00FF0000,
+
+ UNWIND_X86_64_FRAMELESS_STACK_SIZE = 0x00FF0000,
+ UNWIND_X86_64_FRAMELESS_STACK_ADJUST = 0x0000E000,
+ UNWIND_X86_64_FRAMELESS_STACK_REG_COUNT = 0x00001C00,
+ UNWIND_X86_64_FRAMELESS_STACK_REG_PERMUTATION = 0x000003FF,
+
+ UNWIND_X86_64_DWARF_SECTION_OFFSET = 0x00FFFFFF,
+};
+
+enum {
+ UNWIND_X86_64_REG_NONE = 0,
+ UNWIND_X86_64_REG_RBX = 1,
+ UNWIND_X86_64_REG_R12 = 2,
+ UNWIND_X86_64_REG_R13 = 3,
+ UNWIND_X86_64_REG_R14 = 4,
+ UNWIND_X86_64_REG_R15 = 5,
+ UNWIND_X86_64_REG_RBP = 6,
+};
+//
+// For x86_64 there are four modes for the compact unwind encoding:
+// UNWIND_X86_64_MODE_RBP_FRAME:
+// RBP based frame where RBP is push on stack immediately after return address,
+// then RSP is moved to RBP. Thus, to unwind RSP is restored with the current
+// EPB value, then RBP is restored by popping off the stack, and the return
+// is done by popping the stack once more into the pc.
+// All non-volatile registers that need to be restored must have been saved
+// in a small range in the stack that starts RBP-8 to RBP-2040. The offset/8
+// is encoded in the UNWIND_X86_64_RBP_FRAME_OFFSET bits. The registers saved
+// are encoded in the UNWIND_X86_64_RBP_FRAME_REGISTERS bits as five 3-bit entries.
+// Each entry contains which register to restore.
+// UNWIND_X86_64_MODE_STACK_IMMD:
+// A "frameless" (RBP not used as frame pointer) function with a small
+// constant stack size. To return, a constant (encoded in the compact
+// unwind encoding) is added to the RSP. Then the return is done by
+// popping the stack into the pc.
+// All non-volatile registers that need to be restored must have been saved
+// on the stack immediately after the return address. The stack_size/8 is
+// encoded in the UNWIND_X86_64_FRAMELESS_STACK_SIZE (max stack size is 2048).
+// The number of registers saved is encoded in UNWIND_X86_64_FRAMELESS_STACK_REG_COUNT.
+// UNWIND_X86_64_FRAMELESS_STACK_REG_PERMUTATION constains which registers were
+// saved and their order.
+// UNWIND_X86_64_MODE_STACK_IND:
+// A "frameless" (RBP not used as frame pointer) function large constant
+// stack size. This case is like the previous, except the stack size is too
+// large to encode in the compact unwind encoding. Instead it requires that
+// the function contains "subq $nnnnnnnn,RSP" in its prolog. The compact
+// encoding contains the offset to the nnnnnnnn value in the function in
+// UNWIND_X86_64_FRAMELESS_STACK_SIZE.
+// UNWIND_X86_64_MODE_DWARF:
+// No compact unwind encoding is available. Instead the low 24-bits of the
+// compact encoding is the offset of the DWARF FDE in the __eh_frame section.
+// This mode is never used in object files. It is only generated by the
+// linker in final linked images which have only DWARF unwind info for a
+// function.
+//
+
+
+// ARM64
+//
+// 1-bit: start
+// 1-bit: has lsda
+// 2-bit: personality index
+//
+// 4-bits: 4=frame-based, 3=DWARF, 2=frameless
+// frameless:
+// 12-bits of stack size
+// frame-based:
+// 4-bits D reg pairs saved
+// 5-bits X reg pairs saved
+// DWARF:
+// 24-bits offset of DWARF FDE in __eh_frame section
+//
+enum {
+ UNWIND_ARM64_MODE_MASK = 0x0F000000,
+ UNWIND_ARM64_MODE_FRAMELESS = 0x02000000,
+ UNWIND_ARM64_MODE_DWARF = 0x03000000,
+ UNWIND_ARM64_MODE_FRAME = 0x04000000,
+
+ UNWIND_ARM64_FRAME_X19_X20_PAIR = 0x00000001,
+ UNWIND_ARM64_FRAME_X21_X22_PAIR = 0x00000002,
+ UNWIND_ARM64_FRAME_X23_X24_PAIR = 0x00000004,
+ UNWIND_ARM64_FRAME_X25_X26_PAIR = 0x00000008,
+ UNWIND_ARM64_FRAME_X27_X28_PAIR = 0x00000010,
+ UNWIND_ARM64_FRAME_D8_D9_PAIR = 0x00000100,
+ UNWIND_ARM64_FRAME_D10_D11_PAIR = 0x00000200,
+ UNWIND_ARM64_FRAME_D12_D13_PAIR = 0x00000400,
+ UNWIND_ARM64_FRAME_D14_D15_PAIR = 0x00000800,
+
+ UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK = 0x00FFF000,
+ UNWIND_ARM64_DWARF_SECTION_OFFSET = 0x00FFFFFF,
+};
+// For arm64 there are three modes for the compact unwind encoding:
+// UNWIND_ARM64_MODE_FRAME:
+// This is a standard arm64 prolog where FP/LR are immediately pushed on the
+// stack, then SP is copied to FP. If there are any non-volatile registers
+// saved, then are copied into the stack frame in pairs in a contiguous
+// range right below the saved FP/LR pair. Any subset of the five X pairs
+// and four D pairs can be saved, but the memory layout must be in register
+// number order.
+// UNWIND_ARM64_MODE_FRAMELESS:
+// A "frameless" leaf function, where FP/LR are not saved. The return address
+// remains in LR throughout the function. If any non-volatile registers
+// are saved, they must be pushed onto the stack before any stack space is
+// allocated for local variables. The stack sized (including any saved
+// non-volatile registers) divided by 16 is encoded in the bits
+// UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK.
+// UNWIND_ARM64_MODE_DWARF:
+// No compact unwind encoding is available. Instead the low 24-bits of the
+// compact encoding is the offset of the DWARF FDE in the __eh_frame section.
+// This mode is never used in object files. It is only generated by the
+// linker in final linked images which have only DWARF unwind info for a
+// function.
+//
+
+
+#ifndef __OPEN_SOURCE__
+//
+// armv7k
+//
+// 1-bit: start
+// 1-bit: has lsda
+// 2-bit: personality index
+//
+// 4-bits: 1=frame, 2=frame+dregs, 4=dwarf
+//
+enum {
+ UNWIND_ARM_MODE_MASK = 0x0F000000,
+ UNWIND_ARM_MODE_FRAME = 0x01000000,
+ UNWIND_ARM_MODE_FRAME_D = 0x02000000,
+ UNWIND_ARM_MODE_DWARF = 0x04000000,
+
+ UNWIND_ARM_FRAME_STACK_ADJUST_MASK = 0x00C00000,
+
+ UNWIND_ARM_FRAME_FIRST_PUSH_R4 = 0x00000001,
+ UNWIND_ARM_FRAME_FIRST_PUSH_R5 = 0x00000002,
+ UNWIND_ARM_FRAME_FIRST_PUSH_R6 = 0x00000004,
+
+ UNWIND_ARM_FRAME_SECOND_PUSH_R8 = 0x00000008,
+ UNWIND_ARM_FRAME_SECOND_PUSH_R9 = 0x00000010,
+ UNWIND_ARM_FRAME_SECOND_PUSH_R10 = 0x00000020,
+ UNWIND_ARM_FRAME_SECOND_PUSH_R11 = 0x00000040,
+ UNWIND_ARM_FRAME_SECOND_PUSH_R12 = 0x00000080,
+
+ UNWIND_ARM_FRAME_D_REG_COUNT_MASK = 0x00000700,
+
+ UNWIND_ARM_DWARF_SECTION_OFFSET = 0x00FFFFFF,
+};
+// For armv7k there are three modes for the compact unwind encoding:
+// UNWIND_ARM_MODE_FRAME:
+// This is a standard arm prolog where lr/r7 are immediately pushed on the
+// stack. As part of that first push r4, r5, or r6 can be also pushed
+// and if so the FIRST_PUSH bit is set in the compact unwind. Additionally
+// there can be a second push multiple which can save r8 through r12.
+// If that is used, the registers saved is recorded with a SECOND_PUSH bit.
+// Lastly, for var-args support, the prolog may save r1, r2, r3 to the
+// stack before the frame push. If that is done the STACK_ADJUST_MASK
+// records that the stack pointer must be adjust (e.g 0x00800000 means
+// the stack pointer was adjusted 8 bytes down and the unwinder would
+// need to add back 8 bytes to SP when unwinding through this function.
+// UNWIND_ARM_MODE_FRAME_D:
+// This is the same as UNWIND_ARM_MODE_FRAME, except that additionally
+// some D registers were saved. The D_REG_COUNT_MASK contains which
+// set if D registers were saved and where. There are currently 8 (0-7)
+// possible D register save patterns supported.
+// UNWIND_ARM_MODE_DWARF:
+// No compact unwind encoding is available. Instead the low 24-bits of the
+// compact encoding is the offset of the dwarf FDE in the __eh_frame section.
+// The offset only exists in final linked images. It is zero in object files.
+#endif
+
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Relocatable Object Files: __LD,__compact_unwind
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// A compiler can generated compact unwind information for a function by adding
+// a "row" to the __LD,__compact_unwind section. This section has the
+// S_ATTR_DEBUG bit set, so the section will be ignored by older linkers.
+// It is removed by the new linker, so never ends up in final executables.
+// This section is a table, initially with one row per function (that needs
+// unwind info). The table columns and some conceptual entries are:
+//
+// range-start pointer to start of function/range
+// range-length
+// compact-unwind-encoding 32-bit encoding
+// personality-function or zero if no personality function
+// lsda or zero if no LSDA data
+//
+// The length and encoding fields are 32-bits. The other are all pointer sized.
+//
+// In x86_64 assembly, these entry would look like:
+//
+// .section __LD,__compact_unwind,regular,debug
+//
+// #compact unwind for _foo
+// .quad _foo
+// .set L1,LfooEnd-_foo
+// .long L1
+// .long 0x01010001
+// .quad 0
+// .quad 0
+//
+// #compact unwind for _bar
+// .quad _bar
+// .set L2,LbarEnd-_bar
+// .long L2
+// .long 0x01020011
+// .quad __gxx_personality
+// .quad except_tab1
+//
+//
+// Notes: There is no need for any labels in the the __compact_unwind section.
+// The use of the .set directive is to force the evaluation of the
+// range-length at assembly time, instead of generating relocations.
+//
+// To support future compiler optimizations where which non-volatile registers
+// are saved changes within a function (e.g. delay saving non-volatiles until
+// necessary), there can by multiple lines in the __compact_unwind table for one
+// function, each with a different (non-overlapping) range and each with
+// different compact unwind encodings that correspond to the non-volatiles
+// saved at that range of the function.
+//
+// If a particular function is so wacky that there is no compact unwind way
+// to encode it, then the compiler can emit traditional DWARF unwind info.
+// The runtime will use which ever is available.
+//
+// Runtime support for compact unwind encodings are only available on 10.6
+// and later. So, the compiler should not generate it when targeting pre-10.6.
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// Final Linked Images: __TEXT,__unwind_info
+//
+////////////////////////////////////////////////////////////////////////////////
+
+//
+// The __TEXT,__unwind_info section is laid out for an efficient two level lookup.
+// The header of the section contains a coarse index that maps function address
+// to the page (4096 byte block) containing the unwind info for that function.
+//
+
+#define UNWIND_SECTION_VERSION 1
+struct unwind_info_section_header
+{
+ uint32_t version; // UNWIND_SECTION_VERSION
+ uint32_t commonEncodingsArraySectionOffset;
+ uint32_t commonEncodingsArrayCount;
+ uint32_t personalityArraySectionOffset;
+ uint32_t personalityArrayCount;
+ uint32_t indexSectionOffset;
+ uint32_t indexCount;
+ // compact_unwind_encoding_t[]
+ // uint32_t personalities[]
+ // unwind_info_section_header_index_entry[]
+ // unwind_info_section_header_lsda_index_entry[]
+};
+
+struct unwind_info_section_header_index_entry
+{
+ uint32_t functionOffset;
+ uint32_t secondLevelPagesSectionOffset; // section offset to start of regular or compress page
+ uint32_t lsdaIndexArraySectionOffset; // section offset to start of lsda_index array for this range
+};
+
+struct unwind_info_section_header_lsda_index_entry
+{
+ uint32_t functionOffset;
+ uint32_t lsdaOffset;
+};
+
+//
+// There are two kinds of second level index pages: regular and compressed.
+// A compressed page can hold up to 1021 entries, but it cannot be used
+// if too many different encoding types are used. The regular page holds
+// 511 entries.
+//
+
+struct unwind_info_regular_second_level_entry
+{
+ uint32_t functionOffset;
+ compact_unwind_encoding_t encoding;
+};
+
+#define UNWIND_SECOND_LEVEL_REGULAR 2
+struct unwind_info_regular_second_level_page_header
+{
+ uint32_t kind; // UNWIND_SECOND_LEVEL_REGULAR
+ uint16_t entryPageOffset;
+ uint16_t entryCount;
+ // entry array
+};
+
+#define UNWIND_SECOND_LEVEL_COMPRESSED 3
+struct unwind_info_compressed_second_level_page_header
+{
+ uint32_t kind; // UNWIND_SECOND_LEVEL_COMPRESSED
+ uint16_t entryPageOffset;
+ uint16_t entryCount;
+ uint16_t encodingsPageOffset;
+ uint16_t encodingsCount;
+ // 32-bit entry array
+ // encodings array
+};
+
+#define UNWIND_INFO_COMPRESSED_ENTRY_FUNC_OFFSET(entry) (entry & 0x00FFFFFF)
+#define UNWIND_INFO_COMPRESSED_ENTRY_ENCODING_INDEX(entry) ((entry >> 24) & 0xFF)
+
+
+
+#endif
\ No newline at end of file
lib/libc/include/any-macos.13-any/mach-o/fat.h
@@ -42,7 +42,10 @@
* and contains the constants for the possible values of these types.
*/
#include <stdint.h>
+
+#if __has_include(<mach/machine.h>)
#include <mach/machine.h>
+#endif
#if __has_include(<architecture/byte_order.h>)
#include <architecture/byte_order.h>
@@ -57,8 +60,8 @@ struct fat_header {
};
struct fat_arch {
- cpu_type_t cputype; /* cpu specifier (int) */
- cpu_subtype_t cpusubtype; /* machine specifier (int) */
+ int32_t cputype; /* cpu specifier (int) */
+ int32_t cpusubtype; /* machine specifier (int) */
uint32_t offset; /* file offset to this object file */
uint32_t size; /* size of this object file */
uint32_t align; /* alignment as a power of 2 */
@@ -75,8 +78,8 @@ struct fat_arch {
#define FAT_CIGAM_64 0xbfbafeca /* NXSwapLong(FAT_MAGIC_64) */
struct fat_arch_64 {
- cpu_type_t cputype; /* cpu specifier (int) */
- cpu_subtype_t cpusubtype; /* machine specifier (int) */
+ int32_t cputype; /* cpu specifier (int) */
+ int32_t cpusubtype; /* machine specifier (int) */
uint64_t offset; /* file offset to this object file */
uint64_t size; /* size of this object file */
uint32_t align; /* alignment as a power of 2 */
lib/libc/include/any-macos.13-any/net/if_var.h
@@ -75,6 +75,7 @@
#endif
+
#ifdef __APPLE__
#define APPLE_IF_FAM_LOOPBACK 1
#define APPLE_IF_FAM_ETHERNET 2
lib/libc/include/any-macos.13-any/objc/NSObject.h
@@ -0,0 +1,115 @@
+/* NSObject.h
+ Copyright (c) 1994-2012, Apple Inc. All rights reserved.
+*/
+
+#ifndef _OBJC_NSOBJECT_H_
+#define _OBJC_NSOBJECT_H_
+
+#if __OBJC__
+
+#include <objc/objc.h>
+#include <objc/NSObjCRuntime.h>
+
+@class NSString, NSMethodSignature, NSInvocation;
+
+@protocol NSObject
+
+- (BOOL)isEqual:(id)object;
+@property (readonly) NSUInteger hash;
+
+@property (readonly) Class superclass;
+- (Class)class OBJC_SWIFT_UNAVAILABLE("use 'type(of: anObject)' instead");
+- (instancetype)self;
+
+- (id)performSelector:(SEL)aSelector;
+- (id)performSelector:(SEL)aSelector withObject:(id)object;
+- (id)performSelector:(SEL)aSelector withObject:(id)object1 withObject:(id)object2;
+
+- (BOOL)isProxy;
+
+- (BOOL)isKindOfClass:(Class)aClass;
+- (BOOL)isMemberOfClass:(Class)aClass;
+- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
+
+- (BOOL)respondsToSelector:(SEL)aSelector;
+
+- (instancetype)retain OBJC_ARC_UNAVAILABLE;
+- (oneway void)release OBJC_ARC_UNAVAILABLE;
+- (instancetype)autorelease OBJC_ARC_UNAVAILABLE;
+- (NSUInteger)retainCount OBJC_ARC_UNAVAILABLE;
+
+- (struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;
+
+@property (readonly, copy) NSString *description;
+@optional
+@property (readonly, copy) NSString *debugDescription;
+
+@end
+
+
+OBJC_AVAILABLE(10.0, 2.0, 9.0, 1.0, 2.0)
+OBJC_ROOT_CLASS
+OBJC_EXPORT
+@interface NSObject <NSObject> {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wobjc-interface-ivars"
+ Class isa OBJC_ISA_AVAILABILITY;
+#pragma clang diagnostic pop
+}
+
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wobjc-load-method"
++ (void)load;
+#pragma clang diagnostic pop
+
++ (void)initialize;
+- (instancetype)init
+#if NS_ENFORCE_NSOBJECT_DESIGNATED_INITIALIZER
+ NS_DESIGNATED_INITIALIZER
+#endif
+ ;
+
++ (instancetype)new OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
++ (instancetype)allocWithZone:(struct _NSZone *)zone OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
++ (instancetype)alloc OBJC_SWIFT_UNAVAILABLE("use object initializers instead");
+- (void)dealloc OBJC_SWIFT_UNAVAILABLE("use 'deinit' to define a de-initializer");
+
+- (void)finalize OBJC_DEPRECATED("Objective-C garbage collection is no longer supported");
+
+- (id)copy;
+- (id)mutableCopy;
+
++ (id)copyWithZone:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;
++ (id)mutableCopyWithZone:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE;
+
++ (BOOL)instancesRespondToSelector:(SEL)aSelector;
++ (BOOL)conformsToProtocol:(Protocol *)protocol;
+- (IMP)methodForSelector:(SEL)aSelector;
++ (IMP)instanceMethodForSelector:(SEL)aSelector;
+- (void)doesNotRecognizeSelector:(SEL)aSelector;
+
+- (id)forwardingTargetForSelector:(SEL)aSelector OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+- (void)forwardInvocation:(NSInvocation *)anInvocation OBJC_SWIFT_UNAVAILABLE("");
+- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector OBJC_SWIFT_UNAVAILABLE("");
+
++ (NSMethodSignature *)instanceMethodSignatureForSelector:(SEL)aSelector OBJC_SWIFT_UNAVAILABLE("");
+
+- (BOOL)allowsWeakReference UNAVAILABLE_ATTRIBUTE;
+- (BOOL)retainWeakReference UNAVAILABLE_ATTRIBUTE;
+
++ (BOOL)isSubclassOfClass:(Class)aClass;
+
++ (BOOL)resolveClassMethod:(SEL)sel OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
++ (BOOL)resolveInstanceMethod:(SEL)sel OBJC_AVAILABLE(10.5, 2.0, 9.0, 1.0, 2.0);
+
++ (NSUInteger)hash;
++ (Class)superclass;
++ (Class)class OBJC_SWIFT_UNAVAILABLE("use 'aClass.self' instead");
++ (NSString *)description;
++ (NSString *)debugDescription;
+
+@end
+
+#endif
+
+#endif
\ No newline at end of file
lib/libc/include/any-macos.13-any/objc/runtime.h
@@ -542,7 +542,7 @@ class_getInstanceMethod(Class _Nullable cls, SEL _Nonnull name)
*
* @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.
+ * class or its superclasses do not contain a class method with the specified selector.
*
* @note Note that this function searches superclasses for implementations,
* whereas \c class_copyMethodList does not.
@@ -1898,6 +1898,17 @@ _objc_realizeClassFromSwift(Class _Nullable cls, void * _Nullable previously)
struct objc_method_list;
+/* Used for testing only */
+
+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")
+
+;
+
/* Obsolete functions */
#if !0
@@ -1919,15 +1930,6 @@ class_respondsToMethod(Class _Nullable cls, SEL _Nonnull sel)
;
-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");
lib/libc/include/any-macos.13-any/simd/simd.h
@@ -0,0 +1,30 @@
+/* Copyright (c) 2014 Apple, Inc. All rights reserved.
+ *
+ * This header provides small vector (simd) and matrix types, and basic
+ * arithmetic and mathematical functions for them. The vast majority of these
+ * operations are implemented as header inlines, as they can be performed
+ * using just a few instructions on most processors.
+ *
+ * These functions are broken into two groups; vector and matrix. This header
+ * includes all of them, but these may also be included separately. Consult
+ * these two headers for detailed documentation of what types and operations
+ * are available.
+ */
+
+#ifndef __SIMD_HEADER__
+#define __SIMD_HEADER__
+
+#if __has_include(<realtime_safety/realtime_safety.h>)
+#include <realtime_safety/realtime_safety.h>
+REALTIME_SAFE_BEGIN
+#endif
+
+#include <simd/vector.h>
+#include <simd/matrix.h>
+#include <simd/quaternion.h>
+
+#if __has_include(<realtime_safety/realtime_safety.h>)
+REALTIME_SAFE_END
+#endif
+
+#endif
\ No newline at end of file
lib/libc/include/any-macos.13-any/sys/_symbol_aliasing.h
@@ -389,6 +389,18 @@
#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_2(x)
#endif
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 160300
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_3(x)
+#endif
+
+#if defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ >= 160400
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_4(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_IPHONE___IPHONE_16_4(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
@@ -645,4 +657,16 @@
#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_1(x) x
#else
#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_1(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 130200
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_2(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_2(x)
+#endif
+
+#if defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 130300
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_3(x) x
+#else
+#define __DARWIN_ALIAS_STARTING_MAC___MAC_13_3(x)
#endif
\ No newline at end of file
lib/libc/include/any-macos.13-any/sys/attr.h
@@ -0,0 +1,594 @@
+/*
+ * 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
+#define FSOPT_NOFOLLOW_ANY 0x00000800
+
+/* 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;
+
+#define ATTRIBUTE_SET_INIT(a) do {(a)->commonattr = (a)->volattr = (a)->dirattr = (a)->fileattr = (a)->forkattr = 0; } while(0)
+
+
+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_FSTYPENAME 0x00100000
+#define ATTR_VOL_FSSUBTYPE 0x00200000
+#define ATTR_VOL_SPACEUSED 0x00800000
+#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 0xF0B7FFFF
+
+/*
+ * 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
lib/libc/include/any-macos.13-any/sys/mman.h
@@ -0,0 +1,265 @@
+/*
+ * 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 */
+
+#define MAP_TPRO 0x80000 /* Allocate a region that will be protected by TPRO */
+
+#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
lib/libc/include/any-macos.13-any/sys/mount.h
@@ -404,12 +404,27 @@ struct fhandle {
};
typedef struct fhandle fhandle_t;
+/*
+ * Cryptex authentication
+ * Note: these 2 enums are used in conjunction, graftdmg_type is used for authentication while grafting
+ * cryptexes and cryptex_auth_type is currently used for authentication while mounting generic
+ * cryptexes. We need to make sure we do not use the reserved values in each for a new authentication type.
+ */
+
OS_ENUM(graftdmg_type, uint32_t,
GRAFTDMG_CRYPTEX_BOOT = 1,
GRAFTDMG_CRYPTEX_PREBOOT = 2,
- GRAFTDMG_CRYPTEX_DOWNLEVEL = 3);
-
-
+ GRAFTDMG_CRYPTEX_DOWNLEVEL = 3
+ // Reserved: CRYPTEX1_AUTH_ENV_GENERIC = 4,
+ // Reserved: CRYPTEX1_AUTH_ENV_GENERIC_SUPPLEMENTAL = 5
+ );
+
+OS_ENUM(cryptex_auth_type, uint32_t,
+ // Reserved: GRAFTDMG_CRYPTEX_BOOT = 1,
+ // Reserved: GRAFTDMG_CRYPTEX_PREBOOT = 2,
+ // Reserved: GRAFTDMG_CRYPTEX_DOWNLEVEL = 3,
+ CRYPTEX1_AUTH_ENV_GENERIC = 4,
+ CRYPTEX1_AUTH_ENV_GENERIC_SUPPLEMENTAL = 5);
__BEGIN_DECLS
lib/libc/include/any-macos.13-any/xpc/availability.h
@@ -0,0 +1,134 @@
+#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 __MAC_12_0
+#define __MAC_12_0 120000
+#define __AVAILABILITY_INTERNAL__MAC_12_0 \
+ __attribute__((availability(macosx, introduced=12.0)))
+#endif // __MAC_12_0
+
+#ifndef __MAC_13_3
+#define __MAC_13_3 130300
+#endif // __MAC_13_3
+
+#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
lib/libc/include/any-macos.13-any/AvailabilityInternal.h
@@ -55,7 +55,7 @@
#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_16_2
+ #define __TV_OS_VERSION_MAX_ALLOWED __TVOS_16_4
/* for compatibility with existing code. New code should use platform specific checks */
#define __IPHONE_OS_VERSION_MIN_REQUIRED 90000
#endif
@@ -65,7 +65,7 @@
#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_9_2
+ #define __WATCH_OS_VERSION_MAX_ALLOWED __WATCHOS_9_4
/* for compatibility with existing code. New code should use platform specific checks */
#define __IPHONE_OS_VERSION_MIN_REQUIRED 90000
#endif
@@ -75,7 +75,7 @@
#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 70100
+ #define __BRIDGE_OS_VERSION_MAX_ALLOWED 70300
/* for compatibility with existing code. New code should use platform specific checks */
#define __IPHONE_OS_VERSION_MIN_REQUIRED 110000
#endif
@@ -90,14 +90,14 @@
#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_13_1
+ #define __MAC_OS_X_VERSION_MAX_ALLOWED __MAC_13_3
#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_16_2
+ #define __IPHONE_OS_VERSION_MAX_ALLOWED __IPHONE_16_4
#endif
/* make sure a valid min is set */
#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_2_0
lib/libc/include/any-macos.13-any/AvailabilityMacros.h
@@ -123,6 +123,7 @@
#define MAC_OS_VERSION_12_0 120000
#define MAC_OS_VERSION_13_0 130000
#define MAC_OS_VERSION_13_1 130100
+#define MAC_OS_VERSION_13_3 130300
/*
* If min OS not specified, assume 10.4 for intel
@@ -149,10 +150,10 @@
* 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_13_1
+ #if MAC_OS_X_VERSION_MIN_REQUIRED > MAC_OS_VERSION_13_3
#define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_MIN_REQUIRED
#else
- #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_VERSION_13_1
+ #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_VERSION_13_3
#endif
#endif
lib/libc/include/any-macos.13-any/AvailabilityVersions.h
@@ -69,6 +69,8 @@
#define __MAC_12_3 120300
#define __MAC_13_0 130000
#define __MAC_13_1 130100
+#define __MAC_13_2 130200
+#define __MAC_13_3 130300
/* __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
@@ -134,6 +136,8 @@
#define __IPHONE_16_0 160000
#define __IPHONE_16_1 160100
#define __IPHONE_16_2 160200
+#define __IPHONE_16_3 160300
+#define __IPHONE_16_4 160400
/* __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
@@ -172,6 +176,8 @@
#define __TVOS_16_0 160000
#define __TVOS_16_1 160100
#define __TVOS_16_2 160200
+#define __TVOS_16_3 160300
+#define __TVOS_16_4 160400
#define __WATCHOS_1_0 10000
#define __WATCHOS_2_0 20000
@@ -207,6 +213,8 @@
#define __WATCHOS_9_0 90000
#define __WATCHOS_9_1 90100
#define __WATCHOS_9_2 90200
+#define __WATCHOS_9_3 90300
+#define __WATCHOS_9_4 90400
/*
* Set up standard Mac OS X versions
lib/libc/include/any-macos.13-any/Block.h
@@ -18,7 +18,12 @@
# endif
#endif
+#if __has_include(<Availability.h>)
#include <Availability.h>
+#else
+#define __OSX_AVAILABLE_STARTING(m,i)
+#endif
+
#include <TargetConditionals.h>
#include <sys/cdefs.h>
@@ -58,8 +63,8 @@ BLOCK_EXPORT void * _NSConcreteStackBlock[32]
// Type correct macros
-#define Block_copy(...) ((__typeof(__VA_ARGS__))_Block_copy((const void *)(__VA_ARGS__)))
-#define Block_release(...) _Block_release((const void *)(__VA_ARGS__))
+#define Block_copy(...) ((__typeof(__VA_ARGS__))_Block_copy(__unsafe_forge_single(const void *, (const void *)(__VA_ARGS__))))
+#define Block_release(...) _Block_release(__unsafe_forge_single(const void *, (const void *)(__VA_ARGS__)))
#endif
\ No newline at end of file
lib/libc/include/any-macos.13-any/tgmath.h
@@ -0,0 +1,1381 @@
+/*
+ * Copyright (c) 2009 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 __TGMATH_H
+#define __TGMATH_H
+
+/* C99 7.22 Type-generic math <tgmath.h>. */
+#include <math.h>
+
+/* C++ handles type genericity with overloading in math.h. */
+#ifndef __cplusplus
+#include <complex.h>
+
+#if __has_include(<realtime_safety/realtime_safety.h>)
+#include <realtime_safety/realtime_safety.h>
+REALTIME_SAFE_BEGIN
+#endif
+
+#define _TG_ATTRSp __attribute__((__overloadable__))
+#define _TG_ATTRS __attribute__((__overloadable__, __always_inline__))
+
+// promotion
+
+typedef void _Argument_type_is_not_arithmetic;
+static _Argument_type_is_not_arithmetic __tg_promote(...)
+ __attribute__((__unavailable__,__overloadable__));
+static double _TG_ATTRSp __tg_promote(int);
+static double _TG_ATTRSp __tg_promote(unsigned int);
+static double _TG_ATTRSp __tg_promote(long);
+static double _TG_ATTRSp __tg_promote(unsigned long);
+static double _TG_ATTRSp __tg_promote(long long);
+static double _TG_ATTRSp __tg_promote(unsigned long long);
+static float _TG_ATTRSp __tg_promote(float);
+static double _TG_ATTRSp __tg_promote(double);
+static long double _TG_ATTRSp __tg_promote(long double);
+static float _Complex _TG_ATTRSp __tg_promote(float _Complex);
+static double _Complex _TG_ATTRSp __tg_promote(double _Complex);
+static long double _Complex _TG_ATTRSp __tg_promote(long double _Complex);
+
+#define __tg_promote1(__x) (__typeof__(__tg_promote(__x)))
+#define __tg_promote2(__x, __y) (__typeof__(__tg_promote(__x) + \
+ __tg_promote(__y)))
+#define __tg_promote3(__x, __y, __z) (__typeof__(__tg_promote(__x) + \
+ __tg_promote(__y) + \
+ __tg_promote(__z)))
+
+// acos
+
+static float
+ _TG_ATTRS
+ __tg_acos(float __x) {return acosf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_acos(double __x) {return acos(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_acos(long double __x) {return acosl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_acos(float _Complex __x) {return cacosf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_acos(double _Complex __x) {return cacos(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_acos(long double _Complex __x) {return cacosl(__x);}
+
+#undef acos
+#define acos(__x) __tg_acos(__tg_promote1((__x))(__x))
+
+// asin
+
+static float
+ _TG_ATTRS
+ __tg_asin(float __x) {return asinf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_asin(double __x) {return asin(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_asin(long double __x) {return asinl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_asin(float _Complex __x) {return casinf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_asin(double _Complex __x) {return casin(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_asin(long double _Complex __x) {return casinl(__x);}
+
+#undef asin
+#define asin(__x) __tg_asin(__tg_promote1((__x))(__x))
+
+// atan
+
+static float
+ _TG_ATTRS
+ __tg_atan(float __x) {return atanf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_atan(double __x) {return atan(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_atan(long double __x) {return atanl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_atan(float _Complex __x) {return catanf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_atan(double _Complex __x) {return catan(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_atan(long double _Complex __x) {return catanl(__x);}
+
+#undef atan
+#define atan(__x) __tg_atan(__tg_promote1((__x))(__x))
+
+// acosh
+
+static float
+ _TG_ATTRS
+ __tg_acosh(float __x) {return acoshf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_acosh(double __x) {return acosh(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_acosh(long double __x) {return acoshl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_acosh(float _Complex __x) {return cacoshf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_acosh(double _Complex __x) {return cacosh(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_acosh(long double _Complex __x) {return cacoshl(__x);}
+
+#undef acosh
+#define acosh(__x) __tg_acosh(__tg_promote1((__x))(__x))
+
+// asinh
+
+static float
+ _TG_ATTRS
+ __tg_asinh(float __x) {return asinhf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_asinh(double __x) {return asinh(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_asinh(long double __x) {return asinhl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_asinh(float _Complex __x) {return casinhf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_asinh(double _Complex __x) {return casinh(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_asinh(long double _Complex __x) {return casinhl(__x);}
+
+#undef asinh
+#define asinh(__x) __tg_asinh(__tg_promote1((__x))(__x))
+
+// atanh
+
+static float
+ _TG_ATTRS
+ __tg_atanh(float __x) {return atanhf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_atanh(double __x) {return atanh(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_atanh(long double __x) {return atanhl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_atanh(float _Complex __x) {return catanhf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_atanh(double _Complex __x) {return catanh(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_atanh(long double _Complex __x) {return catanhl(__x);}
+
+#undef atanh
+#define atanh(__x) __tg_atanh(__tg_promote1((__x))(__x))
+
+// cos
+
+static float
+ _TG_ATTRS
+ __tg_cos(float __x) {return cosf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_cos(double __x) {return cos(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_cos(long double __x) {return cosl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_cos(float _Complex __x) {return ccosf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_cos(double _Complex __x) {return ccos(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_cos(long double _Complex __x) {return ccosl(__x);}
+
+#undef cos
+#define cos(__x) __tg_cos(__tg_promote1((__x))(__x))
+
+// sin
+
+static float
+ _TG_ATTRS
+ __tg_sin(float __x) {return sinf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_sin(double __x) {return sin(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_sin(long double __x) {return sinl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_sin(float _Complex __x) {return csinf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_sin(double _Complex __x) {return csin(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_sin(long double _Complex __x) {return csinl(__x);}
+
+#undef sin
+#define sin(__x) __tg_sin(__tg_promote1((__x))(__x))
+
+// tan
+
+static float
+ _TG_ATTRS
+ __tg_tan(float __x) {return tanf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_tan(double __x) {return tan(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_tan(long double __x) {return tanl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_tan(float _Complex __x) {return ctanf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_tan(double _Complex __x) {return ctan(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_tan(long double _Complex __x) {return ctanl(__x);}
+
+#undef tan
+#define tan(__x) __tg_tan(__tg_promote1((__x))(__x))
+
+// cosh
+
+static float
+ _TG_ATTRS
+ __tg_cosh(float __x) {return coshf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_cosh(double __x) {return cosh(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_cosh(long double __x) {return coshl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_cosh(float _Complex __x) {return ccoshf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_cosh(double _Complex __x) {return ccosh(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_cosh(long double _Complex __x) {return ccoshl(__x);}
+
+#undef cosh
+#define cosh(__x) __tg_cosh(__tg_promote1((__x))(__x))
+
+// sinh
+
+static float
+ _TG_ATTRS
+ __tg_sinh(float __x) {return sinhf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_sinh(double __x) {return sinh(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_sinh(long double __x) {return sinhl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_sinh(float _Complex __x) {return csinhf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_sinh(double _Complex __x) {return csinh(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_sinh(long double _Complex __x) {return csinhl(__x);}
+
+#undef sinh
+#define sinh(__x) __tg_sinh(__tg_promote1((__x))(__x))
+
+// tanh
+
+static float
+ _TG_ATTRS
+ __tg_tanh(float __x) {return tanhf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_tanh(double __x) {return tanh(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_tanh(long double __x) {return tanhl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_tanh(float _Complex __x) {return ctanhf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_tanh(double _Complex __x) {return ctanh(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_tanh(long double _Complex __x) {return ctanhl(__x);}
+
+#undef tanh
+#define tanh(__x) __tg_tanh(__tg_promote1((__x))(__x))
+
+// exp
+
+static float
+ _TG_ATTRS
+ __tg_exp(float __x) {return expf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_exp(double __x) {return exp(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_exp(long double __x) {return expl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_exp(float _Complex __x) {return cexpf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_exp(double _Complex __x) {return cexp(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_exp(long double _Complex __x) {return cexpl(__x);}
+
+#undef exp
+#define exp(__x) __tg_exp(__tg_promote1((__x))(__x))
+
+// log
+
+static float
+ _TG_ATTRS
+ __tg_log(float __x) {return logf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_log(double __x) {return log(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_log(long double __x) {return logl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_log(float _Complex __x) {return clogf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_log(double _Complex __x) {return clog(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_log(long double _Complex __x) {return clogl(__x);}
+
+#undef log
+#define log(__x) __tg_log(__tg_promote1((__x))(__x))
+
+// pow
+
+static float
+ _TG_ATTRS
+ __tg_pow(float __x, float __y) {return powf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_pow(double __x, double __y) {return pow(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_pow(long double __x, long double __y) {return powl(__x, __y);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_pow(float _Complex __x, float _Complex __y) {return cpowf(__x, __y);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_pow(double _Complex __x, double _Complex __y) {return cpow(__x, __y);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_pow(long double _Complex __x, long double _Complex __y)
+ {return cpowl(__x, __y);}
+
+#undef pow
+#define pow(__x, __y) __tg_pow(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// sqrt
+
+static float
+ _TG_ATTRS
+ __tg_sqrt(float __x) {return sqrtf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_sqrt(double __x) {return sqrt(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_sqrt(long double __x) {return sqrtl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_sqrt(float _Complex __x) {return csqrtf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_sqrt(double _Complex __x) {return csqrt(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_sqrt(long double _Complex __x) {return csqrtl(__x);}
+
+#undef sqrt
+#define sqrt(__x) __tg_sqrt(__tg_promote1((__x))(__x))
+
+// fabs
+
+static float
+ _TG_ATTRS
+ __tg_fabs(float __x) {return fabsf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_fabs(double __x) {return fabs(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_fabs(long double __x) {return fabsl(__x);}
+
+static float
+ _TG_ATTRS
+ __tg_fabs(float _Complex __x) {return cabsf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_fabs(double _Complex __x) {return cabs(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_fabs(long double _Complex __x) {return cabsl(__x);}
+
+#undef fabs
+#define fabs(__x) __tg_fabs(__tg_promote1((__x))(__x))
+
+// atan2
+
+static float
+ _TG_ATTRS
+ __tg_atan2(float __x, float __y) {return atan2f(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_atan2(double __x, double __y) {return atan2(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_atan2(long double __x, long double __y) {return atan2l(__x, __y);}
+
+#undef atan2
+#define atan2(__x, __y) __tg_atan2(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// cbrt
+
+static float
+ _TG_ATTRS
+ __tg_cbrt(float __x) {return cbrtf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_cbrt(double __x) {return cbrt(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_cbrt(long double __x) {return cbrtl(__x);}
+
+#undef cbrt
+#define cbrt(__x) __tg_cbrt(__tg_promote1((__x))(__x))
+
+// ceil
+
+static float
+ _TG_ATTRS
+ __tg_ceil(float __x) {return ceilf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_ceil(double __x) {return ceil(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_ceil(long double __x) {return ceill(__x);}
+
+#undef ceil
+#define ceil(__x) __tg_ceil(__tg_promote1((__x))(__x))
+
+// copysign
+
+static float
+ _TG_ATTRS
+ __tg_copysign(float __x, float __y) {return copysignf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_copysign(double __x, double __y) {return copysign(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_copysign(long double __x, long double __y) {return copysignl(__x, __y);}
+
+#undef copysign
+#define copysign(__x, __y) __tg_copysign(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// erf
+
+static float
+ _TG_ATTRS
+ __tg_erf(float __x) {return erff(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_erf(double __x) {return erf(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_erf(long double __x) {return erfl(__x);}
+
+#undef erf
+#define erf(__x) __tg_erf(__tg_promote1((__x))(__x))
+
+// erfc
+
+static float
+ _TG_ATTRS
+ __tg_erfc(float __x) {return erfcf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_erfc(double __x) {return erfc(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_erfc(long double __x) {return erfcl(__x);}
+
+#undef erfc
+#define erfc(__x) __tg_erfc(__tg_promote1((__x))(__x))
+
+// exp2
+
+static float
+ _TG_ATTRS
+ __tg_exp2(float __x) {return exp2f(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_exp2(double __x) {return exp2(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_exp2(long double __x) {return exp2l(__x);}
+
+#undef exp2
+#define exp2(__x) __tg_exp2(__tg_promote1((__x))(__x))
+
+// expm1
+
+static float
+ _TG_ATTRS
+ __tg_expm1(float __x) {return expm1f(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_expm1(double __x) {return expm1(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_expm1(long double __x) {return expm1l(__x);}
+
+#undef expm1
+#define expm1(__x) __tg_expm1(__tg_promote1((__x))(__x))
+
+// fdim
+
+static float
+ _TG_ATTRS
+ __tg_fdim(float __x, float __y) {return fdimf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_fdim(double __x, double __y) {return fdim(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_fdim(long double __x, long double __y) {return fdiml(__x, __y);}
+
+#undef fdim
+#define fdim(__x, __y) __tg_fdim(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// floor
+
+static float
+ _TG_ATTRS
+ __tg_floor(float __x) {return floorf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_floor(double __x) {return floor(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_floor(long double __x) {return floorl(__x);}
+
+#undef floor
+#define floor(__x) __tg_floor(__tg_promote1((__x))(__x))
+
+// fma
+
+static float
+ _TG_ATTRS
+ __tg_fma(float __x, float __y, float __z)
+ {return fmaf(__x, __y, __z);}
+
+static double
+ _TG_ATTRS
+ __tg_fma(double __x, double __y, double __z)
+ {return fma(__x, __y, __z);}
+
+static long double
+ _TG_ATTRS
+ __tg_fma(long double __x,long double __y, long double __z)
+ {return fmal(__x, __y, __z);}
+
+#undef fma
+#define fma(__x, __y, __z) \
+ __tg_fma(__tg_promote3((__x), (__y), (__z))(__x), \
+ __tg_promote3((__x), (__y), (__z))(__y), \
+ __tg_promote3((__x), (__y), (__z))(__z))
+
+// fmax
+
+static float
+ _TG_ATTRS
+ __tg_fmax(float __x, float __y) {return fmaxf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_fmax(double __x, double __y) {return fmax(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_fmax(long double __x, long double __y) {return fmaxl(__x, __y);}
+
+#undef fmax
+#define fmax(__x, __y) __tg_fmax(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// fmin
+
+static float
+ _TG_ATTRS
+ __tg_fmin(float __x, float __y) {return fminf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_fmin(double __x, double __y) {return fmin(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_fmin(long double __x, long double __y) {return fminl(__x, __y);}
+
+#undef fmin
+#define fmin(__x, __y) __tg_fmin(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// fmod
+
+static float
+ _TG_ATTRS
+ __tg_fmod(float __x, float __y) {return fmodf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_fmod(double __x, double __y) {return fmod(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_fmod(long double __x, long double __y) {return fmodl(__x, __y);}
+
+#undef fmod
+#define fmod(__x, __y) __tg_fmod(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// frexp
+
+static float
+ _TG_ATTRS
+ __tg_frexp(float __x, int* __y) {return frexpf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_frexp(double __x, int* __y) {return frexp(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_frexp(long double __x, int* __y) {return frexpl(__x, __y);}
+
+#undef frexp
+#define frexp(__x, __y) __tg_frexp(__tg_promote1((__x))(__x), __y)
+
+// hypot
+
+static float
+ _TG_ATTRS
+ __tg_hypot(float __x, float __y) {return hypotf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_hypot(double __x, double __y) {return hypot(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_hypot(long double __x, long double __y) {return hypotl(__x, __y);}
+
+#undef hypot
+#define hypot(__x, __y) __tg_hypot(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// ilogb
+
+static int
+ _TG_ATTRS
+ __tg_ilogb(float __x) {return ilogbf(__x);}
+
+static int
+ _TG_ATTRS
+ __tg_ilogb(double __x) {return ilogb(__x);}
+
+static int
+ _TG_ATTRS
+ __tg_ilogb(long double __x) {return ilogbl(__x);}
+
+#undef ilogb
+#define ilogb(__x) __tg_ilogb(__tg_promote1((__x))(__x))
+
+// ldexp
+
+static float
+ _TG_ATTRS
+ __tg_ldexp(float __x, int __y) {return ldexpf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_ldexp(double __x, int __y) {return ldexp(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_ldexp(long double __x, int __y) {return ldexpl(__x, __y);}
+
+#undef ldexp
+#define ldexp(__x, __y) __tg_ldexp(__tg_promote1((__x))(__x), __y)
+
+// lgamma
+
+static float
+ _TG_ATTRS
+ __tg_lgamma(float __x) {return lgammaf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_lgamma(double __x) {return lgamma(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_lgamma(long double __x) {return lgammal(__x);}
+
+#undef lgamma
+#define lgamma(__x) __tg_lgamma(__tg_promote1((__x))(__x))
+
+// llrint
+
+static long long
+ _TG_ATTRS
+ __tg_llrint(float __x) {return llrintf(__x);}
+
+static long long
+ _TG_ATTRS
+ __tg_llrint(double __x) {return llrint(__x);}
+
+static long long
+ _TG_ATTRS
+ __tg_llrint(long double __x) {return llrintl(__x);}
+
+#undef llrint
+#define llrint(__x) __tg_llrint(__tg_promote1((__x))(__x))
+
+// llround
+
+static long long
+ _TG_ATTRS
+ __tg_llround(float __x) {return llroundf(__x);}
+
+static long long
+ _TG_ATTRS
+ __tg_llround(double __x) {return llround(__x);}
+
+static long long
+ _TG_ATTRS
+ __tg_llround(long double __x) {return llroundl(__x);}
+
+#undef llround
+#define llround(__x) __tg_llround(__tg_promote1((__x))(__x))
+
+// log10
+
+static float
+ _TG_ATTRS
+ __tg_log10(float __x) {return log10f(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_log10(double __x) {return log10(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_log10(long double __x) {return log10l(__x);}
+
+#undef log10
+#define log10(__x) __tg_log10(__tg_promote1((__x))(__x))
+
+// log1p
+
+static float
+ _TG_ATTRS
+ __tg_log1p(float __x) {return log1pf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_log1p(double __x) {return log1p(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_log1p(long double __x) {return log1pl(__x);}
+
+#undef log1p
+#define log1p(__x) __tg_log1p(__tg_promote1((__x))(__x))
+
+// log2
+
+static float
+ _TG_ATTRS
+ __tg_log2(float __x) {return log2f(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_log2(double __x) {return log2(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_log2(long double __x) {return log2l(__x);}
+
+#undef log2
+#define log2(__x) __tg_log2(__tg_promote1((__x))(__x))
+
+// logb
+
+static float
+ _TG_ATTRS
+ __tg_logb(float __x) {return logbf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_logb(double __x) {return logb(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_logb(long double __x) {return logbl(__x);}
+
+#undef logb
+#define logb(__x) __tg_logb(__tg_promote1((__x))(__x))
+
+// lrint
+
+static long
+ _TG_ATTRS
+ __tg_lrint(float __x) {return lrintf(__x);}
+
+static long
+ _TG_ATTRS
+ __tg_lrint(double __x) {return lrint(__x);}
+
+static long
+ _TG_ATTRS
+ __tg_lrint(long double __x) {return lrintl(__x);}
+
+#undef lrint
+#define lrint(__x) __tg_lrint(__tg_promote1((__x))(__x))
+
+// lround
+
+static long
+ _TG_ATTRS
+ __tg_lround(float __x) {return lroundf(__x);}
+
+static long
+ _TG_ATTRS
+ __tg_lround(double __x) {return lround(__x);}
+
+static long
+ _TG_ATTRS
+ __tg_lround(long double __x) {return lroundl(__x);}
+
+#undef lround
+#define lround(__x) __tg_lround(__tg_promote1((__x))(__x))
+
+// nearbyint
+
+static float
+ _TG_ATTRS
+ __tg_nearbyint(float __x) {return nearbyintf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_nearbyint(double __x) {return nearbyint(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_nearbyint(long double __x) {return nearbyintl(__x);}
+
+#undef nearbyint
+#define nearbyint(__x) __tg_nearbyint(__tg_promote1((__x))(__x))
+
+// nextafter
+
+static float
+ _TG_ATTRS
+ __tg_nextafter(float __x, float __y) {return nextafterf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_nextafter(double __x, double __y) {return nextafter(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_nextafter(long double __x, long double __y) {return nextafterl(__x, __y);}
+
+#undef nextafter
+#define nextafter(__x, __y) __tg_nextafter(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// nexttoward
+
+static float
+ _TG_ATTRS
+ __tg_nexttoward(float __x, long double __y) {return nexttowardf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_nexttoward(double __x, long double __y) {return nexttoward(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_nexttoward(long double __x, long double __y) {return nexttowardl(__x, __y);}
+
+#undef nexttoward
+#define nexttoward(__x, __y) __tg_nexttoward(__tg_promote1((__x))(__x), (__y))
+
+// remainder
+
+static float
+ _TG_ATTRS
+ __tg_remainder(float __x, float __y) {return remainderf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_remainder(double __x, double __y) {return remainder(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_remainder(long double __x, long double __y) {return remainderl(__x, __y);}
+
+#undef remainder
+#define remainder(__x, __y) __tg_remainder(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y))
+
+// remquo
+
+static float
+ _TG_ATTRS
+ __tg_remquo(float __x, float __y, int* __z)
+ {return remquof(__x, __y, __z);}
+
+static double
+ _TG_ATTRS
+ __tg_remquo(double __x, double __y, int* __z)
+ {return remquo(__x, __y, __z);}
+
+static long double
+ _TG_ATTRS
+ __tg_remquo(long double __x,long double __y, int* __z)
+ {return remquol(__x, __y, __z);}
+
+#undef remquo
+#define remquo(__x, __y, __z) \
+ __tg_remquo(__tg_promote2((__x), (__y))(__x), \
+ __tg_promote2((__x), (__y))(__y), \
+ (__z))
+
+// rint
+
+static float
+ _TG_ATTRS
+ __tg_rint(float __x) {return rintf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_rint(double __x) {return rint(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_rint(long double __x) {return rintl(__x);}
+
+#undef rint
+#define rint(__x) __tg_rint(__tg_promote1((__x))(__x))
+
+// round
+
+static float
+ _TG_ATTRS
+ __tg_round(float __x) {return roundf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_round(double __x) {return round(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_round(long double __x) {return roundl(__x);}
+
+#undef round
+#define round(__x) __tg_round(__tg_promote1((__x))(__x))
+
+// scalbn
+
+static float
+ _TG_ATTRS
+ __tg_scalbn(float __x, int __y) {return scalbnf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_scalbn(double __x, int __y) {return scalbn(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_scalbn(long double __x, int __y) {return scalbnl(__x, __y);}
+
+#undef scalbn
+#define scalbn(__x, __y) __tg_scalbn(__tg_promote1((__x))(__x), __y)
+
+// scalbln
+
+static float
+ _TG_ATTRS
+ __tg_scalbln(float __x, long __y) {return scalblnf(__x, __y);}
+
+static double
+ _TG_ATTRS
+ __tg_scalbln(double __x, long __y) {return scalbln(__x, __y);}
+
+static long double
+ _TG_ATTRS
+ __tg_scalbln(long double __x, long __y) {return scalblnl(__x, __y);}
+
+#undef scalbln
+#define scalbln(__x, __y) __tg_scalbln(__tg_promote1((__x))(__x), __y)
+
+// tgamma
+
+static float
+ _TG_ATTRS
+ __tg_tgamma(float __x) {return tgammaf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_tgamma(double __x) {return tgamma(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_tgamma(long double __x) {return tgammal(__x);}
+
+#undef tgamma
+#define tgamma(__x) __tg_tgamma(__tg_promote1((__x))(__x))
+
+// trunc
+
+static float
+ _TG_ATTRS
+ __tg_trunc(float __x) {return truncf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_trunc(double __x) {return trunc(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_trunc(long double __x) {return truncl(__x);}
+
+#undef trunc
+#define trunc(__x) __tg_trunc(__tg_promote1((__x))(__x))
+
+// carg
+
+static float
+ _TG_ATTRS
+ __tg_carg(float __x) {return atan2f(0.F, __x);}
+
+static double
+ _TG_ATTRS
+ __tg_carg(double __x) {return atan2(0., __x);}
+
+static long double
+ _TG_ATTRS
+ __tg_carg(long double __x) {return atan2l(0.L, __x);}
+
+static float
+ _TG_ATTRS
+ __tg_carg(float _Complex __x) {return cargf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_carg(double _Complex __x) {return carg(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_carg(long double _Complex __x) {return cargl(__x);}
+
+#undef carg
+#define carg(__x) __tg_carg(__tg_promote1((__x))(__x))
+
+// cimag
+
+static float
+ _TG_ATTRS
+ __tg_cimag(float __x) {return 0;}
+
+static double
+ _TG_ATTRS
+ __tg_cimag(double __x) {return 0;}
+
+static long double
+ _TG_ATTRS
+ __tg_cimag(long double __x) {return 0;}
+
+static float
+ _TG_ATTRS
+ __tg_cimag(float _Complex __x) {return cimagf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_cimag(double _Complex __x) {return cimag(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_cimag(long double _Complex __x) {return cimagl(__x);}
+
+#undef cimag
+#define cimag(__x) __tg_cimag(__tg_promote1((__x))(__x))
+
+// conj
+
+static float _Complex
+ _TG_ATTRS
+ __tg_conj(float __x) {return __x;}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_conj(double __x) {return __x;}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_conj(long double __x) {return __x;}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_conj(float _Complex __x) {return conjf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_conj(double _Complex __x) {return conj(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_conj(long double _Complex __x) {return conjl(__x);}
+
+#undef conj
+#define conj(__x) __tg_conj(__tg_promote1((__x))(__x))
+
+// cproj
+
+static float _Complex
+ _TG_ATTRS
+ __tg_cproj(float __x) {return cprojf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_cproj(double __x) {return cproj(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_cproj(long double __x) {return cprojl(__x);}
+
+static float _Complex
+ _TG_ATTRS
+ __tg_cproj(float _Complex __x) {return cprojf(__x);}
+
+static double _Complex
+ _TG_ATTRS
+ __tg_cproj(double _Complex __x) {return cproj(__x);}
+
+static long double _Complex
+ _TG_ATTRS
+ __tg_cproj(long double _Complex __x) {return cprojl(__x);}
+
+#undef cproj
+#define cproj(__x) __tg_cproj(__tg_promote1((__x))(__x))
+
+// creal
+
+static float
+ _TG_ATTRS
+ __tg_creal(float __x) {return __x;}
+
+static double
+ _TG_ATTRS
+ __tg_creal(double __x) {return __x;}
+
+static long double
+ _TG_ATTRS
+ __tg_creal(long double __x) {return __x;}
+
+static float
+ _TG_ATTRS
+ __tg_creal(float _Complex __x) {return crealf(__x);}
+
+static double
+ _TG_ATTRS
+ __tg_creal(double _Complex __x) {return creal(__x);}
+
+static long double
+ _TG_ATTRS
+ __tg_creal(long double _Complex __x) {return creall(__x);}
+
+#undef creal
+#define creal(__x) __tg_creal(__tg_promote1((__x))(__x))
+
+#undef _TG_ATTRSp
+#undef _TG_ATTRS
+
+#if __has_include(<realtime_safety/realtime_safety.h>)
+REALTIME_SAFE_END
+#endif
+
+#endif /* __cplusplus */
+#endif /* __TGMATH_H */
\ No newline at end of file
lib/libc/include/any-macos.13-any/unistd.h
@@ -0,0 +1,791 @@
+/*
+ * Copyright (c) 2000, 2002-2006, 2008-2010, 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 (c) 1998-1999 Apple Computer, Inc. All Rights Reserved
+ * Copyright (c) 1991, 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.
+ *
+ * @(#)unistd.h 8.12 (Berkeley) 4/27/95
+ *
+ * Copyright (c) 1998 Apple Compter, Inc.
+ * All Rights Reserved
+ */
+
+/* History:
+ 7/14/99 EKN at Apple fixed getdirentriesattr from getdirentryattr
+ 3/26/98 CHW at Apple added real interface to searchfs call
+ 3/5/98 CHW at Apple added hfs semantic system calls headers
+*/
+
+#ifndef _UNISTD_H_
+#define _UNISTD_H_
+
+#include <_types.h>
+#include <sys/unistd.h>
+#include <Availability.h>
+#include <sys/_types/_gid_t.h>
+#include <sys/_types/_intptr_t.h>
+#include <sys/_types/_off_t.h>
+#include <sys/_types/_pid_t.h>
+/* DO NOT REMOVE THIS COMMENT: fixincludes needs to see:
+ * _GCC_SIZE_T */
+#include <sys/_types/_size_t.h>
+#include <sys/_types/_ssize_t.h>
+#include <sys/_types/_uid_t.h>
+#include <sys/_types/_useconds_t.h>
+#include <sys/_types/_null.h>
+
+#define STDIN_FILENO 0 /* standard input file descriptor */
+#define STDOUT_FILENO 1 /* standard output file descriptor */
+#define STDERR_FILENO 2 /* standard error file descriptor */
+
+
+/* Version test macros */
+/* _POSIX_VERSION and _POSIX2_VERSION from sys/unistd.h */
+#define _XOPEN_VERSION 600 /* [XSI] */
+#define _XOPEN_XCU_VERSION 4 /* Older standard */
+
+
+/* Please keep this list in the same order as the applicable standard */
+#define _POSIX_ADVISORY_INFO (-1) /* [ADV] */
+#define _POSIX_ASYNCHRONOUS_IO (-1) /* [AIO] */
+#define _POSIX_BARRIERS (-1) /* [BAR] */
+#define _POSIX_CHOWN_RESTRICTED 200112L
+#define _POSIX_CLOCK_SELECTION (-1) /* [CS] */
+#define _POSIX_CPUTIME (-1) /* [CPT] */
+#define _POSIX_FSYNC 200112L /* [FSC] */
+#define _POSIX_IPV6 200112L
+#define _POSIX_JOB_CONTROL 200112L
+#define _POSIX_MAPPED_FILES 200112L /* [MF] */
+#define _POSIX_MEMLOCK (-1) /* [ML] */
+#define _POSIX_MEMLOCK_RANGE (-1) /* [MR] */
+#define _POSIX_MEMORY_PROTECTION 200112L /* [MPR] */
+#define _POSIX_MESSAGE_PASSING (-1) /* [MSG] */
+#define _POSIX_MONOTONIC_CLOCK (-1) /* [MON] */
+#define _POSIX_NO_TRUNC 200112L
+#define _POSIX_PRIORITIZED_IO (-1) /* [PIO] */
+#define _POSIX_PRIORITY_SCHEDULING (-1) /* [PS] */
+#define _POSIX_RAW_SOCKETS (-1) /* [RS] */
+#define _POSIX_READER_WRITER_LOCKS 200112L /* [THR] */
+#define _POSIX_REALTIME_SIGNALS (-1) /* [RTS] */
+#define _POSIX_REGEXP 200112L
+#define _POSIX_SAVED_IDS 200112L /* XXX required */
+#define _POSIX_SEMAPHORES (-1) /* [SEM] */
+#define _POSIX_SHARED_MEMORY_OBJECTS (-1) /* [SHM] */
+#define _POSIX_SHELL 200112L
+#define _POSIX_SPAWN 200112L /* [SPN] */
+#define _POSIX_SPIN_LOCKS (-1) /* [SPI] */
+#define _POSIX_SPORADIC_SERVER (-1) /* [SS] */
+#define _POSIX_SYNCHRONIZED_IO (-1) /* [SIO] */
+#define _POSIX_THREAD_ATTR_STACKADDR 200112L /* [TSA] */
+#define _POSIX_THREAD_ATTR_STACKSIZE 200112L /* [TSS] */
+#define _POSIX_THREAD_CPUTIME (-1) /* [TCT] */
+#define _POSIX_THREAD_PRIO_INHERIT (-1) /* [TPI] */
+#define _POSIX_THREAD_PRIO_PROTECT (-1) /* [TPP] */
+#define _POSIX_THREAD_PRIORITY_SCHEDULING (-1) /* [TPS] */
+#define _POSIX_THREAD_PROCESS_SHARED 200112L /* [TSH] */
+#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L /* [TSF] */
+#define _POSIX_THREAD_SPORADIC_SERVER (-1) /* [TSP] */
+#define _POSIX_THREADS 200112L /* [THR] */
+#define _POSIX_TIMEOUTS (-1) /* [TMO] */
+#define _POSIX_TIMERS (-1) /* [TMR] */
+#define _POSIX_TRACE (-1) /* [TRC] */
+#define _POSIX_TRACE_EVENT_FILTER (-1) /* [TEF] */
+#define _POSIX_TRACE_INHERIT (-1) /* [TRI] */
+#define _POSIX_TRACE_LOG (-1) /* [TRL] */
+#define _POSIX_TYPED_MEMORY_OBJECTS (-1) /* [TYM] */
+#ifndef _POSIX_VDISABLE
+#define _POSIX_VDISABLE 0xff /* same as sys/termios.h */
+#endif /* _POSIX_VDISABLE */
+
+#if __DARWIN_C_LEVEL >= 199209L
+#define _POSIX2_C_BIND 200112L
+#define _POSIX2_C_DEV 200112L /* c99 command */
+#define _POSIX2_CHAR_TERM 200112L
+#define _POSIX2_FORT_DEV (-1) /* fort77 command */
+#define _POSIX2_FORT_RUN 200112L
+#define _POSIX2_LOCALEDEF 200112L /* localedef command */
+#define _POSIX2_PBS (-1)
+#define _POSIX2_PBS_ACCOUNTING (-1)
+#define _POSIX2_PBS_CHECKPOINT (-1)
+#define _POSIX2_PBS_LOCATE (-1)
+#define _POSIX2_PBS_MESSAGE (-1)
+#define _POSIX2_PBS_TRACK (-1)
+#define _POSIX2_SW_DEV 200112L
+#define _POSIX2_UPE 200112L /* XXXX no fc, newgrp, tabs */
+#endif /* __DARWIN_C_LEVEL */
+
+#define __ILP32_OFF32 (-1)
+#define __ILP32_OFFBIG (-1)
+
+#define __LP64_OFF64 (1)
+#define __LPBIG_OFFBIG (1)
+
+#if __DARWIN_C_LEVEL >= 200112L
+#define _POSIX_V6_ILP32_OFF32 __ILP32_OFF32
+#define _POSIX_V6_ILP32_OFFBIG __ILP32_OFFBIG
+#define _POSIX_V6_LP64_OFF64 __LP64_OFF64
+#define _POSIX_V6_LPBIG_OFFBIG __LPBIG_OFFBIG
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+#if __DARWIN_C_LEVEL >= 200809L
+#define _POSIX_V7_ILP32_OFF32 __ILP32_OFF32
+#define _POSIX_V7_ILP32_OFFBIG __ILP32_OFFBIG
+#define _POSIX_V7_LP64_OFF64 __LP64_OFF64
+#define _POSIX_V7_LPBIG_OFFBIG __LPBIG_OFFBIG
+#endif /* __DARWIN_C_LEVEL >= 200809L */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define _V6_ILP32_OFF32 __ILP32_OFF32
+#define _V6_ILP32_OFFBIG __ILP32_OFFBIG
+#define _V6_LP64_OFF64 __LP64_OFF64
+#define _V6_LPBIG_OFFBIG __LPBIG_OFFBIG
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/* Removed in Issue 7 */
+#define _XBS5_ILP32_OFF32 __ILP32_OFF32
+#define _XBS5_ILP32_OFFBIG __ILP32_OFFBIG
+#define _XBS5_LP64_OFF64 __LP64_OFF64
+#define _XBS5_LPBIG_OFFBIG __LPBIG_OFFBIG
+#endif /* __DARWIN_C_LEVEL < 200809L */
+
+#if __DARWIN_C_LEVEL >= 199506L /* This really should be XSI */
+#define _XOPEN_CRYPT (1)
+#define _XOPEN_ENH_I18N (1) /* XXX required */
+#define _XOPEN_LEGACY (-1) /* no ftime gcvt, wcswcs */
+#define _XOPEN_REALTIME (-1) /* no q'ed signals, mq_* */
+#define _XOPEN_REALTIME_THREADS (-1) /* no posix_spawn, et. al. */
+#define _XOPEN_SHM (1)
+#define _XOPEN_STREAMS (-1) /* Issue 6 */
+#define _XOPEN_UNIX (1)
+#endif /* XSI */
+
+/* configurable system variables */
+#define _SC_ARG_MAX 1
+#define _SC_CHILD_MAX 2
+#define _SC_CLK_TCK 3
+#define _SC_NGROUPS_MAX 4
+#define _SC_OPEN_MAX 5
+#define _SC_JOB_CONTROL 6
+#define _SC_SAVED_IDS 7
+#define _SC_VERSION 8
+#define _SC_BC_BASE_MAX 9
+#define _SC_BC_DIM_MAX 10
+#define _SC_BC_SCALE_MAX 11
+#define _SC_BC_STRING_MAX 12
+#define _SC_COLL_WEIGHTS_MAX 13
+#define _SC_EXPR_NEST_MAX 14
+#define _SC_LINE_MAX 15
+#define _SC_RE_DUP_MAX 16
+#define _SC_2_VERSION 17
+#define _SC_2_C_BIND 18
+#define _SC_2_C_DEV 19
+#define _SC_2_CHAR_TERM 20
+#define _SC_2_FORT_DEV 21
+#define _SC_2_FORT_RUN 22
+#define _SC_2_LOCALEDEF 23
+#define _SC_2_SW_DEV 24
+#define _SC_2_UPE 25
+#define _SC_STREAM_MAX 26
+#define _SC_TZNAME_MAX 27
+
+#if __DARWIN_C_LEVEL >= 199309L
+#define _SC_ASYNCHRONOUS_IO 28
+#define _SC_PAGESIZE 29
+#define _SC_MEMLOCK 30
+#define _SC_MEMLOCK_RANGE 31
+#define _SC_MEMORY_PROTECTION 32
+#define _SC_MESSAGE_PASSING 33
+#define _SC_PRIORITIZED_IO 34
+#define _SC_PRIORITY_SCHEDULING 35
+#define _SC_REALTIME_SIGNALS 36
+#define _SC_SEMAPHORES 37
+#define _SC_FSYNC 38
+#define _SC_SHARED_MEMORY_OBJECTS 39
+#define _SC_SYNCHRONIZED_IO 40
+#define _SC_TIMERS 41
+#define _SC_AIO_LISTIO_MAX 42
+#define _SC_AIO_MAX 43
+#define _SC_AIO_PRIO_DELTA_MAX 44
+#define _SC_DELAYTIMER_MAX 45
+#define _SC_MQ_OPEN_MAX 46
+#define _SC_MAPPED_FILES 47 /* swap _SC_PAGESIZE vs. BSD */
+#define _SC_RTSIG_MAX 48
+#define _SC_SEM_NSEMS_MAX 49
+#define _SC_SEM_VALUE_MAX 50
+#define _SC_SIGQUEUE_MAX 51
+#define _SC_TIMER_MAX 52
+#endif /* __DARWIN_C_LEVEL >= 199309L */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define _SC_NPROCESSORS_CONF 57
+#define _SC_NPROCESSORS_ONLN 58
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#if __DARWIN_C_LEVEL >= 200112L
+#define _SC_2_PBS 59
+#define _SC_2_PBS_ACCOUNTING 60
+#define _SC_2_PBS_CHECKPOINT 61
+#define _SC_2_PBS_LOCATE 62
+#define _SC_2_PBS_MESSAGE 63
+#define _SC_2_PBS_TRACK 64
+#define _SC_ADVISORY_INFO 65
+#define _SC_BARRIERS 66
+#define _SC_CLOCK_SELECTION 67
+#define _SC_CPUTIME 68
+#define _SC_FILE_LOCKING 69
+#define _SC_GETGR_R_SIZE_MAX 70
+#define _SC_GETPW_R_SIZE_MAX 71
+#define _SC_HOST_NAME_MAX 72
+#define _SC_LOGIN_NAME_MAX 73
+#define _SC_MONOTONIC_CLOCK 74
+#define _SC_MQ_PRIO_MAX 75
+#define _SC_READER_WRITER_LOCKS 76
+#define _SC_REGEXP 77
+#define _SC_SHELL 78
+#define _SC_SPAWN 79
+#define _SC_SPIN_LOCKS 80
+#define _SC_SPORADIC_SERVER 81
+#define _SC_THREAD_ATTR_STACKADDR 82
+#define _SC_THREAD_ATTR_STACKSIZE 83
+#define _SC_THREAD_CPUTIME 84
+#define _SC_THREAD_DESTRUCTOR_ITERATIONS 85
+#define _SC_THREAD_KEYS_MAX 86
+#define _SC_THREAD_PRIO_INHERIT 87
+#define _SC_THREAD_PRIO_PROTECT 88
+#define _SC_THREAD_PRIORITY_SCHEDULING 89
+#define _SC_THREAD_PROCESS_SHARED 90
+#define _SC_THREAD_SAFE_FUNCTIONS 91
+#define _SC_THREAD_SPORADIC_SERVER 92
+#define _SC_THREAD_STACK_MIN 93
+#define _SC_THREAD_THREADS_MAX 94
+#define _SC_TIMEOUTS 95
+#define _SC_THREADS 96
+#define _SC_TRACE 97
+#define _SC_TRACE_EVENT_FILTER 98
+#define _SC_TRACE_INHERIT 99
+#define _SC_TRACE_LOG 100
+#define _SC_TTY_NAME_MAX 101
+#define _SC_TYPED_MEMORY_OBJECTS 102
+#define _SC_V6_ILP32_OFF32 103
+#define _SC_V6_ILP32_OFFBIG 104
+#define _SC_V6_LP64_OFF64 105
+#define _SC_V6_LPBIG_OFFBIG 106
+#define _SC_IPV6 118
+#define _SC_RAW_SOCKETS 119
+#define _SC_SYMLOOP_MAX 120
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+#if __DARWIN_C_LEVEL >= 199506L /* Really XSI */
+#define _SC_ATEXIT_MAX 107
+#define _SC_IOV_MAX 56
+#define _SC_PAGE_SIZE _SC_PAGESIZE
+#define _SC_XOPEN_CRYPT 108
+#define _SC_XOPEN_ENH_I18N 109
+#define _SC_XOPEN_LEGACY 110 /* Issue 6 */
+#define _SC_XOPEN_REALTIME 111 /* Issue 6 */
+#define _SC_XOPEN_REALTIME_THREADS 112 /* Issue 6 */
+#define _SC_XOPEN_SHM 113
+#define _SC_XOPEN_STREAMS 114 /* Issue 6 */
+#define _SC_XOPEN_UNIX 115
+#define _SC_XOPEN_VERSION 116
+#define _SC_XOPEN_XCU_VERSION 121
+#endif /* XSI */
+
+#if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/* Removed in Issue 7 */
+#define _SC_XBS5_ILP32_OFF32 122
+#define _SC_XBS5_ILP32_OFFBIG 123
+#define _SC_XBS5_LP64_OFF64 124
+#define _SC_XBS5_LPBIG_OFFBIG 125
+#endif /* __DARWIN_C_LEVEL <= 200809L */
+
+#if __DARWIN_C_LEVEL >= 200112L
+#define _SC_SS_REPL_MAX 126
+#define _SC_TRACE_EVENT_NAME_MAX 127
+#define _SC_TRACE_NAME_MAX 128
+#define _SC_TRACE_SYS_MAX 129
+#define _SC_TRACE_USER_EVENT_MAX 130
+#endif
+
+#if __DARWIN_C_LEVEL < 200112L || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/* Removed in Issue 6 */
+#define _SC_PASS_MAX 131
+#endif
+
+/* 132-199 available for future use */
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define _SC_PHYS_PAGES 200
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#if __DARWIN_C_LEVEL >= 199209L
+#ifndef _CS_PATH /* Defined in <sys/unistd.h> */
+#define _CS_PATH 1
+#endif
+#endif
+
+#if __DARWIN_C_LEVEL >= 200112
+#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS 2
+#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 3
+#define _CS_POSIX_V6_ILP32_OFF32_LIBS 4
+#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 5
+#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 6
+#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS 7
+#define _CS_POSIX_V6_LP64_OFF64_CFLAGS 8
+#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS 9
+#define _CS_POSIX_V6_LP64_OFF64_LIBS 10
+#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 11
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 12
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 13
+#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 14
+#endif
+
+#if (__DARWIN_C_LEVEL >= 199506L && __DARWIN_C_LEVEL < 200809L) || __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+/* Removed in Issue 7 */
+#define _CS_XBS5_ILP32_OFF32_CFLAGS 20
+#define _CS_XBS5_ILP32_OFF32_LDFLAGS 21
+#define _CS_XBS5_ILP32_OFF32_LIBS 22
+#define _CS_XBS5_ILP32_OFF32_LINTFLAGS 23
+#define _CS_XBS5_ILP32_OFFBIG_CFLAGS 24
+#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS 25
+#define _CS_XBS5_ILP32_OFFBIG_LIBS 26
+#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS 27
+#define _CS_XBS5_LP64_OFF64_CFLAGS 28
+#define _CS_XBS5_LP64_OFF64_LDFLAGS 29
+#define _CS_XBS5_LP64_OFF64_LIBS 30
+#define _CS_XBS5_LP64_OFF64_LINTFLAGS 31
+#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS 32
+#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS 33
+#define _CS_XBS5_LPBIG_OFFBIG_LIBS 34
+#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS 35
+#endif
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#define _CS_DARWIN_USER_DIR 65536
+#define _CS_DARWIN_USER_TEMP_DIR 65537
+#define _CS_DARWIN_USER_CACHE_DIR 65538
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+
+#ifdef _DARWIN_UNLIMITED_GETGROUPS
+#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2
+#error "_DARWIN_UNLIMITED_GETGROUPS 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_GETGROUPS specified, but -mmacosx-version-min version does not support it."
+#endif
+#endif
+
+/* POSIX.1-1990 */
+
+__BEGIN_DECLS
+void _exit(int) __dead2;
+int access(const char *, int);
+unsigned int
+ alarm(unsigned int);
+int chdir(const char *);
+int chown(const char *, uid_t, gid_t);
+
+int close(int) __DARWIN_ALIAS_C(close);
+
+int dup(int);
+int dup2(int, int);
+int execl(const char * __path, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int execle(const char * __path, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int execlp(const char * __file, const char * __arg0, ...) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int execv(const char * __path, char * const * __argv) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int execve(const char * __file, char * const * __argv, char * const * __envp) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int execvp(const char * __file, char * const * __argv) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+pid_t fork(void) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+long fpathconf(int, int);
+char *getcwd(char *, size_t);
+gid_t getegid(void);
+uid_t geteuid(void);
+gid_t getgid(void);
+#if defined(_DARWIN_UNLIMITED_GETGROUPS) || defined(_DARWIN_C_SOURCE)
+int getgroups(int, gid_t []) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_3_2, __DARWIN_EXTSN(getgroups));
+#else /* !_DARWIN_UNLIMITED_GETGROUPS && !_DARWIN_C_SOURCE */
+int getgroups(int, gid_t []);
+#endif /* _DARWIN_UNLIMITED_GETGROUPS || _DARWIN_C_SOURCE */
+char *getlogin(void);
+pid_t getpgrp(void);
+pid_t getpid(void);
+pid_t getppid(void);
+uid_t getuid(void);
+int isatty(int);
+int link(const char *, const char *);
+off_t lseek(int, off_t, int);
+long pathconf(const char *, int);
+
+int pause(void) __DARWIN_ALIAS_C(pause);
+
+int pipe(int [2]);
+
+ssize_t read(int, void *, size_t) __DARWIN_ALIAS_C(read);
+
+int rmdir(const char *);
+int setgid(gid_t);
+int setpgid(pid_t, pid_t);
+pid_t setsid(void);
+int setuid(uid_t);
+
+unsigned int
+ sleep(unsigned int) __DARWIN_ALIAS_C(sleep);
+
+long sysconf(int);
+pid_t tcgetpgrp(int);
+int tcsetpgrp(int, pid_t);
+char *ttyname(int);
+
+#if __DARWIN_UNIX03
+int ttyname_r(int, char *, size_t) __DARWIN_ALIAS(ttyname_r);
+#else /* !__DARWIN_UNIX03 */
+char *ttyname_r(int, char *, size_t);
+#endif /* __DARWIN_UNIX03 */
+
+int unlink(const char *);
+
+ssize_t write(int __fd, const void * __buf, size_t __nbyte) __DARWIN_ALIAS_C(write);
+__END_DECLS
+
+
+
+/* Additional functionality provided by:
+ * POSIX.2-1992 C Language Binding Option
+ */
+
+#if __DARWIN_C_LEVEL >= 199209L
+__BEGIN_DECLS
+size_t confstr(int, char *, size_t) __DARWIN_ALIAS(confstr);
+
+int getopt(int, char * const [], const char *) __DARWIN_ALIAS(getopt);
+
+extern char *optarg; /* getopt(3) external variables */
+extern int optind, opterr, optopt;
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 199209L */
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1c-1995,
+ * POSIX.1i-1995,
+ * and the omnibus ISO/IEC 9945-1: 1996
+ */
+
+#if __DARWIN_C_LEVEL >= 199506L
+#include <_ctermid.h>
+ /* These F_* are really XSI or Issue 6 */
+#define F_ULOCK 0 /* unlock locked section */
+#define F_LOCK 1 /* lock a section for exclusive use */
+#define F_TLOCK 2 /* test and lock a section for exclusive use */
+#define F_TEST 3 /* test a section for locks by other procs */
+
+ __BEGIN_DECLS
+
+/* Begin XSI */
+/* Removed in Issue 6 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
+#if !defined(_POSIX_C_SOURCE)
+__deprecated __WATCHOS_PROHIBITED __TVOS_PROHIBITED
+#endif
+void *brk(const void *);
+int chroot(const char *) __POSIX_C_DEPRECATED(199506L);
+#endif
+
+char *crypt(const char *, const char *);
+#if __DARWIN_UNIX03
+void encrypt(char *, int) __DARWIN_ALIAS(encrypt);
+#else /* !__DARWIN_UNIX03 */
+int encrypt(char *, int);
+#endif /* __DARWIN_UNIX03 */
+int fchdir(int);
+long gethostid(void);
+pid_t getpgid(pid_t);
+pid_t getsid(pid_t);
+
+/* Removed in Issue 6 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
+int getdtablesize(void) __POSIX_C_DEPRECATED(199506L);
+int getpagesize(void) __pure2 __POSIX_C_DEPRECATED(199506L);
+char *getpass(const char *) __POSIX_C_DEPRECATED(199506L);
+#endif
+
+/* Removed in Issue 7 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200809L
+char *getwd(char *) __POSIX_C_DEPRECATED(200112L); /* obsoleted by getcwd() */
+#endif
+
+int lchown(const char *, uid_t, gid_t) __DARWIN_ALIAS(lchown);
+
+int lockf(int, int, off_t) __DARWIN_ALIAS_C(lockf);
+
+int nice(int) __DARWIN_ALIAS(nice);
+
+ssize_t pread(int __fd, void * __buf, size_t __nbyte, off_t __offset) __DARWIN_ALIAS_C(pread);
+
+ssize_t pwrite(int __fd, const void * __buf, size_t __nbyte, off_t __offset) __DARWIN_ALIAS_C(pwrite);
+
+/* Removed in Issue 6 */
+#if !defined(_POSIX_C_SOURCE) || _POSIX_C_SOURCE < 200112L
+/* Note that Issue 5 changed the argument as intprt_t,
+ * but we keep it as int for binary compatability. */
+#if !defined(_POSIX_C_SOURCE)
+__deprecated __WATCHOS_PROHIBITED __TVOS_PROHIBITED
+#endif
+void *sbrk(int);
+#endif
+
+#if __DARWIN_UNIX03
+pid_t setpgrp(void) __DARWIN_ALIAS(setpgrp);
+#else /* !__DARWIN_UNIX03 */
+int setpgrp(pid_t pid, pid_t pgrp); /* obsoleted by setpgid() */
+#endif /* __DARWIN_UNIX03 */
+
+int setregid(gid_t, gid_t) __DARWIN_ALIAS(setregid);
+
+int setreuid(uid_t, uid_t) __DARWIN_ALIAS(setreuid);
+
+void swab(const void * __restrict, void * __restrict, ssize_t);
+void sync(void);
+int truncate(const char *, off_t);
+useconds_t ualarm(useconds_t, useconds_t);
+int usleep(useconds_t) __DARWIN_ALIAS_C(usleep);
+
+#if !defined(_POSIX_C_SOURCE)
+__deprecated_msg("Use posix_spawn or fork")
+#endif
+pid_t vfork(void) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+/* End XSI */
+
+int fsync(int) __DARWIN_ALIAS_C(fsync);
+
+int ftruncate(int, off_t);
+int getlogin_r(char *, size_t);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 199506L */
+
+
+
+/* Additional functionality provided by:
+ * POSIX.1-2001
+ * ISO C99
+ */
+
+#if __DARWIN_C_LEVEL >= 200112L
+__BEGIN_DECLS
+int fchown(int, uid_t, gid_t);
+int gethostname(char *, size_t);
+ssize_t readlink(const char * __restrict, char * __restrict, size_t);
+int setegid(gid_t);
+int seteuid(uid_t);
+int symlink(const char *, const char *);
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= 200112L */
+
+
+
+/* Darwin extensions */
+
+#if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
+#include <sys/select.h>
+
+#include <sys/_types/_dev_t.h>
+#include <sys/_types/_mode_t.h>
+#include <sys/_types/_uuid_t.h>
+
+__BEGIN_DECLS
+void _Exit(int) __dead2;
+int accessx_np(const struct accessx_descriptor *, size_t, int *, uid_t);
+int acct(const char *);
+int add_profil(char *, size_t, unsigned long, unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+void endusershell(void);
+int execvP(const char * __file, const char * __searchpath, char * const * __argv) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+char *fflagstostr(unsigned long);
+int getdomainname(char *, int);
+int getgrouplist(const char *, int, int *, int *);
+#if defined(__has_include)
+#if __has_include(<gethostuuid_private.h>)
+#include <gethostuuid_private.h>
+#else
+#include <gethostuuid.h>
+#endif
+#else
+#include <gethostuuid.h>
+#endif
+mode_t getmode(const void *, mode_t);
+int getpeereid(int, uid_t *, gid_t *);
+int getsgroups_np(int *, uuid_t);
+char *getusershell(void);
+int getwgroups_np(int *, uuid_t);
+int initgroups(const char *, int);
+int issetugid(void);
+char *mkdtemp(char *);
+int mknod(const char *, mode_t, dev_t);
+int mkpath_np(const char *path, mode_t omode) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_5_0); /* returns errno */
+int mkpathat_np(int dfd, const char *path, mode_t omode) /* returns errno */
+ __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
+ __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
+int mkstemp(char *);
+int mkstemps(char *, int);
+char *mktemp(char *);
+int mkostemp(char *path, int oflags)
+ __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
+ __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
+int mkostemps(char *path, int slen, int oflags)
+ __OSX_AVAILABLE(10.12) __IOS_AVAILABLE(10.0)
+ __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
+/* Non-portable mkstemp that uses open_dprotected_np */
+int mkstemp_dprotected_np(char *path, int dpclass, int dpflags)
+ __OSX_UNAVAILABLE __IOS_AVAILABLE(10.0)
+ __TVOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0);
+char *mkdtempat_np(int dfd, char *path)
+ __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
+ __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+int mkstempsat_np(int dfd, char *path, int slen)
+ __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
+ __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+int mkostempsat_np(int dfd, char *path, int slen, int oflags)
+ __OSX_AVAILABLE(10.13) __IOS_AVAILABLE(11.0)
+ __TVOS_AVAILABLE(11.0) __WATCHOS_AVAILABLE(4.0);
+int nfssvc(int, void *);
+int profil(char *, size_t, unsigned long, unsigned int);
+
+__deprecated_msg("Use of per-thread security contexts is error-prone and discouraged.")
+int pthread_setugid_np(uid_t, gid_t);
+int pthread_getugid_np( uid_t *, gid_t *);
+
+int reboot(int);
+int revoke(const char *);
+
+__deprecated int rcmd(char **, int, const char *, const char *, const char *, int *);
+__deprecated int rcmd_af(char **, int, const char *, const char *, const char *, int *,
+ int);
+__deprecated int rresvport(int *);
+__deprecated int rresvport_af(int *, int);
+__deprecated int iruserok(unsigned long, int, const char *, const char *);
+__deprecated int iruserok_sa(const void *, int, int, const char *, const char *);
+__deprecated int ruserok(const char *, int, const char *, const char *);
+
+int setdomainname(const char *, int);
+int setgroups(int, const gid_t *);
+void sethostid(long);
+int sethostname(const char *, int);
+#if __DARWIN_UNIX03
+void setkey(const char *) __DARWIN_ALIAS(setkey);
+#else /* !__DARWIN_UNIX03 */
+int setkey(const char *);
+#endif /* __DARWIN_UNIX03 */
+int setlogin(const char *);
+void *setmode(const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(setmode));
+int setrgid(gid_t);
+int setruid(uid_t);
+int setsgroups_np(int, const uuid_t);
+void setusershell(void);
+int setwgroups_np(int, const uuid_t);
+int strtofflags(char **, unsigned long *, unsigned long *);
+int swapon(const char *);
+int ttyslot(void);
+int undelete(const char *);
+int unwhiteout(const char *);
+void *valloc(size_t);
+
+__WATCHOS_PROHIBITED __TVOS_PROHIBITED
+__OS_AVAILABILITY_MSG(ios,deprecated=10.0,"syscall(2) is unsupported; "
+ "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")
+__OS_AVAILABILITY_MSG(macosx,deprecated=10.12,"syscall(2) is unsupported; "
+ "please switch to a supported interface. For SYS_kdebug_trace use kdebug_signpost().")
+int syscall(int, ...);
+
+extern char *suboptarg; /* getsubopt(3) external variable */
+int getsubopt(char **, char * const *, char **);
+
+/* HFS & HFS Plus semantics system calls go here */
+#ifdef __LP64__
+int fgetattrlist(int,void*,void*,size_t,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+int fsetattrlist(int,void*,void*,size_t,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+int getattrlist(const char*,void*,void*,size_t,unsigned int) __DARWIN_ALIAS(getattrlist);
+int setattrlist(const char*,void*,void*,size_t,unsigned int) __DARWIN_ALIAS(setattrlist);
+int exchangedata(const char*,const char*,unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int getdirentriesattr(int,void*,void*,size_t,unsigned int*,unsigned int*,unsigned int*,unsigned int) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+
+#else /* __LP64__ */
+int fgetattrlist(int,void*,void*,size_t,unsigned long) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+int fsetattrlist(int,void*,void*,size_t,unsigned long) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+int getattrlist(const char*,void*,void*,size_t,unsigned long) __DARWIN_ALIAS(getattrlist);
+int setattrlist(const char*,void*,void*,size_t,unsigned long) __DARWIN_ALIAS(setattrlist);
+int exchangedata(const char*,const char*,unsigned long)
+ __OSX_DEPRECATED(10.0, 10.13, "use renamex_np with the RENAME_SWAP flag")
+ __IOS_DEPRECATED(2.0, 11.0, "use renamex_np with the RENAME_SWAP flag")
+ __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int getdirentriesattr(int,void*,void*,size_t,unsigned long*,unsigned long*,unsigned long*,unsigned long) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+
+#endif /* __LP64__ */
+
+struct fssearchblock;
+struct searchstate;
+
+int searchfs(const char *, struct fssearchblock *, unsigned long *, unsigned int, unsigned int, struct searchstate *) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
+int fsctl(const char *,unsigned long,void*,unsigned int);
+int ffsctl(int,unsigned long,void*,unsigned int) __OSX_AVAILABLE_STARTING(__MAC_10_6, __IPHONE_3_0);
+
+#define SYNC_VOLUME_FULLSYNC 0x01 /* Flush data and metadata to platter, not just to disk cache */
+#define SYNC_VOLUME_WAIT 0x02 /* Wait for sync to complete */
+
+int fsync_volume_np(int, int) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
+int sync_volume_np(const char *, int) __OSX_AVAILABLE_STARTING(__MAC_10_8, __IPHONE_6_0);
+
+extern int optreset;
+
+__END_DECLS
+#endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
+
+#endif /* _UNISTD_H_ */
\ No newline at end of file
lib/libc/include/x86_64-macos.13-none/mach/i386/thread_status.h
@@ -132,6 +132,12 @@
*/
#define THREAD_MACHINE_STATE_MAX THREAD_STATE_MAX
+#define FLAVOR_MODIFIES_CORE_CPU_REGISTERS(x) \
+((x == x86_THREAD_STATE) || \
+ (x == x86_THREAD_STATE32) || \
+ (x == x86_THREAD_STATE64) || \
+ (x == x86_THREAD_FULL_STATE64))
+
/*
* VALID_THREAD_STATE_FLAVOR is a platform specific macro that when passed
* an exception flavor will return if that is a defined flavor for that