authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-06-24 18:41:33+02:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2021-06-24 18:41:33+02:00
log8216ce67895f5605d1720df4e5e6636395f2fc92
treeb37a5a6f78901337e6683378ad6becf5dffae6f7
parent31c49ad64ded02b9dde57f5d3ef102a771fa5cf7
parentcea8a2f5008bdda8bfd85af58537d148edde75ba
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #9171 from ziglang/zld-tapi

zld: add TAPI parser for linkers, ship libSystem.B.tbd with Zig, and parse tbd stubs on macOS

14 files changed, 6545 insertions(+), 157 deletions(-)

CMakeLists.txt+6
......@@ -579,6 +579,7 @@ set(ZIG_STAGE2_SOURCES
579579 "${CMAKE_SOURCE_DIR}/src/link/MachO/DebugSymbols.zig"
580580 "${CMAKE_SOURCE_DIR}/src/link/MachO/Dylib.zig"
581581 "${CMAKE_SOURCE_DIR}/src/link/MachO/Object.zig"
582 "${CMAKE_SOURCE_DIR}/src/link/MachO/Stub.zig"
582583 "${CMAKE_SOURCE_DIR}/src/link/MachO/Symbol.zig"
583584 "${CMAKE_SOURCE_DIR}/src/link/MachO/Trie.zig"
584585 "${CMAKE_SOURCE_DIR}/src/link/MachO/Zld.zig"
......@@ -588,6 +589,11 @@ set(ZIG_STAGE2_SOURCES
588589 "${CMAKE_SOURCE_DIR}/src/link/MachO/reloc/aarch64.zig"
589590 "${CMAKE_SOURCE_DIR}/src/link/MachO/reloc/x86_64.zig"
590591 "${CMAKE_SOURCE_DIR}/src/link/Wasm.zig"
592 "${CMAKE_SOURCE_DIR}/src/link/tapi.zig"
593 "${CMAKE_SOURCE_DIR}/src/link/tapi/parse.zig"
594 "${CMAKE_SOURCE_DIR}/src/link/tapi/parse/test.zig"
595 "${CMAKE_SOURCE_DIR}/src/link/tapi/Tokenizer.zig"
596 "${CMAKE_SOURCE_DIR}/src/link/tapi/yaml.zig"
591597 "${CMAKE_SOURCE_DIR}/src/link/C/zig.h"
592598 "${CMAKE_SOURCE_DIR}/src/link/msdos-stub.bin"
593599 "${CMAKE_SOURCE_DIR}/src/liveness.zig"
lib/libc/darwin/libSystem.B.tbd created+3690
......@@ -0,0 +1,3690 @@
1--- !tapi-tbd
2tbd-version: 4
3targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
4 arm64e-macos, arm64e-maccatalyst ]
5uuids:
6 - target: x86_64-macos
7 value: F86CC732-D5E4-30B5-AA7D-167DF5EC2708
8 - target: x86_64-maccatalyst
9 value: F86CC732-D5E4-30B5-AA7D-167DF5EC2708
10 - target: arm64-macos
11 value: 00000000-0000-0000-0000-000000000000
12 - target: arm64-maccatalyst
13 value: 00000000-0000-0000-0000-000000000000
14 - target: arm64e-macos
15 value: A17E8744-051E-356E-8619-66F2A6E89AD4
16 - target: arm64e-maccatalyst
17 value: A17E8744-051E-356E-8619-66F2A6E89AD4
18install-name: '/usr/lib/libSystem.B.dylib'
19current-version: 1292.60.1
20reexported-libraries:
21 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
22 arm64e-macos, arm64e-maccatalyst ]
23 libraries: [ '/usr/lib/system/libcache.dylib', '/usr/lib/system/libcommonCrypto.dylib',
24 '/usr/lib/system/libcompiler_rt.dylib', '/usr/lib/system/libcopyfile.dylib',
25 '/usr/lib/system/libcorecrypto.dylib', '/usr/lib/system/libdispatch.dylib',
26 '/usr/lib/system/libdyld.dylib', '/usr/lib/system/libkeymgr.dylib',
27 '/usr/lib/system/liblaunch.dylib', '/usr/lib/system/libmacho.dylib',
28 '/usr/lib/system/libquarantine.dylib', '/usr/lib/system/libremovefile.dylib',
29 '/usr/lib/system/libsystem_asl.dylib', '/usr/lib/system/libsystem_blocks.dylib',
30 '/usr/lib/system/libsystem_c.dylib', '/usr/lib/system/libsystem_collections.dylib',
31 '/usr/lib/system/libsystem_configuration.dylib', '/usr/lib/system/libsystem_containermanager.dylib',
32 '/usr/lib/system/libsystem_coreservices.dylib', '/usr/lib/system/libsystem_darwin.dylib',
33 '/usr/lib/system/libsystem_dnssd.dylib', '/usr/lib/system/libsystem_featureflags.dylib',
34 '/usr/lib/system/libsystem_info.dylib', '/usr/lib/system/libsystem_kernel.dylib',
35 '/usr/lib/system/libsystem_m.dylib', '/usr/lib/system/libsystem_malloc.dylib',
36 '/usr/lib/system/libsystem_networkextension.dylib', '/usr/lib/system/libsystem_notify.dylib',
37 '/usr/lib/system/libsystem_platform.dylib', '/usr/lib/system/libsystem_product_info_filter.dylib',
38 '/usr/lib/system/libsystem_pthread.dylib', '/usr/lib/system/libsystem_sandbox.dylib',
39 '/usr/lib/system/libsystem_secinit.dylib', '/usr/lib/system/libsystem_symptoms.dylib',
40 '/usr/lib/system/libsystem_trace.dylib', '/usr/lib/system/libunwind.dylib',
41 '/usr/lib/system/libxpc.dylib' ]
42exports:
43 - targets: [ x86_64-maccatalyst, x86_64-macos ]
44 symbols: [ 'R8289209$_close', 'R8289209$_fork', 'R8289209$_fsync', 'R8289209$_getattrlist',
45 'R8289209$_getrlimit', 'R8289209$_getxattr', 'R8289209$_open',
46 'R8289209$_pthread_attr_destroy', 'R8289209$_pthread_attr_init',
47 'R8289209$_pthread_attr_setdetachstate', 'R8289209$_pthread_create',
48 'R8289209$_pthread_mutex_lock', 'R8289209$_pthread_mutex_unlock',
49 'R8289209$_pthread_self', 'R8289209$_ptrace', 'R8289209$_read',
50 'R8289209$_setattrlist', 'R8289209$_setrlimit', 'R8289209$_sigaction',
51 'R8289209$_stat', 'R8289209$_sysctl', 'R8289209$_time', 'R8289209$_unlink',
52 'R8289209$_write' ]
53 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
54 arm64-macos, arm64-maccatalyst ]
55 symbols: [ ___crashreporter_info__, _libSystem_atfork_child, _libSystem_atfork_parent,
56 _libSystem_atfork_prepare, _mach_init_routine ]
57--- !tapi-tbd
58tbd-version: 4
59targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
60 arm64e-macos, arm64e-maccatalyst ]
61uuids:
62 - target: x86_64-macos
63 value: 2F7F7303-DB23-359E-85CD-8B2F93223E2A
64 - target: x86_64-maccatalyst
65 value: 2F7F7303-DB23-359E-85CD-8B2F93223E2A
66 - target: arm64-macos
67 value: 00000000-0000-0000-0000-000000000000
68 - target: arm64-maccatalyst
69 value: 00000000-0000-0000-0000-000000000000
70 - target: arm64e-macos
71 value: BF1D536B-540F-374E-BA7B-EB2429F334CD
72 - target: arm64e-maccatalyst
73 value: BF1D536B-540F-374E-BA7B-EB2429F334CD
74install-name: '/usr/lib/system/libcache.dylib'
75current-version: 83
76parent-umbrella:
77 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
78 arm64e-macos, arm64e-maccatalyst ]
79 umbrella: System
80exports:
81 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
82 arm64-macos, arm64-maccatalyst ]
83 symbols: [ _cache_create, _cache_destroy, _cache_get, _cache_get_and_retain,
84 _cache_get_cost_hint, _cache_get_count_hint, _cache_get_info,
85 _cache_get_info_for_key, _cache_get_info_for_keys, _cache_get_minimum_values_hint,
86 _cache_get_name, _cache_hash_byte_string, _cache_invoke, _cache_key_hash_cb_cstring,
87 _cache_key_hash_cb_integer, _cache_key_is_equal_cb_cstring,
88 _cache_key_is_equal_cb_integer, _cache_print, _cache_print_stats,
89 _cache_release_cb_free, _cache_release_value, _cache_remove,
90 _cache_remove_all, _cache_remove_with_block, _cache_set_and_retain,
91 _cache_set_cost_hint, _cache_set_count_hint, _cache_set_minimum_values_hint,
92 _cache_set_name, _cache_simulate_memory_warning_event, _cache_value_make_nonpurgeable_cb,
93 _cache_value_make_purgeable_cb ]
94--- !tapi-tbd
95tbd-version: 4
96targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
97 arm64e-macos, arm64e-maccatalyst ]
98uuids:
99 - target: x86_64-macos
100 value: 1D0A75A5-DEC5-39C6-AB3D-E789B8866712
101 - target: x86_64-maccatalyst
102 value: 1D0A75A5-DEC5-39C6-AB3D-E789B8866712
103 - target: arm64-macos
104 value: 00000000-0000-0000-0000-000000000000
105 - target: arm64-maccatalyst
106 value: 00000000-0000-0000-0000-000000000000
107 - target: arm64e-macos
108 value: FEDF1785-B89A-3EFB-B95E-467645AC6113
109 - target: arm64e-maccatalyst
110 value: FEDF1785-B89A-3EFB-B95E-467645AC6113
111install-name: '/usr/lib/system/libcommonCrypto.dylib'
112current-version: 60178.40.2
113parent-umbrella:
114 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
115 arm64e-macos, arm64e-maccatalyst ]
116 umbrella: System
117exports:
118 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
119 arm64-macos, arm64-maccatalyst ]
120 symbols: [ _CCAESCmac, _CCAESCmacCreate, _CCAESCmacDestroy, _CCAESCmacFinal,
121 _CCAESCmacOutputSizeFromContext, _CCAESCmacUpdate, _CCBigNumAdd,
122 _CCBigNumAddI, _CCBigNumBitCount, _CCBigNumByteCount, _CCBigNumClear,
123 _CCBigNumCompare, _CCBigNumCompareI, _CCBigNumCopy, _CCBigNumCreateRandom,
124 _CCBigNumDiv, _CCBigNumFree, _CCBigNumFromData, _CCBigNumFromDecimalString,
125 _CCBigNumFromHexString, _CCBigNumGetI, _CCBigNumIsNegative,
126 _CCBigNumIsPrime, _CCBigNumIsZero, _CCBigNumLeftShift, _CCBigNumMod,
127 _CCBigNumModExp, _CCBigNumModI, _CCBigNumMul, _CCBigNumMulI,
128 _CCBigNumMulMod, _CCBigNumRightShift, _CCBigNumSetI, _CCBigNumSetNegative,
129 _CCBigNumSub, _CCBigNumSubI, _CCBigNumToData, _CCBigNumToDecimalString,
130 _CCBigNumToHexString, _CCBigNumZeroLSBCount, _CCCKGContributorCommit,
131 _CCCKGContributorCreate, _CCCKGContributorDestroy, _CCCKGContributorFinish,
132 _CCCKGGetCommitmentSize, _CCCKGGetOpeningSize, _CCCKGGetShareSize,
133 _CCCKGOwnerCreate, _CCCKGOwnerDestroy, _CCCKGOwnerFinish,
134 _CCCKGOwnerGenerateShare, _CCCalibratePBKDF, _CCCreateBigNum,
135 _CCCrypt, _CCCryptorAddParameter, _CCCryptorChaCha20, _CCCryptorChaCha20Poly1305OneshotDecrypt,
136 _CCCryptorChaCha20Poly1305OneshotEncrypt, _CCCryptorCreate,
137 _CCCryptorCreateFromData, _CCCryptorCreateFromDataWithMode,
138 _CCCryptorCreateWithMode, _CCCryptorDecryptDataBlock, _CCCryptorEncryptDataBlock,
139 _CCCryptorFinal, _CCCryptorGCM, _CCCryptorGCMAddAAD, _CCCryptorGCMAddADD,
140 _CCCryptorGCMAddIV, _CCCryptorGCMDecrypt, _CCCryptorGCMEncrypt,
141 _CCCryptorGCMFinal, _CCCryptorGCMFinalize, _CCCryptorGCMOneshotDecrypt,
142 _CCCryptorGCMOneshotEncrypt, _CCCryptorGCMReset, _CCCryptorGCMSetIV,
143 _CCCryptorGCMaddAAD, _CCCryptorGetIV, _CCCryptorGetOutputLength,
144 _CCCryptorGetParameter, _CCCryptorRelease, _CCCryptorReset,
145 _CCCryptorReset_binary_compatibility, _CCCryptorUpdate, _CCDHComputeKey,
146 _CCDHCreate, _CCDHGenerateKey, _CCDHParametersCreateFromData,
147 _CCDHParametersCreateFromPKCS3, _CCDHParametersPKCS3Encode,
148 _CCDHParametersPKCS3EncodeLength, _CCDHParametersRelease,
149 _CCDHRelease, _CCDeriveKey, _CCDesCBCCksum, _CCDesIsWeakKey,
150 _CCDesSetOddParity, _CCDigest, _CCDigestBlockSize, _CCDigestCreate,
151 _CCDigestCreateByOID, _CCDigestDestroy, _CCDigestFinal, _CCDigestGetBlockSize,
152 _CCDigestGetBlockSizeFromRef, _CCDigestGetOutputSize, _CCDigestGetOutputSizeFromRef,
153 _CCDigestInit, _CCDigestOID, _CCDigestOIDLen, _CCDigestOutputSize,
154 _CCDigestReset, _CCDigestUpdate, _CCECCryptorBlind, _CCECCryptorBlindingKeysRelease,
155 _CCECCryptorComputeSharedSecret, _CCECCryptorCreateFromData,
156 _CCECCryptorExportKey, _CCECCryptorExportPublicKey, _CCECCryptorGenerateBlindingKeys,
157 _CCECCryptorGeneratePair, _CCECCryptorGetKeyComponents, _CCECCryptorGetPublicKeyFromPrivateKey,
158 _CCECCryptorH2C, _CCECCryptorImportKey, _CCECCryptorImportPublicKey,
159 _CCECCryptorRelease, _CCECCryptorSignHash, _CCECCryptorTwinDiversifyEntropySize,
160 _CCECCryptorTwinDiversifyKey, _CCECCryptorUnblind, _CCECCryptorUnwrapKey,
161 _CCECCryptorVerifyHash, _CCECCryptorWrapKey, _CCECGetKeySize,
162 _CCECGetKeyType, _CCHKDFExpand, _CCHKDFExtract, _CCHmac, _CCHmacClone,
163 _CCHmacCreate, _CCHmacDestroy, _CCHmacFinal, _CCHmacInit,
164 _CCHmacOneShot, _CCHmacOutputSize, _CCHmacOutputSizeFromRef,
165 _CCHmacUpdate, _CCKDFParametersCreateAnsiX963, _CCKDFParametersCreateCtrHmac,
166 _CCKDFParametersCreateCtrHmacFixed, _CCKDFParametersCreateHkdf,
167 _CCKDFParametersCreatePbkdf2, _CCKDFParametersDestroy, _CCKeyDerivationHMac,
168 _CCKeyDerivationPBKDF, _CCRSACryptorCreateFromData, _CCRSACryptorCreatePublicKeyFromPrivateKey,
169 _CCRSACryptorCrypt, _CCRSACryptorDecrypt, _CCRSACryptorEncrypt,
170 _CCRSACryptorExport, _CCRSACryptorGeneratePair, _CCRSACryptorGetPublicKeyFromPrivateKey,
171 _CCRSACryptorImport, _CCRSACryptorRelease, _CCRSACryptorSign,
172 _CCRSACryptorVerify, _CCRSAGetCRTComponents, _CCRSAGetCRTComponentsSizes,
173 _CCRSAGetKeyComponents, _CCRSAGetKeySize, _CCRSAGetKeyType,
174 _CCRandomCopyBytes, _CCRandomGenerateBytes, _CCRandomUniform,
175 _CCSymmetricKeyUnwrap, _CCSymmetricKeyWrap, _CCSymmetricUnwrappedSize,
176 _CCSymmetricWrappedSize, _CC_MD2, _CC_MD2_Final, _CC_MD2_Init,
177 _CC_MD2_Update, _CC_MD4, _CC_MD4_Final, _CC_MD4_Init, _CC_MD4_Update,
178 _CC_MD5, _CC_MD5_Final, _CC_MD5_Init, _CC_MD5_Update, _CC_SHA1,
179 _CC_SHA1_Final, _CC_SHA1_Init, _CC_SHA1_Update, _CC_SHA224,
180 _CC_SHA224_Final, _CC_SHA224_Init, _CC_SHA224_Update, _CC_SHA256,
181 _CC_SHA256_Final, _CC_SHA256_Init, _CC_SHA256_Update, _CC_SHA384,
182 _CC_SHA384_Final, _CC_SHA384_Init, _CC_SHA384_Update, _CC_SHA512,
183 _CC_SHA512_Final, _CC_SHA512_Init, _CC_SHA512_Update, _CCrfc3394_iv,
184 _CCrfc3394_ivLen, _CNCRC, _CNCRCDumpTable, _CNCRCFinal, _CNCRCInit,
185 _CNCRCRelease, _CNCRCUpdate, _CNCRCWeakTest, _CNEncode, _CNEncoderBlocksize,
186 _CNEncoderBlocksizeFromRef, _CNEncoderCreate, _CNEncoderCreateCustom,
187 _CNEncoderFinal, _CNEncoderGetOutputLength, _CNEncoderGetOutputLengthFromEncoding,
188 _CNEncoderRelease, _CNEncoderUpdate, _MD5Final, _ccDRBGGetRngState,
189 _ccDevRandomGetRngState, _kCCDHRFC2409Group2, _kCCDHRFC3526Group5,
190 _kCCRandomDefault, _kCCRandomDevRandom ]
191--- !tapi-tbd
192tbd-version: 4
193targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
194uuids:
195 - target: x86_64-macos
196 value: 0DB26EC8-B4CD-3268-B865-C2FC07E4D2AA
197 - target: arm64-macos
198 value: 00000000-0000-0000-0000-000000000000
199 - target: arm64e-macos
200 value: 39A3467E-CBED-3C4A-B0BC-39C0093842E9
201install-name: '/usr/lib/system/libcompiler_rt.dylib'
202current-version: 102.2
203parent-umbrella:
204 - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
205 umbrella: System
206exports:
207 - targets: [ x86_64-macos ]
208 symbols: [ '$ld$hide$os10.4$___absvti2', '$ld$hide$os10.4$___addvti3',
209 '$ld$hide$os10.4$___ashlti3', '$ld$hide$os10.4$___ashrti3',
210 '$ld$hide$os10.4$___cmpti2', '$ld$hide$os10.4$___ctzti2',
211 '$ld$hide$os10.4$___ffsti2', '$ld$hide$os10.4$___fixunsxfti',
212 '$ld$hide$os10.4$___fixxfti', '$ld$hide$os10.4$___floattixf',
213 '$ld$hide$os10.4$___floatuntixf', '$ld$hide$os10.4$___lshrti3',
214 '$ld$hide$os10.4$___multi3', '$ld$hide$os10.4$___mulvti3',
215 '$ld$hide$os10.4$___negti2', '$ld$hide$os10.4$___negvti2',
216 '$ld$hide$os10.4$___parityti2', '$ld$hide$os10.4$___popcountti2',
217 '$ld$hide$os10.4$___subvti3', '$ld$hide$os10.4$___ucmpti2',
218 '$ld$hide$os10.5$___absvti2', '$ld$hide$os10.5$___addvti3',
219 '$ld$hide$os10.5$___ashlti3', '$ld$hide$os10.5$___ashrti3',
220 '$ld$hide$os10.5$___cmpti2', '$ld$hide$os10.5$___ctzti2',
221 '$ld$hide$os10.5$___ffsti2', '$ld$hide$os10.5$___fixunsxfti',
222 '$ld$hide$os10.5$___fixxfti', '$ld$hide$os10.5$___floattixf',
223 '$ld$hide$os10.5$___floatuntixf', '$ld$hide$os10.5$___lshrti3',
224 '$ld$hide$os10.5$___multi3', '$ld$hide$os10.5$___mulvti3',
225 '$ld$hide$os10.5$___negti2', '$ld$hide$os10.5$___negvti2',
226 '$ld$hide$os10.5$___parityti2', '$ld$hide$os10.5$___popcountti2',
227 '$ld$hide$os10.5$___subvti3', '$ld$hide$os10.5$___ucmpti2',
228 ___absvdi2, ___absvsi2, ___absvti2, ___addvdi3, ___addvsi3,
229 ___addvti3, ___ashldi3, ___ashlti3, ___ashrdi3, ___ashrti3,
230 ___clzdi2, ___clzsi2, ___cmpdi2, ___cmpti2, ___ctzdi2, ___ctzsi2,
231 ___ctzti2, ___divdc3, ___divdi3, ___divsc3, ___divxc3, ___ffsdi2,
232 ___ffsti2, ___fixdfdi, ___fixsfdi, ___fixunsdfdi, ___fixunsdfsi,
233 ___fixunssfdi, ___fixunssfsi, ___fixunsxfdi, ___fixunsxfsi,
234 ___fixunsxfti, ___fixxfdi, ___fixxfti, ___floatdidf, ___floatdisf,
235 ___floatdixf, ___floattixf, ___floatundidf, ___floatundisf,
236 ___floatundixf, ___floatuntixf, ___lshrdi3, ___lshrti3, ___moddi3,
237 ___muldi3, ___mulodi4, ___mulosi4, ___muloti4, ___multi3,
238 ___mulvdi3, ___mulvsi3, ___mulvti3, ___mulxc3, ___negdi2,
239 ___negti2, ___negvdi2, ___negvsi2, ___negvti2, ___paritydi2,
240 ___paritysi2, ___parityti2, ___popcountdi2, ___popcountsi2,
241 ___popcountti2, ___powixf2, ___subvdi3, ___subvsi3, ___subvti3,
242 ___ucmpdi2, ___ucmpti2, ___udivdi3, ___udivmoddi4, ___umoddi3 ]
243 - targets: [ x86_64-macos, arm64e-macos, arm64-macos ]
244 symbols: [ '$ld$hide$os10.10$___chkstk_darwin', '$ld$hide$os10.10$___extendhfsf2',
245 '$ld$hide$os10.10$___truncdfhf2', '$ld$hide$os10.10$___truncsfhf2',
246 '$ld$hide$os10.10$_atomic_flag_clear', '$ld$hide$os10.10$_atomic_flag_clear_explicit',
247 '$ld$hide$os10.10$_atomic_flag_test_and_set', '$ld$hide$os10.10$_atomic_flag_test_and_set_explicit',
248 '$ld$hide$os10.10$_atomic_signal_fence', '$ld$hide$os10.10$_atomic_thread_fence',
249 '$ld$hide$os10.11$___chkstk_darwin', '$ld$hide$os10.12$___chkstk_darwin',
250 '$ld$hide$os10.13$___chkstk_darwin', '$ld$hide$os10.14$___chkstk_darwin',
251 '$ld$hide$os10.4$___absvdi2', '$ld$hide$os10.4$___absvsi2',
252 '$ld$hide$os10.4$___addvdi3', '$ld$hide$os10.4$___addvsi3',
253 '$ld$hide$os10.4$___ashldi3', '$ld$hide$os10.4$___ashrdi3',
254 '$ld$hide$os10.4$___clear_cache', '$ld$hide$os10.4$___clzdi2',
255 '$ld$hide$os10.4$___clzsi2', '$ld$hide$os10.4$___clzti2',
256 '$ld$hide$os10.4$___cmpdi2', '$ld$hide$os10.4$___ctzdi2',
257 '$ld$hide$os10.4$___ctzsi2', '$ld$hide$os10.4$___divdc3',
258 '$ld$hide$os10.4$___divdi3', '$ld$hide$os10.4$___divsc3',
259 '$ld$hide$os10.4$___divti3', '$ld$hide$os10.4$___divxc3',
260 '$ld$hide$os10.4$___enable_execute_stack', '$ld$hide$os10.4$___ffsdi2',
261 '$ld$hide$os10.4$___fixdfdi', '$ld$hide$os10.4$___fixdfti',
262 '$ld$hide$os10.4$___fixsfdi', '$ld$hide$os10.4$___fixsfti',
263 '$ld$hide$os10.4$___fixunsdfdi', '$ld$hide$os10.4$___fixunsdfsi',
264 '$ld$hide$os10.4$___fixunsdfti', '$ld$hide$os10.4$___fixunssfdi',
265 '$ld$hide$os10.4$___fixunssfsi', '$ld$hide$os10.4$___fixunssfti',
266 '$ld$hide$os10.4$___fixunsxfdi', '$ld$hide$os10.4$___fixunsxfsi',
267 '$ld$hide$os10.4$___fixxfdi', '$ld$hide$os10.4$___floatdidf',
268 '$ld$hide$os10.4$___floatdisf', '$ld$hide$os10.4$___floatdixf',
269 '$ld$hide$os10.4$___floattidf', '$ld$hide$os10.4$___floattisf',
270 '$ld$hide$os10.4$___floatundidf', '$ld$hide$os10.4$___floatundisf',
271 '$ld$hide$os10.4$___floatundixf', '$ld$hide$os10.4$___floatuntidf',
272 '$ld$hide$os10.4$___floatuntisf', '$ld$hide$os10.4$___gcc_personality_v0',
273 '$ld$hide$os10.4$___lshrdi3', '$ld$hide$os10.4$___moddi3',
274 '$ld$hide$os10.4$___modti3', '$ld$hide$os10.4$___muldc3',
275 '$ld$hide$os10.4$___muldi3', '$ld$hide$os10.4$___mulsc3',
276 '$ld$hide$os10.4$___mulvdi3', '$ld$hide$os10.4$___mulvsi3',
277 '$ld$hide$os10.4$___mulxc3', '$ld$hide$os10.4$___negdi2',
278 '$ld$hide$os10.4$___negvdi2', '$ld$hide$os10.4$___negvsi2',
279 '$ld$hide$os10.4$___paritydi2', '$ld$hide$os10.4$___paritysi2',
280 '$ld$hide$os10.4$___popcountdi2', '$ld$hide$os10.4$___popcountsi2',
281 '$ld$hide$os10.4$___powidf2', '$ld$hide$os10.4$___powisf2',
282 '$ld$hide$os10.4$___powixf2', '$ld$hide$os10.4$___subvdi3',
283 '$ld$hide$os10.4$___subvsi3', '$ld$hide$os10.4$___ucmpdi2',
284 '$ld$hide$os10.4$___udivdi3', '$ld$hide$os10.4$___udivmoddi4',
285 '$ld$hide$os10.4$___udivmodti4', '$ld$hide$os10.4$___udivti3',
286 '$ld$hide$os10.4$___umoddi3', '$ld$hide$os10.4$___umodti3',
287 '$ld$hide$os10.5$___absvdi2', '$ld$hide$os10.5$___absvsi2',
288 '$ld$hide$os10.5$___addvdi3', '$ld$hide$os10.5$___addvsi3',
289 '$ld$hide$os10.5$___ashldi3', '$ld$hide$os10.5$___ashrdi3',
290 '$ld$hide$os10.5$___clear_cache', '$ld$hide$os10.5$___clzdi2',
291 '$ld$hide$os10.5$___clzsi2', '$ld$hide$os10.5$___clzti2',
292 '$ld$hide$os10.5$___cmpdi2', '$ld$hide$os10.5$___ctzdi2',
293 '$ld$hide$os10.5$___ctzsi2', '$ld$hide$os10.5$___divdc3',
294 '$ld$hide$os10.5$___divdi3', '$ld$hide$os10.5$___divsc3',
295 '$ld$hide$os10.5$___divti3', '$ld$hide$os10.5$___divxc3',
296 '$ld$hide$os10.5$___enable_execute_stack', '$ld$hide$os10.5$___ffsdi2',
297 '$ld$hide$os10.5$___fixdfdi', '$ld$hide$os10.5$___fixdfti',
298 '$ld$hide$os10.5$___fixsfdi', '$ld$hide$os10.5$___fixsfti',
299 '$ld$hide$os10.5$___fixunsdfdi', '$ld$hide$os10.5$___fixunsdfsi',
300 '$ld$hide$os10.5$___fixunsdfti', '$ld$hide$os10.5$___fixunssfdi',
301 '$ld$hide$os10.5$___fixunssfsi', '$ld$hide$os10.5$___fixunssfti',
302 '$ld$hide$os10.5$___fixunsxfdi', '$ld$hide$os10.5$___fixunsxfsi',
303 '$ld$hide$os10.5$___fixxfdi', '$ld$hide$os10.5$___floatdidf',
304 '$ld$hide$os10.5$___floatdisf', '$ld$hide$os10.5$___floatdixf',
305 '$ld$hide$os10.5$___floattidf', '$ld$hide$os10.5$___floattisf',
306 '$ld$hide$os10.5$___floatundidf', '$ld$hide$os10.5$___floatundisf',
307 '$ld$hide$os10.5$___floatundixf', '$ld$hide$os10.5$___floatuntidf',
308 '$ld$hide$os10.5$___floatuntisf', '$ld$hide$os10.5$___gcc_personality_v0',
309 '$ld$hide$os10.5$___lshrdi3', '$ld$hide$os10.5$___moddi3',
310 '$ld$hide$os10.5$___modti3', '$ld$hide$os10.5$___muldc3',
311 '$ld$hide$os10.5$___muldi3', '$ld$hide$os10.5$___mulsc3',
312 '$ld$hide$os10.5$___mulvdi3', '$ld$hide$os10.5$___mulvsi3',
313 '$ld$hide$os10.5$___mulxc3', '$ld$hide$os10.5$___negdi2',
314 '$ld$hide$os10.5$___negvdi2', '$ld$hide$os10.5$___negvsi2',
315 '$ld$hide$os10.5$___paritydi2', '$ld$hide$os10.5$___paritysi2',
316 '$ld$hide$os10.5$___popcountdi2', '$ld$hide$os10.5$___popcountsi2',
317 '$ld$hide$os10.5$___powidf2', '$ld$hide$os10.5$___powisf2',
318 '$ld$hide$os10.5$___powixf2', '$ld$hide$os10.5$___subvdi3',
319 '$ld$hide$os10.5$___subvsi3', '$ld$hide$os10.5$___ucmpdi2',
320 '$ld$hide$os10.5$___udivdi3', '$ld$hide$os10.5$___udivmoddi4',
321 '$ld$hide$os10.5$___udivmodti4', '$ld$hide$os10.5$___udivti3',
322 '$ld$hide$os10.5$___umoddi3', '$ld$hide$os10.5$___umodti3',
323 '$ld$hide$os10.6$___atomic_compare_exchange', '$ld$hide$os10.6$___atomic_compare_exchange_1',
324 '$ld$hide$os10.6$___atomic_compare_exchange_2', '$ld$hide$os10.6$___atomic_compare_exchange_4',
325 '$ld$hide$os10.6$___atomic_compare_exchange_8', '$ld$hide$os10.6$___atomic_exchange',
326 '$ld$hide$os10.6$___atomic_exchange_1', '$ld$hide$os10.6$___atomic_exchange_2',
327 '$ld$hide$os10.6$___atomic_exchange_4', '$ld$hide$os10.6$___atomic_exchange_8',
328 '$ld$hide$os10.6$___atomic_fetch_add_1', '$ld$hide$os10.6$___atomic_fetch_add_2',
329 '$ld$hide$os10.6$___atomic_fetch_add_4', '$ld$hide$os10.6$___atomic_fetch_add_8',
330 '$ld$hide$os10.6$___atomic_fetch_and_1', '$ld$hide$os10.6$___atomic_fetch_and_2',
331 '$ld$hide$os10.6$___atomic_fetch_and_4', '$ld$hide$os10.6$___atomic_fetch_and_8',
332 '$ld$hide$os10.6$___atomic_fetch_or_1', '$ld$hide$os10.6$___atomic_fetch_or_2',
333 '$ld$hide$os10.6$___atomic_fetch_or_4', '$ld$hide$os10.6$___atomic_fetch_or_8',
334 '$ld$hide$os10.6$___atomic_fetch_sub_1', '$ld$hide$os10.6$___atomic_fetch_sub_2',
335 '$ld$hide$os10.6$___atomic_fetch_sub_4', '$ld$hide$os10.6$___atomic_fetch_sub_8',
336 '$ld$hide$os10.6$___atomic_fetch_xor_1', '$ld$hide$os10.6$___atomic_fetch_xor_2',
337 '$ld$hide$os10.6$___atomic_fetch_xor_4', '$ld$hide$os10.6$___atomic_fetch_xor_8',
338 '$ld$hide$os10.6$___atomic_load', '$ld$hide$os10.6$___atomic_load_1',
339 '$ld$hide$os10.6$___atomic_load_2', '$ld$hide$os10.6$___atomic_load_4',
340 '$ld$hide$os10.6$___atomic_load_8', '$ld$hide$os10.6$___atomic_store',
341 '$ld$hide$os10.6$___atomic_store_1', '$ld$hide$os10.6$___atomic_store_2',
342 '$ld$hide$os10.6$___atomic_store_4', '$ld$hide$os10.6$___atomic_store_8',
343 '$ld$hide$os10.6$___chkstk_darwin', '$ld$hide$os10.6$___extendhfsf2',
344 '$ld$hide$os10.6$___truncdfhf2', '$ld$hide$os10.6$___truncsfhf2',
345 '$ld$hide$os10.6$_atomic_flag_clear', '$ld$hide$os10.6$_atomic_flag_clear_explicit',
346 '$ld$hide$os10.6$_atomic_flag_test_and_set', '$ld$hide$os10.6$_atomic_flag_test_and_set_explicit',
347 '$ld$hide$os10.6$_atomic_signal_fence', '$ld$hide$os10.6$_atomic_thread_fence',
348 '$ld$hide$os10.7$___atomic_compare_exchange', '$ld$hide$os10.7$___atomic_compare_exchange_1',
349 '$ld$hide$os10.7$___atomic_compare_exchange_2', '$ld$hide$os10.7$___atomic_compare_exchange_4',
350 '$ld$hide$os10.7$___atomic_compare_exchange_8', '$ld$hide$os10.7$___atomic_exchange',
351 '$ld$hide$os10.7$___atomic_exchange_1', '$ld$hide$os10.7$___atomic_exchange_2',
352 '$ld$hide$os10.7$___atomic_exchange_4', '$ld$hide$os10.7$___atomic_exchange_8',
353 '$ld$hide$os10.7$___atomic_fetch_add_1', '$ld$hide$os10.7$___atomic_fetch_add_2',
354 '$ld$hide$os10.7$___atomic_fetch_add_4', '$ld$hide$os10.7$___atomic_fetch_add_8',
355 '$ld$hide$os10.7$___atomic_fetch_and_1', '$ld$hide$os10.7$___atomic_fetch_and_2',
356 '$ld$hide$os10.7$___atomic_fetch_and_4', '$ld$hide$os10.7$___atomic_fetch_and_8',
357 '$ld$hide$os10.7$___atomic_fetch_or_1', '$ld$hide$os10.7$___atomic_fetch_or_2',
358 '$ld$hide$os10.7$___atomic_fetch_or_4', '$ld$hide$os10.7$___atomic_fetch_or_8',
359 '$ld$hide$os10.7$___atomic_fetch_sub_1', '$ld$hide$os10.7$___atomic_fetch_sub_2',
360 '$ld$hide$os10.7$___atomic_fetch_sub_4', '$ld$hide$os10.7$___atomic_fetch_sub_8',
361 '$ld$hide$os10.7$___atomic_fetch_xor_1', '$ld$hide$os10.7$___atomic_fetch_xor_2',
362 '$ld$hide$os10.7$___atomic_fetch_xor_4', '$ld$hide$os10.7$___atomic_fetch_xor_8',
363 '$ld$hide$os10.7$___atomic_load', '$ld$hide$os10.7$___atomic_load_1',
364 '$ld$hide$os10.7$___atomic_load_2', '$ld$hide$os10.7$___atomic_load_4',
365 '$ld$hide$os10.7$___atomic_load_8', '$ld$hide$os10.7$___atomic_store',
366 '$ld$hide$os10.7$___atomic_store_1', '$ld$hide$os10.7$___atomic_store_2',
367 '$ld$hide$os10.7$___atomic_store_4', '$ld$hide$os10.7$___atomic_store_8',
368 '$ld$hide$os10.7$___chkstk_darwin', '$ld$hide$os10.7$___extendhfsf2',
369 '$ld$hide$os10.7$___truncdfhf2', '$ld$hide$os10.7$___truncsfhf2',
370 '$ld$hide$os10.7$_atomic_flag_clear', '$ld$hide$os10.7$_atomic_flag_clear_explicit',
371 '$ld$hide$os10.7$_atomic_flag_test_and_set', '$ld$hide$os10.7$_atomic_flag_test_and_set_explicit',
372 '$ld$hide$os10.7$_atomic_signal_fence', '$ld$hide$os10.7$_atomic_thread_fence',
373 '$ld$hide$os10.8$___atomic_compare_exchange', '$ld$hide$os10.8$___atomic_compare_exchange_1',
374 '$ld$hide$os10.8$___atomic_compare_exchange_2', '$ld$hide$os10.8$___atomic_compare_exchange_4',
375 '$ld$hide$os10.8$___atomic_compare_exchange_8', '$ld$hide$os10.8$___atomic_exchange',
376 '$ld$hide$os10.8$___atomic_exchange_1', '$ld$hide$os10.8$___atomic_exchange_2',
377 '$ld$hide$os10.8$___atomic_exchange_4', '$ld$hide$os10.8$___atomic_exchange_8',
378 '$ld$hide$os10.8$___atomic_fetch_add_1', '$ld$hide$os10.8$___atomic_fetch_add_2',
379 '$ld$hide$os10.8$___atomic_fetch_add_4', '$ld$hide$os10.8$___atomic_fetch_add_8',
380 '$ld$hide$os10.8$___atomic_fetch_and_1', '$ld$hide$os10.8$___atomic_fetch_and_2',
381 '$ld$hide$os10.8$___atomic_fetch_and_4', '$ld$hide$os10.8$___atomic_fetch_and_8',
382 '$ld$hide$os10.8$___atomic_fetch_or_1', '$ld$hide$os10.8$___atomic_fetch_or_2',
383 '$ld$hide$os10.8$___atomic_fetch_or_4', '$ld$hide$os10.8$___atomic_fetch_or_8',
384 '$ld$hide$os10.8$___atomic_fetch_sub_1', '$ld$hide$os10.8$___atomic_fetch_sub_2',
385 '$ld$hide$os10.8$___atomic_fetch_sub_4', '$ld$hide$os10.8$___atomic_fetch_sub_8',
386 '$ld$hide$os10.8$___atomic_fetch_xor_1', '$ld$hide$os10.8$___atomic_fetch_xor_2',
387 '$ld$hide$os10.8$___atomic_fetch_xor_4', '$ld$hide$os10.8$___atomic_fetch_xor_8',
388 '$ld$hide$os10.8$___atomic_load', '$ld$hide$os10.8$___atomic_load_1',
389 '$ld$hide$os10.8$___atomic_load_2', '$ld$hide$os10.8$___atomic_load_4',
390 '$ld$hide$os10.8$___atomic_load_8', '$ld$hide$os10.8$___atomic_store',
391 '$ld$hide$os10.8$___atomic_store_1', '$ld$hide$os10.8$___atomic_store_2',
392 '$ld$hide$os10.8$___atomic_store_4', '$ld$hide$os10.8$___atomic_store_8',
393 '$ld$hide$os10.8$___chkstk_darwin', '$ld$hide$os10.8$___extendhfsf2',
394 '$ld$hide$os10.8$___truncdfhf2', '$ld$hide$os10.8$___truncsfhf2',
395 '$ld$hide$os10.8$_atomic_flag_clear', '$ld$hide$os10.8$_atomic_flag_clear_explicit',
396 '$ld$hide$os10.8$_atomic_flag_test_and_set', '$ld$hide$os10.8$_atomic_flag_test_and_set_explicit',
397 '$ld$hide$os10.8$_atomic_signal_fence', '$ld$hide$os10.8$_atomic_thread_fence',
398 '$ld$hide$os10.9$___chkstk_darwin', '$ld$hide$os10.9$___extendhfsf2',
399 '$ld$hide$os10.9$___truncdfhf2', '$ld$hide$os10.9$___truncsfhf2',
400 '$ld$hide$os10.9$_atomic_flag_clear', '$ld$hide$os10.9$_atomic_flag_clear_explicit',
401 '$ld$hide$os10.9$_atomic_flag_test_and_set', '$ld$hide$os10.9$_atomic_flag_test_and_set_explicit',
402 '$ld$hide$os10.9$_atomic_signal_fence', '$ld$hide$os10.9$_atomic_thread_fence',
403 ___atomic_compare_exchange, ___atomic_compare_exchange_1,
404 ___atomic_compare_exchange_2, ___atomic_compare_exchange_4,
405 ___atomic_compare_exchange_8, ___atomic_exchange, ___atomic_exchange_1,
406 ___atomic_exchange_2, ___atomic_exchange_4, ___atomic_exchange_8,
407 ___atomic_fetch_add_1, ___atomic_fetch_add_2, ___atomic_fetch_add_4,
408 ___atomic_fetch_add_8, ___atomic_fetch_and_1, ___atomic_fetch_and_2,
409 ___atomic_fetch_and_4, ___atomic_fetch_and_8, ___atomic_fetch_or_1,
410 ___atomic_fetch_or_2, ___atomic_fetch_or_4, ___atomic_fetch_or_8,
411 ___atomic_fetch_sub_1, ___atomic_fetch_sub_2, ___atomic_fetch_sub_4,
412 ___atomic_fetch_sub_8, ___atomic_fetch_xor_1, ___atomic_fetch_xor_2,
413 ___atomic_fetch_xor_4, ___atomic_fetch_xor_8, ___atomic_load,
414 ___atomic_load_1, ___atomic_load_2, ___atomic_load_4, ___atomic_load_8,
415 ___atomic_store, ___atomic_store_1, ___atomic_store_2, ___atomic_store_4,
416 ___atomic_store_8, ___chkstk_darwin, ___clear_cache, ___clzti2,
417 ___divti3, ___enable_execute_stack, ___extendhfsf2, ___fixdfti,
418 ___fixsfti, ___fixunsdfti, ___fixunssfti, ___floattidf, ___floattisf,
419 ___floatuntidf, ___floatuntisf, ___gcc_personality_v0, ___gnu_f2h_ieee,
420 ___gnu_h2f_ieee, ___modti3, ___muldc3, ___mulsc3, ___powidf2,
421 ___powisf2, ___truncdfhf2, ___truncsfhf2, ___udivmodti4, ___udivti3,
422 ___umodti3, _atomic_flag_clear, _atomic_flag_clear_explicit,
423 _atomic_flag_test_and_set, _atomic_flag_test_and_set_explicit,
424 _atomic_signal_fence, _atomic_thread_fence ]
425--- !tapi-tbd
426tbd-version: 4
427targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
428 arm64e-macos, arm64e-maccatalyst ]
429uuids:
430 - target: x86_64-macos
431 value: 89483CD4-DA46-3AF2-AE78-FC37CED05ACC
432 - target: x86_64-maccatalyst
433 value: 89483CD4-DA46-3AF2-AE78-FC37CED05ACC
434 - target: arm64-macos
435 value: 00000000-0000-0000-0000-000000000000
436 - target: arm64-maccatalyst
437 value: 00000000-0000-0000-0000-000000000000
438 - target: arm64e-macos
439 value: 8AE5EFE8-BBA5-380B-9165-D350CD7EA3CE
440 - target: arm64e-maccatalyst
441 value: 8AE5EFE8-BBA5-380B-9165-D350CD7EA3CE
442install-name: '/usr/lib/system/libcopyfile.dylib'
443parent-umbrella:
444 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
445 arm64e-macos, arm64e-maccatalyst ]
446 umbrella: System
447exports:
448 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
449 arm64-macos, arm64-maccatalyst ]
450 symbols: [ _copyfile, _copyfile_state_alloc, _copyfile_state_free, _copyfile_state_get,
451 _copyfile_state_set, _fcopyfile, _xattr_flags_from_name, _xattr_intent_with_flags,
452 _xattr_name_with_flags, _xattr_name_without_flags, _xattr_preserve_for_intent ]
453--- !tapi-tbd
454tbd-version: 4
455targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
456 arm64e-macos, arm64e-maccatalyst ]
457uuids:
458 - target: x86_64-macos
459 value: 92F0211E-506E-3760-A3C2-808BF3905C07
460 - target: x86_64-maccatalyst
461 value: 92F0211E-506E-3760-A3C2-808BF3905C07
462 - target: arm64-macos
463 value: 00000000-0000-0000-0000-000000000000
464 - target: arm64-maccatalyst
465 value: 00000000-0000-0000-0000-000000000000
466 - target: arm64e-macos
467 value: D6B8B5AA-56DF-3E47-A778-007A7AA81372
468 - target: arm64e-maccatalyst
469 value: D6B8B5AA-56DF-3E47-A778-007A7AA81372
470install-name: '/usr/lib/system/libcorecrypto.dylib'
471current-version: 1000.60.19
472parent-umbrella:
473 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
474 arm64e-macos, arm64e-maccatalyst ]
475 umbrella: System
476allowable-clients:
477 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
478 arm64e-macos, arm64e-maccatalyst ]
479 clients: [ cc_fips_test, corecrypto_test ]
480exports:
481 - targets: [ x86_64-macos, x86_64-maccatalyst ]
482 symbols: [ _ccaes_intel_cbc_decrypt_aesni_mode, _ccaes_intel_cbc_decrypt_opt_mode,
483 _ccaes_intel_cbc_encrypt_aesni_mode, _ccaes_intel_cbc_encrypt_opt_mode,
484 _ccaes_intel_ecb_decrypt_aesni_mode, _ccaes_intel_ecb_decrypt_opt_mode,
485 _ccaes_intel_ecb_encrypt_aesni_mode, _ccaes_intel_ecb_encrypt_opt_mode,
486 _ccaes_intel_xts_decrypt_aesni_mode, _ccaes_intel_xts_decrypt_opt_mode,
487 _ccaes_intel_xts_encrypt_aesni_mode, _ccaes_intel_xts_encrypt_opt_mode,
488 _ccsha1_vng_intel_SupplementalSSE3_di, _ccsha224_vng_intel_SupplementalSSE3_di,
489 _ccsha256_vng_intel_SupplementalSSE3_di ]
490 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
491 arm64-macos, arm64-maccatalyst ]
492 symbols: [ _CCEC_FAULT_CANARY, _CCRSA_PKCS1_FAULT_CANARY, _CCRSA_PSS_FAULT_CANARY,
493 _cc_abort, _cc_atfork_child, _cc_atfork_parent, _cc_atfork_prepare,
494 _cc_clear, _cc_cmp_safe, _cc_muxp, _ccaes_cbc_decrypt_mode,
495 _ccaes_cbc_encrypt_mode, _ccaes_ccm_decrypt_mode, _ccaes_ccm_encrypt_mode,
496 _ccaes_cfb8_decrypt_mode, _ccaes_cfb8_encrypt_mode, _ccaes_cfb_decrypt_mode,
497 _ccaes_cfb_encrypt_mode, _ccaes_ctr_crypt_mode, _ccaes_ecb_decrypt_mode,
498 _ccaes_ecb_encrypt_mode, _ccaes_gcm_decrypt_mode, _ccaes_gcm_encrypt_mode,
499 _ccaes_gladman_cbc_decrypt_mode, _ccaes_gladman_cbc_encrypt_mode,
500 _ccaes_ltc_ecb_decrypt_mode, _ccaes_ltc_ecb_encrypt_mode,
501 _ccaes_ofb_crypt_mode, _ccaes_siv_decrypt_mode, _ccaes_siv_encrypt_mode,
502 _ccaes_siv_hmac_sha256_decrypt_mode, _ccaes_siv_hmac_sha256_encrypt_mode,
503 _ccaes_unwind, _ccaes_xts_decrypt_mode, _ccaes_xts_encrypt_mode,
504 _ccansikdf_x963, _ccapsic_client_check_intersect_response,
505 _ccapsic_client_generate_match_response, _ccapsic_client_init,
506 _ccapsic_client_state_sizeof, _ccapsic_server_determine_intersection,
507 _ccapsic_server_encode_element, _ccapsic_server_init, _ccapsic_server_state_sizeof,
508 _ccblowfish_cbc_decrypt_mode, _ccblowfish_cbc_encrypt_mode,
509 _ccblowfish_cfb8_decrypt_mode, _ccblowfish_cfb8_encrypt_mode,
510 _ccblowfish_cfb_decrypt_mode, _ccblowfish_cfb_encrypt_mode,
511 _ccblowfish_ctr_crypt_mode, _ccblowfish_ecb_decrypt_mode,
512 _ccblowfish_ecb_encrypt_mode, _ccblowfish_ofb_crypt_mode,
513 _cccast_cbc_decrypt_mode, _cccast_cbc_encrypt_mode, _cccast_cfb8_decrypt_mode,
514 _cccast_cfb8_encrypt_mode, _cccast_cfb_decrypt_mode, _cccast_cfb_encrypt_mode,
515 _cccast_ctr_crypt_mode, _cccast_ecb_decrypt_mode, _cccast_ecb_encrypt_mode,
516 _cccast_ofb_crypt_mode, _cccbc_one_shot, _ccchacha20, _ccchacha20_final,
517 _ccchacha20_init, _ccchacha20_reset, _ccchacha20_setcounter,
518 _ccchacha20_setnonce, _ccchacha20_update, _ccchacha20poly1305_aad,
519 _ccchacha20poly1305_decrypt, _ccchacha20poly1305_decrypt_oneshot,
520 _ccchacha20poly1305_encrypt, _ccchacha20poly1305_encrypt_oneshot,
521 _ccchacha20poly1305_finalize, _ccchacha20poly1305_incnonce,
522 _ccchacha20poly1305_info, _ccchacha20poly1305_init, _ccchacha20poly1305_reset,
523 _ccchacha20poly1305_setnonce, _ccchacha20poly1305_verify,
524 _ccckg_contributor_commit, _ccckg_contributor_finish, _ccckg_init,
525 _ccckg_owner_finish, _ccckg_owner_generate_share, _ccckg_sizeof_commitment,
526 _ccckg_sizeof_ctx, _ccckg_sizeof_opening, _ccckg_sizeof_share,
527 _cccmac_final_generate, _cccmac_final_verify, _cccmac_init,
528 _cccmac_one_shot_generate, _cccmac_one_shot_verify, _cccmac_update,
529 _cccurve25519, _ccder_decode_bitstring, _ccder_decode_constructed_tl,
530 _ccder_decode_constructed_tl_strict, _ccder_decode_dhparam_n,
531 _ccder_decode_dhparams, _ccder_decode_eckey, _ccder_decode_len,
532 _ccder_decode_len_strict, _ccder_decode_oid, _ccder_decode_rsa_priv,
533 _ccder_decode_rsa_priv_n, _ccder_decode_rsa_pub, _ccder_decode_rsa_pub_n,
534 _ccder_decode_rsa_pub_x509, _ccder_decode_rsa_pub_x509_n,
535 _ccder_decode_seqii, _ccder_decode_seqii_strict, _ccder_decode_sequence_tl,
536 _ccder_decode_sequence_tl_strict, _ccder_decode_tag, _ccder_decode_tl,
537 _ccder_decode_tl_strict, _ccder_decode_uint, _ccder_decode_uint64,
538 _ccder_decode_uint_n, _ccder_decode_uint_strict, _ccder_encode_body,
539 _ccder_encode_body_nocopy, _ccder_encode_constructed_tl, _ccder_encode_dhparams,
540 _ccder_encode_dhparams_size, _ccder_encode_eckey, _ccder_encode_eckey_size,
541 _ccder_encode_implicit_integer, _ccder_encode_implicit_octet_string,
542 _ccder_encode_implicit_raw_octet_string, _ccder_encode_implicit_uint64,
543 _ccder_encode_integer, _ccder_encode_len, _ccder_encode_octet_string,
544 _ccder_encode_oid, _ccder_encode_raw_octet_string, _ccder_encode_rsa_priv,
545 _ccder_encode_rsa_priv_size, _ccder_encode_rsa_pub, _ccder_encode_rsa_pub_size,
546 _ccder_encode_tag, _ccder_encode_tl, _ccder_encode_uint64,
547 _ccder_sizeof, _ccder_sizeof_implicit_integer, _ccder_sizeof_implicit_octet_string,
548 _ccder_sizeof_implicit_raw_octet_string, _ccder_sizeof_implicit_uint64,
549 _ccder_sizeof_integer, _ccder_sizeof_len, _ccder_sizeof_octet_string,
550 _ccder_sizeof_oid, _ccder_sizeof_raw_octet_string, _ccder_sizeof_tag,
551 _ccder_sizeof_uint64, _ccdes3_cbc_decrypt_mode, _ccdes3_cbc_encrypt_mode,
552 _ccdes3_cfb8_decrypt_mode, _ccdes3_cfb8_encrypt_mode, _ccdes3_cfb_decrypt_mode,
553 _ccdes3_cfb_encrypt_mode, _ccdes3_ctr_crypt_mode, _ccdes3_ecb_decrypt_mode,
554 _ccdes3_ecb_encrypt_mode, _ccdes3_ltc_ecb_decrypt_mode, _ccdes3_ltc_ecb_encrypt_mode,
555 _ccdes3_ofb_crypt_mode, _ccdes_cbc_cksum, _ccdes_cbc_decrypt_mode,
556 _ccdes_cbc_encrypt_mode, _ccdes_cfb8_decrypt_mode, _ccdes_cfb8_encrypt_mode,
557 _ccdes_cfb_decrypt_mode, _ccdes_cfb_encrypt_mode, _ccdes_ctr_crypt_mode,
558 _ccdes_ecb_decrypt_mode, _ccdes_ecb_encrypt_mode, _ccdes_key_is_weak,
559 _ccdes_key_set_odd_parity, _ccdes_ofb_crypt_mode, _ccdh_compute_key,
560 _ccdh_compute_shared_secret, _ccdh_export_pub, _ccdh_generate_key,
561 _ccdh_gp_apple768, _ccdh_gp_rfc2409group02, _ccdh_gp_rfc3526group05,
562 _ccdh_gp_rfc3526group14, _ccdh_gp_rfc3526group15, _ccdh_gp_rfc3526group16,
563 _ccdh_gp_rfc3526group17, _ccdh_gp_rfc3526group18, _ccdh_gp_rfc5114_MODP_1024_160,
564 _ccdh_gp_rfc5114_MODP_2048_224, _ccdh_gp_rfc5114_MODP_2048_256,
565 _ccdh_import_full, _ccdh_import_priv, _ccdh_import_pub, _ccdh_init_gp,
566 _ccdh_init_gp_from_bytes, _ccdh_init_gp_with_order, _ccdh_lookup_gp,
567 _ccdigest, _ccdigest_init, _ccdigest_oid_lookup, _ccdigest_update,
568 _ccdrbg_factory_nistctr, _ccdrbg_factory_nisthmac, _ccec_blind,
569 _ccec_compact_export, _ccec_compact_export_pub, _ccec_compact_generate_key,
570 _ccec_compact_import_priv, _ccec_compact_import_priv_size,
571 _ccec_compact_import_pub, _ccec_compact_import_pub_size, _ccec_compact_transform_key,
572 _ccec_compressed_x962_export_pub, _ccec_compressed_x962_export_pub_size,
573 _ccec_compressed_x962_import_pub, _ccec_compute_key, _ccec_cp_192,
574 _ccec_cp_224, _ccec_cp_256, _ccec_cp_384, _ccec_cp_521, _ccec_curve_for_length_lookup,
575 _ccec_der_export_diversified_pub, _ccec_der_export_diversified_pub_size,
576 _ccec_der_export_priv, _ccec_der_export_priv_size, _ccec_der_import_diversified_pub,
577 _ccec_der_import_priv, _ccec_der_import_priv_keytype, _ccec_diversify_min_entropy_len,
578 _ccec_diversify_priv_twin, _ccec_diversify_pub, _ccec_diversify_pub_twin,
579 _ccec_export_pub, _ccec_extract_rs, _ccec_generate_blinding_keys,
580 _ccec_generate_key, _ccec_generate_key_deterministic, _ccec_generate_key_fips,
581 _ccec_generate_key_internal_fips, _ccec_generate_key_legacy,
582 _ccec_get_cp, _ccec_get_fullkey_components, _ccec_get_pubkey_components,
583 _ccec_import_pub, _ccec_keysize_is_supported, _ccec_make_priv,
584 _ccec_make_pub, _ccec_pairwise_consistency_check, _ccec_print_full_key,
585 _ccec_print_public_key, _ccec_raw_import_priv_only, _ccec_raw_import_pub,
586 _ccec_rfc6637_dh_curve_p256, _ccec_rfc6637_dh_curve_p521,
587 _ccec_rfc6637_unwrap_key, _ccec_rfc6637_unwrap_sha256_kek_aes128,
588 _ccec_rfc6637_unwrap_sha512_kek_aes256, _ccec_rfc6637_wrap_key,
589 _ccec_rfc6637_wrap_key_diversified, _ccec_rfc6637_wrap_key_size,
590 _ccec_rfc6637_wrap_sha256_kek_aes128, _ccec_rfc6637_wrap_sha512_kek_aes256,
591 _ccec_sign, _ccec_sign_composite, _ccec_sign_composite_msg,
592 _ccec_sign_msg, _ccec_signature_r_s_size, _ccec_unblind, _ccec_validate_pub,
593 _ccec_verify, _ccec_verify_composite, _ccec_verify_composite_digest,
594 _ccec_verify_composite_msg, _ccec_verify_digest, _ccec_verify_msg,
595 _ccec_x963_export, _ccec_x963_import_priv, _ccec_x963_import_priv_size,
596 _ccec_x963_import_pub, _ccec_x963_import_pub_size, _ccecdh_compute_shared_secret,
597 _ccecdh_generate_key, _ccecies_decrypt_gcm, _ccecies_decrypt_gcm_composite,
598 _ccecies_decrypt_gcm_from_shared_secret, _ccecies_decrypt_gcm_plaintext_size,
599 _ccecies_decrypt_gcm_plaintext_size_cp, _ccecies_decrypt_gcm_setup,
600 _ccecies_encrypt_gcm, _ccecies_encrypt_gcm_ciphertext_size,
601 _ccecies_encrypt_gcm_composite, _ccecies_encrypt_gcm_from_shared_secret,
602 _ccecies_encrypt_gcm_setup, _ccecies_import_eph_pub, _ccecies_pub_key_size,
603 _ccecies_pub_key_size_cp, _cced25519_make_key_pair, _cced25519_make_pub,
604 _cced25519_sign, _cced25519_verify, _ccgcm_inc_iv, _ccgcm_init_with_iv,
605 _ccgcm_one_shot, _ccgcm_one_shot_legacy, _ccgcm_set_iv_legacy,
606 _cch2c, _cch2c_name, _cch2c_p256_sha256_sae_compat_info, _cch2c_p256_sha256_sswu_ro_info,
607 _cch2c_p384_sha384_sae_compat_info, _cch2c_p384_sha512_sswu_ro_info,
608 _cch2c_p521_sha512_sswu_ro_info, _cchkdf, _cchkdf_expand,
609 _cchkdf_extract, _cchmac, _cchmac_final, _cchmac_init, _cchmac_update,
610 _cchpke_initiator_encrypt, _cchpke_initiator_seal, _cchpke_initiator_setup,
611 _cchpke_kem_generate_key_pair, _cchpke_params_sizeof_aead_key,
612 _cchpke_params_sizeof_aead_nonce, _cchpke_params_sizeof_aead_tag,
613 _cchpke_params_sizeof_kdf_hash, _cchpke_params_sizeof_kem_enc,
614 _cchpke_params_sizeof_kem_pk, _cchpke_params_sizeof_kem_pk_marshalled,
615 _cchpke_params_sizeof_kem_sk, _cchpke_params_sizeof_kem_zz,
616 _cchpke_params_x25519_AESGCM128_HKDF_SHA256, _cchpke_responder_decrypt,
617 _cchpke_responder_open, _cchpke_responder_setup, _ccmd2_ltc_di,
618 _ccmd4_ltc_di, _ccmd5_di, _ccmd5_ltc_di, _ccmgf, _ccmode_factory_cbc_decrypt,
619 _ccmode_factory_cbc_encrypt, _ccmode_factory_ccm_decrypt,
620 _ccmode_factory_ccm_encrypt, _ccmode_factory_cfb8_decrypt,
621 _ccmode_factory_cfb8_encrypt, _ccmode_factory_cfb_decrypt,
622 _ccmode_factory_cfb_encrypt, _ccmode_factory_ctr_crypt, _ccmode_factory_gcm_decrypt,
623 _ccmode_factory_gcm_encrypt, _ccmode_factory_ofb_crypt, _ccmode_factory_omac_decrypt,
624 _ccmode_factory_omac_encrypt, _ccmode_factory_siv_decrypt,
625 _ccmode_factory_siv_encrypt, _ccmode_factory_xts_decrypt,
626 _ccmode_factory_xts_encrypt, _ccn_add, _ccn_add1, _ccn_addmul1,
627 _ccn_bitlen, _ccn_cmp, _ccn_cmpn, _ccn_div_euclid, _ccn_lprint,
628 _ccn_mul, _ccn_mul1, _ccn_n, _ccn_print, _ccn_random_bits,
629 _ccn_read_uint, _ccn_set, _ccn_shift_right, _ccn_sub, _ccn_sub1,
630 _ccn_write_int, _ccn_write_int_size, _ccn_write_uint, _ccn_write_uint_padded_ct,
631 _ccn_write_uint_size, _ccn_zero_multi, _ccnistkdf_ctr_cmac,
632 _ccnistkdf_ctr_cmac_fixed, _ccnistkdf_ctr_hmac, _ccnistkdf_ctr_hmac_fixed,
633 _ccnistkdf_fb_hmac, _ccnistkdf_fb_hmac_fixed, _ccpad_cts1_decrypt,
634 _ccpad_cts1_encrypt, _ccpad_cts2_decrypt, _ccpad_cts2_encrypt,
635 _ccpad_cts3_decrypt, _ccpad_cts3_encrypt, _ccpad_pkcs7_decode,
636 _ccpad_pkcs7_decrypt, _ccpad_pkcs7_ecb_decrypt, _ccpad_pkcs7_ecb_encrypt,
637 _ccpad_pkcs7_encrypt, _ccpad_xts_decrypt, _ccpad_xts_encrypt,
638 _ccpbkdf2_hmac, _ccpoly1305, _ccpoly1305_final, _ccpoly1305_init,
639 _ccpoly1305_update, _ccrc2_cbc_decrypt_mode, _ccrc2_cbc_encrypt_mode,
640 _ccrc2_cfb8_decrypt_mode, _ccrc2_cfb8_encrypt_mode, _ccrc2_cfb_decrypt_mode,
641 _ccrc2_cfb_encrypt_mode, _ccrc2_ctr_crypt_mode, _ccrc2_ecb_decrypt_mode,
642 _ccrc2_ecb_encrypt_mode, _ccrc2_ofb_crypt_mode, _ccrc4, _ccrc4_eay,
643 _ccrmd160_ltc_di, _ccrng, _ccrng_drbg_done, _ccrng_drbg_init,
644 _ccrng_drbg_init_withdrbg, _ccrng_drbg_reseed, _ccrng_ecfips_test_init,
645 _ccrng_pbkdf2_prng_init, _ccrng_rsafips_test_init, _ccrng_rsafips_test_set_next,
646 _ccrng_sequence_init, _ccrng_system_done, _ccrng_system_init,
647 _ccrng_test_done, _ccrng_test_init, _ccrng_uniform, _ccrsa_decrypt_eme_pkcs1v15,
648 _ccrsa_decrypt_eme_pkcs1v15_blinded, _ccrsa_decrypt_oaep,
649 _ccrsa_decrypt_oaep_blinded, _ccrsa_dump_full_key, _ccrsa_dump_public_key,
650 _ccrsa_eme_pkcs1v15_decode, _ccrsa_eme_pkcs1v15_encode, _ccrsa_emsa_pkcs1v15_encode,
651 _ccrsa_emsa_pkcs1v15_verify, _ccrsa_emsa_pss_decode, _ccrsa_emsa_pss_encode,
652 _ccrsa_encrypt_eme_pkcs1v15, _ccrsa_encrypt_oaep, _ccrsa_export_pub,
653 _ccrsa_generate_fips186_key, _ccrsa_generate_key, _ccrsa_get_fullkey_components,
654 _ccrsa_get_pubkey_components, _ccrsa_import_pub, _ccrsa_init_pub,
655 _ccrsa_make_priv, _ccrsa_make_pub, _ccrsa_oaep_decode_parameter,
656 _ccrsa_oaep_encode_parameter, _ccrsa_priv_crypt, _ccrsa_priv_crypt_blinded,
657 _ccrsa_pub_crypt, _ccrsa_pubkeylength, _ccrsa_recover_priv,
658 _ccrsa_sign_pkcs1v15, _ccrsa_sign_pkcs1v15_msg, _ccrsa_sign_pss,
659 _ccrsa_sign_pss_msg, _ccrsa_verify_pkcs1v15, _ccrsa_verify_pkcs1v15_allowshortsigs,
660 _ccrsa_verify_pkcs1v15_digest, _ccrsa_verify_pkcs1v15_msg,
661 _ccrsa_verify_pss, _ccrsa_verify_pss_digest, _ccrsa_verify_pss_msg,
662 _ccscrypt, _ccscrypt_storage_size, _ccsha1_di, _ccsha1_eay_di,
663 _ccsha1_ltc_di, _ccsha224_di, _ccsha224_ltc_di, _ccsha256_di,
664 _ccsha256_ltc_di, _ccsha384_di, _ccsha384_ltc_di, _ccsha512_256_di,
665 _ccsha512_256_ltc_di, _ccsha512_di, _ccsha512_ltc_di, _ccsiv_hmac_aad,
666 _ccsiv_hmac_ciphertext_size, _ccsiv_hmac_crypt, _ccsiv_hmac_init,
667 _ccsiv_hmac_one_shot, _ccsiv_hmac_plaintext_size, _ccsiv_hmac_reset,
668 _ccsiv_hmac_set_nonce, _ccspake_cp_256, _ccspake_cp_384, _ccspake_cp_521,
669 _ccspake_generate_L, _ccspake_kex_generate, _ccspake_kex_process,
670 _ccspake_mac_compute, _ccspake_mac_hkdf_cmac_aes128_sha256,
671 _ccspake_mac_hkdf_hmac_sha256, _ccspake_mac_hkdf_hmac_sha512,
672 _ccspake_mac_verify_and_get_session_key, _ccspake_prover_init,
673 _ccspake_sizeof_ctx, _ccspake_sizeof_point, _ccspake_sizeof_w,
674 _ccspake_verifier_init, _ccsrp_client_process_challenge, _ccsrp_client_start_authentication,
675 _ccsrp_client_verify_session, _ccsrp_generate_salt_and_verification,
676 _ccsrp_generate_verifier, _ccsrp_gp_rfc5054_1024, _ccsrp_gp_rfc5054_2048,
677 _ccsrp_gp_rfc5054_3072, _ccsrp_gp_rfc5054_4096, _ccsrp_gp_rfc5054_8192,
678 _ccsrp_server_compute_session, _ccsrp_server_generate_public_key,
679 _ccsrp_server_start_authentication, _ccsrp_server_verify_session,
680 _ccsrp_test_calculations, _ccss_shamir_parameters_init, _ccss_shamir_parameters_maximum_secret_length,
681 _ccss_shamir_share_bag_add_share, _ccss_shamir_share_bag_init,
682 _ccss_shamir_share_bag_recover_secret, _ccss_shamir_share_export,
683 _ccss_shamir_share_generator_generate_share, _ccss_shamir_share_generator_init,
684 _ccss_shamir_share_import, _ccss_shamir_share_init, _ccss_shamir_share_sizeof_y,
685 _ccvrf_derive_public_key, _ccvrf_factory_irtfdraft03, _ccvrf_factory_irtfdraft03_default,
686 _ccvrf_proof_to_hash, _ccvrf_prove, _ccvrf_sizeof_hash, _ccvrf_sizeof_proof,
687 _ccvrf_sizeof_public_key, _ccvrf_sizeof_secret_key, _ccvrf_verify,
688 _ccwrap_auth_decrypt, _ccwrap_auth_decrypt_withiv, _ccwrap_auth_encrypt,
689 _ccwrap_auth_encrypt_withiv, _ccwrap_unwrapped_size, _ccwrap_wrapped_size,
690 _ccxts_one_shot, _ccz_add, _ccz_addi, _ccz_bit, _ccz_bitlen,
691 _ccz_cmp, _ccz_cmpi, _ccz_divmod, _ccz_expmod, _ccz_free,
692 _ccz_init, _ccz_is_negative, _ccz_is_one, _ccz_is_prime, _ccz_is_zero,
693 _ccz_lsl, _ccz_lsr, _ccz_mod, _ccz_mul, _ccz_muli, _ccz_mulmod,
694 _ccz_neg, _ccz_random_bits, _ccz_read_radix, _ccz_read_uint,
695 _ccz_set, _ccz_set_bit, _ccz_seti, _ccz_size, _ccz_sub, _ccz_subi,
696 _ccz_trailing_zeros, _ccz_write_int, _ccz_write_int_size,
697 _ccz_write_radix, _ccz_write_radix_size, _ccz_write_uint,
698 _ccz_write_uint_size, _ccz_zero, _cczp_init, _cczp_init_with_recip,
699 _cczp_power, _csss_shamir_share_bag_can_recover_secret, _fipspost_post,
700 _fipspost_trace_vtable ]
701 - targets: [ arm64e-macos, arm64e-maccatalyst, arm64-macos, arm64-maccatalyst ]
702 symbols: [ _ccaes_arm_cbc_decrypt_mode, _ccaes_arm_cbc_encrypt_mode,
703 _ccaes_arm_cfb_decrypt_mode, _ccaes_arm_cfb_encrypt_mode,
704 _ccaes_arm_ecb_decrypt_mode, _ccaes_arm_ecb_encrypt_mode,
705 _ccaes_arm_ofb_crypt_mode, _ccaes_arm_xts_decrypt_mode, _ccaes_arm_xts_encrypt_mode,
706 _ccsha1_vng_arm_di, _ccsha224_vng_arm_di, _ccsha256_vng_arm64neon_di,
707 _ccsha256_vng_arm_di, _ccsha384_vng_arm_di, _ccsha512_256_vng_arm_di,
708 _ccsha512_vng_arm_di ]
709--- !tapi-tbd
710tbd-version: 4
711targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
712 arm64e-macos, arm64e-maccatalyst ]
713uuids:
714 - target: x86_64-macos
715 value: CEF1460B-1362-381A-AE69-6BCE2D8C215B
716 - target: x86_64-maccatalyst
717 value: CEF1460B-1362-381A-AE69-6BCE2D8C215B
718 - target: arm64-macos
719 value: 00000000-0000-0000-0000-000000000000
720 - target: arm64-maccatalyst
721 value: 00000000-0000-0000-0000-000000000000
722 - target: arm64e-macos
723 value: 68CAA910-6621-32A1-95AE-40594BA75013
724 - target: arm64e-maccatalyst
725 value: 68CAA910-6621-32A1-95AE-40594BA75013
726install-name: '/usr/lib/system/libdispatch.dylib'
727current-version: 1271.40.12
728parent-umbrella:
729 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
730 arm64e-macos, arm64e-maccatalyst ]
731 umbrella: System
732exports:
733 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
734 arm64-macos, arm64-maccatalyst ]
735 symbols: [ '$ld$hide$os10.12$_dispatch_assert_queue', '$ld$hide$os10.12$_dispatch_assert_queue_not',
736 '$ld$hide$os10.12$_dispatch_queue_create_with_target', __dispatch_begin_NSAutoReleasePool,
737 __dispatch_bug, __dispatch_data_destructor_free, __dispatch_data_destructor_munmap,
738 __dispatch_data_destructor_none, __dispatch_data_destructor_vm_deallocate,
739 __dispatch_data_empty, __dispatch_data_format_type_base32,
740 __dispatch_data_format_type_base32hex, __dispatch_data_format_type_base64,
741 __dispatch_data_format_type_none, __dispatch_data_format_type_utf16be,
742 __dispatch_data_format_type_utf16le, __dispatch_data_format_type_utf8,
743 __dispatch_data_format_type_utf_any, __dispatch_end_NSAutoReleasePool,
744 __dispatch_get_main_queue_handle_4CF, __dispatch_get_main_queue_port_4CF,
745 __dispatch_iocntl, __dispatch_is_fork_of_multithreaded_parent,
746 __dispatch_is_multithreaded, __dispatch_log, __dispatch_mach_hooks_install_default,
747 __dispatch_main_q, __dispatch_main_queue_callback_4CF, __dispatch_poll_for_events_4launchd,
748 __dispatch_prohibit_transition_to_multithreaded, __dispatch_pthread_root_queue_create_with_observer_hooks_4IOHID,
749 __dispatch_queue_attr_concurrent, __dispatch_queue_is_exclusively_owned_by_current_thread_4IOHID,
750 __dispatch_runloop_root_queue_create_4CF, __dispatch_runloop_root_queue_get_port_4CF,
751 __dispatch_runloop_root_queue_perform_4CF, __dispatch_runloop_root_queue_wakeup_4CF,
752 __dispatch_source_set_runloop_timer_4CF, __dispatch_source_type_data_add,
753 __dispatch_source_type_data_or, __dispatch_source_type_data_replace,
754 __dispatch_source_type_interval, __dispatch_source_type_mach_recv,
755 __dispatch_source_type_mach_send, __dispatch_source_type_memorypressure,
756 __dispatch_source_type_memorystatus, __dispatch_source_type_nw_channel,
757 __dispatch_source_type_proc, __dispatch_source_type_read,
758 __dispatch_source_type_signal, __dispatch_source_type_sock,
759 __dispatch_source_type_timer, __dispatch_source_type_vfs,
760 __dispatch_source_type_vm, __dispatch_source_type_vnode, __dispatch_source_type_write,
761 __dispatch_source_will_reenable_kevent_4NW, __dispatch_wait_for_enqueuer,
762 __dispatch_workloop_set_observer_hooks_4IOHID, __dispatch_workloop_should_yield_4NW,
763 __firehose_spi_version, __os_object_alloc, __os_object_alloc_realized,
764 __os_object_dealloc, __os_object_release, __os_object_release_internal,
765 __os_object_release_internal_n, __os_object_release_without_xref_dispose,
766 __os_object_retain, __os_object_retain_internal, __os_object_retain_internal_n,
767 __os_object_retain_with_resurrect, _dispatch_activate, _dispatch_after,
768 _dispatch_after_f, _dispatch_allocator_layout, _dispatch_apply,
769 _dispatch_apply_f, _dispatch_assert_queue, '_dispatch_assert_queue$V2',
770 _dispatch_assert_queue_barrier, _dispatch_assert_queue_not,
771 '_dispatch_assert_queue_not$V2', _dispatch_async, _dispatch_async_and_wait,
772 _dispatch_async_and_wait_f, _dispatch_async_enforce_qos_class_f,
773 _dispatch_async_f, _dispatch_atfork_child, _dispatch_atfork_parent,
774 _dispatch_atfork_prepare, _dispatch_barrier_async, _dispatch_barrier_async_and_wait,
775 _dispatch_barrier_async_and_wait_f, _dispatch_barrier_async_f,
776 _dispatch_barrier_sync, _dispatch_barrier_sync_f, _dispatch_benchmark,
777 _dispatch_benchmark_f, _dispatch_block_cancel, _dispatch_block_create,
778 _dispatch_block_create_with_qos_class, _dispatch_block_create_with_voucher,
779 _dispatch_block_create_with_voucher_and_qos_class, _dispatch_block_notify,
780 _dispatch_block_perform, _dispatch_block_testcancel, _dispatch_block_wait,
781 _dispatch_channel_async, _dispatch_channel_async_f, _dispatch_channel_cancel,
782 _dispatch_channel_create, _dispatch_channel_drain, _dispatch_channel_drain_f,
783 _dispatch_channel_enqueue, _dispatch_channel_foreach_work_item_peek,
784 _dispatch_channel_foreach_work_item_peek_f, _dispatch_channel_testcancel,
785 _dispatch_channel_wakeup, _dispatch_data_apply, _dispatch_data_apply_f,
786 _dispatch_data_copy_region, _dispatch_data_create, _dispatch_data_create_alloc,
787 _dispatch_data_create_concat, _dispatch_data_create_f, _dispatch_data_create_map,
788 _dispatch_data_create_subrange, _dispatch_data_create_with_transform,
789 _dispatch_data_get_flattened_bytes_4libxpc, _dispatch_data_get_size,
790 _dispatch_data_make_memory_entry, _dispatch_debug, _dispatch_debugv,
791 _dispatch_get_context, _dispatch_get_current_queue, _dispatch_get_global_queue,
792 _dispatch_get_specific, _dispatch_group_async, _dispatch_group_async_f,
793 _dispatch_group_create, _dispatch_group_enter, _dispatch_group_leave,
794 _dispatch_group_notify, _dispatch_group_notify_f, _dispatch_group_wait,
795 _dispatch_io_barrier, _dispatch_io_barrier_f, _dispatch_io_close,
796 _dispatch_io_create, _dispatch_io_create_f, _dispatch_io_create_with_io,
797 _dispatch_io_create_with_io_f, _dispatch_io_create_with_path,
798 _dispatch_io_create_with_path_f, _dispatch_io_get_descriptor,
799 _dispatch_io_read, _dispatch_io_read_f, _dispatch_io_set_high_water,
800 _dispatch_io_set_interval, _dispatch_io_set_low_water, _dispatch_io_write,
801 _dispatch_io_write_f, _dispatch_mach_can_handoff_4libxpc,
802 _dispatch_mach_cancel, _dispatch_mach_connect, _dispatch_mach_create,
803 _dispatch_mach_create_4libxpc, _dispatch_mach_create_f, _dispatch_mach_get_checkin_port,
804 _dispatch_mach_handoff_reply, _dispatch_mach_handoff_reply_f,
805 _dispatch_mach_hooks_install_4libxpc, _dispatch_mach_mig_demux,
806 _dispatch_mach_mig_demux_get_context, _dispatch_mach_msg_create,
807 _dispatch_mach_msg_get_context, _dispatch_mach_msg_get_filter_policy_id,
808 _dispatch_mach_msg_get_msg, _dispatch_mach_notify_no_senders,
809 _dispatch_mach_receive_barrier, _dispatch_mach_receive_barrier_f,
810 _dispatch_mach_reconnect, _dispatch_mach_request_no_senders,
811 _dispatch_mach_send, _dispatch_mach_send_and_wait_for_reply,
812 _dispatch_mach_send_barrier, _dispatch_mach_send_barrier_f,
813 _dispatch_mach_send_with_result, _dispatch_mach_send_with_result_and_async_reply_4libxpc,
814 _dispatch_mach_send_with_result_and_wait_for_reply, _dispatch_mach_set_flags,
815 _dispatch_main, _dispatch_mig_server, _dispatch_once, _dispatch_once_f,
816 _dispatch_pthread_root_queue_copy_current, _dispatch_pthread_root_queue_create,
817 _dispatch_queue_attr_make_initially_inactive, _dispatch_queue_attr_make_with_autorelease_frequency,
818 _dispatch_queue_attr_make_with_overcommit, _dispatch_queue_attr_make_with_qos_class,
819 _dispatch_queue_create, _dispatch_queue_create_with_accounting_override_voucher,
820 _dispatch_queue_create_with_target, '_dispatch_queue_create_with_target$V2',
821 _dispatch_queue_get_label, _dispatch_queue_get_qos_class,
822 _dispatch_queue_get_specific, _dispatch_queue_offsets, _dispatch_queue_set_label_nocopy,
823 _dispatch_queue_set_specific, _dispatch_queue_set_width, _dispatch_read,
824 _dispatch_read_f, _dispatch_release, _dispatch_resume, _dispatch_retain,
825 _dispatch_semaphore_create, _dispatch_semaphore_signal, _dispatch_semaphore_wait,
826 _dispatch_set_context, _dispatch_set_finalizer_f, _dispatch_set_qos_class,
827 _dispatch_set_qos_class_fallback, _dispatch_set_qos_class_floor,
828 _dispatch_set_target_queue, _dispatch_source_cancel, _dispatch_source_cancel_and_wait,
829 _dispatch_source_create, _dispatch_source_get_data, _dispatch_source_get_extended_data,
830 _dispatch_source_get_handle, _dispatch_source_get_mask, _dispatch_source_merge_data,
831 _dispatch_source_set_cancel_handler, _dispatch_source_set_cancel_handler_f,
832 _dispatch_source_set_event_handler, _dispatch_source_set_event_handler_f,
833 _dispatch_source_set_mandatory_cancel_handler, _dispatch_source_set_mandatory_cancel_handler_f,
834 _dispatch_source_set_registration_handler, _dispatch_source_set_registration_handler_f,
835 _dispatch_source_set_timer, _dispatch_source_testcancel, _dispatch_suspend,
836 _dispatch_sync, _dispatch_sync_f, _dispatch_time, _dispatch_time_to_nsecs,
837 _dispatch_tsd_indexes, _dispatch_walltime, _dispatch_workloop_copy_current,
838 _dispatch_workloop_create, _dispatch_workloop_create_inactive,
839 _dispatch_workloop_is_current, _dispatch_workloop_set_autorelease_frequency,
840 _dispatch_workloop_set_cpupercent, _dispatch_workloop_set_os_workgroup,
841 _dispatch_workloop_set_qos_class, _dispatch_workloop_set_qos_class_floor,
842 _dispatch_workloop_set_scheduler_priority, _dispatch_write,
843 _dispatch_write_f, _libdispatch_init, _mach_voucher_persona_for_originator,
844 _mach_voucher_persona_self, _os_eventlink_activate, _os_eventlink_associate,
845 _os_eventlink_cancel, _os_eventlink_create, _os_eventlink_create_remote_with_eventlink,
846 _os_eventlink_create_with_port, _os_eventlink_disassociate,
847 _os_eventlink_extract_remote_port, _os_eventlink_signal, _os_eventlink_signal_and_wait,
848 _os_eventlink_signal_and_wait_until, _os_eventlink_wait, _os_eventlink_wait_until,
849 _os_release, _os_retain, _os_workgroup_attr_set_flags, _os_workgroup_attr_set_interval_type,
850 _os_workgroup_cancel, _os_workgroup_copy_port, _os_workgroup_create,
851 _os_workgroup_create_with_port, _os_workgroup_create_with_workgroup,
852 _os_workgroup_get_working_arena, _os_workgroup_interval_copy_current_4AudioToolbox,
853 _os_workgroup_interval_create, _os_workgroup_interval_finish,
854 _os_workgroup_interval_start, _os_workgroup_interval_update,
855 _os_workgroup_join, _os_workgroup_join_self, _os_workgroup_leave,
856 _os_workgroup_leave_self, _os_workgroup_max_parallel_threads,
857 _os_workgroup_parallel_create, _os_workgroup_set_working_arena,
858 _os_workgroup_testcancel, _voucher_activity_create_with_data,
859 _voucher_activity_create_with_location, _voucher_activity_flush,
860 _voucher_activity_get_logging_preferences, _voucher_activity_get_metadata_buffer,
861 _voucher_activity_id_allocate, _voucher_activity_initialize_4libtrace,
862 _voucher_activity_should_send_strings, _voucher_activity_trace,
863 _voucher_activity_trace_v, _voucher_activity_trace_v_2, _voucher_adopt,
864 _voucher_copy, _voucher_copy_with_persona_mach_voucher, _voucher_copy_without_importance,
865 _voucher_create_with_mach_msg, _voucher_decrement_importance_count4CF,
866 _voucher_get_activity_id, _voucher_get_activity_id_and_creator,
867 _voucher_get_current_persona, _voucher_get_current_persona_originator_info,
868 _voucher_get_current_persona_proximate_info, _voucher_kvoucher_debug,
869 _voucher_replace_default_voucher ]
870 objc-classes: [ OS_dispatch_channel, OS_dispatch_data, OS_dispatch_disk, OS_dispatch_group,
871 OS_dispatch_io, OS_dispatch_mach, OS_dispatch_mach_msg, OS_dispatch_object,
872 OS_dispatch_operation, OS_dispatch_queue, OS_dispatch_queue_attr,
873 OS_dispatch_queue_concurrent, OS_dispatch_queue_global, OS_dispatch_queue_main,
874 OS_dispatch_queue_serial, OS_dispatch_semaphore, OS_dispatch_source,
875 OS_dispatch_workloop, OS_object, OS_os_eventlink, OS_os_workgroup,
876 OS_os_workgroup_interval, OS_os_workgroup_parallel, OS_voucher ]
877--- !tapi-tbd
878tbd-version: 4
879targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
880 arm64e-macos, arm64e-maccatalyst ]
881uuids:
882 - target: x86_64-macos
883 value: 2F8A14F5-7CB8-3EDD-85EA-7FA960BBC04E
884 - target: x86_64-maccatalyst
885 value: 2F8A14F5-7CB8-3EDD-85EA-7FA960BBC04E
886 - target: arm64-macos
887 value: 4CF2A2F5-4D7D-3067-BF36-60FCD3CC0E0C
888 - target: arm64-maccatalyst
889 value: 4CF2A2F5-4D7D-3067-BF36-60FCD3CC0E0C
890 - target: arm64e-macos
891 value: 87B502C5-584E-381A-8C99-6105402B8A6E
892 - target: arm64e-maccatalyst
893 value: 87B502C5-584E-381A-8C99-6105402B8A6E
894install-name: '/usr/lib/system/libdyld.dylib'
895current-version: 832.7.1
896parent-umbrella:
897 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
898 arm64e-macos, arm64e-maccatalyst ]
899 umbrella: System
900exports:
901 - targets: [ arm64-macos, x86_64-macos, arm64e-macos, x86_64-maccatalyst,
902 arm64-maccatalyst, arm64e-maccatalyst ]
903 symbols: [ _NSAddImage, _NSAddLibrary, _NSAddLibraryWithSearching, _NSAddressOfSymbol,
904 _NSCreateObjectFileImageFromFile, _NSCreateObjectFileImageFromMemory,
905 _NSDestroyObjectFileImage, _NSGetSectionDataInObjectFileImage,
906 _NSInstallLinkEditErrorHandlers, _NSIsSymbolDefinedInObjectFileImage,
907 _NSIsSymbolNameDefined, _NSIsSymbolNameDefinedInImage, _NSIsSymbolNameDefinedWithHint,
908 _NSLibraryNameForModule, _NSLinkEditError, _NSLinkModule,
909 _NSLookupAndBindSymbol, _NSLookupAndBindSymbolWithHint, _NSLookupSymbolInImage,
910 _NSLookupSymbolInModule, _NSModuleForSymbol, _NSNameOfModule,
911 _NSNameOfSymbol, _NSSymbolDefinitionCountInObjectFileImage,
912 _NSSymbolDefinitionNameInObjectFileImage, _NSSymbolReferenceCountInObjectFileImage,
913 _NSSymbolReferenceNameInObjectFileImage, _NSUnLinkModule,
914 _NSVersionOfLinkTimeLibrary, _NSVersionOfRunTimeLibrary, _NXArgc,
915 _NXArgv, __NSGetExecutablePath, __ZN5dyld316compatFuncLookupEPKcPPv,
916 __ZN5dyld318entryVectorForDyldE, ___progname, __dyld_all_twolevel_modules_prebound,
917 __dyld_atfork_parent, __dyld_atfork_prepare, __dyld_bind_fully_image_containing_address,
918 __dyld_find_unwind_sections, __dyld_for_each_objc_class, __dyld_for_each_objc_protocol,
919 __dyld_fork_child, __dyld_get_image_header, __dyld_get_image_header_containing_address,
920 __dyld_get_image_name, __dyld_get_image_slide, __dyld_get_image_uuid,
921 __dyld_get_image_vmaddr_slide, __dyld_get_objc_selector, __dyld_get_prog_image_header,
922 __dyld_get_shared_cache_range, __dyld_get_shared_cache_uuid,
923 __dyld_has_fix_for_radar, __dyld_image_containing_address,
924 __dyld_image_count, __dyld_images_for_addresses, __dyld_initializer,
925 __dyld_is_memory_immutable, __dyld_is_objc_constant, __dyld_launch_mode,
926 __dyld_launched_prebound, __dyld_lookup_and_bind, __dyld_lookup_and_bind_fully,
927 __dyld_lookup_and_bind_with_hint, __dyld_missing_symbol_abort,
928 __dyld_objc_notify_register, __dyld_present, __dyld_process_info_create,
929 __dyld_process_info_for_each_aot_image, __dyld_process_info_for_each_image,
930 __dyld_process_info_for_each_segment, __dyld_process_info_get_aot_cache,
931 __dyld_process_info_get_cache, __dyld_process_info_get_platform,
932 __dyld_process_info_get_state, __dyld_process_info_notify,
933 __dyld_process_info_notify_main, __dyld_process_info_notify_release,
934 __dyld_process_info_notify_retain, __dyld_process_info_release,
935 __dyld_process_info_retain, __dyld_register_driverkit_main,
936 __dyld_register_for_bulk_image_loads, __dyld_register_for_image_loads,
937 __dyld_register_func_for_add_image, __dyld_register_func_for_remove_image,
938 __dyld_shared_cache_contains_path, __dyld_shared_cache_is_locally_built,
939 __dyld_shared_cache_optimized, __dyld_shared_cache_real_path,
940 __tlv_atexit, __tlv_bootstrap, __tlv_exit, _dladdr, _dlclose,
941 _dlerror, _dlopen, _dlopen_audited, _dlopen_from, _dlopen_preflight,
942 _dlsym, _dyldVersionNumber, _dyldVersionString, _dyld_dynamic_interpose,
943 _dyld_get_active_platform, _dyld_get_base_platform, _dyld_get_image_versions,
944 _dyld_get_min_os_version, _dyld_get_program_min_os_version,
945 _dyld_get_program_sdk_version, _dyld_get_sdk_version, _dyld_has_inserted_or_interposing_libraries,
946 _dyld_image_header_containing_address, _dyld_image_path_containing_address,
947 _dyld_is_simulator_platform, _dyld_minos_at_least, _dyld_need_closure,
948 _dyld_process_is_restricted, _dyld_program_minos_at_least,
949 _dyld_program_sdk_at_least, _dyld_sdk_at_least, _dyld_shared_cache_file_path,
950 _dyld_shared_cache_find_iterate_text, _dyld_shared_cache_iterate_text,
951 _dyld_shared_cache_some_image_overridden, _environ, dyld_stub_binder ]
952--- !tapi-tbd
953tbd-version: 4
954targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
955 arm64e-macos, arm64e-maccatalyst ]
956uuids:
957 - target: x86_64-macos
958 value: 2C7B58B0-BE54-3A50-B399-AA49C19083A9
959 - target: x86_64-maccatalyst
960 value: 2C7B58B0-BE54-3A50-B399-AA49C19083A9
961 - target: arm64-macos
962 value: 00000000-0000-0000-0000-000000000000
963 - target: arm64-maccatalyst
964 value: 00000000-0000-0000-0000-000000000000
965 - target: arm64e-macos
966 value: 3EF55D83-6DD4-376B-8C0B-5B12CD0D3D94
967 - target: arm64e-maccatalyst
968 value: 3EF55D83-6DD4-376B-8C0B-5B12CD0D3D94
969install-name: '/usr/lib/system/libkeymgr.dylib'
970current-version: 31
971parent-umbrella:
972 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
973 arm64e-macos, arm64e-maccatalyst ]
974 umbrella: System
975exports:
976 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
977 arm64-macos, arm64-maccatalyst ]
978 symbols: [ ___keymgr_dwarf2_register_sections, ___keymgr_initializer,
979 __keymgr_get_and_lock_processwide_ptr, __keymgr_get_and_lock_processwide_ptr_2,
980 __keymgr_get_lock_count_processwide_ptr, __keymgr_get_lockmode_processwide_ptr,
981 __keymgr_set_and_unlock_processwide_ptr, __keymgr_set_lockmode_processwide_ptr,
982 __keymgr_unlock_processwide_ptr, _keymgrVersionNumber, _keymgrVersionString ]
983--- !tapi-tbd
984tbd-version: 4
985targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
986 arm64e-macos, arm64e-maccatalyst ]
987uuids:
988 - target: x86_64-macos
989 value: 05A7EFDD-4111-3E4D-B668-239B69DE3D0F
990 - target: x86_64-maccatalyst
991 value: 05A7EFDD-4111-3E4D-B668-239B69DE3D0F
992 - target: arm64-macos
993 value: 00000000-0000-0000-0000-000000000000
994 - target: arm64-maccatalyst
995 value: 00000000-0000-0000-0000-000000000000
996 - target: arm64e-macos
997 value: A42FB952-AEBC-335F-8336-751E963F09F4
998 - target: arm64e-maccatalyst
999 value: A42FB952-AEBC-335F-8336-751E963F09F4
1000install-name: '/usr/lib/system/liblaunch.dylib'
1001current-version: 2038.40.38
1002parent-umbrella:
1003 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1004 arm64e-macos, arm64e-maccatalyst ]
1005 umbrella: System
1006reexports:
1007 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
1008 arm64-macos, arm64-maccatalyst ]
1009 symbols: [ __spawn_via_launchd, __vproc_get_last_exit_status, __vproc_grab_subset,
1010 __vproc_kickstart_by_label, __vproc_log, __vproc_log_error,
1011 __vproc_logv, __vproc_pid_is_managed, __vproc_post_fork_ping,
1012 __vproc_send_signal_by_label, __vproc_set_global_on_demand,
1013 __vproc_standby_begin, __vproc_standby_count, __vproc_standby_end,
1014 __vproc_standby_timeout, __vproc_transaction_begin, __vproc_transaction_count,
1015 __vproc_transaction_count_for_pid, __vproc_transaction_end,
1016 __vproc_transaction_set_clean_callback, __vproc_transaction_try_exit,
1017 __vproc_transactions_enable, __vprocmgr_detach_from_console,
1018 __vprocmgr_getsocket, __vprocmgr_init, __vprocmgr_log_drain,
1019 __vprocmgr_log_forward, __vprocmgr_move_subset_to_user, __vprocmgr_switch_to_session,
1020 _bootstrap_check_in, _bootstrap_check_in2, _bootstrap_check_in3,
1021 _bootstrap_create_server, _bootstrap_create_service, _bootstrap_get_root,
1022 _bootstrap_info, _bootstrap_init, _bootstrap_look_up, _bootstrap_look_up2,
1023 _bootstrap_look_up3, _bootstrap_look_up_per_user, _bootstrap_lookup_children,
1024 _bootstrap_parent, _bootstrap_register, _bootstrap_register2,
1025 _bootstrap_status, _bootstrap_strerror, _bootstrap_subset,
1026 _bootstrap_unprivileged, _create_and_switch_to_per_session_launchd,
1027 _launch_data_alloc, _launch_data_array_get_count, _launch_data_array_get_index,
1028 _launch_data_array_set_index, _launch_data_copy, _launch_data_dict_get_count,
1029 _launch_data_dict_insert, _launch_data_dict_iterate, _launch_data_dict_lookup,
1030 _launch_data_dict_remove, _launch_data_free, _launch_data_get_bool,
1031 _launch_data_get_errno, _launch_data_get_fd, _launch_data_get_integer,
1032 _launch_data_get_machport, _launch_data_get_opaque, _launch_data_get_opaque_size,
1033 _launch_data_get_real, _launch_data_get_string, _launch_data_get_type,
1034 _launch_data_new_bool, _launch_data_new_errno, _launch_data_new_fd,
1035 _launch_data_new_integer, _launch_data_new_machport, _launch_data_new_opaque,
1036 _launch_data_new_real, _launch_data_new_string, _launch_data_pack,
1037 _launch_data_set_bool, _launch_data_set_errno, _launch_data_set_fd,
1038 _launch_data_set_integer, _launch_data_set_machport, _launch_data_set_opaque,
1039 _launch_data_set_real, _launch_data_set_string, _launch_data_unpack,
1040 _launch_get_fd, _launch_msg, _launch_socket_service_check_in,
1041 _launch_wait, _launchd_close, _launchd_fdopen, _launchd_getfd,
1042 _launchd_msg_recv, _launchd_msg_send, _load_launchd_jobs_at_loginwindow_prompt,
1043 _mpm_uncork_fork, _mpm_wait, _reboot2, _vproc_release, _vproc_retain,
1044 _vproc_standby_begin, _vproc_standby_end, _vproc_swap_complex,
1045 _vproc_swap_integer, _vproc_swap_string, _vproc_transaction_begin,
1046 _vproc_transaction_end, _vprocmgr_lookup_vproc ]
1047--- !tapi-tbd
1048tbd-version: 4
1049targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ]
1050uuids:
1051 - target: x86_64-macos
1052 value: 28AE1649-22ED-3C4D-A232-29D37F821C39
1053 - target: x86_64-maccatalyst
1054 value: 28AE1649-22ED-3C4D-A232-29D37F821C39
1055 - target: arm64-macos
1056 value: C3C1B373-AB10-3216-95BA-998C43146888
1057 - target: arm64-maccatalyst
1058 value: C3C1B373-AB10-3216-95BA-998C43146888
1059 - target: arm64e-macos
1060 value: 29AD4E0E-F6A4-313F-AFA3-825CA94917BD
1061 - target: arm64e-maccatalyst
1062 value: 29AD4E0E-F6A4-313F-AFA3-825CA94917BD
1063install-name: '/usr/lib/system/libmacho.dylib'
1064current-version: 973.4
1065parent-umbrella:
1066 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64e-macos ]
1067 umbrella: System
1068exports:
1069 - targets: [ arm64-macos, x86_64-macos, arm64e-macos, x86_64-maccatalyst ]
1070 symbols: [ _NXCombineCpuSubtypes, _NXFindBestFatArch, _NXFindBestFatArch_64,
1071 _NXFreeArchInfo, _NXGetAllArchInfos, _NXGetArchInfoFromCpuType,
1072 _NXGetArchInfoFromName, _NXGetLocalArchInfo, _get_edata, _get_end,
1073 _get_etext, _getsectbyname, _getsectbynamefromheader, _getsectbynamefromheader_64,
1074 _getsectbynamefromheaderwithswap, _getsectbynamefromheaderwithswap_64,
1075 _getsectdata, _getsectdatafromFramework, _getsectdatafromheader,
1076 _getsectdatafromheader_64, _getsectiondata, _getsegbyname,
1077 _getsegmentdata, _slot_name, _swap_build_tool_version, _swap_build_version_command,
1078 _swap_dyld_info_command, _swap_dylib_command, _swap_dylib_module,
1079 _swap_dylib_module_64, _swap_dylib_reference, _swap_dylib_table_of_contents,
1080 _swap_dylinker_command, _swap_dysymtab_command, _swap_encryption_command,
1081 _swap_encryption_command_64, _swap_entry_point_command, _swap_fat_arch,
1082 _swap_fat_arch_64, _swap_fat_header, _swap_fileset_entry_command,
1083 _swap_fvmfile_command, _swap_fvmlib_command, _swap_hppa_fp_thread_state,
1084 _swap_hppa_frame_thread_state, _swap_hppa_integer_thread_state,
1085 _swap_i386_exception_state, _swap_i386_float_state, _swap_i386_thread_state,
1086 _swap_i860_thread_state_regs, _swap_ident_command, _swap_indirect_symbols,
1087 _swap_linkedit_data_command, _swap_linker_option_command,
1088 _swap_load_command, _swap_m68k_thread_state_68882, _swap_m68k_thread_state_regs,
1089 _swap_m68k_thread_state_user_reg, _swap_m88110_thread_state_impl_t,
1090 _swap_m88k_thread_state_grf_t, _swap_m88k_thread_state_user_t,
1091 _swap_m88k_thread_state_xrf_t, _swap_mach_header, _swap_mach_header_64,
1092 _swap_nlist, _swap_nlist_64, _swap_note_command, _swap_ppc_exception_state_t,
1093 _swap_ppc_float_state_t, _swap_ppc_thread_state_t, _swap_prebind_cksum_command,
1094 _swap_prebound_dylib_command, _swap_ranlib, _swap_ranlib_64,
1095 _swap_relocation_info, _swap_routines_command, _swap_routines_command_64,
1096 _swap_rpath_command, _swap_section, _swap_section_64, _swap_segment_command,
1097 _swap_segment_command_64, _swap_source_version_command, _swap_sparc_thread_state_fpu,
1098 _swap_sparc_thread_state_regs, _swap_sub_client_command, _swap_sub_framework_command,
1099 _swap_sub_library_command, _swap_sub_umbrella_command, _swap_symseg_command,
1100 _swap_symtab_command, _swap_thread_command, _swap_twolevel_hint,
1101 _swap_twolevel_hints_command, _swap_uuid_command, _swap_version_min_command,
1102 _swap_x86_debug_state, _swap_x86_debug_state32, _swap_x86_debug_state64,
1103 _swap_x86_exception_state, _swap_x86_exception_state64, _swap_x86_float_state,
1104 _swap_x86_float_state64, _swap_x86_state_hdr, _swap_x86_thread_state,
1105 _swap_x86_thread_state64 ]
1106--- !tapi-tbd
1107tbd-version: 4
1108targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1109 arm64e-macos, arm64e-maccatalyst ]
1110uuids:
1111 - target: x86_64-macos
1112 value: 19D42B9D-3336-3543-AF75-6E605EA31599
1113 - target: x86_64-maccatalyst
1114 value: 19D42B9D-3336-3543-AF75-6E605EA31599
1115 - target: arm64-macos
1116 value: 00000000-0000-0000-0000-000000000000
1117 - target: arm64-maccatalyst
1118 value: 00000000-0000-0000-0000-000000000000
1119 - target: arm64e-macos
1120 value: C55DCBDE-51FF-3D90-AF78-9BE9F8FC8DD6
1121 - target: arm64e-maccatalyst
1122 value: C55DCBDE-51FF-3D90-AF78-9BE9F8FC8DD6
1123install-name: '/usr/lib/system/libquarantine.dylib'
1124current-version: 119.40.2
1125parent-umbrella:
1126 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1127 arm64e-macos, arm64e-maccatalyst ]
1128 umbrella: System
1129exports:
1130 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
1131 arm64-macos, arm64-maccatalyst ]
1132 symbols: [ ___esp_check, ___esp_check_ns, ___esp_enabled, ___esp_notify,
1133 ___esp_notify_ns, ___libquarantineVersionNumber, ___libquarantineVersionString,
1134 ___qtn_syscall_quarantine_getinfo_fd, ___qtn_syscall_quarantine_getinfo_mount_point,
1135 ___qtn_syscall_quarantine_getinfo_path, ___qtn_syscall_quarantine_getprocinfo,
1136 ___qtn_syscall_quarantine_setinfo_fd, ___qtn_syscall_quarantine_setinfo_mount_point,
1137 ___qtn_syscall_quarantine_setinfo_path, ___qtn_syscall_quarantine_setprocinfo,
1138 ___qtn_syscall_responsibility_get, ___qtn_syscall_responsibility_get2,
1139 ___qtn_syscall_responsibility_get3, ___qtn_syscall_responsibility_set,
1140 ___qtn_syscall_responsibility_set_audittoken_for_caller, ___qtn_syscall_responsibility_set_audittoken_for_self,
1141 ___qtn_syscall_responsibility_set_caller_for_caller, ___qtn_syscall_responsibility_set_hosted_path,
1142 __qtn_error, __qtn_file_alloc, __qtn_file_apply_to_fd, __qtn_file_apply_to_mount_point,
1143 __qtn_file_apply_to_path, __qtn_file_clone, __qtn_file_free,
1144 __qtn_file_get_flags, __qtn_file_get_identifier, __qtn_file_get_metadata,
1145 __qtn_file_get_metadata_size, __qtn_file_get_timestamp, __qtn_file_init,
1146 __qtn_file_init_with_data, __qtn_file_init_with_fd, __qtn_file_init_with_mount_point,
1147 __qtn_file_init_with_path, __qtn_file_set_flags, __qtn_file_set_identifier,
1148 __qtn_file_set_metadata, __qtn_file_set_timestamp, __qtn_file_to_data,
1149 __qtn_label_name, __qtn_proc_alloc, __qtn_proc_apply_to_self,
1150 __qtn_proc_clone, __qtn_proc_free, __qtn_proc_get_flags, __qtn_proc_get_identifier,
1151 __qtn_proc_get_metadata, __qtn_proc_get_metadata_size, __qtn_proc_get_path_exclusion_pattern,
1152 __qtn_proc_init, __qtn_proc_init_with_data, __qtn_proc_init_with_self,
1153 __qtn_proc_set_flags, __qtn_proc_set_identifier, __qtn_proc_set_metadata,
1154 __qtn_proc_set_path_exclusion_pattern, __qtn_proc_to_data,
1155 __qtn_xattr_name, _qtn_proc_init_with_pid, _responsibility_get_attribution_for_audittoken,
1156 _responsibility_get_pid_responsible_for_pid, _responsibility_get_responsible_audit_token_for_audit_token,
1157 _responsibility_get_responsible_for_pid, _responsibility_get_uniqueid_responsible_for_pid,
1158 _responsibility_identity_get_binary_entitlement_data, _responsibility_identity_get_binary_is_platform,
1159 _responsibility_identity_get_binary_offset, _responsibility_identity_get_binary_path,
1160 _responsibility_identity_get_binary_signing_id, _responsibility_identity_get_binary_team_id,
1161 _responsibility_identity_get_hosted_path, _responsibility_identity_get_persistent_identifier,
1162 _responsibility_identity_get_user_uuid, _responsibility_identity_release,
1163 _responsibility_init, _responsibility_set_audittoken_responsible_for_caller,
1164 _responsibility_set_audittoken_responsible_for_self, _responsibility_set_caller_responsible_for_self,
1165 _responsibility_set_hosted_path, _responsibility_set_pid_responsible_for_pid,
1166 _responsibility_spawnattrs_getdisclaim, _responsibility_spawnattrs_setdisclaim ]
1167--- !tapi-tbd
1168tbd-version: 4
1169targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1170 arm64e-macos, arm64e-maccatalyst ]
1171uuids:
1172 - target: x86_64-macos
1173 value: 750012C2-7097-33C3-B796-2766E6CDE8C1
1174 - target: x86_64-maccatalyst
1175 value: 750012C2-7097-33C3-B796-2766E6CDE8C1
1176 - target: arm64-macos
1177 value: 00000000-0000-0000-0000-000000000000
1178 - target: arm64-maccatalyst
1179 value: 00000000-0000-0000-0000-000000000000
1180 - target: arm64e-macos
1181 value: 8FAF9121-D546-3319-B366-1C50BAF59FE8
1182 - target: arm64e-maccatalyst
1183 value: 8FAF9121-D546-3319-B366-1C50BAF59FE8
1184install-name: '/usr/lib/system/libremovefile.dylib'
1185current-version: 49.40.3
1186parent-umbrella:
1187 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1188 arm64e-macos, arm64e-maccatalyst ]
1189 umbrella: System
1190exports:
1191 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1192 arm64-macos, arm64-maccatalyst ]
1193 symbols: [ ___removefile_init_random, ___removefile_random_char, ___removefile_randomize_buffer,
1194 ___removefile_rename_unlink, ___removefile_sunlink, ___removefile_tree_walker,
1195 _removefile, _removefile_cancel, _removefile_state_alloc,
1196 _removefile_state_free, _removefile_state_get, _removefile_state_set,
1197 _removefileat ]
1198--- !tapi-tbd
1199tbd-version: 4
1200targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1201 arm64e-macos, arm64e-maccatalyst ]
1202uuids:
1203 - target: x86_64-macos
1204 value: 940C5BB9-4928-3A63-97F2-132797C8B7E5
1205 - target: x86_64-maccatalyst
1206 value: 940C5BB9-4928-3A63-97F2-132797C8B7E5
1207 - target: arm64-macos
1208 value: 00000000-0000-0000-0000-000000000000
1209 - target: arm64-maccatalyst
1210 value: 00000000-0000-0000-0000-000000000000
1211 - target: arm64e-macos
1212 value: B25E1954-9781-3238-8B1C-0CF44B5FA684
1213 - target: arm64e-maccatalyst
1214 value: B25E1954-9781-3238-8B1C-0CF44B5FA684
1215install-name: '/usr/lib/system/libsystem_asl.dylib'
1216current-version: 385
1217parent-umbrella:
1218 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1219 arm64e-macos, arm64e-maccatalyst ]
1220 umbrella: System
1221exports:
1222 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
1223 arm64-macos, arm64-maccatalyst ]
1224 symbols: [ _ASL_LEVEL_TO_STRING, __asl_evaluate_send, __asl_fork_child,
1225 __asl_lib_log, __asl_log_args_to_xpc, __asl_msg_dump, __asl_mt_shim_fork_child,
1226 __asl_mt_shim_send_message, __asl_server_cancel_direct_watch,
1227 __asl_server_control_query, __asl_server_create_aux_link,
1228 __asl_server_match, __asl_server_message, __asl_server_query_2,
1229 __asl_server_register_direct_watch, _asl_add_log_file, _asl_add_output,
1230 _asl_add_output_file, _asl_append, _asl_base_msg, _asl_client_add_output_file,
1231 _asl_client_get_control, _asl_client_kvdict, _asl_client_match,
1232 _asl_client_open, _asl_client_open_from_file, _asl_client_release,
1233 _asl_client_remove_output_file, _asl_client_retain, _asl_client_search,
1234 _asl_client_send, _asl_client_set_control, _asl_client_set_filter,
1235 _asl_client_set_output_file_filter, _asl_close, _asl_close_auxiliary_file,
1236 _asl_core_check_access, _asl_core_decode_buffer, _asl_core_encode_buffer,
1237 _asl_core_error, _asl_core_get_service_port, _asl_core_htonq,
1238 _asl_core_level_to_string, _asl_core_new_msg_id, _asl_core_ntohq,
1239 _asl_core_parse_time, _asl_core_str_match, _asl_core_str_match_c_time,
1240 _asl_core_str_match_char, _asl_core_str_to_size, _asl_core_str_to_time,
1241 _asl_core_str_to_uint32, _asl_core_string_hash, _asl_core_time_to_str,
1242 _asl_count, _asl_create_auxiliary_file, _asl_fetch_key_val_op,
1243 _asl_file_close, _asl_file_compact, _asl_file_ctime, _asl_file_fetch,
1244 _asl_file_fetch_next, _asl_file_fetch_previous, _asl_file_filter,
1245 _asl_file_filter_level, _asl_file_list_add, _asl_file_list_close,
1246 _asl_file_list_match, _asl_file_list_match_end, _asl_file_list_match_next,
1247 _asl_file_list_match_start, _asl_file_match, _asl_file_open_read,
1248 _asl_file_open_write, _asl_file_read_set_position, _asl_file_release,
1249 _asl_file_retain, _asl_file_save, _asl_file_size, _asl_filesystem_path,
1250 _asl_format, _asl_format_message, _asl_free, _asl_get, _asl_get_filter,
1251 _asl_get_index, _asl_get_local_control, _asl_get_type, _asl_get_value_for_key,
1252 _asl_key, _asl_legacy1_close, _asl_legacy1_fetch, _asl_legacy1_match,
1253 _asl_legacy1_open, _asl_list_from_string, _asl_log, _asl_log_auxiliary_location,
1254 _asl_log_descriptor, _asl_log_message, _asl_match, _asl_msg_cmp,
1255 _asl_msg_cmp_list, _asl_msg_copy, _asl_msg_count, _asl_msg_fetch,
1256 _asl_msg_from_string, _asl_msg_get_val_for_key, _asl_msg_key,
1257 _asl_msg_list_append, _asl_msg_list_count, _asl_msg_list_from_string,
1258 _asl_msg_list_get_index, _asl_msg_list_insert, _asl_msg_list_match,
1259 _asl_msg_list_new, _asl_msg_list_new_count, _asl_msg_list_next,
1260 _asl_msg_list_prepend, _asl_msg_list_prev, _asl_msg_list_release,
1261 _asl_msg_list_remove_index, _asl_msg_list_reset_iteration,
1262 _asl_msg_list_retain, _asl_msg_list_search, _asl_msg_list_to_asl_string,
1263 _asl_msg_list_to_string, _asl_msg_lookup, _asl_msg_merge,
1264 _asl_msg_new, _asl_msg_release, _asl_msg_retain, _asl_msg_set_key_val,
1265 _asl_msg_set_key_val_op, _asl_msg_to_string, _asl_msg_type,
1266 _asl_msg_unset, _asl_msg_unset_index, _asl_new, _asl_next,
1267 _asl_object_append, _asl_object_count, _asl_object_get_key_val_op_at_index,
1268 _asl_object_get_object_at_index, _asl_object_get_val_op_for_key,
1269 _asl_object_match, _asl_object_next, _asl_object_prepend,
1270 _asl_object_prev, _asl_object_remove_object_at_index, _asl_object_search,
1271 _asl_object_set_iteration_index, _asl_object_set_key_val_op,
1272 _asl_object_unset_key, _asl_open, _asl_open_from_file, _asl_open_path,
1273 _asl_parse_time, _asl_prepend, _asl_prev, _asl_release, _asl_remote_notify_name,
1274 _asl_remove_log_file, _asl_remove_output, _asl_remove_output_file,
1275 _asl_reset_iteration, _asl_retain, _asl_search, _asl_send,
1276 _asl_set, _asl_set_filter, _asl_set_key_val_op, _asl_set_local_control,
1277 _asl_set_output_file_filter, _asl_set_query, _asl_store_close,
1278 _asl_store_location, _asl_store_match, _asl_store_match_next,
1279 _asl_store_match_start, _asl_store_match_timeout, _asl_store_max_file_size,
1280 _asl_store_open_aux, _asl_store_open_read, _asl_store_open_write,
1281 _asl_store_release, _asl_store_retain, _asl_store_save, _asl_store_set_flags,
1282 _asl_store_statistics, _asl_store_sweep_file_cache, _asl_string_allocated_size,
1283 _asl_string_append, _asl_string_append_asl_key, _asl_string_append_asl_msg,
1284 _asl_string_append_char_no_encoding, _asl_string_append_no_encoding,
1285 _asl_string_append_no_encoding_len, _asl_string_append_op,
1286 _asl_string_append_xml_tag, _asl_string_bytes, _asl_string_length,
1287 _asl_string_new, _asl_string_release, _asl_string_release_return_bytes,
1288 _asl_string_retain, _asl_syslog_faciliy_name_to_num, _asl_syslog_faciliy_num_to_name,
1289 _asl_trigger_aslmanager, _asl_unset, _asl_unset_key, _asl_vlog,
1290 _aslresponse_free, _aslresponse_next, _closelog, _openlog,
1291 _setlogmask, _syslog, '_syslog$DARWIN_EXTSN', _vsyslog ]
1292--- !tapi-tbd
1293tbd-version: 4
1294targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1295 arm64e-macos, arm64e-maccatalyst ]
1296uuids:
1297 - target: x86_64-macos
1298 value: 9CF131C6-16FB-3DD0-B046-9E0B6AB99935
1299 - target: x86_64-maccatalyst
1300 value: 9CF131C6-16FB-3DD0-B046-9E0B6AB99935
1301 - target: arm64-macos
1302 value: 00000000-0000-0000-0000-000000000000
1303 - target: arm64-maccatalyst
1304 value: 00000000-0000-0000-0000-000000000000
1305 - target: arm64e-macos
1306 value: D3998C8A-7A1C-3962-822C-91DFC11ACBF7
1307 - target: arm64e-maccatalyst
1308 value: D3998C8A-7A1C-3962-822C-91DFC11ACBF7
1309install-name: '/usr/lib/system/libsystem_blocks.dylib'
1310current-version: 78
1311parent-umbrella:
1312 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1313 arm64e-macos, arm64e-maccatalyst ]
1314 umbrella: System
1315exports:
1316 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1317 arm64-macos, arm64-maccatalyst ]
1318 symbols: [ _Block_size, __Block_copy, __Block_extended_layout, __Block_has_signature,
1319 __Block_isDeallocating, __Block_layout, __Block_object_assign,
1320 __Block_object_dispose, __Block_release, __Block_signature,
1321 __Block_tryRetain, __Block_use_RR2, __Block_use_stret, __NSConcreteAutoBlock,
1322 __NSConcreteFinalizingBlock, __NSConcreteGlobalBlock, __NSConcreteMallocBlock,
1323 __NSConcreteStackBlock, __NSConcreteWeakBlockVariable ]
1324--- !tapi-tbd
1325tbd-version: 4
1326targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1327 arm64e-macos, arm64e-maccatalyst ]
1328uuids:
1329 - target: x86_64-macos
1330 value: 06D9F593-C815-385D-957F-2B5BCC223A8A
1331 - target: x86_64-maccatalyst
1332 value: 06D9F593-C815-385D-957F-2B5BCC223A8A
1333 - target: arm64-macos
1334 value: 00000000-0000-0000-0000-000000000000
1335 - target: arm64-maccatalyst
1336 value: 00000000-0000-0000-0000-000000000000
1337 - target: arm64e-macos
1338 value: 4A324485-84D9-318F-8267-70FF10504289
1339 - target: arm64e-maccatalyst
1340 value: 4A324485-84D9-318F-8267-70FF10504289
1341install-name: '/usr/lib/system/libsystem_c.dylib'
1342current-version: 1439.40.11
1343parent-umbrella:
1344 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1345 arm64e-macos, arm64e-maccatalyst ]
1346 umbrella: System
1347exports:
1348 - targets: [ x86_64-maccatalyst, x86_64-macos ]
1349 symbols: [ '___opendir2$INODE64', ___strtopx, '__readdir_unlocked$INODE64',
1350 '__seekdir$INODE64', '_alphasort$INODE64', '_daemon$1050',
1351 '_fdopendir$INODE64', _fstatx64_np, '_fstatx_np$INODE64',
1352 '_fts_children$INODE64', '_fts_close$INODE64', '_fts_open$INODE64',
1353 '_fts_open_b$INODE64', '_fts_read$INODE64', '_fts_set$INODE64',
1354 '_ftw$INODE64', '_getmntinfo$INODE64', _getmntinfo64, '_getmntinfo_r_np$INODE64',
1355 '_glob$INODE64', '_glob_b$INODE64', _lstatx64_np, '_lstatx_np$INODE64',
1356 '_nftw$INODE64', '_opendir$INODE64', '_readdir$INODE64', '_readdir_r$INODE64',
1357 '_rewinddir$INODE64', '_scandir$INODE64', '_scandir_b$INODE64',
1358 '_seekdir$INODE64', _statx64_np, '_statx_np$INODE64', '_telldir$INODE64',
1359 mcount ]
1360 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
1361 arm64-macos, arm64-maccatalyst ]
1362 symbols: [ '$ld$weak$os10.11$_basename_r', '$ld$weak$os10.11$_clock_getres',
1363 '$ld$weak$os10.11$_clock_gettime', '$ld$weak$os10.11$_clock_settime',
1364 '$ld$weak$os10.11$_dirname_r', '$ld$weak$os10.11$_getentropy',
1365 '$ld$weak$os10.11$_mkostemp', '$ld$weak$os10.11$_mkostemps',
1366 '$ld$weak$os10.11$_timingsafe_bcmp', '$ld$weak$os10.12$_utimensat',
1367 __CurrentRuneLocale, __DefaultRuneLocale, __Exit, __NSGetArgc,
1368 __NSGetArgv, __NSGetEnviron, __NSGetMachExecuteHeader, __NSGetProgname,
1369 __PathLocale, __Read_RuneMagi, ___Balloc_D2A, ___Bfree_D2A,
1370 ___ULtod_D2A, ____mb_cur_max, ____mb_cur_max_l, ____runetype,
1371 ____runetype_l, ____tolower, ____tolower_l, ____toupper, ____toupper_l,
1372 ___add_ovflpage, ___addel, ___any_on_D2A, ___assert_rtn, ___b2d_D2A,
1373 ___big_delete, ___big_insert, ___big_keydata, ___big_return,
1374 ___big_split, ___bigtens_D2A, ___bt_close, ___bt_cmp, ___bt_defcmp,
1375 ___bt_defpfx, ___bt_delete, ___bt_dleaf, ___bt_fd, ___bt_free,
1376 ___bt_get, ___bt_new, ___bt_open, ___bt_pgin, ___bt_pgout,
1377 ___bt_put, ___bt_ret, ___bt_search, ___bt_seq, ___bt_setcur,
1378 ___bt_split, ___bt_sync, ___buf_free, ___call_hash, ___cleanup,
1379 ___cmp_D2A, ___collate_equiv_match, ___collate_load_error,
1380 ___collate_lookup, ___collate_lookup_l, ___copybits_D2A, ___cxa_atexit,
1381 ___cxa_finalize, ___cxa_finalize_ranges, ___cxa_thread_atexit,
1382 ___d2b_D2A, ___dbpanic, ___decrement_D2A, ___default_hash,
1383 ___default_utx, ___delpair, ___diff_D2A, ___dtoa, ___expand_table,
1384 ___fflush, ___fgetwc, ___find_bigpair, ___find_last_page,
1385 ___fix_locale_grouping_str, ___fread, ___free_ovflpage, ___freedtoa,
1386 ___gdtoa, ___gdtoa_locks, ___get_buf, ___get_page, ___gethex_D2A,
1387 ___getonlyClocaleconv, ___hash_open, ___hdtoa, ___hexdig_D2A,
1388 ___hexdig_init_D2A, ___hexnan_D2A, ___hi0bits_D2A, ___hldtoa,
1389 ___i2b_D2A, ___ibitmap, ___increment_D2A, ___isctype, ___istype,
1390 ___istype_l, ___ldtoa, ___libc_init, ___lo0bits_D2A, ___log2,
1391 ___lshift_D2A, ___maskrune, ___maskrune_l, ___match_D2A, ___mb_cur_max,
1392 ___mb_sb_limit, ___memccpy_chk, ___memcpy_chk, ___memmove_chk,
1393 ___memset_chk, ___mult_D2A, ___multadd_D2A, ___nrv_alloc_D2A,
1394 ___opendir2, ___ovfl_delete, ___ovfl_get, ___ovfl_put, ___pow5mult_D2A,
1395 ___put_page, ___quorem_D2A, ___ratio_D2A, ___rec_close, ___rec_delete,
1396 ___rec_dleaf, ___rec_fd, ___rec_fmap, ___rec_fpipe, ___rec_get,
1397 ___rec_iput, ___rec_open, ___rec_put, ___rec_ret, ___rec_search,
1398 ___rec_seq, ___rec_sync, ___rec_vmap, ___rec_vpipe, ___reclaim_buf,
1399 ___rshift_D2A, ___rv_alloc_D2A, ___s2b_D2A, ___sF, ___sclose,
1400 ___sdidinit, ___set_ones_D2A, ___setonlyClocaleconv, ___sflags,
1401 ___sflush, ___sfp, ___sfvwrite, ___sglue, ___sinit, ___slbexpand,
1402 ___smakebuf, ___snprintf_chk, ___snprintf_object_size_chk,
1403 ___split_page, ___sprintf_chk, ___sprintf_object_size_chk,
1404 ___sread, ___srefill, ___srget, ___sseek, ___stack_chk_fail,
1405 ___stack_chk_guard, ___stderrp, ___stdinp, ___stdoutp, ___stpcpy_chk,
1406 ___stpncpy_chk, ___strcat_chk, ___strcp_D2A, ___strcpy_chk,
1407 ___strlcat_chk, ___strlcpy_chk, ___strncat_chk, ___strncpy_chk,
1408 ___strtodg, ___strtopdd, ___sum_D2A, ___svfscanf, ___swbuf,
1409 ___swhatbuf, ___swrite, ___swsetup, ___tens_D2A, ___tinytens_D2A,
1410 ___tolower, ___tolower_l, ___toupper, ___toupper_l, ___trailz_D2A,
1411 ___ulp_D2A, ___ungetc, ___ungetwc, ___vsnprintf_chk, ___vsprintf_chk,
1412 ___wcwidth, ___wcwidth_l, __allocenvstate, __atexit_receipt,
1413 __c_locale, __cleanup, __closeutx, __copyenv, __cthread_init_routine,
1414 __deallocenvstate, __endutxent, __flockfile_debug_stub, __fseeko,
1415 __ftello, __fwalk, __getenvp, __getutxent, __getutxid, __getutxline,
1416 __inet_aton_check, __init_clock_port, __int_to_time, __libc_fork_child,
1417 __libc_initializer, __long_to_time, __mkpath_np, __mktemp,
1418 __openutx, __os_assert_log, __os_assert_log_ctx, __os_assumes_log,
1419 __os_assumes_log_ctx, __os_avoid_tail_call, __os_crash, __os_crash_callback,
1420 __os_crash_fmt, __os_debug_log, __os_debug_log_error_str,
1421 __putenvp, __pututxline, __rand48_add, __rand48_mult, __rand48_seed,
1422 __readdir_unlocked, __reclaim_telldir, __seekdir, __setenvp,
1423 __setutxent, __sigaction_nobind, __sigintr, __signal_nobind,
1424 __sigvec_nobind, __sread, __sseek, __subsystem_init, __swrite,
1425 __time32_to_time, __time64_to_time, __time_to_int, __time_to_long,
1426 __time_to_time32, __time_to_time64, __unsetenvp, __utmpxname,
1427 _a64l, _abort, _abort_report_np, _abs, _acl_add_flag_np, _acl_add_perm,
1428 _acl_calc_mask, _acl_clear_flags_np, _acl_clear_perms, _acl_copy_entry,
1429 _acl_copy_ext, _acl_copy_ext_native, _acl_copy_int, _acl_copy_int_native,
1430 _acl_create_entry, _acl_create_entry_np, _acl_delete_def_file,
1431 _acl_delete_entry, _acl_delete_fd_np, _acl_delete_file_np,
1432 _acl_delete_flag_np, _acl_delete_link_np, _acl_delete_perm,
1433 _acl_dup, _acl_free, _acl_from_text, _acl_get_entry, _acl_get_fd,
1434 _acl_get_fd_np, _acl_get_file, _acl_get_flag_np, _acl_get_flagset_np,
1435 _acl_get_link_np, _acl_get_perm_np, _acl_get_permset, _acl_get_permset_mask_np,
1436 _acl_get_qualifier, _acl_get_tag_type, _acl_init, _acl_maximal_permset_mask_np,
1437 _acl_set_fd, _acl_set_fd_np, _acl_set_file, _acl_set_flagset_np,
1438 _acl_set_link_np, _acl_set_permset, _acl_set_permset_mask_np,
1439 _acl_set_qualifier, _acl_set_tag_type, _acl_size, _acl_to_text,
1440 _acl_valid, _acl_valid_fd_np, _acl_valid_file_np, _acl_valid_link,
1441 _addr2ascii, _alarm, _alphasort, _arc4random, _arc4random_addrandom,
1442 _arc4random_buf, _arc4random_stir, _arc4random_uniform, _ascii2addr,
1443 _asctime, _asctime_r, _asprintf, _asprintf_l, _asxprintf,
1444 _asxprintf_exec, _atexit, _atexit_b, _atof, _atof_l, _atoi,
1445 _atoi_l, _atol, _atol_l, _atoll, _atoll_l, _backtrace, _backtrace_from_fp,
1446 _backtrace_image_offsets, _backtrace_symbols, _backtrace_symbols_fd,
1447 _basename, _basename_r, _bcopy, _brk, _bsd_signal, _bsearch,
1448 _bsearch_b, _btowc, _btowc_l, _catclose, _catgets, _catopen,
1449 _cfgetispeed, _cfgetospeed, _cfmakeraw, _cfsetispeed, _cfsetospeed,
1450 _cfsetspeed, _cgetcap, _cgetclose, _cgetent, _cgetfirst, _cgetmatch,
1451 _cgetnext, _cgetnum, _cgetset, _cgetstr, _cgetustr, _chmodx_np,
1452 _clearerr, _clearerr_unlocked, _clock, _clock_getres, _clock_gettime,
1453 _clock_gettime_nsec_np, _clock_port, _clock_sem, _clock_settime,
1454 _closedir, _compat_mode, _confstr, _copy_printf_domain, _creat,
1455 '_creat$NOCANCEL', _crypt, _ctermid, _ctermid_r, _ctime, _ctime_r,
1456 _daemon, _daylight, _dbm_clearerr, _dbm_close, _dbm_delete,
1457 _dbm_dirfno, _dbm_error, _dbm_fetch, _dbm_firstkey, _dbm_nextkey,
1458 _dbm_open, _dbm_store, _dbopen, _devname, _devname_r, _difftime,
1459 _digittoint, _digittoint_l, _dirfd, _dirname, _dirname_r,
1460 _div, _dprintf, _dprintf_l, _drand48, _duplocale, _dxprintf,
1461 _dxprintf_exec, _ecvt, _encrypt, _endttyent, _endusershell,
1462 _endutxent, _endutxent_wtmp, _erand48, _err, _err_set_exit,
1463 _err_set_exit_b, _err_set_file, _errc, _errx, _execl, _execle,
1464 _execlp, _execv, _execvP, _execvp, _exit, _f_prealloc, _fchmodx_np,
1465 _fclose, _fcvt, _fdopen, '_fdopen$DARWIN_EXTSN', _fdopendir,
1466 _feof, _feof_unlocked, _ferror, _ferror_unlocked, _fflagstostr,
1467 _fflush, _fgetc, _fgetln, _fgetpos, _fgetrune, _fgets, _fgetwc,
1468 _fgetwc_l, _fgetwln, _fgetwln_l, _fgetws, _fgetws_l, _fileno,
1469 _fileno_unlocked, _filesec_dup, _filesec_free, _filesec_get_property,
1470 _filesec_init, _filesec_query_property, _filesec_set_property,
1471 _filesec_unset_property, _flockfile, _fmemopen, _fmtcheck,
1472 _fmtmsg, _fnmatch, _fopen, '_fopen$DARWIN_EXTSN', _fork, _forkpty,
1473 _fparseln, _fprintf, _fprintf_l, _fpurge, _fputc, _fputrune,
1474 _fputs, _fputwc, _fputwc_l, _fputws, _fputws_l, _fread, _free_printf_comp,
1475 _free_printf_domain, _freelocale, _freopen, _fscanf, _fscanf_l,
1476 _fseek, _fseeko, _fsetpos, _fstatvfs, _fstatx_np, _fsync_volume_np,
1477 _ftell, _ftello, _ftime, _ftok, _ftrylockfile, _fts_children,
1478 _fts_close, _fts_open, _fts_open_b, _fts_read, _fts_set, _ftw,
1479 _fungetrune, _funlockfile, _funopen, _fwide, _fwprintf, _fwprintf_l,
1480 _fwrite, _fwscanf, _fwscanf_l, _fxprintf, _fxprintf_exec,
1481 _gcvt, _getbsize, _getc, _getc_unlocked, _getchar, _getchar_unlocked,
1482 _getcwd, _getdate, _getdate_err, _getdelim, _getdiskbyname,
1483 _getenv, '_getgroups$DARWIN_EXTSN', _gethostid, _gethostname,
1484 _getipv4sourcefilter, _getlastlogx, _getlastlogxbyname, _getline,
1485 _getloadavg, _getlogin, _getlogin_r, _getmntinfo, _getmntinfo_r_np,
1486 _getmode, _getopt, _getopt_long, _getopt_long_only, _getpagesize,
1487 _getpass, _getpeereid, _getprogname, _gets, _getsourcefilter,
1488 _getsubopt, _gettimeofday, _getttyent, _getttynam, _getusershell,
1489 _getutmp, _getutmpx, _getutxent, _getutxent_wtmp, _getutxid,
1490 _getutxline, _getvfsbyname, _getw, _getwc, _getwc_l, _getwchar,
1491 _getwchar_l, _getwd, _glob, _glob_b, _globfree, _gmtime, _gmtime_r,
1492 _grantpt, _hash_create, _hash_destroy, _hash_purge, _hash_search,
1493 _hash_stats, _hash_traverse, _hcreate, _hdestroy, _heapsort,
1494 _heapsort_b, _hsearch, _imaxabs, _imaxdiv, _inet_addr, _inet_aton,
1495 _inet_lnaof, _inet_makeaddr, _inet_net_ntop, _inet_net_pton,
1496 _inet_neta, _inet_netof, _inet_network, _inet_nsap_addr, _inet_nsap_ntoa,
1497 _inet_ntoa, _inet_ntop, _inet_ntop4, _inet_ntop6, _inet_pton,
1498 _initstate, _insque, _isalnum, _isalnum_l, _isalpha, _isalpha_l,
1499 _isascii, _isatty, _isblank, _isblank_l, _iscntrl, _iscntrl_l,
1500 _isdigit, _isdigit_l, _isgraph, _isgraph_l, _ishexnumber,
1501 _ishexnumber_l, _isideogram, _isideogram_l, _islower, _islower_l,
1502 _isnumber, _isnumber_l, _isphonogram, _isphonogram_l, _isprint,
1503 _isprint_l, _ispunct, _ispunct_l, _isrune, _isrune_l, _isspace,
1504 _isspace_l, _isspecial, _isspecial_l, _isupper, _isupper_l,
1505 _iswalnum, _iswalnum_l, _iswalpha, _iswalpha_l, _iswascii,
1506 _iswblank, _iswblank_l, _iswcntrl, _iswcntrl_l, _iswctype,
1507 _iswctype_l, _iswdigit, _iswdigit_l, _iswgraph, _iswgraph_l,
1508 _iswhexnumber, _iswhexnumber_l, _iswideogram, _iswideogram_l,
1509 _iswlower, _iswlower_l, _iswnumber, _iswnumber_l, _iswphonogram,
1510 _iswphonogram_l, _iswprint, _iswprint_l, _iswpunct, _iswpunct_l,
1511 _iswrune, _iswrune_l, _iswspace, _iswspace_l, _iswspecial,
1512 _iswspecial_l, _iswupper, _iswupper_l, _iswxdigit, _iswxdigit_l,
1513 _isxdigit, _isxdigit_l, _jrand48, _kOSThermalNotificationPressureLevelName,
1514 _killpg, _l64a, _labs, _lchflags, _lchmod, _lcong48, _ldiv,
1515 _lfind, _link_addr, _link_ntoa, _llabs, _lldiv, _localeconv,
1516 _localeconv_l, _localtime, _localtime_r, _lockf, '_lockf$NOCANCEL',
1517 _login, _login_tty, _logout, _logwtmp, _lrand48, _lsearch,
1518 _lstatx_np, _lutimes, _mblen, _mblen_l, _mbmb, _mbrlen, _mbrlen_l,
1519 _mbrrune, _mbrtowc, _mbrtowc_l, _mbrune, _mbsinit, _mbsinit_l,
1520 _mbsnrtowcs, _mbsnrtowcs_l, _mbsrtowcs, _mbsrtowcs_l, _mbstowcs,
1521 _mbstowcs_l, _mbtowc, _mbtowc_l, _memmem, _memset_s, _mergesort,
1522 _mergesort_b, _mkdirx_np, _mkdtemp, _mkdtempat_np, _mkfifox_np,
1523 _mkostemp, _mkostemps, _mkostempsat_np, _mkpath_np, _mkpathat_np,
1524 _mkstemp, _mkstemp_dprotected_np, _mkstemps, _mkstempsat_np,
1525 _mktemp, _mktime, _monaddition, _moncontrol, _moncount, _moninit,
1526 _monitor, _monoutput, _monreset, _monstartup, _mpool_close,
1527 _mpool_filter, _mpool_get, _mpool_new, _mpool_open, _mpool_put,
1528 _mpool_sync, _mrand48, _nanosleep, '_nanosleep$NOCANCEL',
1529 _new_printf_comp, _new_printf_domain, _newlocale, _nextwctype,
1530 _nextwctype_l, _nftw, _nice, _nl_langinfo, _nl_langinfo_l,
1531 _nrand48, _nvis, _off32, _off64, _offtime, _open_memstream,
1532 _open_with_subsystem, _open_wmemstream, _opendev, _opendir,
1533 _openpty, _openx_np, _optarg, _opterr, _optind, _optopt, _optreset,
1534 _pause, '_pause$NOCANCEL', _pclose, _perror, _popen, '_popen$DARWIN_EXTSN',
1535 _posix2time, _posix_openpt, _posix_spawnp, _printf, _printf_l,
1536 _psignal, _psort, _psort_b, _psort_r, _ptsname, _ptsname_r,
1537 _putc, _putc_unlocked, _putchar, _putchar_unlocked, _putenv,
1538 _puts, _pututxline, _putw, _putwc, _putwc_l, _putwchar, _putwchar_l,
1539 _qsort, _qsort_b, _qsort_r, _querylocale, _radixsort, _raise,
1540 _rand, _rand_r, _random, _rb_tree_count, _rb_tree_find_node,
1541 _rb_tree_find_node_geq, _rb_tree_find_node_leq, _rb_tree_init,
1542 _rb_tree_insert_node, _rb_tree_iterate, _rb_tree_remove_node,
1543 _readdir, _readdir_r, _readpassphrase, _reallocf, _realpath,
1544 '_realpath$DARWIN_EXTSN', _recv, '_recv$NOCANCEL', _regcomp,
1545 _regcomp_l, _regerror, _regexec, _regfree, _register_printf_domain_function,
1546 _register_printf_domain_render_std, _regncomp, _regncomp_l,
1547 _regnexec, _regwcomp, _regwcomp_l, _regwexec, _regwncomp,
1548 _regwncomp_l, _regwnexec, _remove, _remque, _rewind, _rewinddir,
1549 _rindex, _rpmatch, _sbrk, _scandir, _scandir_b, _scanf, _scanf_l,
1550 _seed48, _seekdir, _send, '_send$NOCANCEL', _setbuf, _setbuffer,
1551 _setenv, _sethostid, _sethostname, _setinvalidrune, _setipv4sourcefilter,
1552 _setkey, _setlinebuf, _setlocale, _setlogin, _setmode, _setpgrp,
1553 _setprogname, _setrgid, _setruid, _setrunelocale, _setsourcefilter,
1554 _setstate, _settimeofday, _setttyent, _setusershell, _setutxent,
1555 _setutxent_wtmp, _setvbuf, _sigaction, _sigaddset, _sigaltstack,
1556 _sigblock, _sigdelset, _sigemptyset, _sigfillset, _sighold,
1557 _sigignore, _siginterrupt, _sigismember, _signal, _sigpause,
1558 '_sigpause$NOCANCEL', _sigrelse, _sigset, _sigsetmask, _sigvec,
1559 _skip, _sl_add, _sl_find, _sl_free, _sl_init, _sleep, '_sleep$NOCANCEL',
1560 _snprintf, _snprintf_l, _snvis, _sockatmark, _sprintf, _sprintf_l,
1561 _sradixsort, _srand, _srand48, _sranddev, _srandom, _srandomdev,
1562 _sscanf, _sscanf_l, _stat_with_subsystem, _statvfs, _statx_np,
1563 _stpcpy, _stpncpy, _strcasecmp, _strcasecmp_l, _strcasestr,
1564 _strcasestr_l, _strcat, _strcoll, _strcoll_l, _strcspn, _strdup,
1565 _strenvisx, _strerror, _strerror_r, _strfmon, _strfmon_l,
1566 _strftime, _strftime_l, _strmode, _strncasecmp, _strncasecmp_l,
1567 _strncat, _strndup, _strnstr, _strnunvis, _strnunvisx, _strnvis,
1568 _strnvisx, _strpbrk, _strptime, _strptime_l, _strrchr, _strsenvisx,
1569 _strsep, _strsignal, _strsignal_r, _strsnvis, _strsnvisx,
1570 _strspn, _strsvis, _strsvisx, _strtod, _strtod_l, _strtof,
1571 _strtof_l, _strtofflags, _strtoimax, _strtoimax_l, _strtok,
1572 _strtok_r, _strtol, _strtol_l, _strtold, _strtold_l, _strtoll,
1573 _strtoll_l, _strtonum, _strtoq, _strtoq_l, _strtoul, _strtoul_l,
1574 _strtoull, _strtoull_l, _strtoumax, _strtoumax_l, _strtouq,
1575 _strtouq_l, _strunvis, _strunvisx, _strvis, _strvisx, _strxfrm,
1576 _strxfrm_l, _suboptarg, _svis, _swab, _swprintf, _swprintf_l,
1577 _swscanf, _swscanf_l, _sxprintf, _sxprintf_exec, _sync_volume_np,
1578 _sys_errlist, _sys_nerr, _sys_siglist, _sys_signame, _sysconf,
1579 _sysctl, _sysctlbyname, _sysctlnametomib, _system, '_system$NOCANCEL',
1580 _tcdrain, '_tcdrain$NOCANCEL', _tcflow, _tcflush, _tcgetattr,
1581 _tcgetpgrp, _tcgetsid, _tcsendbreak, _tcsetattr, _tcsetpgrp,
1582 _tdelete, _telldir, _tempnam, _tfind, _thread_stack_pcs, _time,
1583 _time2posix, _timegm, _timelocal, _timeoff, _times, _timespec_get,
1584 _timezone, _timingsafe_bcmp, _tmpfile, _tmpnam, _toascii,
1585 _tolower, _tolower_l, _toupper, _toupper_l, _towctrans, _towctrans_l,
1586 _towlower, _towlower_l, _towupper, _towupper_l, _tre_ast_new_catenation,
1587 _tre_ast_new_iter, _tre_ast_new_literal, _tre_ast_new_node,
1588 _tre_ast_new_union, _tre_compile, _tre_fill_pmatch, _tre_free,
1589 _tre_mem_alloc_impl, _tre_mem_destroy, _tre_mem_new_impl,
1590 _tre_parse, _tre_stack_destroy, _tre_stack_new, _tre_stack_num_objects,
1591 _tre_tnfa_run_backtrack, _tre_tnfa_run_parallel, _tsearch,
1592 _ttyname, _ttyname_r, _ttyslot, _twalk, _tzname, _tzset, _tzsetwall,
1593 _ualarm, _ulimit, _umaskx_np, _uname, _ungetc, _ungetwc, _ungetwc_l,
1594 _unlockpt, _unsetenv, _unvis, _uselocale, _usleep, '_usleep$NOCANCEL',
1595 _utime, _utmpxname, _uuid_clear, _uuid_compare, _uuid_copy,
1596 _uuid_generate, _uuid_generate_random, _uuid_generate_time,
1597 _uuid_is_null, _uuid_pack, _uuid_parse, _uuid_unpack, _uuid_unparse,
1598 _uuid_unparse_lower, _uuid_unparse_upper, _vasprintf, _vasprintf_l,
1599 _vasxprintf, _vasxprintf_exec, _vdprintf, _vdprintf_l, _vdxprintf,
1600 _vdxprintf_exec, _verr, _verrc, _verrx, _vfprintf, _vfprintf_l,
1601 _vfscanf, _vfscanf_l, _vfwprintf, _vfwprintf_l, _vfwscanf,
1602 _vfwscanf_l, _vfxprintf, _vfxprintf_exec, _vis, _vprintf,
1603 _vprintf_l, _vscanf, _vscanf_l, _vsnprintf, _vsnprintf_l,
1604 _vsprintf, _vsprintf_l, _vsscanf, _vsscanf_l, _vswprintf,
1605 _vswprintf_l, _vswscanf, _vswscanf_l, _vsxprintf, _vsxprintf_exec,
1606 _vwarn, _vwarnc, _vwarnx, _vwprintf, _vwprintf_l, _vwscanf,
1607 _vwscanf_l, _vxprintf, _vxprintf_exec, _wait, '_wait$NOCANCEL',
1608 _wait3, _waitpid, '_waitpid$NOCANCEL', _warn, _warnc, _warnx,
1609 _wcpcpy, _wcpncpy, _wcrtomb, _wcrtomb_l, _wcscasecmp, _wcscasecmp_l,
1610 _wcscat, _wcschr, _wcscmp, _wcscoll, _wcscoll_l, _wcscpy,
1611 _wcscspn, _wcsdup, _wcsftime, _wcsftime_l, _wcslcat, _wcslcpy,
1612 _wcslen, _wcsncasecmp, _wcsncasecmp_l, _wcsncat, _wcsncmp,
1613 _wcsncpy, _wcsnlen, _wcsnrtombs, _wcsnrtombs_l, _wcspbrk,
1614 _wcsrchr, _wcsrtombs, _wcsrtombs_l, _wcsspn, _wcsstr, _wcstod,
1615 _wcstod_l, _wcstof, _wcstof_l, _wcstoimax, _wcstoimax_l, _wcstok,
1616 _wcstol, _wcstol_l, _wcstold, _wcstold_l, _wcstoll, _wcstoll_l,
1617 _wcstombs, _wcstombs_l, _wcstoul, _wcstoul_l, _wcstoull, _wcstoull_l,
1618 _wcstoumax, _wcstoumax_l, _wcswidth, _wcswidth_l, _wcsxfrm,
1619 _wcsxfrm_l, _wctob, _wctob_l, _wctomb, _wctomb_l, _wctrans,
1620 _wctrans_l, _wctype, _wctype_l, _wcwidth, _wcwidth_l, _wmemchr,
1621 _wmemcmp, _wmemcpy, _wmemmove, _wmemset, _wordexp, _wordfree,
1622 _wprintf, _wprintf_l, _wscanf, _wscanf_l, _wtmpxname, _xprintf,
1623 _xprintf_exec ]
1624reexports:
1625 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
1626 arm64-macos, arm64-maccatalyst ]
1627 symbols: [ _bcmp, _bzero, _index, _memccpy, _memchr, _memcmp, _memcpy,
1628 _memmove, _memset, _memset_pattern16, _memset_pattern4, _memset_pattern8,
1629 _strchr, _strcmp, _strcpy, _strlcat, _strlcpy, _strlen, _strncmp,
1630 _strncpy, _strnlen, _strstr ]
1631--- !tapi-tbd
1632tbd-version: 4
1633targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1634 arm64e-macos, arm64e-maccatalyst ]
1635uuids:
1636 - target: x86_64-macos
1637 value: D40D8097-0ABF-3645-B065-168F43ACFF4C
1638 - target: x86_64-maccatalyst
1639 value: D40D8097-0ABF-3645-B065-168F43ACFF4C
1640 - target: arm64-macos
1641 value: 00000000-0000-0000-0000-000000000000
1642 - target: arm64-maccatalyst
1643 value: 00000000-0000-0000-0000-000000000000
1644 - target: arm64e-macos
1645 value: 5EEC397D-2CAA-39D1-8B82-6370E633FDC9
1646 - target: arm64e-maccatalyst
1647 value: 5EEC397D-2CAA-39D1-8B82-6370E633FDC9
1648install-name: '/usr/lib/system/libsystem_collections.dylib'
1649current-version: 1439.40.11
1650parent-umbrella:
1651 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1652 arm64e-macos, arm64e-maccatalyst ]
1653 umbrella: System
1654exports:
1655 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1656 arm64-macos, arm64-maccatalyst ]
1657 symbols: [ _os_map_128_clear, _os_map_128_count, _os_map_128_delete,
1658 _os_map_128_destroy, _os_map_128_find, _os_map_128_foreach,
1659 _os_map_128_init, _os_map_128_insert, _os_map_32_clear, _os_map_32_count,
1660 _os_map_32_delete, _os_map_32_destroy, _os_map_32_find, _os_map_32_foreach,
1661 _os_map_32_init, _os_map_32_insert, _os_map_64_clear, _os_map_64_count,
1662 _os_map_64_delete, _os_map_64_destroy, _os_map_64_find, _os_map_64_foreach,
1663 _os_map_64_init, _os_map_64_insert, _os_map_str_clear, _os_map_str_count,
1664 _os_map_str_delete, _os_map_str_destroy, _os_map_str_entry,
1665 _os_map_str_find, _os_map_str_foreach, _os_map_str_init, _os_map_str_insert ]
1666--- !tapi-tbd
1667tbd-version: 4
1668targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1669 arm64e-macos, arm64e-maccatalyst ]
1670uuids:
1671 - target: x86_64-macos
1672 value: C57B346B-0A03-3F87-BCAC-87B702FA0719
1673 - target: x86_64-maccatalyst
1674 value: C57B346B-0A03-3F87-BCAC-87B702FA0719
1675 - target: arm64-macos
1676 value: 00000000-0000-0000-0000-000000000000
1677 - target: arm64-maccatalyst
1678 value: 00000000-0000-0000-0000-000000000000
1679 - target: arm64e-macos
1680 value: 5D4DB975-F8DC-3B07-8F2B-4054CCA4B9B6
1681 - target: arm64e-maccatalyst
1682 value: 5D4DB975-F8DC-3B07-8F2B-4054CCA4B9B6
1683install-name: '/usr/lib/system/libsystem_configuration.dylib'
1684current-version: 1109.60.2
1685parent-umbrella:
1686 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1687 arm64e-macos, arm64e-maccatalyst ]
1688 umbrella: System
1689exports:
1690 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1691 arm64-macos, arm64-maccatalyst ]
1692 symbols: [ __dns_configuration_ack, __libSC_info_fork_child, __libSC_info_fork_parent,
1693 __libSC_info_fork_prepare, __nwi_config_agent_copy_data, __nwi_state_ack,
1694 __nwi_state_force_refresh, _config_agent_copy_dns_information,
1695 _config_agent_copy_proxy_information, _config_agent_free_dns_information,
1696 _config_agent_free_proxy_information, _config_agent_get_dns_nameservers,
1697 _config_agent_get_dns_searchdomains, _config_agent_update_proxy_information,
1698 _dns_configuration_copy, _dns_configuration_free, _dns_configuration_notify_key,
1699 _is_config_agent_type_dns, _is_config_agent_type_proxy, _nwi_ifstate_compare_rank,
1700 _nwi_ifstate_get_dns_signature, _nwi_ifstate_get_flags, _nwi_ifstate_get_generation,
1701 _nwi_ifstate_get_ifname, _nwi_ifstate_get_next, _nwi_ifstate_get_reachability_flags,
1702 _nwi_ifstate_get_signature, _nwi_ifstate_get_vpn_server, _nwi_state_copy,
1703 _nwi_state_get_first_ifstate, _nwi_state_get_generation, _nwi_state_get_ifstate,
1704 _nwi_state_get_interface_names, _nwi_state_get_notify_key,
1705 _nwi_state_get_reachability_flags, _nwi_state_release ]
1706--- !tapi-tbd
1707tbd-version: 4
1708targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1709 arm64e-macos, arm64e-maccatalyst ]
1710uuids:
1711 - target: x86_64-macos
1712 value: 4ED09A19-04CC-3464-9EFB-F674932020B5
1713 - target: x86_64-maccatalyst
1714 value: 4ED09A19-04CC-3464-9EFB-F674932020B5
1715 - target: arm64-macos
1716 value: 00000000-0000-0000-0000-000000000000
1717 - target: arm64-maccatalyst
1718 value: 00000000-0000-0000-0000-000000000000
1719 - target: arm64e-macos
1720 value: 165B6DCF-6B92-3EC9-84D3-98FBFAB26EA1
1721 - target: arm64e-maccatalyst
1722 value: 165B6DCF-6B92-3EC9-84D3-98FBFAB26EA1
1723install-name: '/usr/lib/system/libsystem_containermanager.dylib'
1724parent-umbrella:
1725 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1726 arm64e-macos, arm64e-maccatalyst ]
1727 umbrella: System
1728exports:
1729 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1730 arm64-macos, arm64-maccatalyst ]
1731 symbols: [ _CONTAINER_CURRENT_MOBILE_UID, _CONTAINER_INSTALLATION_UID,
1732 _CONTAINER_NOTIFY_CLEANUP_COMPLETE, _CONTAINER_NOTIFY_REBOOT_CLEANUP_COMPLETE,
1733 _CONTAINER_NOTIFY_USER_INVALIDATED, _CONTAINER_SYSTEM_UID,
1734 __container_init, _container_acquire_sandbox_extension, _container_bundle_copy_data_container,
1735 _container_bundle_copy_data_container_path, _container_client_create_from_audit_token,
1736 _container_copy_code_signing_info_for_identifier, _container_copy_from_path,
1737 _container_copy_info, _container_copy_info_value_for_key,
1738 _container_copy_object, _container_copy_path, _container_copy_persona_unique_strings,
1739 _container_create_or_lookup, _container_create_or_lookup_app_group_path_by_app_group_identifier,
1740 _container_create_or_lookup_app_group_paths, _container_create_or_lookup_app_group_paths_for_current_user,
1741 _container_create_or_lookup_app_group_paths_for_platform,
1742 _container_create_or_lookup_app_group_paths_from_entitlements,
1743 _container_create_or_lookup_for_current_user, _container_create_or_lookup_for_platform,
1744 _container_create_or_lookup_group_container_paths_for_current_user,
1745 _container_create_or_lookup_path, _container_create_or_lookup_path_for_current_user,
1746 _container_create_or_lookup_path_for_platform, _container_create_or_lookup_system_group_paths,
1747 _container_create_or_lookup_user_managed_assets_path, _container_create_or_lookup_user_managed_assets_relative_path,
1748 _container_delete, _container_delete_all_container_content,
1749 _container_delete_all_data_container_content, _container_delete_all_data_container_content_for_current_user,
1750 _container_delete_array_of_containers, _container_delete_user_managed_assets,
1751 _container_delete_with_class_and_identifier_for_current_user,
1752 _container_delete_with_uid_class_and_identifier, _container_disk_usage,
1753 _container_error_is_fatal, _container_flush_container_cache,
1754 _container_flush_persona_cache, _container_free_array_of_containers,
1755 _container_free_client, _container_free_object, _container_get_all_with_class,
1756 _container_get_all_with_class_for_current_user, _container_get_class,
1757 _container_get_error_description, _container_get_identifier,
1758 _container_get_persona_unique_string, _container_get_unique_path_component,
1759 _container_group_container_identifiers_for_current_user, _container_invalidate_code_signing_cache,
1760 _container_is_transient, _container_perform_data_migration,
1761 _container_perform_data_migration_for_current_user, _container_perform_with_client_context,
1762 _container_process_restored_container, _container_recreate_structure,
1763 _container_regenerate_uuid, _container_repair_user_data, _container_replace,
1764 _container_set_code_signing_info_for_identifier, _container_set_data_protection_for_current_user,
1765 _container_set_info_value, _container_stage_shared_system_content,
1766 _container_subdirectories_for_class, _container_system_group_path_for_identifier,
1767 _container_system_path_for_identifier, _container_user_managed_assets_path,
1768 _container_user_managed_assets_relative_path ]
1769--- !tapi-tbd
1770tbd-version: 4
1771targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1772 arm64e-macos, arm64e-maccatalyst ]
1773uuids:
1774 - target: x86_64-macos
1775 value: A2D875B9-8BA8-33AD-BE92-ADAB915A8D5B
1776 - target: x86_64-maccatalyst
1777 value: A2D875B9-8BA8-33AD-BE92-ADAB915A8D5B
1778 - target: arm64-macos
1779 value: 00000000-0000-0000-0000-000000000000
1780 - target: arm64-maccatalyst
1781 value: 00000000-0000-0000-0000-000000000000
1782 - target: arm64e-macos
1783 value: 1F4E0C2D-9A82-3E3F-B546-1F23A3B180B5
1784 - target: arm64e-maccatalyst
1785 value: 1F4E0C2D-9A82-3E3F-B546-1F23A3B180B5
1786install-name: '/usr/lib/system/libsystem_coreservices.dylib'
1787current-version: 127
1788parent-umbrella:
1789 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1790 arm64e-macos, arm64e-maccatalyst ]
1791 umbrella: System
1792exports:
1793 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1794 arm64-macos, arm64-maccatalyst ]
1795 symbols: [ _NSGetNextSearchPathEnumeration, _NSStartSearchPathEnumeration,
1796 _NSStartSearchPathEnumerationPrivate, ___user_local_dirname,
1797 ___user_relative_dirname, __append_relative_path_component,
1798 __dirhelper, __dirhelper_relative, __get_user_dir_suffix,
1799 __libcoreservices_fork_child, __set_user_dir_suffix, _sysdir_get_next_search_path_enumeration,
1800 _sysdir_start_search_path_enumeration, _sysdir_start_search_path_enumeration_private ]
1801--- !tapi-tbd
1802tbd-version: 4
1803targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1804 arm64e-macos, arm64e-maccatalyst ]
1805uuids:
1806 - target: x86_64-macos
1807 value: BD269412-C9D0-32EE-B42B-B09A187A9B95
1808 - target: x86_64-maccatalyst
1809 value: BD269412-C9D0-32EE-B42B-B09A187A9B95
1810 - target: arm64-macos
1811 value: 00000000-0000-0000-0000-000000000000
1812 - target: arm64-maccatalyst
1813 value: 00000000-0000-0000-0000-000000000000
1814 - target: arm64e-macos
1815 value: 1DEB48CE-5F39-3BBC-8D13-00C7636F7FE5
1816 - target: arm64e-maccatalyst
1817 value: 1DEB48CE-5F39-3BBC-8D13-00C7636F7FE5
1818install-name: '/usr/lib/system/libsystem_darwin.dylib'
1819parent-umbrella:
1820 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1821 arm64e-macos, arm64e-maccatalyst ]
1822 umbrella: System
1823exports:
1824 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1825 arm64-macos, arm64-maccatalyst ]
1826 symbols: [ ___libdarwin_init, ___os_temporary_resource_shortage, _claimfd_np,
1827 _close_drop_np, _close_drop_optional_np, _crfprintf_np, _dirstat_np,
1828 _dirstatat_np, _dup_np, _err_np, _errc_np, _fcheck_np, _memdup2_np,
1829 _memdup_np, _os_assert_mach, _os_assert_mach_port_status,
1830 _os_boot_mode_query, _os_crash_get_reporter_port_array, _os_crash_port_array_deallocate,
1831 _os_crash_set_reporter_port, _os_crash_spawnattr_set_reporter_port,
1832 _os_flagset_copy_string, _os_localtime_file, _os_mach_msg_copy_description,
1833 _os_mach_msg_get_audit_trailer, _os_mach_msg_get_context_trailer,
1834 _os_mach_msg_get_trailer, _os_mach_msg_trailer_copy_description,
1835 _os_mach_port_copy_description, _os_parse_boot_arg_int, _os_parse_boot_arg_string,
1836 _os_simple_hash, _os_simple_hash_string, _os_simple_hash_string_with_seed,
1837 _os_simple_hash_with_seed, _os_subcommand_fprintf, _os_subcommand_main,
1838 _os_subcommand_vfprintf, _os_variant_allows_internal_security_policies,
1839 _os_variant_check, _os_variant_copy_description, _os_variant_has_factory_content,
1840 _os_variant_has_internal_content, _os_variant_has_internal_diagnostics,
1841 _os_variant_has_internal_ui, _os_variant_init_4launchd, _os_variant_is_basesystem,
1842 _os_variant_is_darwinos, _os_variant_is_recovery, _os_variant_uses_ephemeral_storage,
1843 _realpath_np, _strerror_np, _strexit_np, _symerror_np, _symexit_np,
1844 _sysctl_get_data_np, _sysctlbyname_get_data_np, _sysexit_np,
1845 _vcrfprintf_np, _verr_np, _verrc_np, _vwarn_np, _vwfprintf_np,
1846 _warn_np, _wfprintf_np, _xferfd_np, _zsnprintf_np ]
1847--- !tapi-tbd
1848tbd-version: 4
1849targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1850 arm64e-macos, arm64e-maccatalyst ]
1851uuids:
1852 - target: x86_64-macos
1853 value: 81EFC44D-450E-3AA3-AC8F-D7EF68F464B4
1854 - target: x86_64-maccatalyst
1855 value: 81EFC44D-450E-3AA3-AC8F-D7EF68F464B4
1856 - target: arm64-macos
1857 value: 00000000-0000-0000-0000-000000000000
1858 - target: arm64-maccatalyst
1859 value: 00000000-0000-0000-0000-000000000000
1860 - target: arm64e-macos
1861 value: E498E2D5-BD16-3458-AF9C-B4EE888935CB
1862 - target: arm64e-maccatalyst
1863 value: E498E2D5-BD16-3458-AF9C-B4EE888935CB
1864install-name: '/usr/lib/system/libsystem_dnssd.dylib'
1865current-version: 1310.60.4
1866parent-umbrella:
1867 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1868 arm64e-macos, arm64e-maccatalyst ]
1869 umbrella: System
1870exports:
1871 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1872 arm64-macos, arm64-maccatalyst ]
1873 symbols: [ _DNSServiceAddRecord, _DNSServiceBrowse, _DNSServiceBrowserCreate,
1874 _DNSServiceConstructFullName, _DNSServiceCreateConnection,
1875 _DNSServiceCreateDelegateConnection, _DNSServiceDiscoveryDeallocate,
1876 _DNSServiceDiscoveryMachPort, _DNSServiceDiscovery_handleReply,
1877 _DNSServiceEnumerateDomains, _DNSServiceGetAddrInfo, _DNSServiceGetPID,
1878 _DNSServiceGetProperty, _DNSServiceNATPortMappingCreate, _DNSServiceProcessResult,
1879 _DNSServiceQueryRecord, _DNSServiceReconfirmRecord, _DNSServiceRefDeallocate,
1880 _DNSServiceRefSockFD, _DNSServiceRegister, _DNSServiceRegisterRecord,
1881 _DNSServiceRemoveRecord, _DNSServiceResolve, _DNSServiceResolverResolve,
1882 _DNSServiceSetDefaultDomainForUser, _DNSServiceSetDispatchQueue,
1883 _DNSServiceSetResolverDefaults, _DNSServiceSleepKeepalive,
1884 _DNSServiceSleepKeepalive_sockaddr, _DNSServiceUpdateRecord,
1885 _PeerConnectionRelease, _TXTRecordContainsKey, _TXTRecordCreate,
1886 _TXTRecordDeallocate, _TXTRecordGetBytesPtr, _TXTRecordGetCount,
1887 _TXTRecordGetItemAtIndex, _TXTRecordGetLength, _TXTRecordGetValuePtr,
1888 _TXTRecordRemoveValue, _TXTRecordSetValue ]
1889--- !tapi-tbd
1890tbd-version: 4
1891targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1892 arm64e-macos, arm64e-maccatalyst ]
1893uuids:
1894 - target: x86_64-macos
1895 value: 7B4EBDDB-244E-3F78-8895-566FE22288F3
1896 - target: x86_64-maccatalyst
1897 value: 7B4EBDDB-244E-3F78-8895-566FE22288F3
1898 - target: arm64-macos
1899 value: 00000000-0000-0000-0000-000000000000
1900 - target: arm64-maccatalyst
1901 value: 00000000-0000-0000-0000-000000000000
1902 - target: arm64e-macos
1903 value: 790541FA-8846-39B1-B87F-BCB1C87A6A27
1904 - target: arm64e-maccatalyst
1905 value: 790541FA-8846-39B1-B87F-BCB1C87A6A27
1906install-name: '/usr/lib/system/libsystem_featureflags.dylib'
1907current-version: 28.60.1
1908parent-umbrella:
1909 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1910 arm64e-macos, arm64e-maccatalyst ]
1911 umbrella: System
1912exports:
1913 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1914 arm64-macos, arm64-maccatalyst ]
1915 symbols: [ __os_feature_enabled_impl, __os_feature_enabled_simple_impl ]
1916--- !tapi-tbd
1917tbd-version: 4
1918targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1919 arm64e-macos, arm64e-maccatalyst ]
1920uuids:
1921 - target: x86_64-macos
1922 value: 0979757C-5F0D-3F5A-9E0E-EBF234B310AF
1923 - target: x86_64-maccatalyst
1924 value: 0979757C-5F0D-3F5A-9E0E-EBF234B310AF
1925 - target: arm64-macos
1926 value: 00000000-0000-0000-0000-000000000000
1927 - target: arm64-maccatalyst
1928 value: 00000000-0000-0000-0000-000000000000
1929 - target: arm64e-macos
1930 value: CFE4640F-4E04-3DC5-80F6-79E0BF7F4FAF
1931 - target: arm64e-maccatalyst
1932 value: CFE4640F-4E04-3DC5-80F6-79E0BF7F4FAF
1933install-name: '/usr/lib/system/libsystem_info.dylib'
1934parent-umbrella:
1935 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
1936 arm64e-macos, arm64e-maccatalyst ]
1937 umbrella: System
1938exports:
1939 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
1940 arm64-macos, arm64-maccatalyst ]
1941 symbols: [ _LI_get_thread_item, _LI_get_thread_list, _LI_ils_create,
1942 _LI_set_thread_item, _LI_set_thread_list, ___dn_skipname,
1943 __authenticate, __ds_running, __gai_nat64_can_v4_address_be_synthesized,
1944 __gai_serv_to_port, __gai_simple, __getaddrinfo_interface_async_call,
1945 __getlong, __getnameinfo_interface_async_call, __getshort,
1946 __null_auth, __res, __seterr_reply, __si_disable_opendirectory,
1947 __yp_dobind, _alias_endent, _alias_getbyname, _alias_getent,
1948 _alias_setent, _authnone_create, _authunix_create, _authunix_create_default,
1949 _bindresvport, _bindresvport_sa, _bootparams_endent, _bootparams_getbyname,
1950 _bootparams_getent, _bootparams_setent, _clnt_broadcast, _clnt_create,
1951 _clnt_pcreateerror, _clnt_perrno, _clnt_perror, _clnt_spcreateerror,
1952 _clnt_sperrno, _clnt_sperror, _clntraw_create, _clnttcp_create,
1953 _clntudp_bufcreate, _clntudp_create, _configuration_profile_copy_property_list,
1954 _configuration_profile_create_notification_key, _dn_expand,
1955 _endfsent, _endgrent, _endhostent, _endnetent, _endnetgrent,
1956 _endprotoent, _endpwent, _endrpcent, _endservent, _ether_aton,
1957 _ether_hostton, _ether_line, _ether_ntoa, _ether_ntohost,
1958 _freeaddrinfo, _freehostent, _freeifaddrs, _freeifmaddrs,
1959 _gL1CacheEnabled, _gai_strerror, _getaddrinfo, _getaddrinfo_async_cancel,
1960 _getaddrinfo_async_handle_reply, _getaddrinfo_async_receive,
1961 _getaddrinfo_async_send, _getaddrinfo_async_start, _getdomainname,
1962 _getfsent, _getfsfile, _getfsspec, _getgrent, _getgrgid, _getgrgid_r,
1963 _getgrnam, _getgrnam_r, _getgroupcount, _getgrouplist, _getgrouplist_2,
1964 _getgruuid, _getgruuid_r, _gethostbyaddr, _gethostbyaddr_async_cancel,
1965 _gethostbyaddr_async_handleReply, _gethostbyaddr_async_start,
1966 _gethostbyname, _gethostbyname2, _gethostbyname_async_cancel,
1967 _gethostbyname_async_handleReply, _gethostbyname_async_start,
1968 _gethostent, _getifaddrs, _getifmaddrs, _getipnodebyaddr,
1969 _getipnodebyname, _getnameinfo, _getnameinfo_async_cancel,
1970 _getnameinfo_async_handle_reply, _getnameinfo_async_send,
1971 _getnameinfo_async_start, _getnetbyaddr, _getnetbyname, _getnetent,
1972 _getnetgrent, _getprotobyname, _getprotobynumber, _getprotoent,
1973 _getpwent, _getpwnam, _getpwnam_r, _getpwuid, _getpwuid_r,
1974 _getpwuuid, _getpwuuid_r, _getrpcbyname, _getrpcbynumber,
1975 _getrpcent, _getrpcport, _getservbyname, _getservbyport, _getservent,
1976 _group_from_gid, _h_errno, _herror, _hstrerror, _htonl, _htons,
1977 _if_freenameindex, _if_indextoname, _if_nameindex, _if_nametoindex,
1978 _in6addr_any, _in6addr_linklocal_allnodes, _in6addr_linklocal_allrouters,
1979 _in6addr_linklocal_allv2routers, _in6addr_loopback, _in6addr_nodelocal_allnodes,
1980 _inet6_opt_append, _inet6_opt_find, _inet6_opt_finish, _inet6_opt_get_val,
1981 _inet6_opt_init, _inet6_opt_next, _inet6_opt_set_val, _inet6_option_alloc,
1982 _inet6_option_append, _inet6_option_find, _inet6_option_init,
1983 _inet6_option_next, _inet6_option_space, _inet6_rth_add, _inet6_rth_getaddr,
1984 _inet6_rth_init, _inet6_rth_reverse, _inet6_rth_segments,
1985 _inet6_rth_space, _inet6_rthdr_add, _inet6_rthdr_getaddr,
1986 _inet6_rthdr_getflags, _inet6_rthdr_init, _inet6_rthdr_lasthop,
1987 _inet6_rthdr_segments, _inet6_rthdr_space, _initgroups, _innetgr,
1988 _iruserok, _iruserok_sa, _kvarray_free, _kvbuf_add_dict, _kvbuf_add_key,
1989 _kvbuf_add_val, _kvbuf_add_val_len, _kvbuf_append_kvbuf, _kvbuf_decode,
1990 _kvbuf_free, _kvbuf_get_len, _kvbuf_init, _kvbuf_init_zone,
1991 _kvbuf_make_nonpurgeable, _kvbuf_make_purgeable, _kvbuf_new,
1992 _kvbuf_new_zone, _kvbuf_next_dict, _kvbuf_next_key, _kvbuf_next_val,
1993 _kvbuf_next_val_len, _kvbuf_query, _kvbuf_query_key_int, _kvbuf_query_key_uint,
1994 _kvbuf_query_key_val, _kvbuf_reset, _mbr_check_membership,
1995 _mbr_check_membership_by_id, _mbr_check_membership_ext, _mbr_check_membership_refresh,
1996 _mbr_check_service_membership, _mbr_gid_to_uuid, _mbr_group_name_to_uuid,
1997 _mbr_identifier_to_uuid, _mbr_identifier_translate, _mbr_reset_cache,
1998 _mbr_set_identifier_ttl, _mbr_sid_to_string, _mbr_sid_to_uuid,
1999 _mbr_string_to_sid, _mbr_string_to_uuid, _mbr_uid_to_uuid,
2000 _mbr_user_name_to_uuid, _mbr_uuid_to_id, _mbr_uuid_to_sid,
2001 _mbr_uuid_to_sid_type, _mbr_uuid_to_string, _ntohl, _ntohs,
2002 _pmap_getmaps, _pmap_getport, _pmap_rmtcall, _pmap_set, _pmap_unset,
2003 _prdb_end, _prdb_get, _prdb_getbyname, _prdb_set, _rcmd, _rcmd_af,
2004 _res_init, _res_query, _res_search, _rpc_createerr, _rresvport,
2005 _rresvport_af, _ruserok, _setdomainname, _setfsent, _setgrent,
2006 _setgroupent, _sethostent, _setnetent, _setnetgrent, _setpassent,
2007 _setprotoent, _setpwent, _setrpcent, _setservent, _si_addrinfo,
2008 _si_addrinfo_list, _si_addrinfo_list_from_hostent, _si_addrinfo_v4,
2009 _si_addrinfo_v4_mapped, _si_addrinfo_v6, _si_alias_all, _si_alias_byname,
2010 _si_async_call, _si_async_cancel, _si_async_handle_reply,
2011 _si_destination_compare, _si_destination_compare_no_dependencies,
2012 _si_fs_all, _si_fs_byfile, _si_fs_byspec, _si_group_all, _si_group_bygid,
2013 _si_group_byname, _si_group_byuuid, _si_grouplist, _si_host_all,
2014 _si_host_byaddr, _si_host_byname, _si_in_netgroup, _si_ipnode_byname,
2015 _si_item_call, _si_item_is_valid, _si_item_match, _si_item_release,
2016 _si_item_retain, _si_list_add, _si_list_call, _si_list_concat,
2017 _si_list_next, _si_list_release, _si_list_reset, _si_list_retain,
2018 _si_mac_all, _si_mac_bymac, _si_mac_byname, _si_module_name,
2019 _si_module_release, _si_module_retain, _si_module_vers, _si_module_with_name,
2020 _si_nameinfo, _si_netgroup_byname, _si_network_all, _si_network_byaddr,
2021 _si_network_byname, _si_protocol_all, _si_protocol_byname,
2022 _si_protocol_bynumber, _si_rpc_all, _si_rpc_byname, _si_rpc_bynumber,
2023 _si_search, _si_search_module_set_flags, _si_service_all,
2024 _si_service_byname, _si_service_byport, _si_set_nat64_v4_requires_synthesis,
2025 _si_set_nat64_v4_synthesize, _si_srv_byname, _si_standardize_mac_address,
2026 _si_user_all, _si_user_byname, _si_user_byuid, _si_user_byuuid,
2027 _si_wants_addrinfo, _svc_fdset, _svc_getreq, _svc_getreqset,
2028 _svc_register, _svc_run, _svc_sendreply, _svc_unregister,
2029 _svcerr_auth, _svcerr_decode, _svcerr_noproc, _svcerr_noprog,
2030 _svcerr_progvers, _svcerr_systemerr, _svcerr_weakauth, _svcfd_create,
2031 _svcraw_create, _svctcp_create, _svcudp_bufcreate, _svcudp_create,
2032 _user_from_uid, _xdr_array, _xdr_authunix_parms, _xdr_bool,
2033 _xdr_bytes, _xdr_callhdr, _xdr_callmsg, _xdr_char, _xdr_des_block,
2034 _xdr_domainname, _xdr_double, _xdr_enum, _xdr_float, _xdr_free,
2035 _xdr_hyper, _xdr_int, _xdr_int16_t, _xdr_int32_t, _xdr_int64_t,
2036 _xdr_keydat, _xdr_long, _xdr_longlong_t, _xdr_mapname, _xdr_netobj,
2037 _xdr_opaque, _xdr_peername, _xdr_pmap, _xdr_pmaplist, _xdr_pointer,
2038 _xdr_reference, _xdr_replymsg, _xdr_rmtcall_args, _xdr_rmtcallres,
2039 _xdr_short, _xdr_string, _xdr_u_char, _xdr_u_hyper, _xdr_u_int,
2040 _xdr_u_int16_t, _xdr_u_int32_t, _xdr_u_int64_t, _xdr_u_long,
2041 _xdr_u_longlong_t, _xdr_u_short, _xdr_union, _xdr_valdat,
2042 _xdr_vector, _xdr_void, _xdr_wrapstring, _xdr_x_passwd, _xdr_ypbind_binding,
2043 _xdr_ypbind_resp, _xdr_ypbind_resptype, _xdr_ypbind_setdom,
2044 _xdr_ypmaplist, _xdr_yppasswd, _xdr_ypreq_key, _xdr_ypreq_nokey,
2045 _xdr_ypresp_all, _xdr_ypresp_all_seq, _xdr_ypresp_key_val,
2046 _xdr_ypresp_maplist, _xdr_ypresp_master, _xdr_ypresp_order,
2047 _xdr_ypresp_val, _xdr_ypstat, _xdrmem_create, _xdrrec_create,
2048 _xdrrec_endofrecord, _xdrrec_eof, _xdrrec_skiprecord, _xdrstdio_create,
2049 _xprt_register, _xprt_unregister, _yp_all, _yp_bind, _yp_first,
2050 _yp_get_default_domain, _yp_maplist, _yp_master, _yp_match,
2051 _yp_next, _yp_order, _yp_unbind, _yperr_string, _ypprot_err ]
2052--- !tapi-tbd
2053tbd-version: 4
2054targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
2055 arm64e-macos, arm64e-maccatalyst ]
2056uuids:
2057 - target: x86_64-macos
2058 value: C7D4E6AF-4446-3435-8F2C-0F5CCBEF61E9
2059 - target: x86_64-maccatalyst
2060 value: C7D4E6AF-4446-3435-8F2C-0F5CCBEF61E9
2061 - target: arm64-macos
2062 value: 7795E4F6-7356-31DD-A256-30483E74DD61
2063 - target: arm64-maccatalyst
2064 value: 7795E4F6-7356-31DD-A256-30483E74DD61
2065 - target: arm64e-macos
2066 value: C860F076-F332-3A67-A7D9-FEDF89124762
2067 - target: arm64e-maccatalyst
2068 value: C860F076-F332-3A67-A7D9-FEDF89124762
2069install-name: '/usr/lib/system/libsystem_kernel.dylib'
2070current-version: 7195.60.74
2071parent-umbrella:
2072 - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
2073 arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
2074 umbrella: System
2075exports:
2076 - targets: [ x86_64-maccatalyst, x86_64-macos ]
2077 symbols: [ '_fstat$INODE64', '_fstatat$INODE64', '_fstatfs$INODE64',
2078 '_getfsstat$INODE64', _i386_get_ldt, _i386_set_ldt, '_lstat$INODE64',
2079 '_pselect$1050', '_select$1050', '_stat$INODE64', '_statfs$INODE64' ]
2080 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64-maccatalyst, arm64-macos,
2081 arm64e-maccatalyst, arm64e-macos ]
2082 symbols: [ _NDR_record, _____old_semwait_signal_nocancel, _____sigwait_nocancel,
2083 ____kernelVersionNumber, ____kernelVersionString, ___abort_with_payload,
2084 ___accept, ___accept_nocancel, ___access_extended, ___aio_suspend_nocancel,
2085 ___bind, ___bsdthread_create, ___bsdthread_ctl, ___bsdthread_register,
2086 ___bsdthread_terminate, ___carbon_delete, ___channel_get_info,
2087 ___channel_get_opt, ___channel_open, ___channel_set_opt, ___channel_sync,
2088 ___chmod, ___chmod_extended, ___close_nocancel, ___coalition,
2089 ___coalition_info, ___coalition_ledger, ___commpage_gettimeofday,
2090 ___connect, ___connect_nocancel, ___copyfile, ___csrctl, ___darwin_check_fd_set_overflow,
2091 ___delete, ___disable_threadsignal, ___error, ___exit, ___fchmod,
2092 ___fchmod_extended, ___fcntl, ___fcntl_nocancel, ___fork,
2093 ___fs_snapshot, ___fstat64_extended, ___fstat_extended, ___fsync_nocancel,
2094 ___get_remove_counter, ___getattrlist, ___getdirentries64,
2095 ___gethostuuid, ___getlogin, ___getpeername, ___getpid, ___getrlimit,
2096 ___getsgroups, ___getsockname, ___gettid, ___gettimeofday,
2097 ___getwgroups, ___guarded_open_dprotected_np, ___guarded_open_np,
2098 ___identitysvc, ___inc_remove_counter, ___initgroups, ___ioctl,
2099 ___iopolicysys, ___kdebug_trace, ___kdebug_trace64, ___kdebug_trace_string,
2100 ___kdebug_typefilter, ___kill, ___kqueue_workloop_ctl, ___lchown,
2101 ___libkernel_init, ___libkernel_init_late, ___libkernel_platform_init,
2102 ___libkernel_voucher_init, ___listen, ___log_data, ___lseek,
2103 ___lstat64_extended, ___lstat_extended, ___mac_execve, ___mac_get_fd,
2104 ___mac_get_file, ___mac_get_link, ___mac_get_mount, ___mac_get_pid,
2105 ___mac_get_proc, ___mac_getfsstat, ___mac_mount, ___mac_set_fd,
2106 ___mac_set_file, ___mac_set_link, ___mac_set_proc, ___mac_syscall,
2107 ___mach_bridge_remote_time, ___mach_eventlink_signal, ___mach_eventlink_signal_wait_until,
2108 ___mach_eventlink_wait_until, ___memorystatus_available_memory,
2109 ___microstackshot, ___mkdir_extended, ___mkfifo_extended,
2110 ___mmap, ___mprotect, ___msgctl, ___msgrcv_nocancel, ___msgsnd_nocancel,
2111 ___msgsys, ___msync, ___msync_nocancel, ___munmap, ___nexus_create,
2112 ___nexus_deregister, ___nexus_destroy, ___nexus_get_opt, ___nexus_open,
2113 ___nexus_register, ___nexus_set_opt, ___old_semwait_signal,
2114 ___open, ___open_dprotected_np, ___open_extended, ___open_nocancel,
2115 ___openat, ___openat_nocancel, ___os_nexus_flow_add, ___os_nexus_flow_del,
2116 ___os_nexus_ifattach, ___os_nexus_ifdetach, ___persona, ___pipe,
2117 ___poll_nocancel, ___posix_spawn, ___pread_nocancel, ___preadv_nocancel,
2118 ___proc_info, ___proc_info_extended_id, ___process_policy,
2119 ___pselect, ___pselect_nocancel, ___psynch_cvbroad, ___psynch_cvclrprepost,
2120 ___psynch_cvsignal, ___psynch_cvwait, ___psynch_mutexdrop,
2121 ___psynch_mutexwait, ___psynch_rw_downgrade, ___psynch_rw_longrdlock,
2122 ___psynch_rw_rdlock, ___psynch_rw_unlock, ___psynch_rw_unlock2,
2123 ___psynch_rw_upgrade, ___psynch_rw_wrlock, ___psynch_rw_yieldwrlock,
2124 ___pthread_canceled, ___pthread_chdir, ___pthread_fchdir,
2125 ___pthread_kill, ___pthread_markcancel, ___pthread_sigmask,
2126 ___ptrace, ___pwrite_nocancel, ___pwritev_nocancel, ___read_nocancel,
2127 ___readv_nocancel, ___reboot, ___recvfrom, ___recvfrom_nocancel,
2128 ___recvmsg, ___recvmsg_nocancel, ___rename, ___renameat, ___renameatx_np,
2129 ___rmdir, ___sandbox_me, ___sandbox_mm, ___sandbox_ms, ___sandbox_msp,
2130 ___select, ___select_nocancel, ___sem_open, ___sem_wait_nocancel,
2131 ___semctl, ___semsys, ___semwait_signal, ___semwait_signal_nocancel,
2132 ___sendmsg, ___sendmsg_nocancel, ___sendto, ___sendto_nocancel,
2133 ___setattrlist, ___setlogin, ___setpriority, ___setregid,
2134 ___setreuid, ___setrlimit, ___setsgroups, ___settid, ___settid_with_pid,
2135 ___settimeofday, ___setwgroups, ___sfi_ctl, ___sfi_pidctl,
2136 ___shared_region_check_np, ___shared_region_map_and_slide_2_np,
2137 ___shared_region_map_and_slide_np, ___shm_open, ___shmctl,
2138 ___shmsys, ___sigaction, ___sigaltstack, ___sigreturn, ___sigsuspend,
2139 ___sigsuspend_nocancel, ___sigwait, ___socketpair, ___stack_snapshot_with_config,
2140 ___stat64_extended, ___stat_extended, ___syscall, ___syscall_logger,
2141 ___sysctl, ___sysctlbyname, ___telemetry, ___terminate_with_payload,
2142 ___thread_selfid, ___thread_selfusage, ___ulock_wait, ___ulock_wait2,
2143 ___ulock_wake, ___umask_extended, ___unlink, ___unlinkat,
2144 ___vfork, ___wait4, ___wait4_nocancel, ___waitid_nocancel,
2145 ___work_interval_ctl, ___workq_kernreturn, ___workq_open,
2146 ___write_nocancel, ___writev_nocancel, __cpu_capabilities,
2147 __cpu_has_altivec, __exit, __get_cpu_capabilities, __getprivatesystemidentifier,
2148 __host_page_size, __init_cpu_capabilities, __kernelrpc_host_create_mach_voucher,
2149 __kernelrpc_mach_port_allocate, __kernelrpc_mach_port_allocate_full,
2150 __kernelrpc_mach_port_allocate_name, __kernelrpc_mach_port_allocate_qos,
2151 __kernelrpc_mach_port_allocate_trap, __kernelrpc_mach_port_construct,
2152 __kernelrpc_mach_port_construct_trap, __kernelrpc_mach_port_deallocate,
2153 __kernelrpc_mach_port_deallocate_trap, __kernelrpc_mach_port_destroy,
2154 __kernelrpc_mach_port_destruct, __kernelrpc_mach_port_destruct_trap,
2155 __kernelrpc_mach_port_dnrequest_info, __kernelrpc_mach_port_extract_member,
2156 __kernelrpc_mach_port_extract_member_trap, __kernelrpc_mach_port_extract_right,
2157 __kernelrpc_mach_port_get_attributes, __kernelrpc_mach_port_get_attributes_trap,
2158 __kernelrpc_mach_port_get_context, __kernelrpc_mach_port_get_refs,
2159 __kernelrpc_mach_port_get_set_status, __kernelrpc_mach_port_get_srights,
2160 __kernelrpc_mach_port_guard, __kernelrpc_mach_port_guard_trap,
2161 __kernelrpc_mach_port_guard_with_flags, __kernelrpc_mach_port_insert_member,
2162 __kernelrpc_mach_port_insert_member_trap, __kernelrpc_mach_port_insert_right,
2163 __kernelrpc_mach_port_insert_right_trap, __kernelrpc_mach_port_kernel_object,
2164 __kernelrpc_mach_port_kobject, __kernelrpc_mach_port_kobject_description,
2165 __kernelrpc_mach_port_mod_refs, __kernelrpc_mach_port_mod_refs_trap,
2166 __kernelrpc_mach_port_move_member, __kernelrpc_mach_port_move_member_trap,
2167 __kernelrpc_mach_port_names, __kernelrpc_mach_port_peek, __kernelrpc_mach_port_rename,
2168 __kernelrpc_mach_port_request_notification, __kernelrpc_mach_port_request_notification_trap,
2169 __kernelrpc_mach_port_set_attributes, __kernelrpc_mach_port_set_context,
2170 __kernelrpc_mach_port_set_mscount, __kernelrpc_mach_port_set_seqno,
2171 __kernelrpc_mach_port_space_basic_info, __kernelrpc_mach_port_space_info,
2172 __kernelrpc_mach_port_special_reply_port_reset_link, __kernelrpc_mach_port_swap_guard,
2173 __kernelrpc_mach_port_type, __kernelrpc_mach_port_type_trap,
2174 __kernelrpc_mach_port_unguard, __kernelrpc_mach_port_unguard_trap,
2175 __kernelrpc_mach_vm_allocate, __kernelrpc_mach_vm_allocate_trap,
2176 __kernelrpc_mach_vm_deallocate, __kernelrpc_mach_vm_deallocate_trap,
2177 __kernelrpc_mach_vm_map, __kernelrpc_mach_vm_map_trap, __kernelrpc_mach_vm_protect,
2178 __kernelrpc_mach_vm_protect_trap, __kernelrpc_mach_vm_purgable_control,
2179 __kernelrpc_mach_vm_purgable_control_trap, __kernelrpc_mach_vm_read,
2180 __kernelrpc_mach_vm_remap, __kernelrpc_mach_voucher_extract_attr_recipe,
2181 __kernelrpc_task_set_port_space, __kernelrpc_thread_policy,
2182 __kernelrpc_thread_policy_set, __kernelrpc_thread_set_policy,
2183 __kernelrpc_vm_map, __kernelrpc_vm_purgable_control, __kernelrpc_vm_read,
2184 __kernelrpc_vm_remap, __mach_errors, __mach_fork_child, __mach_snprintf,
2185 __mach_vsnprintf, __os_alloc_once_table, __os_xbs_chrooted,
2186 __register_gethostuuid_callback, __thread_set_tsd_base, _abort_with_payload,
2187 _abort_with_reason, _accept, '_accept$NOCANCEL', _access,
2188 _accessx_np, _acct, _act_get_state, _act_set_state, _adjtime,
2189 _aio_cancel, _aio_error, _aio_fsync, _aio_read, _aio_return,
2190 _aio_suspend, '_aio_suspend$NOCANCEL', _aio_write, _audit,
2191 _audit_session_join, _audit_session_port, _audit_session_self,
2192 _auditctl, _auditon, _bind, _bootstrap_port, _cerror, _cerror_nocancel,
2193 _change_fdguard_np, _chdir, _chflags, _chmod, _chown, _chroot,
2194 _clock_alarm, _clock_alarm_reply, _clock_get_attributes, _clock_get_time,
2195 _clock_set_attributes, _clock_set_time, _clock_sleep, _clock_sleep_trap,
2196 _clonefile, _clonefileat, _close, '_close$NOCANCEL', _coalition_create,
2197 _coalition_info_resource_usage, _coalition_info_set_efficiency,
2198 _coalition_info_set_name, _coalition_ledger_set_logical_writes_limit,
2199 _coalition_reap, _coalition_terminate, _connect, '_connect$NOCANCEL',
2200 _connectx, _csops, _csops_audittoken, _csr_check, _csr_get_active_config,
2201 _debug_control_port_for_pid, _denap_boost_assertion_token,
2202 _disconnectx, _dup, _dup2, _errno, _etap_trace_thread, _exc_server,
2203 _exc_server_routine, _exception_raise, _exception_raise_state,
2204 _exception_raise_state_identity, _exchangedata, _execve, _faccessat,
2205 _fchdir, _fchflags, _fchmod, _fchmodat, _fchown, _fchownat,
2206 _fclonefileat, _fcntl, '_fcntl$NOCANCEL', _fdatasync, _ffsctl,
2207 _fgetattrlist, _fgetxattr, _fhopen, _fileport_makefd, _fileport_makeport,
2208 _flistxattr, _flock, _fmount, _fpathconf, _fremovexattr, _fs_snapshot_create,
2209 _fs_snapshot_delete, _fs_snapshot_list, _fs_snapshot_mount,
2210 _fs_snapshot_rename, _fs_snapshot_revert, _fs_snapshot_root,
2211 _fsctl, _fsetattrlist, _fsetxattr, _fsgetpath, _fsgetpath_ext,
2212 _fstat, _fstat64, _fstatat, _fstatat64, _fstatfs, _fstatfs64,
2213 _fsync, '_fsync$NOCANCEL', _ftruncate, _futimens, _futimes,
2214 _getattrlist, _getattrlistat, _getattrlistbulk, _getaudit,
2215 _getaudit_addr, _getauid, _getdirentries, _getdirentriesattr,
2216 _getdtablesize, _getegid, _getentropy, _geteuid, _getfh, _getfsstat,
2217 _getfsstat64, _getgid, _getgroups, _gethostuuid, _getiopolicy_np,
2218 _getitimer, _getpeername, _getpgid, _getpgrp, _getpid, _getppid,
2219 _getpriority, _getrlimit, _getrusage, _getsgroups_np, _getsid,
2220 _getsockname, _getsockopt, _getuid, _getwgroups_np, _getxattr,
2221 _grab_pgo_data, _guarded_close_np, _guarded_kqueue_np, _guarded_open_dprotected_np,
2222 _guarded_open_np, _guarded_pwrite_np, _guarded_write_np, _guarded_writev_np,
2223 _host_check_multiuser_mode, _host_create_mach_voucher, _host_create_mach_voucher_trap,
2224 _host_default_memory_manager, _host_get_UNDServer, _host_get_atm_diagnostic_flag,
2225 _host_get_boot_info, _host_get_clock_control, _host_get_clock_service,
2226 _host_get_exception_ports, _host_get_io_master, _host_get_multiuser_config_flags,
2227 _host_get_special_port, _host_info, _host_kernel_version,
2228 _host_lockgroup_info, _host_page_size, _host_priv_statistics,
2229 _host_processor_info, _host_processor_set_priv, _host_processor_sets,
2230 _host_processors, _host_reboot, _host_register_mach_voucher_attr_manager,
2231 _host_register_well_known_mach_voucher_attr_manager, _host_request_notification,
2232 _host_security_create_task_token, _host_security_set_task_token,
2233 _host_self, _host_self_trap, _host_set_UNDServer, _host_set_atm_diagnostic_flag,
2234 _host_set_exception_ports, _host_set_multiuser_config_flags,
2235 _host_set_special_port, _host_statistics, _host_statistics64,
2236 _host_swap_exception_ports, _host_virtual_physical_table_info,
2237 _important_boost_assertion_token, _internal_catch_exc_subsystem,
2238 _ioctl, _issetugid, _kas_info, _kdebug_is_enabled, _kdebug_signpost,
2239 _kdebug_signpost_end, _kdebug_signpost_start, _kdebug_trace,
2240 _kdebug_trace_string, _kdebug_typefilter, _kdebug_using_continuous_time,
2241 _kevent, _kevent64, _kevent_id, _kevent_qos, _kext_request,
2242 _kill, _kmod_control, _kmod_create, _kmod_destroy, _kmod_get_info,
2243 _kpersona_alloc, _kpersona_dealloc, _kpersona_find, _kpersona_find_by_type,
2244 _kpersona_get, _kpersona_getpath, _kpersona_info, _kpersona_palloc,
2245 _kpersona_pidinfo, _kqueue, _lchown, _ledger, _link, _linkat,
2246 _lio_listio, _listen, _listxattr, _lock_acquire, _lock_handoff,
2247 _lock_handoff_accept, _lock_make_stable, _lock_release, _lock_set_create,
2248 _lock_set_destroy, _lock_try, _log_data_as_kernel, _lseek,
2249 _lstat, _lstat64, _mach_absolute_time, _mach_approximate_time,
2250 _mach_boottime_usec, _mach_continuous_approximate_time, _mach_continuous_time,
2251 _mach_error, _mach_error_full_diag, _mach_error_string, _mach_error_type,
2252 _mach_eventlink_associate, _mach_eventlink_create, _mach_eventlink_destroy,
2253 _mach_eventlink_disassociate, _mach_eventlink_signal, _mach_eventlink_signal_wait_until,
2254 _mach_eventlink_wait_until, _mach_generate_activity_id, _mach_get_times,
2255 _mach_host_self, _mach_host_special_port_description, _mach_host_special_port_for_id,
2256 _mach_init, _mach_make_memory_entry, _mach_make_memory_entry_64,
2257 _mach_memory_entry_access_tracking, _mach_memory_entry_ownership,
2258 _mach_memory_entry_purgable_control, _mach_memory_info, _mach_memory_object_memory_entry,
2259 _mach_memory_object_memory_entry_64, _mach_msg, _mach_msg_destroy,
2260 _mach_msg_overwrite, _mach_msg_overwrite_trap, _mach_msg_priority_encode,
2261 _mach_msg_priority_is_pthread_priority, _mach_msg_priority_overide_qos,
2262 _mach_msg_priority_qos, _mach_msg_priority_relpri, _mach_msg_receive,
2263 _mach_msg_send, _mach_msg_server, _mach_msg_server_importance,
2264 _mach_msg_server_once, _mach_msg_trap, _mach_notify_dead_name,
2265 _mach_notify_no_senders, _mach_notify_port_deleted, _mach_notify_port_destroyed,
2266 _mach_notify_send_once, _mach_port_allocate, _mach_port_allocate_full,
2267 _mach_port_allocate_name, _mach_port_allocate_qos, _mach_port_construct,
2268 _mach_port_deallocate, _mach_port_destroy, _mach_port_destruct,
2269 _mach_port_dnrequest_info, _mach_port_extract_member, _mach_port_extract_right,
2270 _mach_port_get_attributes, _mach_port_get_context, _mach_port_get_refs,
2271 _mach_port_get_set_status, _mach_port_get_srights, _mach_port_guard,
2272 _mach_port_guard_with_flags, _mach_port_insert_member, _mach_port_insert_right,
2273 _mach_port_kernel_object, _mach_port_kobject, _mach_port_kobject_description,
2274 _mach_port_mod_refs, _mach_port_move_member, _mach_port_names,
2275 _mach_port_peek, _mach_port_rename, _mach_port_request_notification,
2276 _mach_port_set_attributes, _mach_port_set_context, _mach_port_set_mscount,
2277 _mach_port_set_seqno, _mach_port_space_basic_info, _mach_port_space_info,
2278 _mach_port_swap_guard, _mach_port_type, _mach_port_unguard,
2279 _mach_ports_lookup, _mach_ports_register, _mach_reply_port,
2280 _mach_right_recv_construct, _mach_right_recv_destruct, _mach_right_send_create,
2281 _mach_right_send_once_consume, _mach_right_send_once_create,
2282 _mach_right_send_release, _mach_right_send_retain, _mach_sync_ipc_link_monitoring_start,
2283 _mach_sync_ipc_link_monitoring_stop, _mach_task_self, _mach_task_self_,
2284 _mach_task_special_port_description, _mach_task_special_port_for_id,
2285 _mach_thread_self, _mach_timebase_info, _mach_timebase_info_trap,
2286 _mach_vm_allocate, _mach_vm_behavior_set, _mach_vm_copy, _mach_vm_deallocate,
2287 _mach_vm_inherit, _mach_vm_machine_attribute, _mach_vm_map,
2288 _mach_vm_msync, _mach_vm_page_info, _mach_vm_page_query, _mach_vm_page_range_query,
2289 _mach_vm_protect, _mach_vm_purgable_control, _mach_vm_read,
2290 _mach_vm_read_list, _mach_vm_read_overwrite, _mach_vm_region,
2291 _mach_vm_region_recurse, _mach_vm_remap, _mach_vm_wire, _mach_vm_write,
2292 _mach_voucher_attr_command, _mach_voucher_deallocate, _mach_voucher_debug_info,
2293 _mach_voucher_extract_all_attr_recipes, _mach_voucher_extract_attr_content,
2294 _mach_voucher_extract_attr_recipe, _mach_voucher_extract_attr_recipe_trap,
2295 _mach_wait_until, _mach_zone_force_gc, _mach_zone_get_btlog_records,
2296 _mach_zone_get_zlog_zones, _mach_zone_info, _mach_zone_info_for_largest_zone,
2297 _mach_zone_info_for_zone, _macx_backing_store_recovery, _macx_backing_store_suspend,
2298 _macx_swapoff, _macx_swapon, _macx_triggers, _madvise, _memorystatus_control,
2299 _memorystatus_get_level, _mig_allocate, _mig_dealloc_reply_port,
2300 _mig_dealloc_special_reply_port, _mig_deallocate, _mig_get_reply_port,
2301 _mig_get_special_reply_port, _mig_put_reply_port, _mig_reply_setup,
2302 _mig_strncpy, _mig_strncpy_zerofill, _mincore, _minherit,
2303 _mk_timer_arm, _mk_timer_arm_leeway, _mk_timer_cancel, _mk_timer_create,
2304 _mk_timer_destroy, _mkdir, _mkdirat, _mkfifo, _mknod, _mlock,
2305 _mlockall, _mmap, _mount, _mprotect, _mremap_encrypted, _msg_receive,
2306 _msg_rpc, _msg_send, _msgctl, _msgget, _msgrcv, '_msgrcv$NOCANCEL',
2307 _msgsnd, '_msgsnd$NOCANCEL', _msgsys, _msync, '_msync$NOCANCEL',
2308 _munlock, _munlockall, _munmap, _necp_client_action, _necp_match_policy,
2309 _necp_open, _necp_session_action, _necp_session_open, _net_qos_guideline,
2310 _netagent_trigger, _netname_check_in, _netname_check_out,
2311 _netname_look_up, _netname_version, _nfsclnt, _nfssvc, _non_boost_assertion_token,
2312 _normal_boost_assertion_token, _ntp_adjtime, _ntp_gettime,
2313 _open, '_open$NOCANCEL', _open_dprotected_np, _openat, '_openat$NOCANCEL',
2314 _openbyid_np, _os_buflet_get_data_address, _os_buflet_get_data_length,
2315 _os_buflet_get_data_limit, _os_buflet_get_data_offset, _os_buflet_get_object_address,
2316 _os_buflet_get_object_limit, _os_buflet_set_data_length, _os_buflet_set_data_offset,
2317 _os_channel_advance_slot, _os_channel_attr_clone, _os_channel_attr_create,
2318 _os_channel_attr_destroy, _os_channel_attr_get, _os_channel_attr_get_key,
2319 _os_channel_attr_set, _os_channel_attr_set_key, _os_channel_available_slot_count,
2320 _os_channel_buflet_alloc, _os_channel_buflet_free, _os_channel_configure_interface_advisory,
2321 _os_channel_create, _os_channel_create_extended, _os_channel_destroy,
2322 _os_channel_event_free, _os_channel_event_get_event_data,
2323 _os_channel_event_get_next_event, _os_channel_flow_admissible,
2324 _os_channel_get_advisory_region, _os_channel_get_fd, _os_channel_get_interface_advisory,
2325 _os_channel_get_next_event_handle, _os_channel_get_next_slot,
2326 _os_channel_get_stats_region, _os_channel_is_defunct, _os_channel_packet_alloc,
2327 _os_channel_packet_free, _os_channel_packet_pool_purge, _os_channel_pending,
2328 _os_channel_read_attr, _os_channel_read_nexus_extension_info,
2329 _os_channel_ring_id, _os_channel_ring_notify_time, _os_channel_ring_sync_time,
2330 _os_channel_rx_ring, _os_channel_set_slot_properties, _os_channel_slot_attach_packet,
2331 _os_channel_slot_detach_packet, _os_channel_slot_get_packet,
2332 _os_channel_sync, _os_channel_tx_ring, _os_channel_write_attr,
2333 _os_copy_and_inet_checksum, _os_cpu_copy_in_cksum, _os_cpu_in_cksum,
2334 _os_cpu_in_cksum_mbuf, _os_fault_with_payload, _os_inet_checksum,
2335 _os_nexus_attr_clone, _os_nexus_attr_create, _os_nexus_attr_destroy,
2336 _os_nexus_attr_get, _os_nexus_attr_set, _os_nexus_controller_alloc_provider_instance,
2337 _os_nexus_controller_bind_provider_instance, _os_nexus_controller_create,
2338 _os_nexus_controller_deregister_provider, _os_nexus_controller_destroy,
2339 _os_nexus_controller_free_provider_instance, _os_nexus_controller_get_fd,
2340 _os_nexus_controller_read_provider_attr, _os_nexus_controller_register_provider,
2341 _os_nexus_controller_unbind_provider_instance, _os_packet_add_buflet,
2342 _os_packet_clear_flow_uuid, _os_packet_decrement_use_count,
2343 _os_packet_finalize, _os_packet_get_aggregation_type, _os_packet_get_buflet_count,
2344 _os_packet_get_compression_generation_count, _os_packet_get_data_length,
2345 _os_packet_get_expire_time, _os_packet_get_flow_uuid, _os_packet_get_group_end,
2346 _os_packet_get_group_start, _os_packet_get_headroom, _os_packet_get_inet_checksum,
2347 _os_packet_get_link_broadcast, _os_packet_get_link_ethfcs,
2348 _os_packet_get_link_header_length, _os_packet_get_link_multicast,
2349 _os_packet_get_next_buflet, _os_packet_get_packetid, _os_packet_get_segment_count,
2350 _os_packet_get_service_class, _os_packet_get_token, _os_packet_get_traffic_class,
2351 _os_packet_get_transport_retransmit, _os_packet_get_transport_traffic_background,
2352 _os_packet_get_transport_traffic_realtime, _os_packet_get_truncated,
2353 _os_packet_get_vlan_id, _os_packet_get_vlan_priority, _os_packet_get_vlan_tag,
2354 _os_packet_increment_use_count, _os_packet_set_compression_generation_count,
2355 _os_packet_set_expire_time, _os_packet_set_flow_uuid, _os_packet_set_group_end,
2356 _os_packet_set_group_start, _os_packet_set_headroom, _os_packet_set_inet_checksum,
2357 _os_packet_set_link_broadcast, _os_packet_set_link_ethfcs,
2358 _os_packet_set_link_header_length, _os_packet_set_link_multicast,
2359 _os_packet_set_packetid, _os_packet_set_service_class, _os_packet_set_token,
2360 _os_packet_set_traffic_class, _os_packet_set_transport_last_packet,
2361 _os_packet_set_transport_retransmit, _os_packet_set_transport_traffic_background,
2362 _os_packet_set_transport_traffic_realtime, _os_packet_set_vlan_tag,
2363 _os_proc_available_memory, _panic, _panic_init, _pathconf,
2364 _peeloff, _pid_for_task, _pid_hibernate, _pid_resume, _pid_shutdown_networking,
2365 _pid_shutdown_sockets, _pid_suspend, _pipe, _pivot_root, _pkt_subtype_assert_fail,
2366 _pkt_type_assert_fail, _poll, '_poll$NOCANCEL', _port_obj_init,
2367 _port_obj_table, _port_obj_table_size, _posix_madvise, _posix_spawn,
2368 _posix_spawn_file_actions_add_fileportdup2_np, _posix_spawn_file_actions_addchdir_np,
2369 _posix_spawn_file_actions_addclose, _posix_spawn_file_actions_adddup2,
2370 _posix_spawn_file_actions_addfchdir_np, _posix_spawn_file_actions_addinherit_np,
2371 _posix_spawn_file_actions_addopen, _posix_spawn_file_actions_destroy,
2372 _posix_spawn_file_actions_init, _posix_spawnattr_destroy,
2373 _posix_spawnattr_disable_ptr_auth_a_keys_np, _posix_spawnattr_get_darwin_role_np,
2374 _posix_spawnattr_get_qos_clamp_np, _posix_spawnattr_getarchpref_np,
2375 _posix_spawnattr_getbinpref_np, _posix_spawnattr_getcpumonitor,
2376 _posix_spawnattr_getflags, _posix_spawnattr_getmacpolicyinfo_np,
2377 _posix_spawnattr_getpcontrol_np, _posix_spawnattr_getpgroup,
2378 _posix_spawnattr_getprocesstype_np, _posix_spawnattr_getsigdefault,
2379 _posix_spawnattr_getsigmask, _posix_spawnattr_init, _posix_spawnattr_set_csm_np,
2380 _posix_spawnattr_set_darwin_role_np, _posix_spawnattr_set_gid_np,
2381 _posix_spawnattr_set_groups_np, _posix_spawnattr_set_importancewatch_port_np,
2382 _posix_spawnattr_set_jetsam_ttr_np, _posix_spawnattr_set_login_np,
2383 _posix_spawnattr_set_max_addr_np, _posix_spawnattr_set_persona_gid_np,
2384 _posix_spawnattr_set_persona_groups_np, _posix_spawnattr_set_persona_np,
2385 _posix_spawnattr_set_persona_uid_np, _posix_spawnattr_set_platform_np,
2386 _posix_spawnattr_set_ptrauth_task_port_np, _posix_spawnattr_set_qos_clamp_np,
2387 _posix_spawnattr_set_registered_ports_np, _posix_spawnattr_set_subsystem_root_path_np,
2388 _posix_spawnattr_set_threadlimit_ext, _posix_spawnattr_set_uid_np,
2389 _posix_spawnattr_setarchpref_np, _posix_spawnattr_setauditsessionport_np,
2390 _posix_spawnattr_setbinpref_np, _posix_spawnattr_setcoalition_np,
2391 _posix_spawnattr_setcpumonitor, _posix_spawnattr_setcpumonitor_default,
2392 _posix_spawnattr_setexceptionports_np, _posix_spawnattr_setflags,
2393 _posix_spawnattr_setjetsam_ext, _posix_spawnattr_setmacpolicyinfo_np,
2394 _posix_spawnattr_setnosmt_np, _posix_spawnattr_setpcontrol_np,
2395 _posix_spawnattr_setpgroup, _posix_spawnattr_setprocesstype_np,
2396 _posix_spawnattr_setsigdefault, _posix_spawnattr_setsigmask,
2397 _posix_spawnattr_setspecialport_np, _posix_spawnattr_setsuidcredport_np,
2398 _pread, '_pread$NOCANCEL', _preadv, '_preadv$NOCANCEL', _proc_clear_cpulimits,
2399 _proc_clear_delayidlesleep, _proc_clear_dirty, _proc_clear_vmpressure,
2400 _proc_denap_assertion_begin_with_msg, _proc_denap_assertion_complete,
2401 _proc_disable_apptype, _proc_disable_cpumon, _proc_disable_wakemon,
2402 _proc_donate_importance_boost, _proc_enable_apptype, _proc_get_cpumon_params,
2403 _proc_get_dirty, _proc_get_wakemon_params, _proc_importance_assertion_begin_with_msg,
2404 _proc_importance_assertion_complete, _proc_kmsgbuf, _proc_libversion,
2405 _proc_list_dynkqueueids, _proc_list_uptrs, _proc_listallpids,
2406 _proc_listchildpids, _proc_listcoalitions, _proc_listpgrppids,
2407 _proc_listpids, _proc_listpidspath, _proc_name, _proc_pid_rusage,
2408 _proc_piddynkqueueinfo, _proc_pidfdinfo, _proc_pidfileportinfo,
2409 _proc_pidinfo, _proc_pidoriginatorinfo, _proc_pidpath, _proc_pidpath_audittoken,
2410 _proc_regionfilename, _proc_reset_footprint_interval, _proc_resume_cpumon,
2411 _proc_rlimit_control, _proc_set_cpumon_defaults, _proc_set_cpumon_params,
2412 _proc_set_cpumon_params_fatal, _proc_set_csm, _proc_set_delayidlesleep,
2413 _proc_set_dirty, _proc_set_no_smt, _proc_set_owner_vmpressure,
2414 _proc_set_wakemon_defaults, _proc_set_wakemon_params, _proc_setcpu_percentage,
2415 _proc_setpcontrol, _proc_setthread_cpupercent, _proc_setthread_csm,
2416 _proc_setthread_no_smt, _proc_suppress, _proc_terminate, _proc_trace_log,
2417 _proc_track_dirty, _proc_udata_info, _proc_uuid_policy, _processor_assign,
2418 _processor_control, _processor_exit, _processor_get_assignment,
2419 _processor_info, _processor_set_create, _processor_set_default,
2420 _processor_set_destroy, _processor_set_info, _processor_set_max_priority,
2421 _processor_set_policy_control, _processor_set_policy_disable,
2422 _processor_set_policy_enable, _processor_set_stack_usage,
2423 _processor_set_statistics, _processor_set_tasks, _processor_set_tasks_with_flavor,
2424 _processor_set_threads, _processor_start, _pselect, '_pselect$DARWIN_EXTSN',
2425 '_pselect$DARWIN_EXTSN$NOCANCEL', '_pselect$NOCANCEL', _pthread_getugid_np,
2426 _pthread_setugid_np, _ptrace, _pwrite, '_pwrite$NOCANCEL',
2427 _pwritev, '_pwritev$NOCANCEL', _quota, _quotactl, _read, '_read$NOCANCEL',
2428 _readlink, _readlinkat, _readv, '_readv$NOCANCEL', _reboot,
2429 _reboot_np, _recvfrom, '_recvfrom$NOCANCEL', _recvmsg, '_recvmsg$NOCANCEL',
2430 _recvmsg_x, _removexattr, _rename, _rename_ext, _renameat,
2431 _renameatx_np, _renamex_np, _revoke, _rmdir, _searchfs, _select,
2432 '_select$DARWIN_EXTSN', '_select$DARWIN_EXTSN$NOCANCEL', '_select$NOCANCEL',
2433 _sem_close, _sem_destroy, _sem_getvalue, _sem_init, _sem_open,
2434 _sem_post, _sem_trywait, _sem_unlink, _sem_wait, '_sem_wait$NOCANCEL',
2435 _semaphore_create, _semaphore_destroy, _semaphore_signal,
2436 _semaphore_signal_all, _semaphore_signal_all_trap, _semaphore_signal_thread,
2437 _semaphore_signal_thread_trap, _semaphore_signal_trap, _semaphore_timedwait,
2438 _semaphore_timedwait_signal, _semaphore_timedwait_signal_trap,
2439 _semaphore_timedwait_trap, _semaphore_wait, _semaphore_wait_signal,
2440 _semaphore_wait_signal_trap, _semaphore_wait_trap, _semctl,
2441 _semget, _semop, _semsys, _sendfile, _sendmsg, '_sendmsg$NOCANCEL',
2442 _sendmsg_x, _sendto, '_sendto$NOCANCEL', _setattrlist, _setattrlistat,
2443 _setaudit, _setaudit_addr, _setauid, _setegid, _seteuid, _setgid,
2444 _setgroups, _setiopolicy_np, _setitimer, _setpgid, _setpriority,
2445 _setprivexec, _setquota, _setregid, _setreuid, _setrlimit,
2446 _setsgroups_np, _setsid, _setsockopt, _setuid, _setwgroups_np,
2447 _setxattr, _sfi_get_class_offtime, _sfi_process_get_flags,
2448 _sfi_process_set_flags, _sfi_set_class_offtime, _shm_open,
2449 _shm_unlink, _shmat, _shmctl, _shmdt, _shmget, _shmsys, _shutdown,
2450 _sigpending, _sigprocmask, _sigsuspend, '_sigsuspend$NOCANCEL',
2451 _socket, _socket_delegate, _socketpair, _stackshot_capture_with_config,
2452 _stackshot_config_create, _stackshot_config_dealloc, _stackshot_config_dealloc_buffer,
2453 _stackshot_config_get_stackshot_buffer, _stackshot_config_get_stackshot_size,
2454 _stackshot_config_set_delta_timestamp, _stackshot_config_set_flags,
2455 _stackshot_config_set_pagetable_mask, _stackshot_config_set_pid,
2456 _stackshot_config_set_size_hint, _stat, _stat64, _statfs,
2457 _statfs64, _swapon, _swtch, _swtch_pri, _symlink, _symlinkat,
2458 _sync, _syscall, _syscall_thread_switch, _system_get_sfi_window,
2459 _system_override, _system_set_sfi_window, _system_version_compat_mode,
2460 _task_assign, _task_assign_default, _task_create, _task_create_suid_cred,
2461 _task_for_pid, _task_generate_corpse, _task_get_assignment,
2462 _task_get_dyld_image_infos, _task_get_emulation_vector, _task_get_exc_guard_behavior,
2463 _task_get_exception_ports, _task_get_mach_voucher, _task_get_special_port,
2464 _task_get_state, _task_info, _task_inspect, _task_inspect_for_pid,
2465 _task_map_corpse_info, _task_map_corpse_info_64, _task_name_for_pid,
2466 _task_policy, _task_policy_get, _task_policy_set, _task_purgable_info,
2467 _task_read_for_pid, _task_register_dyld_get_process_state,
2468 _task_register_dyld_image_infos, _task_register_dyld_set_dyld_state,
2469 _task_register_dyld_shared_cache_image_info, _task_restartable_ranges_register,
2470 _task_restartable_ranges_synchronize, _task_resume, _task_resume2,
2471 _task_sample, _task_self_, _task_self_trap, _task_set_emulation,
2472 _task_set_emulation_vector, _task_set_exc_guard_behavior,
2473 _task_set_exception_ports, _task_set_info, _task_set_mach_voucher,
2474 _task_set_phys_footprint_limit, _task_set_policy, _task_set_port_space,
2475 _task_set_ras_pc, _task_set_special_port, _task_set_state,
2476 _task_suspend, _task_suspend2, _task_swap_exception_ports,
2477 _task_swap_mach_voucher, _task_terminate, _task_threads, _task_unregister_dyld_image_infos,
2478 _task_zone_info, _terminate_with_payload, _terminate_with_reason,
2479 _thread_abort, _thread_abort_safely, _thread_assign, _thread_assign_default,
2480 _thread_convert_thread_state, _thread_create, _thread_create_running,
2481 _thread_depress_abort, _thread_destruct_special_reply_port,
2482 _thread_get_assignment, _thread_get_exception_ports, _thread_get_mach_voucher,
2483 _thread_get_register_pointer_values, _thread_get_special_port,
2484 _thread_get_special_reply_port, _thread_get_state, _thread_info,
2485 _thread_policy, _thread_policy_get, _thread_policy_set, _thread_resume,
2486 _thread_sample, _thread_self_trap, _thread_selfcounts, _thread_set_exception_ports,
2487 _thread_set_mach_voucher, _thread_set_policy, _thread_set_special_port,
2488 _thread_set_state, _thread_suspend, _thread_swap_exception_ports,
2489 _thread_swap_mach_voucher, _thread_switch, _thread_terminate,
2490 _thread_wire, _truncate, _umask, _undelete, _unlink, _unlinkat,
2491 _unmount, _usrctl, _utimensat, _utimes, _vfork, _vfs_purge,
2492 _vm_allocate, _vm_allocate_cpm, _vm_behavior_set, _vm_copy,
2493 _vm_deallocate, _vm_inherit, _vm_kernel_page_mask, _vm_kernel_page_shift,
2494 _vm_kernel_page_size, _vm_machine_attribute, _vm_map, _vm_map_page_query,
2495 _vm_msync, _vm_page_mask, _vm_page_shift, _vm_page_size, _vm_pressure_monitor,
2496 _vm_protect, _vm_purgable_control, _vm_read, _vm_read_list,
2497 _vm_read_overwrite, _vm_region_64, _vm_region_recurse_64,
2498 _vm_remap, _vm_wire, _vm_write, _voucher_mach_msg_adopt, _voucher_mach_msg_clear,
2499 _voucher_mach_msg_revert, _voucher_mach_msg_set, _vprintf_stderr_func,
2500 _wait4, _waitid, '_waitid$NOCANCEL', _work_interval_copy_port,
2501 _work_interval_create, _work_interval_destroy, _work_interval_get_flags_from_port,
2502 _work_interval_instance_alloc, _work_interval_instance_clear,
2503 _work_interval_instance_finish, _work_interval_instance_free,
2504 _work_interval_instance_get_complexity, _work_interval_instance_get_deadline,
2505 _work_interval_instance_get_finish, _work_interval_instance_get_id,
2506 _work_interval_instance_get_start, _work_interval_instance_set_complexity,
2507 _work_interval_instance_set_deadline, _work_interval_instance_set_finish,
2508 _work_interval_instance_set_start, _work_interval_instance_start,
2509 _work_interval_instance_update, _work_interval_join, _work_interval_join_port,
2510 _work_interval_leave, _work_interval_notify, _work_interval_notify_simple,
2511 _write, '_write$NOCANCEL', _writev, '_writev$NOCANCEL' ]
2512 - targets: [ arm64-maccatalyst, arm64-macos, arm64e-maccatalyst, arm64e-macos ]
2513 symbols: [ ___fstat, ___fstatat, ___fstatfs, ___getfsstat, ___lstat,
2514 ___stat, ___statfs, __current_pid, _mach_absolute_time_kernel,
2515 _mach_continuous_time_kernel ]
2516--- !tapi-tbd
2517tbd-version: 4
2518targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst,
2519 arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
2520uuids:
2521 - target: x86_64-macos
2522 value: 0F98499E-662F-36EC-AB58-91A8D5A0FB74
2523 - target: x86_64-maccatalyst
2524 value: 0F98499E-662F-36EC-AB58-91A8D5A0FB74
2525 - target: x86_64h-macos
2526 value: 79820D9E-0FF1-3F20-AF4F-F87EE20CE8C9
2527 - target: x86_64h-maccatalyst
2528 value: 79820D9E-0FF1-3F20-AF4F-F87EE20CE8C9
2529 - target: arm64-macos
2530 value: 00000000-0000-0000-0000-000000000000
2531 - target: arm64-maccatalyst
2532 value: 00000000-0000-0000-0000-000000000000
2533 - target: arm64e-macos
2534 value: 129930A8-F06B-3AD4-BA84-21549591F87A
2535 - target: arm64e-maccatalyst
2536 value: 129930A8-F06B-3AD4-BA84-21549591F87A
2537install-name: '/usr/lib/system/libsystem_m.dylib'
2538current-version: 3186.40.2
2539parent-umbrella:
2540 - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst,
2541 arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
2542 umbrella: System
2543exports:
2544 - targets: [ x86_64-macos, x86_64h-macos, x86_64-maccatalyst, x86_64h-maccatalyst ]
2545 symbols: [ __FE_DFL_DISABLE_SSE_DENORMS_ENV, ___cos_d4, ___cos_f8, ___fpclassify,
2546 ___inf, ___inff, ___infl, ___isfinite, ___isinf, ___isnan,
2547 ___isnormal, ___nan, ___signbit, ___sin_d4, ___sin_f8, __simd_acos_d4,
2548 __simd_acos_d8, __simd_acos_f16, __simd_acos_f8, __simd_acosh_d4,
2549 __simd_acosh_d8, __simd_acosh_f16, __simd_acosh_f8, __simd_asin_d4,
2550 __simd_asin_d8, __simd_asin_f16, __simd_asin_f8, __simd_asinh_d4,
2551 __simd_asinh_d8, __simd_asinh_f16, __simd_asinh_f8, __simd_atan2_d4,
2552 __simd_atan2_d8, __simd_atan2_f16, __simd_atan2_f8, __simd_atan_d4,
2553 __simd_atan_d8, __simd_atan_f16, __simd_atan_f8, __simd_atanh_d4,
2554 __simd_atanh_d8, __simd_atanh_f16, __simd_atanh_f8, __simd_cbrt_d4,
2555 __simd_cbrt_d8, __simd_cbrt_f16, __simd_cbrt_f8, __simd_cos_d4,
2556 __simd_cos_d8, __simd_cos_f16, __simd_cos_f8, __simd_cosh_d4,
2557 __simd_cosh_d8, __simd_cosh_f16, __simd_cosh_f8, __simd_cospi_d4,
2558 __simd_cospi_d8, __simd_cospi_f16, __simd_cospi_f8, __simd_erf_d4,
2559 __simd_erf_d8, __simd_erf_f16, __simd_erf_f8, __simd_erfc_d4,
2560 __simd_erfc_d8, __simd_erfc_f16, __simd_erfc_f8, __simd_exp10_d4,
2561 __simd_exp10_d8, __simd_exp10_f16, __simd_exp10_f8, __simd_exp2_d4,
2562 __simd_exp2_d8, __simd_exp2_f16, __simd_exp2_f8, __simd_exp_d4,
2563 __simd_exp_d8, __simd_exp_f16, __simd_exp_f8, __simd_expm1_d4,
2564 __simd_expm1_d8, __simd_expm1_f16, __simd_expm1_f8, __simd_fmod_d4,
2565 __simd_fmod_d8, __simd_fmod_f16, __simd_fmod_f8, __simd_hypot_d4,
2566 __simd_hypot_d8, __simd_hypot_f16, __simd_hypot_f8, __simd_log10_d4,
2567 __simd_log10_d8, __simd_log10_f16, __simd_log10_f8, __simd_log1p_d4,
2568 __simd_log1p_d8, __simd_log1p_f16, __simd_log1p_f8, __simd_log2_d4,
2569 __simd_log2_d8, __simd_log2_f16, __simd_log2_f8, __simd_log_d4,
2570 __simd_log_d8, __simd_log_f16, __simd_log_f8, __simd_nextafter_d4,
2571 __simd_nextafter_d8, __simd_nextafter_f16, __simd_nextafter_f8,
2572 __simd_pow_d4, __simd_pow_d8, __simd_pow_f16, __simd_pow_f8,
2573 __simd_remainder_d4, __simd_remainder_d8, __simd_remainder_f16,
2574 __simd_remainder_f8, __simd_round_d4, __simd_round_d8, __simd_round_f16,
2575 __simd_round_f8, __simd_sin_d4, __simd_sin_d8, __simd_sin_f16,
2576 __simd_sin_f8, __simd_sinh_d4, __simd_sinh_d8, __simd_sinh_f16,
2577 __simd_sinh_f8, __simd_sinpi_d4, __simd_sinpi_d8, __simd_sinpi_f16,
2578 __simd_sinpi_f8, __simd_tan_d4, __simd_tan_d8, __simd_tan_f16,
2579 __simd_tan_f8, __simd_tanh_d4, __simd_tanh_d8, __simd_tanh_f16,
2580 __simd_tanh_f8, __simd_tanpi_d4, __simd_tanpi_d8, __simd_tanpi_f16,
2581 __simd_tanpi_f8, __simd_tgamma_d4, __simd_tgamma_d8, __simd_tgamma_f16,
2582 __simd_tgamma_f8, '_acos$fenv_access_off', '_acosf$fenv_access_off',
2583 '_acosh$fenv_access_off', '_acoshf$fenv_access_off', '_acoshl$fenv_access_off',
2584 '_acosl$fenv_access_off', '_asin$fenv_access_off', '_asinf$fenv_access_off',
2585 '_asinh$fenv_access_off', '_asinhf$fenv_access_off', '_asinhl$fenv_access_off',
2586 '_asinl$fenv_access_off', '_atan$fenv_access_off', '_atan2$fenv_access_off',
2587 '_atan2f$fenv_access_off', '_atan2l$fenv_access_off', '_atanf$fenv_access_off',
2588 '_atanh$fenv_access_off', '_atanhf$fenv_access_off', '_atanhl$fenv_access_off',
2589 '_atanl$fenv_access_off', '_cabs$fenv_access_off', '_cabsf$fenv_access_off',
2590 '_cabsl$fenv_access_off', '_cacos$fenv_access_off', '_cacosf$fenv_access_off',
2591 '_cacosh$fenv_access_off', '_cacoshf$fenv_access_off', '_cacoshl$fenv_access_off',
2592 '_cacosl$fenv_access_off', '_carg$fenv_access_off', '_cargf$fenv_access_off',
2593 '_cargl$fenv_access_off', '_casin$fenv_access_off', '_casinf$fenv_access_off',
2594 '_casinh$fenv_access_off', '_casinhf$fenv_access_off', '_casinhl$fenv_access_off',
2595 '_casinl$fenv_access_off', '_catan$fenv_access_off', '_catanf$fenv_access_off',
2596 '_catanh$fenv_access_off', '_catanhf$fenv_access_off', '_catanhl$fenv_access_off',
2597 '_catanl$fenv_access_off', '_cbrt$fenv_access_off', '_cbrtf$fenv_access_off',
2598 '_cbrtl$fenv_access_off', '_ccos$fenv_access_off', '_ccosf$fenv_access_off',
2599 '_ccosh$fenv_access_off', '_ccoshf$fenv_access_off', '_ccoshl$fenv_access_off',
2600 '_ccosl$fenv_access_off', '_ceil$fenv_access_off', '_ceilf$fenv_access_off',
2601 '_ceill$fenv_access_off', '_cexp$fenv_access_off', '_cexpf$fenv_access_off',
2602 '_cexpl$fenv_access_off', '_cimag$fenv_access_off', '_cimagf$fenv_access_off',
2603 '_cimagl$fenv_access_off', '_clog$fenv_access_off', '_clogf$fenv_access_off',
2604 '_clogl$fenv_access_off', '_conj$fenv_access_off', '_conjf$fenv_access_off',
2605 '_conjl$fenv_access_off', '_copysign$fenv_access_off', '_copysignf$fenv_access_off',
2606 '_copysignl$fenv_access_off', '_cos$fenv_access_off', '_cosf$fenv_access_off',
2607 '_cosh$fenv_access_off', '_coshf$fenv_access_off', '_coshl$fenv_access_off',
2608 '_cosl$fenv_access_off', '_cpow$fenv_access_off', '_cpowf$fenv_access_off',
2609 '_cpowl$fenv_access_off', '_cproj$fenv_access_off', '_cprojf$fenv_access_off',
2610 '_cprojl$fenv_access_off', '_creal$fenv_access_off', '_crealf$fenv_access_off',
2611 '_creall$fenv_access_off', '_csin$fenv_access_off', '_csinf$fenv_access_off',
2612 '_csinh$fenv_access_off', '_csinhf$fenv_access_off', '_csinhl$fenv_access_off',
2613 '_csinl$fenv_access_off', '_csqrt$fenv_access_off', '_csqrtf$fenv_access_off',
2614 '_csqrtl$fenv_access_off', '_ctan$fenv_access_off', '_ctanf$fenv_access_off',
2615 '_ctanh$fenv_access_off', '_ctanhf$fenv_access_off', '_ctanhl$fenv_access_off',
2616 '_ctanl$fenv_access_off', _drem, '_erf$fenv_access_off', '_erfc$fenv_access_off',
2617 '_erfcf$fenv_access_off', '_erfcl$fenv_access_off', '_erff$fenv_access_off',
2618 '_erfl$fenv_access_off', '_exp$fenv_access_off', '_exp2$fenv_access_off',
2619 '_exp2f$fenv_access_off', '_exp2l$fenv_access_off', '_expf$fenv_access_off',
2620 '_expl$fenv_access_off', '_expm1$fenv_access_off', '_expm1f$fenv_access_off',
2621 '_expm1l$fenv_access_off', '_fabs$fenv_access_off', '_fabsf$fenv_access_off',
2622 '_fabsl$fenv_access_off', '_fdim$fenv_access_off', '_fdimf$fenv_access_off',
2623 '_fdiml$fenv_access_off', _fegetexcept, _fesetexcept, _finite,
2624 '_floor$fenv_access_off', '_floorf$fenv_access_off', '_floorl$fenv_access_off',
2625 '_fma$fenv_access_off', '_fmaf$fenv_access_off', '_fmal$fenv_access_off',
2626 '_fmax$fenv_access_off', '_fmaxf$fenv_access_off', '_fmaxl$fenv_access_off',
2627 '_fmin$fenv_access_off', '_fminf$fenv_access_off', '_fminl$fenv_access_off',
2628 '_fmod$fenv_access_off', '_fmodf$fenv_access_off', '_fmodl$fenv_access_off',
2629 '_frexp$fenv_access_off', '_frexpf$fenv_access_off', '_frexpl$fenv_access_off',
2630 _gamma, '_gamma$fenv_access_off', '_hypot$fenv_access_off',
2631 '_hypotf$fenv_access_off', '_hypotl$fenv_access_off', '_ilogb$fenv_access_off',
2632 '_ilogbf$fenv_access_off', '_ilogbl$fenv_access_off', '_ldexp$fenv_access_off',
2633 '_ldexpf$fenv_access_off', '_ldexpl$fenv_access_off', '_lgamma$fenv_access_off',
2634 '_lgamma_r$fenv_access_off', '_lgammaf$fenv_access_off', '_lgammaf_r$fenv_access_off',
2635 '_lgammal$fenv_access_off', '_lgammal_r$fenv_access_off',
2636 '_llrint$fenv_access_off', '_llrintf$fenv_access_off', '_llrintl$fenv_access_off',
2637 '_llround$fenv_access_off', '_llroundf$fenv_access_off', '_llroundl$fenv_access_off',
2638 '_log$fenv_access_off', '_log10$fenv_access_off', '_log10f$fenv_access_off',
2639 '_log10l$fenv_access_off', '_log1p$fenv_access_off', '_log1pf$fenv_access_off',
2640 '_log1pl$fenv_access_off', '_log2$fenv_access_off', '_log2f$fenv_access_off',
2641 '_log2l$fenv_access_off', '_logb$fenv_access_off', '_logbf$fenv_access_off',
2642 '_logbl$fenv_access_off', '_logf$fenv_access_off', '_logl$fenv_access_off',
2643 '_lrint$fenv_access_off', '_lrintf$fenv_access_off', '_lrintl$fenv_access_off',
2644 '_lround$fenv_access_off', '_lroundf$fenv_access_off', '_lroundl$fenv_access_off',
2645 _matherr, '_modf$fenv_access_off', '_modff$fenv_access_off',
2646 '_modfl$fenv_access_off', '_nearbyint$fenv_access_off', '_nearbyintf$fenv_access_off',
2647 '_nearbyintl$fenv_access_off', '_nextafter$fenv_access_off',
2648 _nextafterd, '_nextafterf$fenv_access_off', '_nextafterl$fenv_access_off',
2649 '_nexttoward$fenv_access_off', '_nexttowardf$fenv_access_off',
2650 '_nexttowardl$fenv_access_off', '_pow$fenv_access_off', '_powf$fenv_access_off',
2651 '_powl$fenv_access_off', '_remainder$fenv_access_off', '_remainderf$fenv_access_off',
2652 '_remainderl$fenv_access_off', '_remquo$fenv_access_off',
2653 '_remquof$fenv_access_off', '_remquol$fenv_access_off', '_rint$fenv_access_off',
2654 '_rintf$fenv_access_off', '_rintl$fenv_access_off', _rinttol,
2655 '_round$fenv_access_off', '_roundf$fenv_access_off', '_roundl$fenv_access_off',
2656 _roundtol, '_scalbln$fenv_access_off', '_scalblnf$fenv_access_off',
2657 '_scalblnl$fenv_access_off', '_scalbn$fenv_access_off', '_scalbnf$fenv_access_off',
2658 '_scalbnl$fenv_access_off', _significand, '_sin$fenv_access_off',
2659 '_sinf$fenv_access_off', '_sinh$fenv_access_off', '_sinhf$fenv_access_off',
2660 '_sinhl$fenv_access_off', '_sinl$fenv_access_off', '_sqrt$fenv_access_off',
2661 '_sqrtf$fenv_access_off', '_sqrtl$fenv_access_off', '_tan$fenv_access_off',
2662 '_tanf$fenv_access_off', '_tanh$fenv_access_off', '_tanhf$fenv_access_off',
2663 '_tanhl$fenv_access_off', '_tanl$fenv_access_off', '_tgamma$fenv_access_off',
2664 '_tgammaf$fenv_access_off', '_tgammal$fenv_access_off', '_trunc$fenv_access_off',
2665 '_truncf$fenv_access_off', '_truncl$fenv_access_off' ]
2666 - targets: [ x86_64-macos, arm64e-macos, x86_64h-macos, x86_64-maccatalyst,
2667 x86_64h-maccatalyst, arm64e-maccatalyst, arm64-macos, arm64-maccatalyst ]
2668 symbols: [ __FE_DFL_ENV, ___Libm_version, ___cos_d2, ___cos_f4, ___cospi,
2669 ___cospif, ___exp10, ___exp10f, ___fegetfltrounds, ___fpclassifyd,
2670 ___fpclassifyf, ___fpclassifyl, ___inline_isfinited, ___inline_isfinitef,
2671 ___inline_isfinitel, ___inline_isinfd, ___inline_isinff, ___inline_isinfl,
2672 ___inline_isnand, ___inline_isnanf, ___inline_isnanl, ___inline_isnormald,
2673 ___inline_isnormalf, ___inline_isnormall, ___inline_signbitd,
2674 ___inline_signbitf, ___inline_signbitl, ___invert_d2, ___invert_d3,
2675 ___invert_d4, ___invert_f2, ___invert_f3, ___invert_f4, ___isfinited,
2676 ___isfinitef, ___isfinitel, ___isinfd, ___isinff, ___isinfl,
2677 ___isnand, ___isnanf, ___isnanl, ___isnormald, ___isnormalf,
2678 ___isnormall, ___math_errhandling, ___signbitd, ___signbitf,
2679 ___signbitl, ___sin_d2, ___sin_f4, ___sincos, ___sincos_stret,
2680 ___sincosf, ___sincosf_stret, ___sincospi, ___sincospi_stret,
2681 ___sincospif, ___sincospif_stret, ___sinpi, ___sinpif, ___tanpi,
2682 ___tanpif, __simd_acos_d2, __simd_acos_f4, __simd_acosh_d2,
2683 __simd_acosh_f4, __simd_asin_d2, __simd_asin_f4, __simd_asinh_d2,
2684 __simd_asinh_f4, __simd_atan2_d2, __simd_atan2_f4, __simd_atan_d2,
2685 __simd_atan_f4, __simd_atanh_d2, __simd_atanh_f4, __simd_cbrt_d2,
2686 __simd_cbrt_f4, __simd_cos_d2, __simd_cos_f4, __simd_cosh_d2,
2687 __simd_cosh_f4, __simd_cospi_d2, __simd_cospi_f4, __simd_erf_d2,
2688 __simd_erf_f4, __simd_erfc_d2, __simd_erfc_f4, __simd_exp10_d2,
2689 __simd_exp10_f4, __simd_exp2_d2, __simd_exp2_f4, __simd_exp_d2,
2690 __simd_exp_f4, __simd_expm1_d2, __simd_expm1_f4, __simd_fma_d2,
2691 __simd_fma_f4, __simd_fmod_d2, __simd_fmod_f4, __simd_hypot_d2,
2692 __simd_hypot_f4, __simd_incircle_pd2, __simd_incircle_pf2,
2693 __simd_insphere_pd3, __simd_insphere_pf3, __simd_log10_d2,
2694 __simd_log10_f4, __simd_log1p_d2, __simd_log1p_f4, __simd_log2_d2,
2695 __simd_log2_f4, __simd_log_d2, __simd_log_f4, __simd_nextafter_d2,
2696 __simd_nextafter_f4, __simd_orient_pd2, __simd_orient_pd3,
2697 __simd_orient_pf2, __simd_orient_pf3, __simd_orient_vd2, __simd_orient_vd3,
2698 __simd_orient_vf2, __simd_orient_vf3, __simd_pow_d2, __simd_pow_f4,
2699 __simd_remainder_d2, __simd_remainder_f4, __simd_round_d2,
2700 __simd_round_f4, __simd_sin_d2, __simd_sin_f4, __simd_sinh_d2,
2701 __simd_sinh_f4, __simd_sinpi_d2, __simd_sinpi_f4, __simd_tan_d2,
2702 __simd_tan_f4, __simd_tanh_d2, __simd_tanh_f4, __simd_tanpi_d2,
2703 __simd_tanpi_f4, __simd_tgamma_d2, __simd_tgamma_f4, _acos,
2704 _acosf, _acosh, _acoshf, _acoshl, _acosl, _asin, _asinf, _asinh,
2705 _asinhf, _asinhl, _asinl, _atan, _atan2, _atan2f, _atan2l,
2706 _atanf, _atanh, _atanhf, _atanhl, _atanl, _cabs, _cabsf, _cabsl,
2707 _cacos, _cacosf, _cacosh, _cacoshf, _cacoshl, _cacosl, _carg,
2708 _cargf, _cargl, _casin, _casinf, _casinh, _casinhf, _casinhl,
2709 _casinl, _catan, _catanf, _catanh, _catanhf, _catanhl, _catanl,
2710 _cbrt, _cbrtf, _cbrtl, _ccos, _ccosf, _ccosh, _ccoshf, _ccoshl,
2711 _ccosl, _ceil, _ceilf, _ceill, _cexp, _cexpf, _cexpl, _cimag,
2712 _cimagf, _cimagl, _clog, _clogf, _clogl, _conj, _conjf, _conjl,
2713 _copysign, _copysignf, _copysignl, _cos, _cosf, _cosh, _coshf,
2714 _coshl, _cosl, _cpow, _cpowf, _cpowl, _cproj, _cprojf, _cprojl,
2715 _creal, _crealf, _creall, _csin, _csinf, _csinh, _csinhf,
2716 _csinhl, _csinl, _csqrt, _csqrtf, _csqrtl, _ctan, _ctanf,
2717 _ctanh, _ctanhf, _ctanhl, _ctanl, _erf, _erfc, _erfcf, _erfcl,
2718 _erff, _erfl, _exp, _exp2, _exp2f, _exp2l, _expf, _expl, _expm1,
2719 _expm1f, _expm1l, _fabs, _fabsf, _fabsl, _fdim, _fdimf, _fdiml,
2720 _feclearexcept, _fegetenv, _fegetexceptflag, _fegetround,
2721 _feholdexcept, _feraiseexcept, _fesetenv, _fesetexceptflag,
2722 _fesetround, _fetestexcept, _feupdateenv, _floor, _floorf,
2723 _floorl, _fma, _fmaf, _fmal, _fmax, _fmaxf, _fmaxl, _fmin,
2724 _fminf, _fminl, _fmod, _fmodf, _fmodl, _frexp, _frexpf, _frexpl,
2725 _hypot, _hypotf, _hypotl, _ilogb, _ilogbf, _ilogbl, _isinf,
2726 _isnan, _j0, _j1, _jn, _ldexp, _ldexpf, _ldexpl, _lgamma,
2727 _lgamma_r, _lgammaf, _lgammaf_r, _lgammal, _lgammal_r, _llrint,
2728 _llrintf, _llrintl, _llround, _llroundf, _llroundl, _log,
2729 _log10, _log10f, _log10l, _log1p, _log1pf, _log1pl, _log2,
2730 _log2f, _log2l, _logb, _logbf, _logbl, _logf, _logl, _lrint,
2731 _lrintf, _lrintl, _lround, _lroundf, _lroundl, _matrix_identity_double2x2,
2732 _matrix_identity_double3x3, _matrix_identity_double4x4, _matrix_identity_float2x2,
2733 _matrix_identity_float3x3, _matrix_identity_float4x4, _modf,
2734 _modff, _modfl, _nan, _nanf, _nanl, _nearbyint, _nearbyintf,
2735 _nearbyintl, _nextafter, _nextafterf, _nextafterl, _nexttoward,
2736 _nexttowardf, _nexttowardl, _pow, _powf, _powl, _remainder,
2737 _remainderf, _remainderl, _remquo, _remquof, _remquol, _rint,
2738 _rintf, _rintl, _round, _roundf, _roundl, _scalb, _scalbln,
2739 _scalblnf, _scalblnl, _scalbn, _scalbnf, _scalbnl, _signgam,
2740 _sin, _sinf, _sinh, _sinhf, _sinhl, _sinl, _sqrt, _sqrtf,
2741 _sqrtl, _tan, _tanf, _tanh, _tanhf, _tanhl, _tanl, _tgamma,
2742 _tgammaf, _tgammal, _trunc, _truncf, _truncl, _y0, _y1, _yn ]
2743 - targets: [ arm64e-macos, arm64e-maccatalyst, arm64-macos, arm64-maccatalyst ]
2744 symbols: [ __FE_DFL_DISABLE_DENORMS_ENV ]
2745--- !tapi-tbd
2746tbd-version: 4
2747targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
2748 arm64e-macos, arm64e-maccatalyst ]
2749uuids:
2750 - target: x86_64-macos
2751 value: 2EF43B96-90FB-3C50-B73E-035238504E33
2752 - target: x86_64-maccatalyst
2753 value: 2EF43B96-90FB-3C50-B73E-035238504E33
2754 - target: arm64-macos
2755 value: 00000000-0000-0000-0000-000000000000
2756 - target: arm64-maccatalyst
2757 value: 00000000-0000-0000-0000-000000000000
2758 - target: arm64e-macos
2759 value: E47334AF-7E46-3FAE-B71C-9D9B4F1DF1DE
2760 - target: arm64e-maccatalyst
2761 value: E47334AF-7E46-3FAE-B71C-9D9B4F1DF1DE
2762install-name: '/usr/lib/system/libsystem_malloc.dylib'
2763current-version: 317.40.8
2764parent-umbrella:
2765 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
2766 arm64e-macos, arm64e-maccatalyst ]
2767 umbrella: System
2768exports:
2769 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
2770 arm64-macos, arm64-maccatalyst ]
2771 symbols: [ ___mach_stack_logging_copy_uniquing_table, ___mach_stack_logging_enumerate_records,
2772 ___mach_stack_logging_frames_for_uniqued_stack, ___mach_stack_logging_get_frames,
2773 ___mach_stack_logging_get_frames_for_stackid, ___mach_stack_logging_set_file_path,
2774 ___mach_stack_logging_shared_memory_address, ___mach_stack_logging_stackid_for_vm_region,
2775 ___mach_stack_logging_start_reading, ___mach_stack_logging_stop_reading,
2776 ___mach_stack_logging_uniquing_table_copy_from_serialized,
2777 ___mach_stack_logging_uniquing_table_read_stack, ___mach_stack_logging_uniquing_table_release,
2778 ___mach_stack_logging_uniquing_table_retain, ___mach_stack_logging_uniquing_table_serialize,
2779 ___mach_stack_logging_uniquing_table_sizeof, ___malloc_init,
2780 ___stack_logging_early_finished, __malloc_fork_child, __malloc_fork_parent,
2781 __malloc_fork_prepare, __malloc_no_asl_log, __os_cpu_number_override,
2782 _aligned_alloc, _calloc, _free, _mag_set_thread_index, _malloc,
2783 _malloc_check_counter, _malloc_check_each, _malloc_check_start,
2784 _malloc_claimed_address, _malloc_create_legacy_default_zone,
2785 _malloc_create_zone, _malloc_debug, _malloc_default_purgeable_zone,
2786 _malloc_default_zone, _malloc_destroy_zone, _malloc_engaged_nano,
2787 _malloc_enter_process_memory_limit_warn_mode, _malloc_error,
2788 _malloc_freezedry, _malloc_get_all_zones, _malloc_get_zone_name,
2789 _malloc_good_size, _malloc_jumpstart, _malloc_logger, _malloc_make_nonpurgeable,
2790 _malloc_make_purgeable, _malloc_memory_event_handler, _malloc_num_zones,
2791 _malloc_num_zones_allocated, _malloc_printf, _malloc_register_stack_logger,
2792 _malloc_set_zone_name, _malloc_singlethreaded, _malloc_size,
2793 _malloc_zone_batch_free, _malloc_zone_batch_malloc, _malloc_zone_calloc,
2794 _malloc_zone_check, _malloc_zone_claimed_address, _malloc_zone_disable_discharge_checking,
2795 _malloc_zone_discharge, _malloc_zone_enable_discharge_checking,
2796 _malloc_zone_enumerate_discharged_pointers, _malloc_zone_free,
2797 _malloc_zone_from_ptr, _malloc_zone_log, _malloc_zone_malloc,
2798 _malloc_zone_memalign, _malloc_zone_pressure_relief, _malloc_zone_print,
2799 _malloc_zone_print_ptr_info, _malloc_zone_realloc, _malloc_zone_register,
2800 _malloc_zone_statistics, _malloc_zone_unregister, _malloc_zone_valloc,
2801 _malloc_zones, _mstats, _pgm_diagnose_fault_from_crash_reporter,
2802 _posix_memalign, _realloc, '_reallocarray$DARWIN_EXTSN', '_reallocarrayf$DARWIN_EXTSN',
2803 _scalable_zone_info, _scalable_zone_statistics, _set_malloc_singlethreaded,
2804 _stack_logging_enable_logging, _szone_check_counter, _szone_check_modulo,
2805 _szone_check_start, _tiny_print_region_free_list, _turn_off_stack_logging,
2806 _turn_on_stack_logging, _valloc, _vfree, _zeroify_scalable_zone ]
2807--- !tapi-tbd
2808tbd-version: 4
2809targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
2810 arm64e-macos, arm64e-maccatalyst ]
2811uuids:
2812 - target: x86_64-macos
2813 value: F476B1CB-3561-30C5-A78E-44E99B1720A3
2814 - target: x86_64-maccatalyst
2815 value: F476B1CB-3561-30C5-A78E-44E99B1720A3
2816 - target: arm64-macos
2817 value: 00000000-0000-0000-0000-000000000000
2818 - target: arm64-maccatalyst
2819 value: 00000000-0000-0000-0000-000000000000
2820 - target: arm64e-macos
2821 value: 399ACCA2-77CA-3A30-9930-1382F8DBBAD3
2822 - target: arm64e-maccatalyst
2823 value: 399ACCA2-77CA-3A30-9930-1382F8DBBAD3
2824install-name: '/usr/lib/system/libsystem_networkextension.dylib'
2825parent-umbrella:
2826 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
2827 arm64e-macos, arm64e-maccatalyst ]
2828 umbrella: System
2829exports:
2830 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
2831 arm64-macos, arm64-maccatalyst ]
2832 symbols: [ _NEHelperCacheAddRedirectedAddress, _NEHelperCacheClearRedirectedAddresses,
2833 _NEHelperCacheClearUUIDs, _NEHelperCacheCopyAppUUIDMapping,
2834 _NEHelperCacheCopyAppUUIDMappingExtended, _NEHelperCacheCopyAppUUIDMappingForUIDExtended,
2835 _NEHelperCacheCopySigningIdentifierMapping, _NEHelperCacheSetDomainDictionaries,
2836 _NEHelperCacheSetRoutes, _NEHelperCopyAggregatePathRules,
2837 _NEHelperCopyAppInfo, _NEHelperCopyCurrentNetworkAsync, _NEHelperCopyCurrentNetworkInfo,
2838 _NEHelperCopyPerAppDomains, _NEHelperCopyPreferredBundleID,
2839 _NEHelperCopyResponse, _NEHelperCopyResponseAndCancel, _NEHelperGetIKESocket,
2840 _NEHelperGetIKESocketWithResult, _NEHelperGetKernelControlSocket,
2841 _NEHelperGetKernelControlSocketExtended, _NEHelperGetNECPSessionFD,
2842 _NEHelperGetPFKeySocket, _NEHelperHandleConfigurationsChangedBySC,
2843 _NEHelperInit, _NEHelperInterfaceRemoveAddress, _NEHelperInterfaceSetAddress,
2844 _NEHelperInterfaceSetMTU, _NEHelperInterfaceSetOption, _NEHelperSendRequest,
2845 _NEHelperSettingsSetArray, _NEHelperSettingsSetBool, _NEHelperSettingsSetNumber,
2846 _NEHelperVPNConfigurationExists, _NEHelperVPNSetEnabled, _g_ne_read_uuid_cache,
2847 _g_ne_uuid_cache_hit, _ne_copy_cached_bundle_identifier_for_uuid,
2848 _ne_copy_cached_preferred_bundle_for_bundle_identifier, _ne_copy_cached_uuids_for_bundle_identifier,
2849 _ne_copy_signature_info_for_pid, _ne_copy_signing_identifier_for_pid,
2850 _ne_copy_uuid_cache, _ne_force_reset_uuid_cache, _ne_get_configuration_generation,
2851 _ne_is_sockaddr_valid, _ne_log_large_obj, _ne_log_obj, _ne_print_backtrace,
2852 _ne_session_add_necp_drop_dest_from_path, _ne_session_address_matches_subnets,
2853 _ne_session_agent_get_advisory, _ne_session_agent_get_advisory_interface_index,
2854 _ne_session_always_on_vpn_configs_present, _ne_session_always_on_vpn_configs_present_at_boot,
2855 _ne_session_app_vpn_configs_present, _ne_session_cancel, _ne_session_content_filter_configs_present,
2856 _ne_session_copy_app_data_from_flow_divert_socket, _ne_session_copy_app_data_from_flow_divert_token,
2857 _ne_session_copy_policy_match, _ne_session_copy_security_session_info,
2858 _ne_session_copy_socket_attributes, _ne_session_create, _ne_session_disable_restrictions,
2859 _ne_session_dns_proxy_configs_present, _ne_session_dns_settings_configs_present,
2860 _ne_session_establish_ipc, _ne_session_fallback_advisory,
2861 _ne_session_fallback_default, _ne_session_get_config_id_from_network_agent,
2862 _ne_session_get_configuration_id, _ne_session_get_info, _ne_session_get_info2,
2863 _ne_session_get_status, _ne_session_info_type_to_string, _ne_session_initialize_necp_drop_all,
2864 _ne_session_is_always_on_vpn_enabled, _ne_session_is_safeboot,
2865 _ne_session_local_communication_configs_present, _ne_session_local_communication_send_info,
2866 _ne_session_manager_get_pid, _ne_session_manager_has_active_sessions,
2867 _ne_session_manager_is_running, _ne_session_on_demand_configs_present,
2868 _ne_session_path_controller_configs_present, _ne_session_policy_copy_flow_divert_token,
2869 _ne_session_policy_copy_flow_divert_token_with_key, _ne_session_policy_match_get_filter_unit,
2870 _ne_session_policy_match_get_flow_divert_unit, _ne_session_policy_match_get_scoped_interface_index,
2871 _ne_session_policy_match_get_service, _ne_session_policy_match_get_service_action,
2872 _ne_session_policy_match_get_service_type, _ne_session_policy_match_is_drop,
2873 _ne_session_policy_match_is_flow_divert, _ne_session_policy_match_service_is_registered,
2874 _ne_session_release, _ne_session_retain, _ne_session_send_barrier,
2875 _ne_session_service_get_dns_service_id, _ne_session_service_get_dns_service_id_for_interface,
2876 _ne_session_service_matches_address, _ne_session_service_matches_address_for_interface,
2877 _ne_session_set_event_handler, _ne_session_set_socket_attributes,
2878 _ne_session_should_disable_nexus, _ne_session_start, _ne_session_start_on_behalf_of,
2879 _ne_session_start_with_options, _ne_session_status_to_string,
2880 _ne_session_stop, _ne_session_stop_all_with_plugin_type, _ne_session_stop_reason_to_string,
2881 _ne_session_type_to_string, _ne_session_use_as_system_vpn,
2882 _ne_session_vpn_include_all_networks_configs_present, _nehelper_copy_connection,
2883 _nehelper_queue, _nelog_is_debug_logging_enabled, _nelog_is_extra_vpn_logging_enabled,
2884 _nelog_is_info_logging_enabled ]
2885--- !tapi-tbd
2886tbd-version: 4
2887targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
2888 arm64e-macos, arm64e-maccatalyst ]
2889uuids:
2890 - target: x86_64-macos
2891 value: 98D74EEF-60D9-3665-B877-7BE1558BA83E
2892 - target: x86_64-maccatalyst
2893 value: 98D74EEF-60D9-3665-B877-7BE1558BA83E
2894 - target: arm64-macos
2895 value: 00000000-0000-0000-0000-000000000000
2896 - target: arm64-maccatalyst
2897 value: 00000000-0000-0000-0000-000000000000
2898 - target: arm64e-macos
2899 value: C8ADD6C0-5150-359F-8A38-AEAA3351AA5C
2900 - target: arm64e-maccatalyst
2901 value: C8ADD6C0-5150-359F-8A38-AEAA3351AA5C
2902install-name: '/usr/lib/system/libsystem_notify.dylib'
2903current-version: 279.40.4
2904exports:
2905 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
2906 arm64-macos, arm64-maccatalyst ]
2907 symbols: [ __notify_fork_child, _notify_cancel, _notify_check, _notify_dump_status,
2908 _notify_get_event, _notify_get_state, _notify_is_valid_token,
2909 _notify_monitor_file, _notify_peek, _notify_post, _notify_register_check,
2910 _notify_register_dispatch, _notify_register_file_descriptor,
2911 _notify_register_mach_port, _notify_register_plain, _notify_register_signal,
2912 _notify_resume, _notify_resume_pid, _notify_set_options, _notify_set_state,
2913 _notify_simple_post, _notify_suspend, _notify_suspend_pid ]
2914--- !tapi-tbd
2915tbd-version: 4
2916targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
2917 arm64e-macos, arm64e-maccatalyst ]
2918uuids:
2919 - target: x86_64-macos
2920 value: 3F7F6461-7B5C-3197-ACD7-C8A0CFCC6F55
2921 - target: x86_64-maccatalyst
2922 value: 3F7F6461-7B5C-3197-ACD7-C8A0CFCC6F55
2923 - target: arm64-macos
2924 value: BE741EB0-93DC-3787-A097-82EF092CD45C
2925 - target: arm64-maccatalyst
2926 value: BE741EB0-93DC-3787-A097-82EF092CD45C
2927 - target: arm64e-macos
2928 value: 089E074F-F575-3853-B081-B3B0A23FDA61
2929 - target: arm64e-maccatalyst
2930 value: 089E074F-F575-3853-B081-B3B0A23FDA61
2931install-name: '/usr/lib/system/libsystem_platform.dylib'
2932current-version: 254.60.1
2933parent-umbrella:
2934 - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
2935 arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
2936 umbrella: System
2937exports:
2938 - targets: [ x86_64-maccatalyst, x86_64-macos ]
2939 symbols: [ '_OSAtomicFifoDequeue$VARIANT$PFZ', '_OSAtomicFifoDequeue$VARIANT$UnfairLock',
2940 '_OSAtomicFifoEnqueue$VARIANT$PFZ', '_OSAtomicFifoEnqueue$VARIANT$UnfairLock',
2941 __sigtramp, _bzero_sse_np, _longjmperror, _memmove_sse_np,
2942 _memset_pattern16_sse_np, _memset_pattern4_sse_np, _memset_pattern8_sse_np,
2943 _memset_sse_np ]
2944 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64-maccatalyst, arm64-macos,
2945 arm64e-maccatalyst, arm64e-macos ]
2946 symbols: [ _OSAtomicAdd32, _OSAtomicAdd32Barrier, _OSAtomicAdd64, _OSAtomicAdd64Barrier,
2947 _OSAtomicAnd32, _OSAtomicAnd32Barrier, _OSAtomicAnd32Orig,
2948 _OSAtomicAnd32OrigBarrier, _OSAtomicCompareAndSwap32, _OSAtomicCompareAndSwap32Barrier,
2949 _OSAtomicCompareAndSwap64, _OSAtomicCompareAndSwap64Barrier,
2950 _OSAtomicCompareAndSwapInt, _OSAtomicCompareAndSwapIntBarrier,
2951 _OSAtomicCompareAndSwapLong, _OSAtomicCompareAndSwapLongBarrier,
2952 _OSAtomicCompareAndSwapPtr, _OSAtomicCompareAndSwapPtrBarrier,
2953 _OSAtomicDecrement32, _OSAtomicDecrement32Barrier, _OSAtomicDecrement64,
2954 _OSAtomicDecrement64Barrier, _OSAtomicDequeue, _OSAtomicEnqueue,
2955 _OSAtomicFifoDequeue, _OSAtomicFifoEnqueue, _OSAtomicIncrement32,
2956 _OSAtomicIncrement32Barrier, _OSAtomicIncrement64, _OSAtomicIncrement64Barrier,
2957 _OSAtomicOr32, _OSAtomicOr32Barrier, _OSAtomicOr32Orig, _OSAtomicOr32OrigBarrier,
2958 _OSAtomicTestAndClear, _OSAtomicTestAndClearBarrier, _OSAtomicTestAndSet,
2959 _OSAtomicTestAndSetBarrier, _OSAtomicXor32, _OSAtomicXor32Barrier,
2960 _OSAtomicXor32Orig, _OSAtomicXor32OrigBarrier, _OSMemoryBarrier,
2961 _OSSpinLockLock, _OSSpinLockTry, _OSSpinLockUnlock, __OSSpinLockLockSlow,
2962 ___bzero, ___libplatform_init, ___os_once_reset, ___platform_sigaction,
2963 __longjmp, __os_alloc_once, __os_lock_type_eliding, __os_lock_type_handoff,
2964 __os_lock_type_nospin, __os_lock_type_spin, __os_lock_type_transactional,
2965 __os_lock_type_unfair, __os_nospin_lock_lock, __os_nospin_lock_trylock,
2966 __os_nospin_lock_unlock, __os_once, __os_semaphore_create,
2967 __os_semaphore_dispose, __os_semaphore_signal, __os_semaphore_wait,
2968 __platform_bzero, __platform_memccpy, __platform_memchr, __platform_memcmp,
2969 __platform_memmove, __platform_memset, __platform_memset_pattern16,
2970 __platform_memset_pattern4, __platform_memset_pattern8, __platform_strchr,
2971 __platform_strcmp, __platform_strcpy, __platform_strlcat,
2972 __platform_strlcpy, __platform_strlen, __platform_strncmp,
2973 __platform_strncpy, __platform_strnlen, __platform_strstr,
2974 __setjmp, __simple_asl_log, __simple_asl_log_prog, __simple_asl_msg_new,
2975 __simple_asl_msg_set, __simple_asl_send, __simple_dprintf,
2976 __simple_esappend, __simple_esprintf, __simple_getenv, __simple_put,
2977 __simple_putline, __simple_salloc, __simple_sappend, __simple_sfree,
2978 __simple_sprintf, __simple_sresize, __simple_string, __simple_vdprintf,
2979 __simple_vesprintf, __simple_vsprintf, __spin_lock, __spin_lock_try,
2980 __spin_unlock, _ffs, _ffsl, _ffsll, _fls, _flsl, _flsll, _getcontext,
2981 _longjmp, _makecontext, _os_lock_lock, _os_lock_trylock, _os_lock_unlock,
2982 _os_unfair_lock_assert_not_owner, _os_unfair_lock_assert_owner,
2983 _os_unfair_lock_lock, _os_unfair_lock_lock_no_tsd, _os_unfair_lock_lock_with_options,
2984 _os_unfair_lock_trylock, _os_unfair_lock_unlock, _os_unfair_lock_unlock_no_tsd,
2985 _os_unfair_recursive_lock_lock_with_options, _os_unfair_recursive_lock_owned,
2986 _os_unfair_recursive_lock_trylock, _os_unfair_recursive_lock_tryunlock4objc,
2987 _os_unfair_recursive_lock_unlock, _os_unfair_recursive_lock_unlock_forked_child,
2988 _platform_task_attach, _platform_task_copy_next_thread, _platform_task_detach,
2989 _platform_task_is_64_bit, _platform_task_perform, _platform_task_resume_threads,
2990 _platform_task_suspend_threads, _platform_task_update_threads,
2991 _platform_thread_abort_safely, _platform_thread_get_pthread,
2992 _platform_thread_get_state, _platform_thread_get_unique_id,
2993 _platform_thread_info, _platform_thread_perform, _platform_thread_release,
2994 _platform_thread_resume, _platform_thread_set_state, _platform_thread_suspend,
2995 _setcontext, _setjmp, _siglongjmp, _sigsetjmp, _spin_lock,
2996 _spin_lock_try, _spin_unlock, _swapcontext, _sys_cache_control,
2997 _sys_dcache_flush, _sys_icache_invalidate ]
2998 - targets: [ arm64-maccatalyst, arm64-macos, arm64e-maccatalyst, arm64e-macos ]
2999 symbols: [ __ctx_done ]
3000--- !tapi-tbd
3001tbd-version: 4
3002targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3003 arm64e-macos, arm64e-maccatalyst ]
3004uuids:
3005 - target: x86_64-macos
3006 value: 7CCAF1A8-F570-341E-B275-0C80B092F8E0
3007 - target: x86_64-maccatalyst
3008 value: 7CCAF1A8-F570-341E-B275-0C80B092F8E0
3009 - target: arm64-macos
3010 value: 00000000-0000-0000-0000-000000000000
3011 - target: arm64-maccatalyst
3012 value: 00000000-0000-0000-0000-000000000000
3013 - target: arm64e-macos
3014 value: BF4F283D-1B0C-3A5A-8DAC-CFB3096CEDB4
3015 - target: arm64e-maccatalyst
3016 value: BF4F283D-1B0C-3A5A-8DAC-CFB3096CEDB4
3017install-name: '/usr/lib/system/libsystem_product_info_filter.dylib'
3018current-version: 8.40.1
3019parent-umbrella:
3020 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3021 arm64e-macos, arm64e-maccatalyst ]
3022 umbrella: System
3023--- !tapi-tbd
3024tbd-version: 4
3025targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3026 arm64e-macos, arm64e-maccatalyst ]
3027uuids:
3028 - target: x86_64-macos
3029 value: 8DD3A0BC-2C92-31E3-BBAB-CE923A4342E4
3030 - target: x86_64-maccatalyst
3031 value: 8DD3A0BC-2C92-31E3-BBAB-CE923A4342E4
3032 - target: arm64-macos
3033 value: 7EDAEC3F-03BB-3E2D-8DBD-6F86979C566F
3034 - target: arm64-maccatalyst
3035 value: 7EDAEC3F-03BB-3E2D-8DBD-6F86979C566F
3036 - target: arm64e-macos
3037 value: EDB716F3-BF94-3941-B7DA-D6C91094C645
3038 - target: arm64e-maccatalyst
3039 value: EDB716F3-BF94-3941-B7DA-D6C91094C645
3040install-name: '/usr/lib/system/libsystem_pthread.dylib'
3041current-version: 454.60.1
3042parent-umbrella:
3043 - targets: [ i386-macos, x86_64-macos, x86_64-maccatalyst, arm64-macos,
3044 arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
3045 umbrella: System
3046exports:
3047 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3048 arm64e-macos, arm64e-maccatalyst ]
3049 symbols: [ __pthread_is_threaded, _cthread_yield ]
3050 - targets: [ arm64-macos, x86_64-macos, arm64e-macos, x86_64-maccatalyst,
3051 arm64-maccatalyst, arm64e-maccatalyst ]
3052 symbols: [ ____chkstk_darwin, ___is_threaded, ___pthread_init, ___pthread_workqueue_setkill,
3053 ___unix_conforming, __pthread_atfork_child, __pthread_atfork_child_handlers,
3054 __pthread_atfork_parent, __pthread_atfork_parent_handlers,
3055 __pthread_atfork_prepare, __pthread_atfork_prepare_handlers,
3056 __pthread_clear_qos_tsd, __pthread_exit_if_canceled, __pthread_fork_child,
3057 __pthread_fork_child_postinit, __pthread_fork_parent, __pthread_fork_prepare,
3058 __pthread_mutex_enable_legacy_mode, __pthread_override_qos_class_end_direct,
3059 __pthread_override_qos_class_start_direct, __pthread_qos_class_decode,
3060 __pthread_qos_class_encode, __pthread_qos_class_encode_workqueue,
3061 __pthread_qos_override_end_direct, __pthread_qos_override_start_direct,
3062 __pthread_self, __pthread_set_properties_self, __pthread_set_self,
3063 __pthread_setspecific_static, __pthread_start, __pthread_workloop_create,
3064 __pthread_workloop_destroy, __pthread_workqueue_addthreads,
3065 __pthread_workqueue_asynchronous_override_add, __pthread_workqueue_asynchronous_override_reset_all_self,
3066 __pthread_workqueue_asynchronous_override_reset_self, __pthread_workqueue_init,
3067 __pthread_workqueue_init_with_kevent, __pthread_workqueue_init_with_workloop,
3068 __pthread_workqueue_override_reset, __pthread_workqueue_override_start_direct,
3069 __pthread_workqueue_override_start_direct_check_owner, __pthread_workqueue_set_event_manager_priority,
3070 __pthread_workqueue_should_narrow, __pthread_workqueue_supported,
3071 __pthread_wqthread, _posix_spawnattr_get_qos_class_np, _posix_spawnattr_set_qos_class_np,
3072 _pthread_atfork, _pthread_attr_destroy, _pthread_attr_get_qos_class_np,
3073 _pthread_attr_getdetachstate, _pthread_attr_getguardsize,
3074 _pthread_attr_getinheritsched, _pthread_attr_getschedparam,
3075 _pthread_attr_getschedpolicy, _pthread_attr_getscope, _pthread_attr_getstack,
3076 _pthread_attr_getstackaddr, _pthread_attr_getstacksize, _pthread_attr_init,
3077 _pthread_attr_set_qos_class_np, _pthread_attr_setcpupercent_np,
3078 _pthread_attr_setdetachstate, _pthread_attr_setguardsize,
3079 _pthread_attr_setinheritsched, _pthread_attr_setschedparam,
3080 _pthread_attr_setschedpolicy, _pthread_attr_setscope, _pthread_attr_setstack,
3081 _pthread_attr_setstackaddr, _pthread_attr_setstacksize, _pthread_cancel,
3082 _pthread_chdir_np, _pthread_cond_broadcast, _pthread_cond_destroy,
3083 _pthread_cond_init, _pthread_cond_signal, _pthread_cond_signal_thread_np,
3084 _pthread_cond_timedwait, '_pthread_cond_timedwait$NOCANCEL',
3085 _pthread_cond_timedwait_relative_np, _pthread_cond_wait, '_pthread_cond_wait$NOCANCEL',
3086 _pthread_condattr_destroy, _pthread_condattr_getpshared, _pthread_condattr_init,
3087 _pthread_condattr_setpshared, _pthread_cpu_number_np, _pthread_create,
3088 _pthread_create_from_mach_thread, _pthread_create_suspended_np,
3089 _pthread_current_stack_contains_np, _pthread_dependency_fulfill_np,
3090 _pthread_dependency_init_np, _pthread_dependency_wait_np,
3091 _pthread_detach, _pthread_equal, _pthread_exit, _pthread_fchdir_np,
3092 _pthread_from_mach_thread_np, _pthread_get_qos_class_np, _pthread_get_stackaddr_np,
3093 _pthread_get_stacksize_np, _pthread_getconcurrency, _pthread_getname_np,
3094 _pthread_getschedparam, _pthread_getspecific, _pthread_introspection_getspecific_np,
3095 _pthread_introspection_hook_install, _pthread_introspection_setspecific_np,
3096 _pthread_is_threaded_np, _pthread_jit_write_protect_np, _pthread_jit_write_protect_supported_np,
3097 _pthread_join, '_pthread_join$NOCANCEL', _pthread_key_create,
3098 _pthread_key_delete, _pthread_key_init_np, _pthread_kill,
3099 _pthread_layout_offsets, _pthread_mach_thread_np, _pthread_main_np,
3100 _pthread_main_thread_np, _pthread_mutex_destroy, _pthread_mutex_getprioceiling,
3101 _pthread_mutex_init, _pthread_mutex_lock, _pthread_mutex_setprioceiling,
3102 _pthread_mutex_trylock, _pthread_mutex_unlock, _pthread_mutexattr_destroy,
3103 _pthread_mutexattr_getpolicy_np, _pthread_mutexattr_getprioceiling,
3104 _pthread_mutexattr_getprotocol, _pthread_mutexattr_getpshared,
3105 _pthread_mutexattr_gettype, _pthread_mutexattr_init, _pthread_mutexattr_setpolicy_np,
3106 _pthread_mutexattr_setprioceiling, _pthread_mutexattr_setprotocol,
3107 _pthread_mutexattr_setpshared, _pthread_mutexattr_settype,
3108 _pthread_once, _pthread_override_qos_class_end_np, _pthread_override_qos_class_start_np,
3109 _pthread_prefer_alternate_amx_self, _pthread_qos_max_parallelism,
3110 _pthread_rwlock_destroy, _pthread_rwlock_init, _pthread_rwlock_rdlock,
3111 _pthread_rwlock_tryrdlock, _pthread_rwlock_trywrlock, _pthread_rwlock_unlock,
3112 _pthread_rwlock_wrlock, _pthread_rwlockattr_destroy, _pthread_rwlockattr_getpshared,
3113 _pthread_rwlockattr_init, _pthread_rwlockattr_setpshared,
3114 _pthread_self, _pthread_self_is_exiting_np, _pthread_set_fixedpriority_self,
3115 _pthread_set_qos_class_np, _pthread_set_qos_class_self_np,
3116 _pthread_set_timeshare_self, _pthread_setcancelstate, _pthread_setcanceltype,
3117 _pthread_setconcurrency, _pthread_setname_np, _pthread_setschedparam,
3118 _pthread_setspecific, _pthread_sigmask, _pthread_stack_frame_decode_np,
3119 _pthread_testcancel, _pthread_threadid_np, _pthread_time_constraint_max_parallelism,
3120 _pthread_workqueue_addthreads_np, _pthread_workqueue_setdispatch_np,
3121 _pthread_workqueue_setdispatchoffset_np, _pthread_workqueue_setup,
3122 _pthread_yield_np, _qos_class_main, _qos_class_self, _sched_get_priority_max,
3123 _sched_get_priority_min, _sched_yield, _sigwait, '_sigwait$NOCANCEL',
3124 _start_wqthread, _thread_chkstk_darwin, _thread_start ]
3125--- !tapi-tbd
3126tbd-version: 4
3127targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3128 arm64e-macos, arm64e-maccatalyst ]
3129uuids:
3130 - target: x86_64-macos
3131 value: 8CE27199-D633-31D2-AB08-56380A1DA9FB
3132 - target: x86_64-maccatalyst
3133 value: 8CE27199-D633-31D2-AB08-56380A1DA9FB
3134 - target: arm64-macos
3135 value: 00000000-0000-0000-0000-000000000000
3136 - target: arm64-maccatalyst
3137 value: 00000000-0000-0000-0000-000000000000
3138 - target: arm64e-macos
3139 value: 0EE4CE47-4715-3EE3-93CA-F4863FE29A5C
3140 - target: arm64e-maccatalyst
3141 value: 0EE4CE47-4715-3EE3-93CA-F4863FE29A5C
3142install-name: '/usr/lib/system/libsystem_sandbox.dylib'
3143current-version: 1441.60.4
3144parent-umbrella:
3145 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3146 arm64e-macos, arm64e-maccatalyst ]
3147 umbrella: System
3148exports:
3149 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
3150 arm64-macos, arm64-maccatalyst ]
3151 symbols: [ _APP_SANDBOX_IOKIT_CLIENT, _APP_SANDBOX_MACH, _APP_SANDBOX_READ,
3152 _APP_SANDBOX_READ_WRITE, _IOS_SANDBOX_APPLICATION_GROUP, _IOS_SANDBOX_CONTAINER,
3153 _SANDBOX_CHECK_ALLOW_APPROVAL, _SANDBOX_CHECK_CANONICAL, _SANDBOX_CHECK_NOFOLLOW,
3154 _SANDBOX_CHECK_NO_APPROVAL, _SANDBOX_CHECK_NO_REPORT, _SANDBOX_EXTENSION_CANONICAL,
3155 _SANDBOX_EXTENSION_DEFAULT, _SANDBOX_EXTENSION_MACL_LEARNING,
3156 _SANDBOX_EXTENSION_MAGIC, _SANDBOX_EXTENSION_NOFOLLOW, _SANDBOX_EXTENSION_NO_REPORT,
3157 _SANDBOX_EXTENSION_NO_STORAGE_CLASS, _SANDBOX_EXTENSION_PREFIXMATCH,
3158 _SANDBOX_EXTENSION_UNRESOLVED, _SANDBOX_EXTENSION_USER_INTENT,
3159 __amkrtemp, __sandbox_in_a_container, _gpu_bundle_find_trusted,
3160 _gpu_bundle_is_path_trusted, _kSBXProfileNoInternet, _kSBXProfileNoNetwork,
3161 _kSBXProfileNoWrite, _kSBXProfileNoWriteExceptTemporary, _kSBXProfilePureComputation,
3162 _rootless_allows_task_for_pid, _rootless_apply, _rootless_apply_internal,
3163 _rootless_apply_relative, _rootless_check_datavault_flag,
3164 _rootless_check_restricted_flag, _rootless_check_trusted,
3165 _rootless_check_trusted_class, _rootless_check_trusted_fd,
3166 _rootless_convert_to_datavault, _rootless_manifest_free, _rootless_manifest_parse,
3167 _rootless_mkdir_datavault, _rootless_mkdir_nounlink, _rootless_mkdir_restricted,
3168 _rootless_preflight, _rootless_protected_volume, _rootless_register_trusted_storage_class,
3169 _rootless_restricted_environment, _rootless_suspend, _rootless_trusted_by_self_token,
3170 _rootless_verify_trusted_by_self_token, _sandbox_builtin_query,
3171 _sandbox_check, _sandbox_check_bulk, _sandbox_check_by_audit_token,
3172 _sandbox_check_by_reference, _sandbox_check_by_uniqueid, _sandbox_check_message_filter_integer,
3173 _sandbox_check_message_filter_string, _sandbox_consume_extension,
3174 _sandbox_consume_fs_extension, _sandbox_consume_mach_extension,
3175 _sandbox_container_path_for_audit_token, _sandbox_container_path_for_pid,
3176 _sandbox_enable_root_translation, _sandbox_extension_consume,
3177 _sandbox_extension_issue_file, _sandbox_extension_issue_file_to_process,
3178 _sandbox_extension_issue_file_to_process_by_pid, _sandbox_extension_issue_file_to_self,
3179 _sandbox_extension_issue_generic, _sandbox_extension_issue_generic_to_process,
3180 _sandbox_extension_issue_generic_to_process_by_pid, _sandbox_extension_issue_iokit_registry_entry_class,
3181 _sandbox_extension_issue_iokit_registry_entry_class_to_process,
3182 _sandbox_extension_issue_iokit_registry_entry_class_to_process_by_pid,
3183 _sandbox_extension_issue_iokit_user_client_class, _sandbox_extension_issue_mach,
3184 _sandbox_extension_issue_mach_to_process, _sandbox_extension_issue_mach_to_process_by_pid,
3185 _sandbox_extension_issue_posix_ipc, _sandbox_extension_reap,
3186 _sandbox_extension_release, _sandbox_extension_release_file,
3187 _sandbox_extension_update_file, _sandbox_free_error, _sandbox_init,
3188 _sandbox_init_from_pid, _sandbox_init_with_extensions, _sandbox_init_with_parameters,
3189 _sandbox_issue_extension, _sandbox_issue_fs_extension, _sandbox_issue_fs_rw_extension,
3190 _sandbox_issue_mach_extension, _sandbox_message_filter_query,
3191 _sandbox_message_filter_release, _sandbox_note, _sandbox_passthrough_access,
3192 _sandbox_proc_getcontainer, _sandbox_proc_getprofilename,
3193 _sandbox_query_approval_policy_for_path, _sandbox_query_user_intent_for_process_with_audit_token,
3194 _sandbox_reference_release, _sandbox_reference_retain_by_audit_token,
3195 _sandbox_release_fs_extension, _sandbox_requests_integrity_protection_for_preference_domain,
3196 _sandbox_set_container_path_for_application_group, _sandbox_set_container_path_for_application_group_with_persona,
3197 _sandbox_set_container_path_for_signing_id, _sandbox_set_container_path_for_signing_id_with_persona,
3198 _sandbox_spawnattrs_getcontainer, _sandbox_spawnattrs_getprofilename,
3199 _sandbox_spawnattrs_init, _sandbox_spawnattrs_setcontainer,
3200 _sandbox_spawnattrs_setprofilename, _sandbox_suspend, _sandbox_unsuspend ]
3201--- !tapi-tbd
3202tbd-version: 4
3203targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3204 arm64e-macos, arm64e-maccatalyst ]
3205uuids:
3206 - target: x86_64-macos
3207 value: 99B5FD99-1A8B-37C1-BD70-04990FA33B1C
3208 - target: x86_64-maccatalyst
3209 value: 99B5FD99-1A8B-37C1-BD70-04990FA33B1C
3210 - target: arm64-macos
3211 value: 00000000-0000-0000-0000-000000000000
3212 - target: arm64-maccatalyst
3213 value: 00000000-0000-0000-0000-000000000000
3214 - target: arm64e-macos
3215 value: 04EF7D20-ABBD-3DB1-B990-278887044735
3216 - target: arm64e-maccatalyst
3217 value: 04EF7D20-ABBD-3DB1-B990-278887044735
3218install-name: '/usr/lib/system/libsystem_secinit.dylib'
3219current-version: 87.60.1
3220parent-umbrella:
3221 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3222 arm64e-macos, arm64e-maccatalyst ]
3223 umbrella: System
3224exports:
3225 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
3226 arm64-macos, arm64-maccatalyst ]
3227 symbols: [ __libsecinit_initializer, _libsecinit_delete_all_data_container_content_for_current_user,
3228 _libsecinit_fileoperation_save, _libsecinit_fileoperation_set_attributes,
3229 _libsecinit_fileoperation_symlink ]
3230--- !tapi-tbd
3231tbd-version: 4
3232targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3233 arm64e-macos, arm64e-maccatalyst ]
3234uuids:
3235 - target: x86_64-macos
3236 value: 88F35AAC-746F-3176-81DF-49CE3D285636
3237 - target: x86_64-maccatalyst
3238 value: 88F35AAC-746F-3176-81DF-49CE3D285636
3239 - target: arm64-macos
3240 value: 00000000-0000-0000-0000-000000000000
3241 - target: arm64-maccatalyst
3242 value: 00000000-0000-0000-0000-000000000000
3243 - target: arm64e-macos
3244 value: CF9E7636-168A-36DD-95F0-6CA76B91D3DC
3245 - target: arm64e-maccatalyst
3246 value: CF9E7636-168A-36DD-95F0-6CA76B91D3DC
3247install-name: '/usr/lib/system/libsystem_symptoms.dylib'
3248parent-umbrella:
3249 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3250 arm64e-macos, arm64e-maccatalyst ]
3251 umbrella: System
3252exports:
3253 - targets: [ x86_64-macos, arm64e-macos, x86_64-maccatalyst, arm64e-maccatalyst,
3254 arm64-macos, arm64-maccatalyst ]
3255 symbols: [ __symptoms_daemon_fallback_initial_disposition, __symptoms_daemon_fallback_subseq_disposition,
3256 __symptoms_is_daemon_fallback_blacklisted, _symptom_framework_init,
3257 _symptom_framework_set_version, _symptom_new, _symptom_send,
3258 _symptom_send_immediate, _symptom_set_additional_qualifier,
3259 _symptom_set_qualifier ]
3260--- !tapi-tbd
3261tbd-version: 4
3262targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3263 arm64e-macos, arm64e-maccatalyst ]
3264uuids:
3265 - target: x86_64-macos
3266 value: 48C14376-626E-3C81-B0F5-7416E64580C7
3267 - target: x86_64-maccatalyst
3268 value: 48C14376-626E-3C81-B0F5-7416E64580C7
3269 - target: arm64-macos
3270 value: 00000000-0000-0000-0000-000000000000
3271 - target: arm64-maccatalyst
3272 value: 00000000-0000-0000-0000-000000000000
3273 - target: arm64e-macos
3274 value: D67123A1-A8BC-329C-BC76-830E95EBA1B3
3275 - target: arm64e-maccatalyst
3276 value: D67123A1-A8BC-329C-BC76-830E95EBA1B3
3277install-name: '/usr/lib/system/libsystem_trace.dylib'
3278current-version: 1277.50.1
3279parent-umbrella:
3280 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3281 arm64e-macos, arm64e-maccatalyst ]
3282 umbrella: System
3283exports:
3284 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
3285 arm64-macos, arm64-maccatalyst ]
3286 symbols: [ __libtrace_fork_child, __libtrace_init, __os_activity_create,
3287 __os_activity_current, __os_activity_initiate, __os_activity_initiate_f,
3288 __os_activity_label_useraction, __os_activity_none, __os_activity_set_breadcrumb,
3289 __os_activity_start, __os_activity_stream_entry_encode, __os_log_create,
3290 __os_log_debug, __os_log_debug_impl, __os_log_default, __os_log_disabled,
3291 __os_log_error, __os_log_error_impl, __os_log_fault, __os_log_fault_impl,
3292 __os_log_impl, __os_log_internal, __os_log_pack_fill, __os_log_pack_size,
3293 __os_log_preferences_compute, __os_log_preferences_load, __os_log_release,
3294 __os_log_set_nscf_formatter, __os_signpost_emit_impl, __os_signpost_emit_unreliably_impl,
3295 __os_signpost_emit_unreliably_with_name_impl, __os_signpost_emit_with_name_impl,
3296 __os_signpost_pack_fill, __os_signpost_pack_send, __os_state_request_for_pidlist,
3297 __os_trace_atm_diagnostic_config, __os_trace_basesystem_storage_available,
3298 __os_trace_calloc, __os_trace_commpage_compute, __os_trace_fdscandir_b,
3299 __os_trace_get_boot_uuid, __os_trace_get_image_info, __os_trace_get_mode_for_pid,
3300 __os_trace_get_times_now, __os_trace_getxattr_at, __os_trace_intprefsdir_path,
3301 __os_trace_is_development_build, __os_trace_log_simple, __os_trace_macho_for_each_slice,
3302 __os_trace_malloc, __os_trace_memdup, __os_trace_mmap, __os_trace_mmap_at,
3303 __os_trace_mmap_offset, __os_trace_mode_match_4tests, __os_trace_prefs_latest_version_4tests,
3304 __os_trace_prefsdir_path, __os_trace_read_file_at, __os_trace_read_plist_at,
3305 __os_trace_realloc, __os_trace_scandir_free_namelist, __os_trace_set_diagnostic_flags,
3306 __os_trace_set_mode_for_pid, __os_trace_strdup, __os_trace_sysprefsdir_path,
3307 __os_trace_update_with_datavolume_4launchd, __os_trace_with_buffer,
3308 __os_trace_write, __os_trace_writev, __os_trace_zalloc, _os_activity_apply,
3309 _os_activity_apply_f, _os_activity_diagnostic_for_pid, _os_activity_end,
3310 _os_activity_for_task_thread, _os_activity_for_thread, _os_activity_get_active,
3311 _os_activity_get_identifier, _os_activity_iterate_activities,
3312 _os_activity_iterate_breadcrumbs, _os_activity_iterate_messages,
3313 _os_activity_iterate_processes, _os_activity_messages_for_thread,
3314 _os_activity_scope_enter, _os_activity_scope_leave, _os_log_backtrace_copy_description,
3315 _os_log_backtrace_copy_serialized_buffer, _os_log_backtrace_create_from_buffer,
3316 _os_log_backtrace_create_from_current, _os_log_backtrace_create_from_pcs,
3317 _os_log_backtrace_create_from_return_address, _os_log_backtrace_destroy,
3318 _os_log_backtrace_get_frames, _os_log_backtrace_get_length,
3319 _os_log_backtrace_print_to_blob, _os_log_backtrace_serialize_to_blob,
3320 _os_log_create, _os_log_errors_count, _os_log_fault_default_callback,
3321 _os_log_faults_count, _os_log_fmt_compose, _os_log_fmt_convert_trace,
3322 _os_log_fmt_extract_pubdata, _os_log_fmt_get_plugin, _os_log_get_type,
3323 _os_log_is_debug_enabled, _os_log_is_enabled, _os_log_pack_compose,
3324 _os_log_pack_send, _os_log_pack_send_and_compose, _os_log_set_client_type,
3325 _os_log_set_enabled, _os_log_set_fault_callback, _os_log_shim_enabled,
3326 _os_log_shim_legacy_logging_enabled, _os_log_shim_with_CFString,
3327 _os_log_type_enabled, _os_log_with_args, _os_signpost_enabled,
3328 _os_signpost_id_generate, _os_signpost_id_make_with_pointer,
3329 _os_signpost_set_introspection_hook_4Perf, _os_state_add_handler,
3330 _os_state_remove_handler, _os_trace_debug_enabled, _os_trace_get_code,
3331 _os_trace_get_mode, _os_trace_get_type, _os_trace_info_enabled,
3332 _os_trace_set_mode ]
3333 objc-classes: [ OS_os_log ]
3334--- !tapi-tbd
3335tbd-version: 4
3336targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3337 arm64e-macos, arm64e-maccatalyst ]
3338uuids:
3339 - target: x86_64-macos
3340 value: C5792A9C-DF0F-3821-BC14-238A78462E8A
3341 - target: x86_64-maccatalyst
3342 value: C5792A9C-DF0F-3821-BC14-238A78462E8A
3343 - target: arm64-macos
3344 value: 00000000-0000-0000-0000-000000000000
3345 - target: arm64-maccatalyst
3346 value: 00000000-0000-0000-0000-000000000000
3347 - target: arm64e-macos
3348 value: 21A28401-C508-38BE-A7CF-C2A56AB3C311
3349 - target: arm64e-maccatalyst
3350 value: 21A28401-C508-38BE-A7CF-C2A56AB3C311
3351install-name: '/usr/lib/system/libunwind.dylib'
3352current-version: 200.10
3353parent-umbrella:
3354 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3355 arm64e-macos, arm64e-maccatalyst ]
3356 umbrella: System
3357exports:
3358 - targets: [ x86_64-maccatalyst, x86_64-macos ]
3359 symbols: [ '$ld$hide$os10.4$__Unwind_Backtrace', '$ld$hide$os10.4$__Unwind_DeleteException',
3360 '$ld$hide$os10.4$__Unwind_FindEnclosingFunction', '$ld$hide$os10.4$__Unwind_Find_FDE',
3361 '$ld$hide$os10.4$__Unwind_ForcedUnwind', '$ld$hide$os10.4$__Unwind_GetCFA',
3362 '$ld$hide$os10.4$__Unwind_GetDataRelBase', '$ld$hide$os10.4$__Unwind_GetGR',
3363 '$ld$hide$os10.4$__Unwind_GetIP', '$ld$hide$os10.4$__Unwind_GetIPInfo',
3364 '$ld$hide$os10.4$__Unwind_GetLanguageSpecificData', '$ld$hide$os10.4$__Unwind_GetRegionStart',
3365 '$ld$hide$os10.4$__Unwind_GetTextRelBase', '$ld$hide$os10.4$__Unwind_RaiseException',
3366 '$ld$hide$os10.4$__Unwind_Resume', '$ld$hide$os10.4$__Unwind_Resume_or_Rethrow',
3367 '$ld$hide$os10.4$__Unwind_SetGR', '$ld$hide$os10.4$__Unwind_SetIP',
3368 '$ld$hide$os10.4$___deregister_frame', '$ld$hide$os10.4$___deregister_frame_info',
3369 '$ld$hide$os10.4$___deregister_frame_info_bases', '$ld$hide$os10.4$___register_frame',
3370 '$ld$hide$os10.4$___register_frame_info', '$ld$hide$os10.4$___register_frame_info_bases',
3371 '$ld$hide$os10.4$___register_frame_info_table', '$ld$hide$os10.4$___register_frame_info_table_bases',
3372 '$ld$hide$os10.4$___register_frame_table', '$ld$hide$os10.5$__Unwind_Backtrace',
3373 '$ld$hide$os10.5$__Unwind_DeleteException', '$ld$hide$os10.5$__Unwind_FindEnclosingFunction',
3374 '$ld$hide$os10.5$__Unwind_Find_FDE', '$ld$hide$os10.5$__Unwind_ForcedUnwind',
3375 '$ld$hide$os10.5$__Unwind_GetCFA', '$ld$hide$os10.5$__Unwind_GetDataRelBase',
3376 '$ld$hide$os10.5$__Unwind_GetGR', '$ld$hide$os10.5$__Unwind_GetIP',
3377 '$ld$hide$os10.5$__Unwind_GetIPInfo', '$ld$hide$os10.5$__Unwind_GetLanguageSpecificData',
3378 '$ld$hide$os10.5$__Unwind_GetRegionStart', '$ld$hide$os10.5$__Unwind_GetTextRelBase',
3379 '$ld$hide$os10.5$__Unwind_RaiseException', '$ld$hide$os10.5$__Unwind_Resume',
3380 '$ld$hide$os10.5$__Unwind_Resume_or_Rethrow', '$ld$hide$os10.5$__Unwind_SetGR',
3381 '$ld$hide$os10.5$__Unwind_SetIP', '$ld$hide$os10.5$___deregister_frame',
3382 '$ld$hide$os10.5$___deregister_frame_info', '$ld$hide$os10.5$___deregister_frame_info_bases',
3383 '$ld$hide$os10.5$___register_frame', '$ld$hide$os10.5$___register_frame_info',
3384 '$ld$hide$os10.5$___register_frame_info_bases', '$ld$hide$os10.5$___register_frame_info_table',
3385 '$ld$hide$os10.5$___register_frame_info_table_bases', '$ld$hide$os10.5$___register_frame_table',
3386 '$ld$hide$os10.6$___deregister_frame_info', '$ld$hide$os10.6$___deregister_frame_info_bases',
3387 '$ld$hide$os10.6$___register_frame_info', '$ld$hide$os10.6$___register_frame_info_bases',
3388 '$ld$hide$os10.6$___register_frame_info_table', '$ld$hide$os10.6$___register_frame_info_table_bases',
3389 '$ld$hide$os10.6$___register_frame_table', ___deregister_frame_info,
3390 ___deregister_frame_info_bases, ___register_frame_info, ___register_frame_info_bases,
3391 ___register_frame_info_table, ___register_frame_info_table_bases,
3392 ___register_frame_table ]
3393 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
3394 arm64-macos, arm64-maccatalyst ]
3395 symbols: [ __Unwind_Backtrace, __Unwind_DeleteException, __Unwind_FindEnclosingFunction,
3396 __Unwind_Find_FDE, __Unwind_ForcedUnwind, __Unwind_GetCFA,
3397 __Unwind_GetDataRelBase, __Unwind_GetGR, __Unwind_GetIP, __Unwind_GetIPInfo,
3398 __Unwind_GetLanguageSpecificData, __Unwind_GetRegionStart,
3399 __Unwind_GetTextRelBase, __Unwind_RaiseException, __Unwind_Resume,
3400 __Unwind_Resume_or_Rethrow, __Unwind_SetGR, __Unwind_SetIP,
3401 ___deregister_frame, ___register_frame, ___unw_add_dynamic_fde,
3402 ___unw_remove_dynamic_fde, _unw_get_fpreg, _unw_get_proc_info,
3403 _unw_get_proc_name, _unw_get_reg, _unw_getcontext, _unw_init_local,
3404 _unw_is_fpreg, _unw_is_signal_frame, _unw_iterate_dwarf_unwind_cache,
3405 _unw_local_addr_space, _unw_regname, _unw_resume, _unw_set_fpreg,
3406 _unw_set_reg, _unw_step ]
3407--- !tapi-tbd
3408tbd-version: 4
3409targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3410 arm64e-macos, arm64e-maccatalyst ]
3411uuids:
3412 - target: x86_64-macos
3413 value: 003A027D-9CE3-3794-A319-88495844662D
3414 - target: x86_64-maccatalyst
3415 value: 003A027D-9CE3-3794-A319-88495844662D
3416 - target: arm64-macos
3417 value: 00000000-0000-0000-0000-000000000000
3418 - target: arm64-maccatalyst
3419 value: 00000000-0000-0000-0000-000000000000
3420 - target: arm64e-macos
3421 value: D87D7BAA-9E73-3A84-8247-3456B703C302
3422 - target: arm64e-maccatalyst
3423 value: D87D7BAA-9E73-3A84-8247-3456B703C302
3424install-name: '/usr/lib/system/libxpc.dylib'
3425current-version: 2038.40.38
3426parent-umbrella:
3427 - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
3428 arm64e-macos, arm64e-maccatalyst ]
3429 umbrella: System
3430exports:
3431 - targets: [ x86_64-maccatalyst, x86_64-macos, arm64e-maccatalyst, arm64e-macos,
3432 arm64-macos, arm64-maccatalyst ]
3433 symbols: [ _XPC_ACTIVITY_ALLOW_BATTERY, _XPC_ACTIVITY_APP_REFRESH, _XPC_ACTIVITY_CHECK_IN,
3434 _XPC_ACTIVITY_COMMUNICATES_WITH_PAIRED_DEVICE, _XPC_ACTIVITY_CPU_INTENSIVE,
3435 _XPC_ACTIVITY_DELAY, _XPC_ACTIVITY_DESIRED_MOTION_STATE, _XPC_ACTIVITY_DISK_INTENSIVE,
3436 _XPC_ACTIVITY_DO_IT_LATER, _XPC_ACTIVITY_DUET_ACTIVITY_SCHEDULER_DATA,
3437 _XPC_ACTIVITY_DUET_ATTRIBUTE_COST, _XPC_ACTIVITY_DUET_ATTRIBUTE_NAME,
3438 _XPC_ACTIVITY_DUET_ATTRIBUTE_VALUE, _XPC_ACTIVITY_DUET_RELATED_APPLICATIONS,
3439 _XPC_ACTIVITY_EXCLUSIVE, _XPC_ACTIVITY_EXPECTED_DURATION,
3440 _XPC_ACTIVITY_GRACE_PERIOD, _XPC_ACTIVITY_GROUP_CONCURRENCY_LIMIT,
3441 _XPC_ACTIVITY_GROUP_NAME, _XPC_ACTIVITY_INTERVAL, _XPC_ACTIVITY_INTERVAL_15_MIN,
3442 _XPC_ACTIVITY_INTERVAL_1_DAY, _XPC_ACTIVITY_INTERVAL_1_HOUR,
3443 _XPC_ACTIVITY_INTERVAL_1_MIN, _XPC_ACTIVITY_INTERVAL_30_MIN,
3444 _XPC_ACTIVITY_INTERVAL_4_HOURS, _XPC_ACTIVITY_INTERVAL_5_MIN,
3445 _XPC_ACTIVITY_INTERVAL_7_DAYS, _XPC_ACTIVITY_INTERVAL_8_HOURS,
3446 _XPC_ACTIVITY_MAY_REBOOT_DEVICE, _XPC_ACTIVITY_MEMORY_INTENSIVE,
3447 _XPC_ACTIVITY_MOTION_STATE_AUTOMOTIVE, _XPC_ACTIVITY_MOTION_STATE_AUTOMOTIVE_MOVING,
3448 _XPC_ACTIVITY_MOTION_STATE_AUTOMOTIVE_STATIONARY, _XPC_ACTIVITY_MOTION_STATE_CYCLING,
3449 _XPC_ACTIVITY_MOTION_STATE_RUNNING, _XPC_ACTIVITY_MOTION_STATE_STATIONARY,
3450 _XPC_ACTIVITY_MOTION_STATE_WALKING, _XPC_ACTIVITY_NETWORK_TRANSFER_BIDIRECTIONAL,
3451 _XPC_ACTIVITY_NETWORK_TRANSFER_DIRECTION, _XPC_ACTIVITY_NETWORK_TRANSFER_DIRECTION_DOWNLOAD,
3452 _XPC_ACTIVITY_NETWORK_TRANSFER_DIRECTION_UPLOAD, _XPC_ACTIVITY_NETWORK_TRANSFER_ENDPOINT,
3453 _XPC_ACTIVITY_NETWORK_TRANSFER_PARAMETERS, _XPC_ACTIVITY_NETWORK_TRANSFER_SIZE,
3454 _XPC_ACTIVITY_POST_INSTALL, _XPC_ACTIVITY_POWER_NAP, _XPC_ACTIVITY_PRIORITY,
3455 _XPC_ACTIVITY_PRIORITY_MAINTENANCE, _XPC_ACTIVITY_PRIORITY_UTILITY,
3456 _XPC_ACTIVITY_RANDOM_INITIAL_DELAY, _XPC_ACTIVITY_REPEATING,
3457 _XPC_ACTIVITY_REPLY_ENDPOINT, _XPC_ACTIVITY_REQUIRES_BUDDY_COMPLETE,
3458 _XPC_ACTIVITY_REQUIRES_CLASS_A, _XPC_ACTIVITY_REQUIRES_CLASS_B,
3459 _XPC_ACTIVITY_REQUIRES_CLASS_C, _XPC_ACTIVITY_REQUIRE_BATTERY_LEVEL,
3460 _XPC_ACTIVITY_REQUIRE_HDD_SPINNING, _XPC_ACTIVITY_REQUIRE_INEXPENSIVE_NETWORK_CONNECTIVITY,
3461 _XPC_ACTIVITY_REQUIRE_NETWORK_CONNECTIVITY, _XPC_ACTIVITY_REQUIRE_SCREEN_SLEEP,
3462 _XPC_ACTIVITY_REQUIRE_SIGNIFICANT_USER_INACTIVITY, _XPC_ACTIVITY_RUN_WHEN_APP_FOREGROUNDED,
3463 _XPC_ACTIVITY_SEQUENCE_NUMBER, _XPC_ACTIVITY_SHOULD_WAKE_DEVICE,
3464 _XPC_ACTIVITY_USER_REQUESTED_BACKUP_TASK, _XPC_ACTIVITY_USES_DUET_POWER_BUDGETING,
3465 _XPC_COALITION_INFO_KEY_BUNDLE_IDENTIFIER, _XPC_COALITION_INFO_KEY_CID,
3466 _XPC_COALITION_INFO_KEY_NAME, _XPC_COALITION_INFO_KEY_RESOURCE_USAGE_BLOB,
3467 __availability_version_check, __launch_job_routine, __launch_job_routine_async,
3468 __launch_msg2, __launch_service_stats_copy_4ppse_impl, __libxpc_initializer,
3469 __spawn_via_launchd, __system_ios_support_version_copy_string_sysctl,
3470 __system_version_copy_string_plist, __system_version_copy_string_sysctl,
3471 __system_version_fallback, __system_version_parse_string,
3472 __vproc_get_last_exit_status, __vproc_grab_subset, __vproc_kickstart_by_label,
3473 __vproc_log, __vproc_log_error, __vproc_logv, __vproc_pid_is_managed,
3474 __vproc_post_fork_ping, __vproc_send_signal_by_label, __vproc_set_global_on_demand,
3475 __vproc_standby_begin, __vproc_standby_count, __vproc_standby_end,
3476 __vproc_standby_timeout, __vproc_transaction_begin, __vproc_transaction_count,
3477 __vproc_transaction_count_for_pid, __vproc_transaction_end,
3478 __vproc_transaction_set_clean_callback, __vproc_transaction_try_exit,
3479 __vproc_transactions_enable, __vprocmgr_detach_from_console,
3480 __vprocmgr_getsocket, __vprocmgr_init, __vprocmgr_log_drain,
3481 __vprocmgr_log_forward, __vprocmgr_move_subset_to_user, __vprocmgr_switch_to_session,
3482 __xpc_bool_create_distinct, __xpc_bool_false, __xpc_bool_set_value,
3483 __xpc_bool_true, __xpc_connection_set_event_handler_f, __xpc_data_set_value,
3484 __xpc_dictionary_create_reply_with_port, __xpc_dictionary_extract_mach_send,
3485 __xpc_dictionary_extract_reply_msg_id, __xpc_dictionary_extract_reply_port,
3486 __xpc_dictionary_get_reply_msg_id, __xpc_dictionary_set_remote_connection,
3487 __xpc_dictionary_set_reply_msg_id, __xpc_double_set_value,
3488 __xpc_error_connection_interrupted, __xpc_error_connection_invalid,
3489 __xpc_error_key_description, __xpc_error_termination_imminent,
3490 __xpc_event_key_name, __xpc_event_key_stream_name, __xpc_fd_get_port,
3491 __xpc_int64_set_value, __xpc_payload_create_from_mach_msg,
3492 __xpc_pipe_handle_mig, __xpc_runtime_get_entitlements_data,
3493 __xpc_runtime_get_self_entitlements, __xpc_runtime_is_app_sandboxed,
3494 __xpc_service_last_xref_cancel, __xpc_service_routine, __xpc_shmem_get_mach_port,
3495 __xpc_spawnattr_binprefs_pack, __xpc_spawnattr_binprefs_size,
3496 __xpc_spawnattr_binprefs_unpack, __xpc_spawnattr_pack_string,
3497 __xpc_spawnattr_pack_string_fragment, __xpc_spawnattr_unpack_string,
3498 __xpc_spawnattr_unpack_strings, __xpc_string_set_value, __xpc_type_activity,
3499 __xpc_type_array, __xpc_type_base, __xpc_type_bool, __xpc_type_bundle,
3500 __xpc_type_connection, __xpc_type_data, __xpc_type_date, __xpc_type_dictionary,
3501 __xpc_type_double, __xpc_type_endpoint, __xpc_type_error,
3502 __xpc_type_fd, __xpc_type_file_transfer, __xpc_type_int64,
3503 __xpc_type_mach_recv, __xpc_type_mach_send, __xpc_type_null,
3504 __xpc_type_pipe, __xpc_type_pointer, __xpc_type_serializer,
3505 __xpc_type_service, __xpc_type_service_instance, __xpc_type_shmem,
3506 __xpc_type_string, __xpc_type_uint64, __xpc_type_uuid, __xpc_vtables,
3507 _bootstrap_check_in, _bootstrap_check_in2, _bootstrap_check_in3,
3508 _bootstrap_create_server, _bootstrap_create_service, _bootstrap_get_root,
3509 _bootstrap_info, _bootstrap_init, _bootstrap_look_up, _bootstrap_look_up2,
3510 _bootstrap_look_up3, _bootstrap_look_up_per_user, _bootstrap_lookup_children,
3511 _bootstrap_parent, _bootstrap_register, _bootstrap_register2,
3512 _bootstrap_status, _bootstrap_strerror, _bootstrap_subset,
3513 _bootstrap_unprivileged, _create_and_switch_to_per_session_launchd,
3514 _launch_activate_socket, _launch_add_external_service, _launch_bootout_user_service_4coresim,
3515 _launch_copy_busy_extension_instances, _launch_copy_endpoints_properties_for_pid,
3516 _launch_copy_extension_properties, _launch_copy_extension_properties_for_pid,
3517 _launch_copy_properties_for_pid_4assertiond, _launch_create_persona,
3518 _launch_data_alloc, _launch_data_array_get_count, _launch_data_array_get_index,
3519 _launch_data_array_set_index, _launch_data_copy, _launch_data_dict_get_count,
3520 _launch_data_dict_insert, _launch_data_dict_iterate, _launch_data_dict_lookup,
3521 _launch_data_dict_remove, _launch_data_free, _launch_data_get_bool,
3522 _launch_data_get_errno, _launch_data_get_fd, _launch_data_get_integer,
3523 _launch_data_get_machport, _launch_data_get_opaque, _launch_data_get_opaque_size,
3524 _launch_data_get_real, _launch_data_get_string, _launch_data_get_type,
3525 _launch_data_new_bool, _launch_data_new_errno, _launch_data_new_fd,
3526 _launch_data_new_integer, _launch_data_new_machport, _launch_data_new_opaque,
3527 _launch_data_new_real, _launch_data_new_string, _launch_data_pack,
3528 _launch_data_set_bool, _launch_data_set_errno, _launch_data_set_fd,
3529 _launch_data_set_integer, _launch_data_set_machport, _launch_data_set_opaque,
3530 _launch_data_set_real, _launch_data_set_string, _launch_data_unpack,
3531 _launch_destroy_persona, _launch_disable_directory, _launch_enable_directory,
3532 _launch_extension_check_in_live_4UIKit, _launch_extension_property_bundle_id,
3533 _launch_extension_property_host_bundle_id, _launch_extension_property_host_pid,
3534 _launch_extension_property_path, _launch_extension_property_pid,
3535 _launch_extension_property_version, _launch_extension_property_xpc_bundle,
3536 _launch_get_fd, _launch_get_service_enabled, _launch_get_system_service_enabled,
3537 _launch_msg, _launch_path_for_user_service_4coresim, _launch_perfcheck_property_endpoint_active,
3538 _launch_perfcheck_property_endpoint_event, _launch_perfcheck_property_endpoint_name,
3539 _launch_perfcheck_property_endpoint_needs_activation, _launch_perfcheck_property_endpoints,
3540 _launch_remove_external_service, _launch_service_instance_create,
3541 _launch_service_instance_remove, _launch_service_stats_disable_4ppse,
3542 _launch_service_stats_enable_4ppse, _launch_service_stats_is_enabled_4ppse,
3543 _launch_set_service_enabled, _launch_set_system_service_enabled,
3544 _launch_socket_service_check_in, _launch_version_for_user_service_4coresim,
3545 _launch_wait, _launchd_close, _launchd_fdopen, _launchd_getfd,
3546 _launchd_msg_recv, _launchd_msg_send, _load_launchd_jobs_at_loginwindow_prompt,
3547 _mpm_uncork_fork, _mpm_wait, _os_system_version_get_current_version,
3548 _os_system_version_get_ios_support_version, _os_system_version_sim_get_current_host_version,
3549 _os_transaction_copy_description, _os_transaction_create,
3550 _os_transaction_get_timestamp, _os_transaction_needs_more_time,
3551 _place_hold_on_real_loginwindow, _reboot2, _reboot3, _vproc_release,
3552 _vproc_retain, _vproc_standby_begin, _vproc_standby_end, _vproc_swap_complex,
3553 _vproc_swap_integer, _vproc_swap_string, _vproc_transaction_begin,
3554 _vproc_transaction_end, _vprocmgr_lookup_vproc, _xpc_activity_add_eligibility_changed_handler,
3555 _xpc_activity_copy_criteria, _xpc_activity_copy_dispatch_queue,
3556 _xpc_activity_copy_identifier, _xpc_activity_debug, _xpc_activity_defer_until_network_change,
3557 _xpc_activity_defer_until_percentage, _xpc_activity_get_percentage,
3558 _xpc_activity_get_state, _xpc_activity_list, _xpc_activity_register,
3559 _xpc_activity_remove_eligibility_changed_handler, _xpc_activity_run,
3560 _xpc_activity_set_completion_status, _xpc_activity_set_criteria,
3561 _xpc_activity_set_network_threshold, _xpc_activity_set_state,
3562 _xpc_activity_should_defer, _xpc_activity_unregister, _xpc_add_bundle,
3563 _xpc_add_bundles_for_domain, _xpc_array_append_value, _xpc_array_apply,
3564 _xpc_array_apply_f, _xpc_array_copy_mach_send, _xpc_array_create,
3565 _xpc_array_create_connection, _xpc_array_create_empty, _xpc_array_dup_fd,
3566 _xpc_array_get_array, _xpc_array_get_bool, _xpc_array_get_count,
3567 _xpc_array_get_data, _xpc_array_get_date, _xpc_array_get_dictionary,
3568 _xpc_array_get_double, _xpc_array_get_int64, _xpc_array_get_pointer,
3569 _xpc_array_get_string, _xpc_array_get_uint64, _xpc_array_get_uuid,
3570 _xpc_array_get_value, _xpc_array_set_bool, _xpc_array_set_connection,
3571 _xpc_array_set_data, _xpc_array_set_date, _xpc_array_set_double,
3572 _xpc_array_set_fd, _xpc_array_set_int64, _xpc_array_set_mach_send,
3573 _xpc_array_set_pointer, _xpc_array_set_string, _xpc_array_set_uint64,
3574 _xpc_array_set_uuid, _xpc_array_set_value, _xpc_atfork_child,
3575 _xpc_atfork_parent, _xpc_atfork_prepare, _xpc_binprefs_add,
3576 _xpc_binprefs_alloc, _xpc_binprefs_copy, _xpc_binprefs_copy_description,
3577 _xpc_binprefs_count, _xpc_binprefs_cpu_subtype, _xpc_binprefs_cpu_type,
3578 _xpc_binprefs_equal, _xpc_binprefs_init, _xpc_binprefs_is_noop,
3579 _xpc_binprefs_set_psattr, _xpc_bool_create, _xpc_bool_get_value,
3580 _xpc_bundle_copy_info_dictionary, _xpc_bundle_copy_resource_path,
3581 _xpc_bundle_copy_services, _xpc_bundle_create, _xpc_bundle_create_from_origin,
3582 _xpc_bundle_create_main, _xpc_bundle_get_error, _xpc_bundle_get_executable_path,
3583 _xpc_bundle_get_info_dictionary, _xpc_bundle_get_path, _xpc_bundle_get_property,
3584 _xpc_bundle_get_xpcservice_dictionary, _xpc_bundle_populate,
3585 _xpc_bundle_resolve, _xpc_bundle_resolve_on_queue, _xpc_bundle_resolve_sync,
3586 _xpc_coalition_copy_info, _xpc_coalition_history_pipe_async,
3587 _xpc_connection_activate, _xpc_connection_cancel, _xpc_connection_copy_bundle_id,
3588 _xpc_connection_copy_entitlement_value, _xpc_connection_create,
3589 _xpc_connection_create_from_endpoint, _xpc_connection_create_listener,
3590 _xpc_connection_create_mach_service, _xpc_connection_enable_sim2host_4sim,
3591 _xpc_connection_enable_termination_imminent_event, _xpc_connection_get_asid,
3592 _xpc_connection_get_audit_token, _xpc_connection_get_bs_type,
3593 _xpc_connection_get_context, _xpc_connection_get_egid, _xpc_connection_get_euid,
3594 _xpc_connection_get_instance, _xpc_connection_get_name, _xpc_connection_get_peer_instance,
3595 _xpc_connection_get_pid, _xpc_connection_is_extension, _xpc_connection_kill,
3596 _xpc_connection_resume, _xpc_connection_send_barrier, _xpc_connection_send_message,
3597 _xpc_connection_send_message_with_reply, _xpc_connection_send_message_with_reply_sync,
3598 _xpc_connection_send_notification, _xpc_connection_set_bootstrap,
3599 _xpc_connection_set_bs_type, _xpc_connection_set_context,
3600 _xpc_connection_set_event_channel, _xpc_connection_set_event_handler,
3601 _xpc_connection_set_finalizer_f, _xpc_connection_set_instance,
3602 _xpc_connection_set_instance_binpref, _xpc_connection_set_legacy,
3603 _xpc_connection_set_non_launching, _xpc_connection_set_oneshot_instance,
3604 _xpc_connection_set_privileged, _xpc_connection_set_qos_class_fallback,
3605 _xpc_connection_set_qos_class_floor, _xpc_connection_set_target_queue,
3606 _xpc_connection_set_target_uid, _xpc_connection_suspend, _xpc_copy,
3607 _xpc_copy_bootstrap, _xpc_copy_clean_description, _xpc_copy_code_signing_identity_for_token,
3608 _xpc_copy_debug_description, _xpc_copy_description, _xpc_copy_domain,
3609 _xpc_copy_entitlement_for_self, _xpc_copy_entitlement_for_token,
3610 _xpc_copy_entitlements_data_for_token, _xpc_copy_entitlements_for_pid,
3611 _xpc_copy_entitlements_for_self, _xpc_copy_event, _xpc_copy_event_entitlements,
3612 _xpc_copy_short_description, _xpc_create_from_plist, _xpc_create_from_plist_descriptor,
3613 _xpc_create_from_serialization, _xpc_create_from_serialization_with_ool,
3614 _xpc_create_reply_with_format, _xpc_create_reply_with_format_and_arguments,
3615 _xpc_create_with_format, _xpc_create_with_format_and_arguments,
3616 _xpc_data_create, _xpc_data_create_with_dispatch_data, _xpc_data_get_bytes,
3617 _xpc_data_get_bytes_ptr, _xpc_data_get_inline_max, _xpc_data_get_length,
3618 _xpc_date_create, _xpc_date_create_absolute, _xpc_date_create_from_current,
3619 _xpc_date_get_value, _xpc_date_get_value_absolute, _xpc_date_is_int64_range,
3620 _xpc_dictionary_apply, _xpc_dictionary_apply_f, _xpc_dictionary_copy_basic_description,
3621 _xpc_dictionary_copy_mach_send, _xpc_dictionary_create, _xpc_dictionary_create_connection,
3622 _xpc_dictionary_create_empty, _xpc_dictionary_create_reply,
3623 _xpc_dictionary_dup_fd, _xpc_dictionary_expects_reply, _xpc_dictionary_extract_mach_recv,
3624 _xpc_dictionary_get_array, _xpc_dictionary_get_audit_token,
3625 _xpc_dictionary_get_bool, _xpc_dictionary_get_connection,
3626 _xpc_dictionary_get_count, _xpc_dictionary_get_data, _xpc_dictionary_get_date,
3627 _xpc_dictionary_get_dictionary, _xpc_dictionary_get_double,
3628 _xpc_dictionary_get_int64, _xpc_dictionary_get_pointer, _xpc_dictionary_get_remote_connection,
3629 _xpc_dictionary_get_string, _xpc_dictionary_get_uint64, _xpc_dictionary_get_uuid,
3630 _xpc_dictionary_get_value, _xpc_dictionary_handoff_reply,
3631 _xpc_dictionary_handoff_reply_f, _xpc_dictionary_send_reply,
3632 _xpc_dictionary_set_bool, _xpc_dictionary_set_connection,
3633 _xpc_dictionary_set_data, _xpc_dictionary_set_date, _xpc_dictionary_set_double,
3634 _xpc_dictionary_set_fd, _xpc_dictionary_set_int64, _xpc_dictionary_set_mach_recv,
3635 _xpc_dictionary_set_mach_send, _xpc_dictionary_set_pointer,
3636 _xpc_dictionary_set_string, _xpc_dictionary_set_uint64, _xpc_dictionary_set_uuid,
3637 _xpc_dictionary_set_value, _xpc_double_create, _xpc_double_get_value,
3638 _xpc_endpoint_compare, _xpc_endpoint_copy_listener_port_4sim,
3639 _xpc_endpoint_create, _xpc_endpoint_create_bs_named, _xpc_endpoint_create_mach_port_4sim,
3640 _xpc_equal, _xpc_event_publisher_activate, _xpc_event_publisher_create,
3641 _xpc_event_publisher_fire, _xpc_event_publisher_fire_noboost,
3642 _xpc_event_publisher_fire_with_reply, _xpc_event_publisher_fire_with_reply_sync,
3643 _xpc_event_publisher_get_subscriber_asid, _xpc_event_publisher_set_error_handler,
3644 _xpc_event_publisher_set_handler, _xpc_event_publisher_set_initial_load_completed_handler_4remoted,
3645 _xpc_event_publisher_set_subscriber_keepalive, _xpc_event_stream_check_in,
3646 _xpc_event_stream_check_in2, _xpc_exit_reason_get_label, _xpc_extension_type_init,
3647 _xpc_fd_create, _xpc_fd_dup, _xpc_file_transfer_cancel, _xpc_file_transfer_copy_io,
3648 _xpc_file_transfer_create_with_fd, _xpc_file_transfer_create_with_path,
3649 _xpc_file_transfer_get_size, _xpc_file_transfer_get_transfer_id,
3650 _xpc_file_transfer_send_finished, _xpc_file_transfer_set_transport_writing_callbacks,
3651 _xpc_file_transfer_write_finished, _xpc_file_transfer_write_to_fd,
3652 _xpc_file_transfer_write_to_path, _xpc_generate_audit_token,
3653 _xpc_get_attachment_endpoint, _xpc_get_class4NSXPC, _xpc_get_event_name,
3654 _xpc_get_instance, _xpc_get_type, _xpc_handle_service, _xpc_handle_subservice,
3655 _xpc_hash, _xpc_impersonate_user, _xpc_init_services, _xpc_inspect_copy_description,
3656 _xpc_inspect_copy_description_local, _xpc_inspect_copy_short_description,
3657 _xpc_inspect_copy_short_description_local, _xpc_install_remote_hooks,
3658 _xpc_int64_create, _xpc_int64_get_value, _xpc_is_kind_of_xpc_object4NSXPC,
3659 _xpc_mach_recv_create, _xpc_mach_recv_extract_right, _xpc_mach_send_copy_right,
3660 _xpc_mach_send_create, _xpc_mach_send_create_with_disposition,
3661 _xpc_mach_send_get_right, _xpc_main, _xpc_make_serialization,
3662 _xpc_make_serialization_with_ool, _xpc_null_create, _xpc_pipe_create,
3663 _xpc_pipe_create_from_port, _xpc_pipe_invalidate, _xpc_pipe_receive,
3664 _xpc_pipe_routine, _xpc_pipe_routine_async, _xpc_pipe_routine_forward,
3665 _xpc_pipe_routine_reply, _xpc_pipe_routine_with_flags, _xpc_pipe_simpleroutine,
3666 _xpc_pipe_try_receive, _xpc_pointer_create, _xpc_pointer_get_value,
3667 _xpc_receive_mach_msg, _xpc_receive_remote_msg, _xpc_release,
3668 _xpc_retain, _xpc_service_attach, _xpc_service_create, _xpc_service_create_from_specifier,
3669 _xpc_service_get_rendezvous_token, _xpc_service_instance_dup2,
3670 _xpc_service_instance_get_context, _xpc_service_instance_get_host_pid,
3671 _xpc_service_instance_get_pid, _xpc_service_instance_get_type,
3672 _xpc_service_instance_is_configurable, _xpc_service_instance_run,
3673 _xpc_service_instance_set_binpref, _xpc_service_instance_set_context,
3674 _xpc_service_instance_set_cwd, _xpc_service_instance_set_endpoint,
3675 _xpc_service_instance_set_environment, _xpc_service_instance_set_finalizer_f,
3676 _xpc_service_instance_set_jetsam_properties, _xpc_service_instance_set_path,
3677 _xpc_service_instance_set_start_suspended, _xpc_service_kickstart,
3678 _xpc_service_set_attach_handler, _xpc_set_event, _xpc_set_event_state,
3679 _xpc_set_event_stream_handler, _xpc_set_event_with_flags,
3680 _xpc_set_idle_handler, _xpc_shmem_create, _xpc_shmem_create_readonly,
3681 _xpc_shmem_get_length, _xpc_shmem_map, _xpc_strerror, _xpc_string_create,
3682 _xpc_string_create_no_copy, _xpc_string_create_with_format,
3683 _xpc_string_create_with_format_and_arguments, _xpc_string_get_length,
3684 _xpc_string_get_string_ptr, _xpc_test_symbols_exported, _xpc_track_activity,
3685 _xpc_transaction_begin, _xpc_transaction_end, _xpc_transaction_exit_clean,
3686 _xpc_transaction_interrupt_clean_exit, _xpc_transactions_enable,
3687 _xpc_type_get_name, _xpc_uint64_create, _xpc_uint64_get_value,
3688 _xpc_uuid_create, _xpc_uuid_get_bytes ]
3689 objc-classes: [ OS_xpc_object ]
3690...
src/link/MachO.zig+5-3
......@@ -760,10 +760,9 @@ fn linkWithLLD(self: *MachO, comp: *Compilation) !void {
760760 }
761761
762762 // Assume ld64 default: -search_paths_first
763 // Look in each directory for a dylib (tbd), and then for archive
763 // Look in each directory for a dylib (next, tbd), and then for archive
764764 // TODO implement alternative: -search_dylibs_first
765 // TODO text-based API, or .tbd files.
766 const exts = &[_][]const u8{ "dylib", "a" };
765 const exts = &[_][]const u8{ "dylib", "tbd", "a" };
767766
768767 for (search_lib_names.items) |l_name| {
769768 var found = false;
......@@ -849,6 +848,9 @@ fn linkWithLLD(self: *MachO, comp: *Compilation) !void {
849848 try zld.link(positionals.items, full_out_path, .{
850849 .libs = libs.items,
851850 .rpaths = rpaths.items,
851 .libc_stub_path = try comp.zig_lib_directory.join(arena, &[_][]const u8{
852 "libc", "darwin", "libSystem.B.tbd",
853 }),
852854 });
853855
854856 break :outer;
src/link/MachO/Archive.zig+4-1
......@@ -235,7 +235,10 @@ pub fn parseObject(self: Archive, offset: u32) !*Object {
235235}
236236
237237pub fn isArchive(file: fs.File) !bool {
238 const magic = try file.reader().readBytesNoEof(Archive.SARMAG);
238 const magic = file.reader().readBytesNoEof(Archive.SARMAG) catch |err| switch (err) {
239 error.EndOfStream => return false,
240 else => |e| return e,
241 };
239242 try file.seekTo(0);
240243 return mem.eql(u8, &magic, Archive.ARMAG);
241244}
src/link/MachO/Dylib.zig+30-17
......@@ -1,6 +1,7 @@
11const Dylib = @This();
22
33const std = @import("std");
4const assert = std.debug.assert;
45const fs = std.fs;
56const log = std.log.scoped(.dylib);
67const macho = std.macho;
......@@ -27,7 +28,10 @@ id_cmd_index: ?u16 = null,
2728
2829id: ?Id = null,
2930
30symbols: std.StringArrayHashMapUnmanaged(*Symbol) = .{},
31/// Parsed symbol table represented as hash map of symbols'
32/// names. We can and should defer creating *Symbols until
33/// a symbol is referenced by an object file.
34symbols: std.StringArrayHashMapUnmanaged(void) = .{},
3135
3236pub const Id = struct {
3337 name: []const u8,
......@@ -50,9 +54,8 @@ pub fn deinit(self: *Dylib) void {
5054 }
5155 self.load_commands.deinit(self.allocator);
5256
53 for (self.symbols.values()) |value| {
54 value.deinit(self.allocator);
55 self.allocator.destroy(value);
57 for (self.symbols.keys()) |key| {
58 self.allocator.free(key);
5659 }
5760 self.symbols.deinit(self.allocator);
5861
......@@ -169,23 +172,33 @@ pub fn parseSymbols(self: *Dylib) !void {
169172 if (!(Symbol.isSect(sym) and Symbol.isExt(sym))) continue;
170173
171174 const name = try self.allocator.dupe(u8, sym_name);
172 const proxy = try self.allocator.create(Symbol.Proxy);
173 errdefer self.allocator.destroy(proxy);
174
175 proxy.* = .{
176 .base = .{
177 .@"type" = .proxy,
178 .name = name,
179 },
180 .dylib = self,
181 };
182
183 try self.symbols.putNoClobber(self.allocator, name, &proxy.base);
175 try self.symbols.putNoClobber(self.allocator, name, {});
184176 }
185177}
186178
187179pub fn isDylib(file: fs.File) !bool {
188 const header = try file.reader().readStruct(macho.mach_header_64);
180 const header = file.reader().readStruct(macho.mach_header_64) catch |err| switch (err) {
181 error.EndOfStream => return false,
182 else => |e| return e,
183 };
189184 try file.seekTo(0);
190185 return header.filetype == macho.MH_DYLIB;
191186}
187
188pub fn createProxy(self: *Dylib, sym_name: []const u8) !?*Symbol {
189 if (!self.symbols.contains(sym_name)) return null;
190
191 const name = try self.allocator.dupe(u8, sym_name);
192 const proxy = try self.allocator.create(Symbol.Proxy);
193 errdefer self.allocator.destroy(proxy);
194
195 proxy.* = .{
196 .base = .{
197 .@"type" = .proxy,
198 .name = name,
199 },
200 .file = .{ .dylib = self },
201 };
202
203 return &proxy.base;
204}
src/link/MachO/Object.zig+4-1
......@@ -535,7 +535,10 @@ pub fn parseDataInCode(self: *Object) !void {
535535}
536536
537537pub fn isObject(file: fs.File) !bool {
538 const header = try file.reader().readStruct(macho.mach_header_64);
538 const header = file.reader().readStruct(macho.mach_header_64) catch |err| switch (err) {
539 error.EndOfStream => return false,
540 else => |e| return e,
541 };
539542 try file.seekTo(0);
540543 return header.filetype == macho.MH_OBJECT;
541544}
src/link/MachO/Stub.zig created+130
......@@ -0,0 +1,130 @@
1const Stub = @This();
2
3const std = @import("std");
4const assert = std.debug.assert;
5const fs = std.fs;
6const log = std.log.scoped(.stub);
7const macho = std.macho;
8const mem = std.mem;
9
10const Allocator = mem.Allocator;
11const Symbol = @import("Symbol.zig");
12pub const LibStub = @import("../tapi.zig").LibStub;
13
14allocator: *Allocator,
15arch: ?std.Target.Cpu.Arch = null,
16lib_stub: ?LibStub = null,
17name: ?[]const u8 = null,
18
19ordinal: ?u16 = null,
20
21id: ?Id = null,
22
23/// Parsed symbol table represented as hash map of symbols'
24/// names. We can and should defer creating *Symbols until
25/// a symbol is referenced by an object file.
26symbols: std.StringArrayHashMapUnmanaged(void) = .{},
27
28pub const Id = struct {
29 name: []const u8,
30 timestamp: u32,
31 current_version: u32,
32 compatibility_version: u32,
33
34 pub fn deinit(id: *Id, allocator: *Allocator) void {
35 allocator.free(id.name);
36 }
37};
38
39pub fn init(allocator: *Allocator) Stub {
40 return .{ .allocator = allocator };
41}
42
43pub fn deinit(self: *Stub) void {
44 self.symbols.deinit(self.allocator);
45
46 if (self.lib_stub) |*lib_stub| {
47 lib_stub.deinit();
48 }
49
50 if (self.name) |name| {
51 self.allocator.free(name);
52 }
53
54 if (self.id) |*id| {
55 id.deinit(self.allocator);
56 }
57}
58
59pub fn parse(self: *Stub) !void {
60 const lib_stub = self.lib_stub orelse return error.EmptyStubFile;
61 if (lib_stub.inner.len == 0) return error.EmptyStubFile;
62
63 log.debug("parsing shared library from stub '{s}'", .{self.name.?});
64
65 const umbrella_lib = lib_stub.inner[0];
66 self.id = .{
67 .name = try self.allocator.dupe(u8, umbrella_lib.install_name),
68 // TODO parse from the stub
69 .timestamp = 2,
70 .current_version = 0,
71 .compatibility_version = 0,
72 };
73
74 const target_string: []const u8 = switch (self.arch.?) {
75 .aarch64 => "arm64-macos",
76 .x86_64 => "x86_64-macos",
77 else => unreachable,
78 };
79
80 for (lib_stub.inner) |stub| {
81 if (!hasTarget(stub.targets, target_string)) continue;
82
83 if (stub.exports) |exports| {
84 for (exports) |exp| {
85 if (!hasTarget(exp.targets, target_string)) continue;
86
87 for (exp.symbols) |sym_name| {
88 if (self.symbols.contains(sym_name)) continue;
89 try self.symbols.putNoClobber(self.allocator, sym_name, {});
90 }
91 }
92 }
93
94 if (stub.reexports) |reexports| {
95 for (reexports) |reexp| {
96 if (!hasTarget(reexp.targets, target_string)) continue;
97
98 for (reexp.symbols) |sym_name| {
99 if (self.symbols.contains(sym_name)) continue;
100 try self.symbols.putNoClobber(self.allocator, sym_name, {});
101 }
102 }
103 }
104 }
105}
106
107fn hasTarget(targets: []const []const u8, target: []const u8) bool {
108 for (targets) |t| {
109 if (mem.eql(u8, t, target)) return true;
110 }
111 return false;
112}
113
114pub fn createProxy(self: *Stub, sym_name: []const u8) !?*Symbol {
115 if (!self.symbols.contains(sym_name)) return null;
116
117 const name = try self.allocator.dupe(u8, sym_name);
118 const proxy = try self.allocator.create(Symbol.Proxy);
119 errdefer self.allocator.destroy(proxy);
120
121 proxy.* = .{
122 .base = .{
123 .@"type" = .proxy,
124 .name = name,
125 },
126 .file = .{ .stub = self },
127 };
128
129 return &proxy.base;
130}
src/link/MachO/Symbol.zig+15-2
......@@ -7,6 +7,7 @@ const mem = std.mem;
77const Allocator = mem.Allocator;
88const Dylib = @import("Dylib.zig");
99const Object = @import("Object.zig");
10const Stub = @import("Stub.zig");
1011
1112pub const Type = enum {
1213 regular,
......@@ -84,10 +85,22 @@ pub const Regular = struct {
8485pub const Proxy = struct {
8586 base: Symbol,
8687
87 /// Dylib where to locate this symbol.
88 dylib: ?*Dylib = null,
88 /// Dylib or stub where to locate this symbol.
89 /// null means self-reference.
90 file: ?union(enum) {
91 dylib: *Dylib,
92 stub: *Stub,
93 } = null,
8994
9095 pub const base_type: Symbol.Type = .proxy;
96
97 pub fn dylibOrdinal(proxy: *Proxy) u16 {
98 const file = proxy.file orelse return 0;
99 return switch (file) {
100 .dylib => |dylib| dylib.ordinal.?,
101 .stub => |stub| stub.ordinal.?,
102 };
103 }
91104};
92105
93106pub const Unresolved = struct {
src/link/MachO/Zld.zig+223-133
......@@ -17,6 +17,7 @@ const Archive = @import("Archive.zig");
1717const CodeSignature = @import("CodeSignature.zig");
1818const Dylib = @import("Dylib.zig");
1919const Object = @import("Object.zig");
20const Stub = @import("Stub.zig");
2021const Symbol = @import("Symbol.zig");
2122const Trie = @import("Trie.zig");
2223
......@@ -37,6 +38,10 @@ stack_size: u64 = 0,
3738objects: std.ArrayListUnmanaged(*Object) = .{},
3839archives: std.ArrayListUnmanaged(*Archive) = .{},
3940dylibs: std.ArrayListUnmanaged(*Dylib) = .{},
41lib_stubs: std.ArrayListUnmanaged(*Stub) = .{},
42
43libsystem_stub_index: ?u16 = null,
44next_dylib_ordinal: u16 = 1,
4045
4146load_commands: std.ArrayListUnmanaged(LoadCommand) = .{},
4247
......@@ -49,7 +54,6 @@ dyld_info_cmd_index: ?u16 = null,
4954symtab_cmd_index: ?u16 = null,
5055dysymtab_cmd_index: ?u16 = null,
5156dylinker_cmd_index: ?u16 = null,
52libsystem_cmd_index: ?u16 = null,
5357data_in_code_cmd_index: ?u16 = null,
5458function_starts_cmd_index: ?u16 = null,
5559main_cmd_index: ?u16 = null,
......@@ -153,9 +157,20 @@ pub fn deinit(self: *Zld) void {
153157 }
154158 self.dylibs.deinit(self.allocator);
155159
160 for (self.lib_stubs.items) |stub| {
161 stub.deinit();
162 self.allocator.destroy(stub);
163 }
164 self.lib_stubs.deinit(self.allocator);
165
166 for (self.imports.values()) |proxy| {
167 proxy.deinit(self.allocator);
168 self.allocator.destroy(proxy);
169 }
170 self.imports.deinit(self.allocator);
171
156172 self.tentatives.deinit(self.allocator);
157173 self.globals.deinit(self.allocator);
158 self.imports.deinit(self.allocator);
159174 self.unresolved.deinit(self.allocator);
160175 self.strtab.deinit(self.allocator);
161176
......@@ -181,6 +196,7 @@ pub fn closeFiles(self: Zld) void {
181196const LinkArgs = struct {
182197 libs: []const []const u8,
183198 rpaths: []const []const u8,
199 libc_stub_path: []const u8,
184200};
185201
186202pub fn link(self: *Zld, files: []const []const u8, out_path: []const u8, args: LinkArgs) !void {
......@@ -222,6 +238,7 @@ pub fn link(self: *Zld, files: []const []const u8, out_path: []const u8, args: L
222238 try self.addRpaths(args.rpaths);
223239 try self.parseInputFiles(files);
224240 try self.parseLibs(args.libs);
241 try self.parseLibSystem(args.libc_stub_path);
225242 try self.resolveSymbols();
226243 try self.resolveStubsAndGotEntries();
227244 try self.updateMetadata();
......@@ -241,14 +258,18 @@ fn parseInputFiles(self: *Zld, files: []const []const u8) !void {
241258 object,
242259 archive,
243260 dylib,
261 stub,
262 },
263 origin: union {
264 file: fs.File,
265 stub: Stub.LibStub,
244266 },
245 file: fs.File,
246267 name: []const u8,
247268 };
248269 var classified = std.ArrayList(Input).init(self.allocator);
249270 defer classified.deinit();
250271
251 // First, classify input files: object, archive or dylib.
272 // First, classify input files: object, archive, dylib or stub (tbd).
252273 for (files) |file_name| {
253274 const file = try fs.cwd().openFile(file_name, .{});
254275 const full_path = full_path: {
......@@ -261,7 +282,7 @@ fn parseInputFiles(self: *Zld, files: []const []const u8) !void {
261282 if (!(try Object.isObject(file))) break :try_object;
262283 try classified.append(.{
263284 .kind = .object,
264 .file = file,
285 .origin = .{ .file = file },
265286 .name = full_path,
266287 });
267288 continue;
......@@ -271,7 +292,7 @@ fn parseInputFiles(self: *Zld, files: []const []const u8) !void {
271292 if (!(try Archive.isArchive(file))) break :try_archive;
272293 try classified.append(.{
273294 .kind = .archive,
274 .file = file,
295 .origin = .{ .file = file },
275296 .name = full_path,
276297 });
277298 continue;
......@@ -281,9 +302,22 @@ fn parseInputFiles(self: *Zld, files: []const []const u8) !void {
281302 if (!(try Dylib.isDylib(file))) break :try_dylib;
282303 try classified.append(.{
283304 .kind = .dylib,
284 .file = file,
305 .origin = .{ .file = file },
306 .name = full_path,
307 });
308 continue;
309 }
310
311 try_stub: {
312 var lib_stub = Stub.LibStub.loadFromFile(self.allocator, file) catch {
313 break :try_stub;
314 };
315 try classified.append(.{
316 .kind = .stub,
317 .origin = .{ .stub = lib_stub },
285318 .name = full_path,
286319 });
320 file.close();
287321 continue;
288322 }
289323
......@@ -301,7 +335,8 @@ fn parseInputFiles(self: *Zld, files: []const []const u8) !void {
301335 object.* = Object.init(self.allocator);
302336 object.arch = self.arch.?;
303337 object.name = input.name;
304 object.file = input.file;
338 object.file = input.origin.file;
339
305340 try object.parse();
306341 try self.objects.append(self.allocator, object);
307342 },
......@@ -312,7 +347,8 @@ fn parseInputFiles(self: *Zld, files: []const []const u8) !void {
312347 archive.* = Archive.init(self.allocator);
313348 archive.arch = self.arch.?;
314349 archive.name = input.name;
315 archive.file = input.file;
350 archive.file = input.origin.file;
351
316352 try archive.parse();
317353 try self.archives.append(self.allocator, archive);
318354 },
......@@ -323,27 +359,22 @@ fn parseInputFiles(self: *Zld, files: []const []const u8) !void {
323359 dylib.* = Dylib.init(self.allocator);
324360 dylib.arch = self.arch.?;
325361 dylib.name = input.name;
326 dylib.file = input.file;
362 dylib.file = input.origin.file;
327363
328 const ordinal = @intCast(u16, self.dylibs.items.len);
329 dylib.ordinal = ordinal + 2; // TODO +2 since 1 is reserved for libSystem
330
331 // TODO Defer parsing of the dylibs until they are actually needed
332364 try dylib.parse();
333365 try self.dylibs.append(self.allocator, dylib);
366 },
367 .stub => {
368 const stub = try self.allocator.create(Stub);
369 errdefer self.allocator.destroy(stub);
334370
335 // Add LC_LOAD_DYLIB command
336 const dylib_id = dylib.id orelse unreachable;
337 var dylib_cmd = try createLoadDylibCommand(
338 self.allocator,
339 dylib_id.name,
340 dylib_id.timestamp,
341 dylib_id.current_version,
342 dylib_id.compatibility_version,
343 );
344 errdefer dylib_cmd.deinit(self.allocator);
345
346 try self.load_commands.append(self.allocator, .{ .Dylib = dylib_cmd });
371 stub.* = Stub.init(self.allocator);
372 stub.arch = self.arch.?;
373 stub.name = input.name;
374 stub.lib_stub = input.origin.stub;
375
376 try stub.parse();
377 try self.lib_stubs.append(self.allocator, stub);
347378 },
348379 }
349380 }
......@@ -362,42 +393,79 @@ fn parseLibs(self: *Zld, libs: []const []const u8) !void {
362393 dylib.name = try self.allocator.dupe(u8, lib);
363394 dylib.file = file;
364395
365 const ordinal = @intCast(u16, self.dylibs.items.len);
366 dylib.ordinal = ordinal + 2; // TODO +2 since 1 is reserved for libSystem
367
368 // TODO Defer parsing of the dylibs until they are actually needed
369396 try dylib.parse();
370397 try self.dylibs.append(self.allocator, dylib);
371
372 // Add LC_LOAD_DYLIB command
373 const dylib_id = dylib.id orelse unreachable;
374 var dylib_cmd = try createLoadDylibCommand(
375 self.allocator,
376 dylib_id.name,
377 dylib_id.timestamp,
378 dylib_id.current_version,
379 dylib_id.compatibility_version,
380 );
381 errdefer dylib_cmd.deinit(self.allocator);
382
383 try self.load_commands.append(self.allocator, .{ .Dylib = dylib_cmd });
384 } else if (try Archive.isArchive(file)) {
385 const archive = try self.allocator.create(Archive);
386 errdefer self.allocator.destroy(archive);
387
388 archive.* = Archive.init(self.allocator);
389 archive.arch = self.arch.?;
390 archive.name = try self.allocator.dupe(u8, lib);
391 archive.file = file;
392 try archive.parse();
393 try self.archives.append(self.allocator, archive);
394398 } else {
395 file.close();
396 log.warn("unknown filetype for a library: '{s}'", .{lib});
399 // Try tbd stub file next.
400 if (Stub.LibStub.loadFromFile(self.allocator, file)) |lib_stub| {
401 const stub = try self.allocator.create(Stub);
402 errdefer self.allocator.destroy(stub);
403
404 stub.* = Stub.init(self.allocator);
405 stub.arch = self.arch.?;
406 stub.name = try self.allocator.dupe(u8, lib);
407 stub.lib_stub = lib_stub;
408
409 try stub.parse();
410 try self.lib_stubs.append(self.allocator, stub);
411 } else |_| {
412 // TODO this entire logic has to be cleaned up.
413 try file.seekTo(0);
414
415 if (try Archive.isArchive(file)) {
416 const archive = try self.allocator.create(Archive);
417 errdefer self.allocator.destroy(archive);
418
419 archive.* = Archive.init(self.allocator);
420 archive.arch = self.arch.?;
421 archive.name = try self.allocator.dupe(u8, lib);
422 archive.file = file;
423
424 try archive.parse();
425 try self.archives.append(self.allocator, archive);
426 } else {
427 file.close();
428 log.warn("unknown filetype for a library: '{s}'", .{lib});
429 }
430 }
397431 }
398432 }
399433}
400434
435fn parseLibSystem(self: *Zld, libc_stub_path: []const u8) !void {
436 const file = try fs.cwd().openFile(libc_stub_path, .{});
437 defer file.close();
438
439 var lib_stub = try Stub.LibStub.loadFromFile(self.allocator, file);
440
441 const stub = try self.allocator.create(Stub);
442 errdefer self.allocator.destroy(stub);
443
444 stub.* = Stub.init(self.allocator);
445 stub.arch = self.arch.?;
446 stub.name = try self.allocator.dupe(u8, libc_stub_path);
447 stub.lib_stub = lib_stub;
448
449 try stub.parse();
450
451 self.libsystem_stub_index = @intCast(u16, self.lib_stubs.items.len);
452 try self.lib_stubs.append(self.allocator, stub);
453
454 // Add LC_LOAD_DYLIB load command.
455 stub.ordinal = self.next_dylib_ordinal;
456 const dylib_id = stub.id orelse unreachable;
457 var dylib_cmd = try createLoadDylibCommand(
458 self.allocator,
459 dylib_id.name,
460 dylib_id.timestamp,
461 dylib_id.current_version,
462 dylib_id.compatibility_version,
463 );
464 errdefer dylib_cmd.deinit(self.allocator);
465 try self.load_commands.append(self.allocator, .{ .Dylib = dylib_cmd });
466 self.next_dylib_ordinal += 1;
467}
468
401469fn mapAndUpdateSections(
402470 self: *Zld,
403471 object: *Object,
......@@ -1814,9 +1882,8 @@ fn resolveSymbols(self: *Zld) !void {
18141882 next_sym += 1;
18151883 }
18161884 }
1885
18171886 // Third pass, resolve symbols in dynamic libraries.
1818 // TODO Implement libSystem as a hard-coded library, or ship with
1819 // a libSystem.B.tbd definition file?
18201887 var unresolved = std.ArrayList(*Symbol).init(self.allocator);
18211888 defer unresolved.deinit();
18221889
......@@ -1824,61 +1891,109 @@ fn resolveSymbols(self: *Zld) !void {
18241891 for (self.unresolved.values()) |value| {
18251892 unresolved.appendAssumeCapacity(value);
18261893 }
1827 self.unresolved.clearAndFree(self.allocator);
1828
1829 var has_undefined = false;
1830 while (unresolved.popOrNull()) |undef| {
1831 var found = false;
1832 for (self.dylibs.items) |dylib| {
1833 const proxy = dylib.symbols.get(undef.name) orelse continue;
1834 try self.imports.putNoClobber(self.allocator, proxy.name, proxy);
1835 undef.alias = proxy;
1836 found = true;
1837 }
1838
1839 if (!found) {
1840 // TODO we currently hardcode all unresolved symbols to libSystem
1841 const proxy = try self.allocator.create(Symbol.Proxy);
1842 errdefer self.allocator.destroy(proxy);
1894 self.unresolved.clearRetainingCapacity();
1895
1896 var referenced = std.AutoHashMap(union(enum) {
1897 dylib: *Dylib,
1898 stub: *Stub,
1899 }, void).init(self.allocator);
1900 defer referenced.deinit();
1901
1902 loop: while (unresolved.popOrNull()) |undef| {
1903 const proxy = self.imports.get(undef.name) orelse outer: {
1904 const proxy = inner: {
1905 for (self.dylibs.items) |dylib| {
1906 const proxy = (try dylib.createProxy(undef.name)) orelse continue;
1907 try referenced.put(.{ .dylib = dylib }, {});
1908 break :inner proxy;
1909 }
1910 for (self.lib_stubs.items) |stub, i| {
1911 const proxy = (try stub.createProxy(undef.name)) orelse continue;
1912 if (self.libsystem_stub_index.? != @intCast(u16, i)) {
1913 // LibSystem gets its load command separately.
1914 try referenced.put(.{ .stub = stub }, {});
1915 }
1916 break :inner proxy;
1917 }
1918 if (mem.eql(u8, undef.name, "___dso_handle")) {
1919 // TODO this is just a temp patch until I work out what to actually
1920 // do with ___dso_handle and __mh_execute_header symbols which are
1921 // synthetically created by the linker on macOS.
1922 const name = try self.allocator.dupe(u8, undef.name);
1923 const proxy = try self.allocator.create(Symbol.Proxy);
1924 errdefer self.allocator.destroy(proxy);
1925 proxy.* = .{
1926 .base = .{
1927 .@"type" = .proxy,
1928 .name = name,
1929 },
1930 .file = null,
1931 };
1932 break :inner &proxy.base;
1933 }
18431934
1844 proxy.* = .{
1845 .base = .{
1846 .@"type" = .proxy,
1847 .name = try self.allocator.dupe(u8, undef.name),
1848 },
1849 .dylib = null, // TODO null means libSystem
1935 self.unresolved.putAssumeCapacityNoClobber(undef.name, undef);
1936 continue :loop;
18501937 };
18511938
1852 try self.imports.putNoClobber(self.allocator, proxy.base.name, &proxy.base);
1853 undef.alias = &proxy.base;
1939 try self.imports.putNoClobber(self.allocator, proxy.name, proxy);
1940 break :outer proxy;
1941 };
1942 undef.alias = proxy;
1943 }
1944
1945 // Add LC_LOAD_DYLIB load command for each referenced dylib/stub.
1946 var it = referenced.iterator();
1947 while (it.next()) |key| {
1948 var dylib_cmd = blk: {
1949 switch (key.key_ptr.*) {
1950 .dylib => |dylib| {
1951 dylib.ordinal = self.next_dylib_ordinal;
1952 const dylib_id = dylib.id orelse unreachable;
1953 break :blk try createLoadDylibCommand(
1954 self.allocator,
1955 dylib_id.name,
1956 dylib_id.timestamp,
1957 dylib_id.current_version,
1958 dylib_id.compatibility_version,
1959 );
1960 },
1961 .stub => |stub| {
1962 stub.ordinal = self.next_dylib_ordinal;
1963 const dylib_id = stub.id orelse unreachable;
1964 break :blk try createLoadDylibCommand(
1965 self.allocator,
1966 dylib_id.name,
1967 dylib_id.timestamp,
1968 dylib_id.current_version,
1969 dylib_id.compatibility_version,
1970 );
1971 },
1972 }
1973 };
1974 errdefer dylib_cmd.deinit(self.allocator);
1975 try self.load_commands.append(self.allocator, .{ .Dylib = dylib_cmd });
1976 self.next_dylib_ordinal += 1;
1977 }
18541978
1855 // log.err("undefined reference to symbol '{s}'", .{undef.name});
1856 // log.err(" | referenced in {s}", .{
1857 // undef.cast(Symbol.Unresolved).?.file.name.?,
1858 // });
1859 // has_undefined = true;
1979 if (self.unresolved.count() > 0) {
1980 for (self.unresolved.values()) |undef| {
1981 log.err("undefined reference to symbol '{s}'", .{undef.name});
1982 log.err(" | referenced in {s}", .{
1983 undef.cast(Symbol.Unresolved).?.file.name.?,
1984 });
18601985 }
1861 }
18621986
1863 if (has_undefined) return error.UndefinedSymbolReference;
1987 return error.UndefinedSymbolReference;
1988 }
18641989
18651990 // Finally put dyld_stub_binder as an Import
1866 const dyld_stub_binder = try self.allocator.create(Symbol.Proxy);
1867 errdefer self.allocator.destroy(dyld_stub_binder);
1868
1869 dyld_stub_binder.* = .{
1870 .base = .{
1871 .@"type" = .proxy,
1872 .name = try self.allocator.dupe(u8, "dyld_stub_binder"),
1873 },
1874 .dylib = null, // TODO null means libSystem
1991 const libsystem_stub = self.lib_stubs.items[self.libsystem_stub_index.?];
1992 const proxy = (try libsystem_stub.createProxy("dyld_stub_binder")) orelse {
1993 log.err("undefined reference to symbol 'dyld_stub_binder'", .{});
1994 return error.UndefinedSymbolReference;
18751995 };
1876
1877 try self.imports.putNoClobber(
1878 self.allocator,
1879 dyld_stub_binder.base.name,
1880 &dyld_stub_binder.base,
1881 );
1996 try self.imports.putNoClobber(self.allocator, proxy.name, proxy);
18821997}
18831998
18841999fn resolveStubsAndGotEntries(self: *Zld) !void {
......@@ -2437,15 +2552,6 @@ fn populateMetadata(self: *Zld) !void {
24372552 try self.load_commands.append(self.allocator, .{ .Dylinker = dylinker_cmd });
24382553 }
24392554
2440 if (self.libsystem_cmd_index == null) {
2441 self.libsystem_cmd_index = @intCast(u16, self.load_commands.items.len);
2442
2443 var dylib_cmd = try createLoadDylibCommand(self.allocator, mem.spanZ(LIB_SYSTEM_PATH), 2, 0, 0);
2444 errdefer dylib_cmd.deinit(self.allocator);
2445
2446 try self.load_commands.append(self.allocator, .{ .Dylib = dylib_cmd });
2447 }
2448
24492555 if (self.main_cmd_index == null) {
24502556 self.main_cmd_index = @intCast(u16, self.load_commands.items.len);
24512557 try self.load_commands.append(self.allocator, .{
......@@ -2746,14 +2852,10 @@ fn writeBindInfoTable(self: *Zld) !void {
27462852
27472853 for (self.got_entries.items) |sym| {
27482854 if (sym.cast(Symbol.Proxy)) |proxy| {
2749 const dylib_ordinal = ordinal: {
2750 const dylib = proxy.dylib orelse break :ordinal 1; // TODO embedded libSystem
2751 break :ordinal dylib.ordinal.?;
2752 };
27532855 try pointers.append(.{
27542856 .offset = base_offset + proxy.base.got_index.? * @sizeOf(u64),
27552857 .segment_id = segment_id,
2756 .dylib_ordinal = dylib_ordinal,
2858 .dylib_ordinal = proxy.dylibOrdinal(),
27572859 .name = proxy.base.name,
27582860 });
27592861 }
......@@ -2768,15 +2870,11 @@ fn writeBindInfoTable(self: *Zld) !void {
27682870
27692871 const sym = self.imports.get("__tlv_bootstrap") orelse unreachable;
27702872 const proxy = sym.cast(Symbol.Proxy) orelse unreachable;
2771 const dylib_ordinal = ordinal: {
2772 const dylib = proxy.dylib orelse break :ordinal 1; // TODO embedded libSystem
2773 break :ordinal dylib.ordinal.?;
2774 };
27752873
27762874 try pointers.append(.{
27772875 .offset = base_offset,
27782876 .segment_id = segment_id,
2779 .dylib_ordinal = dylib_ordinal,
2877 .dylib_ordinal = proxy.dylibOrdinal(),
27802878 .name = proxy.base.name,
27812879 });
27822880 }
......@@ -2813,15 +2911,10 @@ fn writeLazyBindInfoTable(self: *Zld) !void {
28132911
28142912 for (self.stubs.items) |sym| {
28152913 const proxy = sym.cast(Symbol.Proxy) orelse unreachable;
2816 const dylib_ordinal = ordinal: {
2817 const dylib = proxy.dylib orelse break :ordinal 1; // TODO embedded libSystem
2818 break :ordinal dylib.ordinal.?;
2819 };
2820
28212914 pointers.appendAssumeCapacity(.{
28222915 .offset = base_offset + sym.stubs_index.? * @sizeOf(u64),
28232916 .segment_id = segment_id,
2824 .dylib_ordinal = dylib_ordinal,
2917 .dylib_ordinal = proxy.dylibOrdinal(),
28252918 .name = sym.name,
28262919 });
28272920 }
......@@ -3128,15 +3221,12 @@ fn writeSymbolTable(self: *Zld) !void {
31283221 defer undefs.deinit();
31293222
31303223 for (self.imports.values()) |sym| {
3131 const ordinal = ordinal: {
3132 const dylib = sym.cast(Symbol.Proxy).?.dylib orelse break :ordinal 1; // TODO handle libSystem
3133 break :ordinal dylib.ordinal.?;
3134 };
3224 const proxy = sym.cast(Symbol.Proxy) orelse unreachable;
31353225 try undefs.append(.{
31363226 .n_strx = try self.makeString(sym.name),
31373227 .n_type = macho.N_UNDF | macho.N_EXT,
31383228 .n_sect = 0,
3139 .n_desc = (ordinal * macho.N_SYMBOL_RESOLVER) | macho.REFERENCE_FLAG_UNDEFINED_NON_LAZY,
3229 .n_desc = (proxy.dylibOrdinal() * macho.N_SYMBOL_RESOLVER) | macho.REFERENCE_FLAG_UNDEFINED_NON_LAZY,
31403230 .n_value = 0,
31413231 });
31423232 }
src/link/tapi.zig created+79
......@@ -0,0 +1,79 @@
1const std = @import("std");
2const fs = std.fs;
3const mem = std.mem;
4const log = std.log.scoped(.tapi);
5
6const Allocator = mem.Allocator;
7const Yaml = @import("tapi/yaml.zig").Yaml;
8
9pub const LibStub = struct {
10 /// Underlying memory for stub's contents.
11 yaml: Yaml,
12
13 /// Typed contents of the tbd file.
14 inner: []Tbd,
15
16 const Tbd = struct {
17 tbd_version: u3,
18 targets: []const []const u8,
19 uuids: []const struct {
20 target: []const u8,
21 value: []const u8,
22 },
23 install_name: []const u8,
24 current_version: ?union(enum) {
25 string: []const u8,
26 float: f64,
27 int: u64,
28 },
29 reexported_libraries: ?[]const struct {
30 targets: []const []const u8,
31 libraries: []const []const u8,
32 },
33 parent_umbrella: ?[]const struct {
34 targets: []const []const u8,
35 umbrella: []const u8,
36 },
37 exports: ?[]const struct {
38 targets: []const []const u8,
39 symbols: []const []const u8,
40 },
41 reexports: ?[]const struct {
42 targets: []const []const u8,
43 symbols: []const []const u8,
44 },
45 allowable_clients: ?[]const struct {
46 targets: []const []const u8,
47 clients: []const []const u8,
48 },
49 objc_classes: ?[]const []const u8,
50 };
51
52 pub fn loadFromFile(allocator: *Allocator, file: fs.File) !LibStub {
53 const source = try file.readToEndAlloc(allocator, std.math.maxInt(u32));
54 defer allocator.free(source);
55
56 var lib_stub = LibStub{
57 .yaml = try Yaml.load(allocator, source),
58 .inner = undefined,
59 };
60
61 lib_stub.inner = lib_stub.yaml.parse([]Tbd) catch |err| blk: {
62 switch (err) {
63 error.TypeMismatch => {
64 // TODO clean this up.
65 var out = try lib_stub.yaml.arena.allocator.alloc(Tbd, 1);
66 out[0] = try lib_stub.yaml.parse(Tbd);
67 break :blk out;
68 },
69 else => |e| return e,
70 }
71 };
72
73 return lib_stub;
74 }
75
76 pub fn deinit(self: *LibStub) void {
77 self.yaml.deinit();
78 }
79};
src/link/tapi/Tokenizer.zig created+439
......@@ -0,0 +1,439 @@
1const Tokenizer = @This();
2
3const std = @import("std");
4const log = std.log.scoped(.tapi);
5const testing = std.testing;
6
7buffer: []const u8,
8index: usize = 0,
9
10pub const Token = struct {
11 id: Id,
12 start: usize,
13 end: usize,
14 // Count of spaces/tabs.
15 // Only active for .Space and .Tab tokens.
16 count: ?usize = null,
17
18 pub const Id = enum {
19 Eof,
20
21 NewLine,
22 DocStart, // ---
23 DocEnd, // ...
24 SeqItemInd, // -
25 MapValueInd, // :
26 FlowMapStart, // {
27 FlowMapEnd, // }
28 FlowSeqStart, // [
29 FlowSeqEnd, // ]
30
31 Comma,
32 Space,
33 Tab,
34 Comment, // #
35 Alias, // *
36 Anchor, // &
37 Tag, // !
38 SingleQuote, // '
39 DoubleQuote, // "
40
41 Literal,
42 };
43};
44
45pub const TokenIndex = usize;
46
47pub const TokenIterator = struct {
48 buffer: []const Token,
49 pos: TokenIndex = 0,
50
51 pub fn next(self: *TokenIterator) Token {
52 const token = self.buffer[self.pos];
53 self.pos += 1;
54 return token;
55 }
56
57 pub fn peek(self: TokenIterator) ?Token {
58 if (self.pos >= self.buffer.len) return null;
59 return self.buffer[self.pos];
60 }
61
62 pub fn reset(self: *TokenIterator) void {
63 self.pos = 0;
64 }
65
66 pub fn seekTo(self: *TokenIterator, pos: TokenIndex) void {
67 self.pos = pos;
68 }
69
70 pub fn seekBy(self: *TokenIterator, offset: isize) void {
71 const new_pos = @bitCast(isize, self.pos) + offset;
72 if (new_pos < 0) {
73 self.pos = 0;
74 } else {
75 self.pos = @intCast(usize, new_pos);
76 }
77 }
78};
79
80pub fn next(self: *Tokenizer) Token {
81 var result = Token{
82 .id = .Eof,
83 .start = self.index,
84 .end = undefined,
85 };
86
87 var state: union(enum) {
88 Start,
89 NewLine,
90 Space: usize,
91 Tab: usize,
92 Hyphen: usize,
93 Dot: usize,
94 Literal,
95 } = .Start;
96
97 while (self.index < self.buffer.len) : (self.index += 1) {
98 const c = self.buffer[self.index];
99 switch (state) {
100 .Start => switch (c) {
101 ' ' => {
102 state = .{ .Space = 1 };
103 },
104 '\t' => {
105 state = .{ .Tab = 1 };
106 },
107 '\n' => {
108 result.id = .NewLine;
109 self.index += 1;
110 break;
111 },
112 '\r' => {
113 state = .NewLine;
114 },
115 '-' => {
116 state = .{ .Hyphen = 1 };
117 },
118 '.' => {
119 state = .{ .Dot = 1 };
120 },
121 ',' => {
122 result.id = .Comma;
123 self.index += 1;
124 break;
125 },
126 '#' => {
127 result.id = .Comment;
128 self.index += 1;
129 break;
130 },
131 '*' => {
132 result.id = .Alias;
133 self.index += 1;
134 break;
135 },
136 '&' => {
137 result.id = .Anchor;
138 self.index += 1;
139 break;
140 },
141 '!' => {
142 result.id = .Tag;
143 self.index += 1;
144 break;
145 },
146 '\'' => {
147 result.id = .SingleQuote;
148 self.index += 1;
149 break;
150 },
151 '"' => {
152 result.id = .DoubleQuote;
153 self.index += 1;
154 break;
155 },
156 '[' => {
157 result.id = .FlowSeqStart;
158 self.index += 1;
159 break;
160 },
161 ']' => {
162 result.id = .FlowSeqEnd;
163 self.index += 1;
164 break;
165 },
166 ':' => {
167 result.id = .MapValueInd;
168 self.index += 1;
169 break;
170 },
171 '{' => {
172 result.id = .FlowMapStart;
173 self.index += 1;
174 break;
175 },
176 '}' => {
177 result.id = .FlowMapEnd;
178 self.index += 1;
179 break;
180 },
181 else => {
182 state = .Literal;
183 },
184 },
185 .Space => |*count| switch (c) {
186 ' ' => {
187 count.* += 1;
188 },
189 else => {
190 result.id = .Space;
191 result.count = count.*;
192 break;
193 },
194 },
195 .Tab => |*count| switch (c) {
196 ' ' => {
197 count.* += 1;
198 },
199 else => {
200 result.id = .Tab;
201 result.count = count.*;
202 break;
203 },
204 },
205 .NewLine => switch (c) {
206 '\n' => {
207 result.id = .NewLine;
208 self.index += 1;
209 break;
210 },
211 else => {}, // TODO this should be an error condition
212 },
213 .Hyphen => |*count| switch (c) {
214 ' ' => {
215 result.id = .SeqItemInd;
216 self.index += 1;
217 break;
218 },
219 '-' => {
220 count.* += 1;
221
222 if (count.* == 3) {
223 result.id = .DocStart;
224 self.index += 1;
225 break;
226 }
227 },
228 else => {
229 state = .Literal;
230 },
231 },
232 .Dot => |*count| switch (c) {
233 '.' => {
234 count.* += 1;
235
236 if (count.* == 3) {
237 result.id = .DocEnd;
238 self.index += 1;
239 break;
240 }
241 },
242 else => {
243 state = .Literal;
244 },
245 },
246 .Literal => switch (c) {
247 '\r', '\n', ' ', '\'', '"', ',', ':', ']', '}' => {
248 result.id = .Literal;
249 break;
250 },
251 else => {
252 result.id = .Literal;
253 },
254 },
255 }
256 }
257
258 if (state == .Literal and result.id == .Eof) {
259 result.id = .Literal;
260 }
261
262 result.end = self.index;
263
264 log.debug("{any}", .{result});
265 log.debug(" | {s}", .{self.buffer[result.start..result.end]});
266
267 return result;
268}
269
270fn testExpected(source: []const u8, expected: []const Token.Id) !void {
271 var tokenizer = Tokenizer{
272 .buffer = source,
273 };
274
275 for (expected) |exp| {
276 const token = tokenizer.next();
277 try testing.expectEqual(exp, token.id);
278 }
279}
280
281test "empty doc" {
282 try testExpected("", &[_]Token.Id{.Eof});
283}
284
285test "empty doc with explicit markers" {
286 try testExpected(
287 \\---
288 \\...
289 , &[_]Token.Id{
290 .DocStart, .NewLine, .DocEnd, .Eof,
291 });
292}
293
294test "sequence of values" {
295 try testExpected(
296 \\- 0
297 \\- 1
298 \\- 2
299 , &[_]Token.Id{
300 .SeqItemInd,
301 .Literal,
302 .NewLine,
303 .SeqItemInd,
304 .Literal,
305 .NewLine,
306 .SeqItemInd,
307 .Literal,
308 .Eof,
309 });
310}
311
312test "sequence of sequences" {
313 try testExpected(
314 \\- [ val1, val2]
315 \\- [val3, val4 ]
316 , &[_]Token.Id{
317 .SeqItemInd,
318 .FlowSeqStart,
319 .Space,
320 .Literal,
321 .Comma,
322 .Space,
323 .Literal,
324 .FlowSeqEnd,
325 .NewLine,
326 .SeqItemInd,
327 .FlowSeqStart,
328 .Literal,
329 .Comma,
330 .Space,
331 .Literal,
332 .Space,
333 .FlowSeqEnd,
334 .Eof,
335 });
336}
337
338test "mappings" {
339 try testExpected(
340 \\key1: value1
341 \\key2: value2
342 , &[_]Token.Id{
343 .Literal,
344 .MapValueInd,
345 .Space,
346 .Literal,
347 .NewLine,
348 .Literal,
349 .MapValueInd,
350 .Space,
351 .Literal,
352 .Eof,
353 });
354}
355
356test "inline mapped sequence of values" {
357 try testExpected(
358 \\key : [ val1,
359 \\ val2 ]
360 , &[_]Token.Id{
361 .Literal,
362 .Space,
363 .MapValueInd,
364 .Space,
365 .FlowSeqStart,
366 .Space,
367 .Literal,
368 .Comma,
369 .Space,
370 .NewLine,
371 .Space,
372 .Literal,
373 .Space,
374 .FlowSeqEnd,
375 .Eof,
376 });
377}
378
379test "part of tdb" {
380 try testExpected(
381 \\--- !tapi-tbd
382 \\tbd-version: 4
383 \\targets: [ x86_64-macos ]
384 \\
385 \\uuids:
386 \\ - target: x86_64-macos
387 \\ value: F86CC732-D5E4-30B5-AA7D-167DF5EC2708
388 \\
389 \\install-name: '/usr/lib/libSystem.B.dylib'
390 \\...
391 , &[_]Token.Id{
392 .DocStart,
393 .Space,
394 .Tag,
395 .Literal,
396 .NewLine,
397 .Literal,
398 .MapValueInd,
399 .Space,
400 .Literal,
401 .NewLine,
402 .Literal,
403 .MapValueInd,
404 .Space,
405 .FlowSeqStart,
406 .Space,
407 .Literal,
408 .Space,
409 .FlowSeqEnd,
410 .NewLine,
411 .NewLine,
412 .Literal,
413 .MapValueInd,
414 .NewLine,
415 .Space,
416 .SeqItemInd,
417 .Literal,
418 .MapValueInd,
419 .Space,
420 .Literal,
421 .NewLine,
422 .Space,
423 .Literal,
424 .MapValueInd,
425 .Space,
426 .Literal,
427 .NewLine,
428 .NewLine,
429 .Literal,
430 .MapValueInd,
431 .Space,
432 .SingleQuote,
433 .Literal,
434 .SingleQuote,
435 .NewLine,
436 .DocEnd,
437 .Eof,
438 });
439}
src/link/tapi/parse.zig created+713
......@@ -0,0 +1,713 @@
1const std = @import("std");
2const assert = std.debug.assert;
3const log = std.log.scoped(.tapi);
4const mem = std.mem;
5const testing = std.testing;
6
7const Allocator = mem.Allocator;
8const Tokenizer = @import("Tokenizer.zig");
9const Token = Tokenizer.Token;
10const TokenIndex = Tokenizer.TokenIndex;
11const TokenIterator = Tokenizer.TokenIterator;
12
13pub const ParseError = error{
14 MalformedYaml,
15 NestedDocuments,
16 UnexpectedTag,
17 UnexpectedEof,
18 UnexpectedToken,
19 Unhandled,
20} || Allocator.Error;
21
22pub const Node = struct {
23 tag: Tag,
24 tree: *const Tree,
25
26 pub const Tag = enum {
27 doc,
28 map,
29 list,
30 value,
31 };
32
33 pub fn cast(self: *const Node, comptime T: type) ?*const T {
34 if (self.tag != T.base_tag) {
35 return null;
36 }
37 return @fieldParentPtr(T, "base", self);
38 }
39
40 pub fn deinit(self: *Node, allocator: *Allocator) void {
41 switch (self.tag) {
42 .doc => @fieldParentPtr(Node.Doc, "base", self).deinit(allocator),
43 .map => @fieldParentPtr(Node.Map, "base", self).deinit(allocator),
44 .list => @fieldParentPtr(Node.List, "base", self).deinit(allocator),
45 .value => @fieldParentPtr(Node.Value, "base", self).deinit(allocator),
46 }
47 }
48
49 pub fn format(
50 self: *const Node,
51 comptime fmt: []const u8,
52 options: std.fmt.FormatOptions,
53 writer: anytype,
54 ) !void {
55 return switch (self.tag) {
56 .doc => @fieldParentPtr(Node.Doc, "base", self).format(fmt, options, writer),
57 .map => @fieldParentPtr(Node.Map, "base", self).format(fmt, options, writer),
58 .list => @fieldParentPtr(Node.List, "base", self).format(fmt, options, writer),
59 .value => @fieldParentPtr(Node.Value, "base", self).format(fmt, options, writer),
60 };
61 }
62
63 pub const Doc = struct {
64 base: Node = Node{ .tag = Tag.doc, .tree = undefined },
65 start: ?TokenIndex = null,
66 end: ?TokenIndex = null,
67 directive: ?TokenIndex = null,
68 value: ?*Node = null,
69
70 pub const base_tag: Node.Tag = .doc;
71
72 pub fn deinit(self: *Doc, allocator: *Allocator) void {
73 if (self.value) |node| {
74 node.deinit(allocator);
75 allocator.destroy(node);
76 }
77 }
78
79 pub fn format(
80 self: *const Doc,
81 comptime fmt: []const u8,
82 options: std.fmt.FormatOptions,
83 writer: anytype,
84 ) !void {
85 _ = fmt;
86 _ = options;
87 if (self.directive) |id| {
88 try std.fmt.format(writer, "{{ ", .{});
89 const directive = self.base.tree.tokens[id];
90 try std.fmt.format(writer, ".directive = {s}, ", .{
91 self.base.tree.source[directive.start..directive.end],
92 });
93 }
94 if (self.value) |node| {
95 try std.fmt.format(writer, "{}", .{node});
96 }
97 if (self.directive != null) {
98 try std.fmt.format(writer, " }}", .{});
99 }
100 }
101 };
102
103 pub const Map = struct {
104 base: Node = Node{ .tag = Tag.map, .tree = undefined },
105 start: ?TokenIndex = null,
106 end: ?TokenIndex = null,
107 values: std.ArrayListUnmanaged(Entry) = .{},
108
109 pub const base_tag: Node.Tag = .map;
110
111 pub const Entry = struct {
112 key: TokenIndex,
113 value: *Node,
114 };
115
116 pub fn deinit(self: *Map, allocator: *Allocator) void {
117 for (self.values.items) |entry| {
118 entry.value.deinit(allocator);
119 allocator.destroy(entry.value);
120 }
121 self.values.deinit(allocator);
122 }
123
124 pub fn format(
125 self: *const Map,
126 comptime fmt: []const u8,
127 options: std.fmt.FormatOptions,
128 writer: anytype,
129 ) !void {
130 _ = fmt;
131 _ = options;
132 try std.fmt.format(writer, "{{ ", .{});
133 for (self.values.items) |entry| {
134 const key = self.base.tree.tokens[entry.key];
135 try std.fmt.format(writer, "{s} => {}, ", .{
136 self.base.tree.source[key.start..key.end],
137 entry.value,
138 });
139 }
140 return std.fmt.format(writer, " }}", .{});
141 }
142 };
143
144 pub const List = struct {
145 base: Node = Node{ .tag = Tag.list, .tree = undefined },
146 start: ?TokenIndex = null,
147 end: ?TokenIndex = null,
148 values: std.ArrayListUnmanaged(*Node) = .{},
149
150 pub const base_tag: Node.Tag = .list;
151
152 pub fn deinit(self: *List, allocator: *Allocator) void {
153 for (self.values.items) |node| {
154 node.deinit(allocator);
155 allocator.destroy(node);
156 }
157 self.values.deinit(allocator);
158 }
159
160 pub fn format(
161 self: *const List,
162 comptime fmt: []const u8,
163 options: std.fmt.FormatOptions,
164 writer: anytype,
165 ) !void {
166 _ = fmt;
167 _ = options;
168 try std.fmt.format(writer, "[ ", .{});
169 for (self.values.items) |node| {
170 try std.fmt.format(writer, "{}, ", .{node});
171 }
172 return std.fmt.format(writer, " ]", .{});
173 }
174 };
175
176 pub const Value = struct {
177 base: Node = Node{ .tag = Tag.value, .tree = undefined },
178 start: ?TokenIndex = null,
179 end: ?TokenIndex = null,
180
181 pub const base_tag: Node.Tag = .value;
182
183 pub fn deinit(self: *Value, allocator: *Allocator) void {
184 _ = self;
185 _ = allocator;
186 }
187
188 pub fn format(
189 self: *const Value,
190 comptime fmt: []const u8,
191 options: std.fmt.FormatOptions,
192 writer: anytype,
193 ) !void {
194 _ = fmt;
195 _ = options;
196 const start = self.base.tree.tokens[self.start.?];
197 const end = self.base.tree.tokens[self.end.?];
198 return std.fmt.format(writer, "{s}", .{
199 self.base.tree.source[start.start..end.end],
200 });
201 }
202 };
203};
204
205pub const Tree = struct {
206 allocator: *Allocator,
207 source: []const u8,
208 tokens: []Token,
209 docs: std.ArrayListUnmanaged(*Node) = .{},
210
211 pub fn init(allocator: *Allocator) Tree {
212 return .{
213 .allocator = allocator,
214 .source = undefined,
215 .tokens = undefined,
216 };
217 }
218
219 pub fn deinit(self: *Tree) void {
220 self.allocator.free(self.tokens);
221 for (self.docs.items) |doc| {
222 doc.deinit(self.allocator);
223 self.allocator.destroy(doc);
224 }
225 self.docs.deinit(self.allocator);
226 }
227
228 pub fn parse(self: *Tree, source: []const u8) !void {
229 var tokenizer = Tokenizer{ .buffer = source };
230 var tokens = std.ArrayList(Token).init(self.allocator);
231 errdefer tokens.deinit();
232
233 while (true) {
234 const token = tokenizer.next();
235 try tokens.append(token);
236 if (token.id == .Eof) break;
237 }
238
239 self.source = source;
240 self.tokens = tokens.toOwnedSlice();
241
242 var it = TokenIterator{ .buffer = self.tokens };
243 var parser = Parser{
244 .allocator = self.allocator,
245 .tree = self,
246 .token_it = &it,
247 };
248 defer parser.deinit();
249
250 try parser.scopes.append(self.allocator, .{
251 .indent = 0,
252 });
253
254 while (true) {
255 if (parser.token_it.peek() == null) return;
256 const pos = parser.token_it.pos;
257 const token = parser.token_it.next();
258
259 log.debug("Next token: {}, {}", .{ pos, token });
260
261 switch (token.id) {
262 .Space, .Comment, .NewLine => {},
263 .Eof => break,
264 else => {
265 const doc = try parser.doc(pos);
266 try self.docs.append(self.allocator, &doc.base);
267 },
268 }
269 }
270 }
271};
272
273const Parser = struct {
274 allocator: *Allocator,
275 tree: *Tree,
276 token_it: *TokenIterator,
277 scopes: std.ArrayListUnmanaged(Scope) = .{},
278
279 const Scope = struct {
280 indent: usize,
281 };
282
283 fn deinit(self: *Parser) void {
284 self.scopes.deinit(self.allocator);
285 }
286
287 fn doc(self: *Parser, start: TokenIndex) ParseError!*Node.Doc {
288 const node = try self.allocator.create(Node.Doc);
289 errdefer self.allocator.destroy(node);
290 node.* = .{
291 .start = start,
292 };
293 node.base.tree = self.tree;
294
295 self.token_it.seekTo(start);
296
297 log.debug("Doc start: {}, {}", .{ start, self.tree.tokens[start] });
298
299 const explicit_doc: bool = if (self.eatToken(.DocStart)) |_| explicit_doc: {
300 if (self.eatToken(.Tag)) |_| {
301 node.directive = try self.expectToken(.Literal);
302 }
303 _ = try self.expectToken(.NewLine);
304 break :explicit_doc true;
305 } else false;
306
307 while (true) {
308 const pos = self.token_it.pos;
309 const token = self.token_it.next();
310
311 log.debug("Next token: {}, {}", .{ pos, token });
312
313 switch (token.id) {
314 .Tag => {
315 return error.UnexpectedTag;
316 },
317 .Literal, .SingleQuote, .DoubleQuote => {
318 _ = try self.expectToken(.MapValueInd);
319 const map_node = try self.map(pos);
320 node.value = &map_node.base;
321 },
322 .SeqItemInd => {
323 const list_node = try self.list(pos);
324 node.value = &list_node.base;
325 },
326 .FlowSeqStart => {
327 const list_node = try self.list_bracketed(pos);
328 node.value = &list_node.base;
329 },
330 .DocEnd => {
331 if (explicit_doc) break;
332 return error.UnexpectedToken;
333 },
334 .DocStart, .Eof => {
335 self.token_it.seekBy(-1);
336 break;
337 },
338 else => {
339 return error.UnexpectedToken;
340 },
341 }
342 }
343
344 node.end = self.token_it.pos - 1;
345
346 log.debug("Doc end: {}, {}", .{ node.end.?, self.tree.tokens[node.end.?] });
347
348 return node;
349 }
350
351 fn map(self: *Parser, start: TokenIndex) ParseError!*Node.Map {
352 const node = try self.allocator.create(Node.Map);
353 errdefer self.allocator.destroy(node);
354 node.* = .{
355 .start = start,
356 };
357 node.base.tree = self.tree;
358
359 self.token_it.seekTo(start);
360
361 log.debug("Map start: {}, {}", .{ start, self.tree.tokens[start] });
362 log.debug("Current scope: {}", .{self.scopes.items[self.scopes.items.len - 1]});
363
364 while (true) {
365 // Parse key.
366 const key_pos = self.token_it.pos;
367 const key = self.token_it.next();
368 switch (key.id) {
369 .Literal => {},
370 else => {
371 self.token_it.seekBy(-1);
372 break;
373 },
374 }
375
376 log.debug("Map key: {}, '{s}'", .{ key, self.tree.source[key.start..key.end] });
377
378 // Separator
379 _ = try self.expectToken(.MapValueInd);
380 self.eatCommentsAndSpace();
381
382 // Parse value.
383 const value: *Node = value: {
384 if (self.eatToken(.NewLine)) |_| {
385 // Explicit, complex value such as list or map.
386 try self.openScope();
387 const value_pos = self.token_it.pos;
388 const value = self.token_it.next();
389 switch (value.id) {
390 .Literal, .SingleQuote, .DoubleQuote => {
391 // Assume nested map.
392 const map_node = try self.map(value_pos);
393 break :value &map_node.base;
394 },
395 .SeqItemInd => {
396 // Assume list of values.
397 const list_node = try self.list(value_pos);
398 break :value &list_node.base;
399 },
400 else => {
401 log.err("{}", .{key});
402 return error.Unhandled;
403 },
404 }
405 } else {
406 const value_pos = self.token_it.pos;
407 const value = self.token_it.next();
408 switch (value.id) {
409 .Literal, .SingleQuote, .DoubleQuote => {
410 // Assume leaf value.
411 const leaf_node = try self.leaf_value(value_pos);
412 break :value &leaf_node.base;
413 },
414 .FlowSeqStart => {
415 const list_node = try self.list_bracketed(value_pos);
416 break :value &list_node.base;
417 },
418 else => {
419 log.err("{}", .{key});
420 return error.Unhandled;
421 },
422 }
423 }
424 };
425 log.debug("Map value: {}", .{value});
426
427 try node.values.append(self.allocator, .{
428 .key = key_pos,
429 .value = value,
430 });
431
432 if (self.eatToken(.NewLine)) |_| {
433 if (try self.closeScope()) {
434 break;
435 }
436 }
437 }
438
439 node.end = self.token_it.pos - 1;
440
441 log.debug("Map end: {}, {}", .{ node.end.?, self.tree.tokens[node.end.?] });
442
443 return node;
444 }
445
446 fn list(self: *Parser, start: TokenIndex) ParseError!*Node.List {
447 const node = try self.allocator.create(Node.List);
448 errdefer self.allocator.destroy(node);
449 node.* = .{
450 .start = start,
451 };
452 node.base.tree = self.tree;
453
454 self.token_it.seekTo(start);
455
456 log.debug("List start: {}, {}", .{ start, self.tree.tokens[start] });
457 log.debug("Current scope: {}", .{self.scopes.items[self.scopes.items.len - 1]});
458
459 while (true) {
460 _ = self.eatToken(.SeqItemInd) orelse {
461 _ = try self.closeScope();
462 break;
463 };
464 self.eatCommentsAndSpace();
465
466 const pos = self.token_it.pos;
467 const token = self.token_it.next();
468 const value: *Node = value: {
469 switch (token.id) {
470 .Literal, .SingleQuote, .DoubleQuote => {
471 if (self.eatToken(.MapValueInd)) |_| {
472 if (self.eatToken(.NewLine)) |_| {
473 try self.openScope();
474 }
475 // nested map
476 const map_node = try self.map(pos);
477 break :value &map_node.base;
478 } else {
479 // standalone (leaf) value
480 const leaf_node = try self.leaf_value(pos);
481 break :value &leaf_node.base;
482 }
483 },
484 .FlowSeqStart => {
485 const list_node = try self.list_bracketed(pos);
486 break :value &list_node.base;
487 },
488 else => {
489 log.err("{}", .{token});
490 return error.Unhandled;
491 },
492 }
493 };
494 try node.values.append(self.allocator, value);
495
496 _ = self.eatToken(.NewLine);
497 }
498
499 node.end = self.token_it.pos - 1;
500
501 log.debug("List end: {}, {}", .{ node.end.?, self.tree.tokens[node.end.?] });
502
503 return node;
504 }
505
506 fn list_bracketed(self: *Parser, start: TokenIndex) ParseError!*Node.List {
507 const node = try self.allocator.create(Node.List);
508 errdefer self.allocator.destroy(node);
509 node.* = .{
510 .start = start,
511 };
512 node.base.tree = self.tree;
513
514 self.token_it.seekTo(start);
515
516 log.debug("List start: {}, {}", .{ start, self.tree.tokens[start] });
517 log.debug("Current scope: {}", .{self.scopes.items[self.scopes.items.len - 1]});
518
519 _ = try self.expectToken(.FlowSeqStart);
520
521 while (true) {
522 _ = self.eatToken(.NewLine);
523 self.eatCommentsAndSpace();
524
525 const pos = self.token_it.pos;
526 const token = self.token_it.next();
527
528 log.debug("Next token: {}, {}", .{ pos, token });
529
530 const value: *Node = value: {
531 switch (token.id) {
532 .FlowSeqStart => {
533 const list_node = try self.list_bracketed(pos);
534 break :value &list_node.base;
535 },
536 .FlowSeqEnd => {
537 break;
538 },
539 .Literal, .SingleQuote, .DoubleQuote => {
540 const leaf_node = try self.leaf_value(pos);
541 _ = self.eatToken(.Comma);
542 // TODO newline
543 break :value &leaf_node.base;
544 },
545 else => {
546 log.err("{}", .{token});
547 return error.Unhandled;
548 },
549 }
550 };
551 try node.values.append(self.allocator, value);
552 }
553
554 node.end = self.token_it.pos - 1;
555
556 log.debug("List end: {}, {}", .{ node.end.?, self.tree.tokens[node.end.?] });
557
558 return node;
559 }
560
561 fn leaf_value(self: *Parser, start: TokenIndex) ParseError!*Node.Value {
562 const node = try self.allocator.create(Node.Value);
563 errdefer self.allocator.destroy(node);
564 node.* = .{
565 .start = start,
566 };
567 node.base.tree = self.tree;
568
569 self.token_it.seekTo(start);
570
571 log.debug("Leaf start: {}, {}", .{ node.start.?, self.tree.tokens[node.start.?] });
572
573 parse: {
574 if (self.eatToken(.SingleQuote)) |_| {
575 node.start = node.start.? + 1;
576 while (true) {
577 const tok = self.token_it.next();
578 switch (tok.id) {
579 .SingleQuote => {
580 node.end = self.token_it.pos - 2;
581 break :parse;
582 },
583 .NewLine => return error.UnexpectedToken,
584 else => {},
585 }
586 }
587 }
588
589 if (self.eatToken(.DoubleQuote)) |_| {
590 node.start = node.start.? + 1;
591 while (true) {
592 const tok = self.token_it.next();
593 switch (tok.id) {
594 .DoubleQuote => {
595 node.end = self.token_it.pos - 2;
596 break :parse;
597 },
598 .NewLine => return error.UnexpectedToken,
599 else => {},
600 }
601 }
602 }
603
604 // TODO handle multiline strings in new block scope
605 while (true) {
606 const tok = self.token_it.next();
607 switch (tok.id) {
608 .Literal => {},
609 .Space => {
610 const trailing = self.token_it.pos - 2;
611 self.eatCommentsAndSpace();
612 if (self.token_it.peek()) |peek| {
613 if (peek.id != .Literal) {
614 node.end = trailing;
615 break;
616 }
617 }
618 },
619 else => {
620 self.token_it.seekBy(-1);
621 node.end = self.token_it.pos - 1;
622 break;
623 },
624 }
625 }
626 }
627
628 log.debug("Leaf end: {}, {}", .{ node.end.?, self.tree.tokens[node.end.?] });
629
630 return node;
631 }
632
633 fn openScope(self: *Parser) !void {
634 const peek = self.token_it.peek() orelse return error.UnexpectedEof;
635 if (peek.id != .Space and peek.id != .Tab) {
636 // No need to open scope.
637 return;
638 }
639 const indent = self.token_it.next().count.?;
640 const prev_scope = self.scopes.items[self.scopes.items.len - 1];
641 if (indent < prev_scope.indent) {
642 return error.MalformedYaml;
643 }
644
645 log.debug("Opening scope...", .{});
646
647 try self.scopes.append(self.allocator, .{
648 .indent = indent,
649 });
650 }
651
652 fn closeScope(self: *Parser) !bool {
653 const indent = indent: {
654 const peek = self.token_it.peek() orelse return error.UnexpectedEof;
655 switch (peek.id) {
656 .Space, .Tab => {
657 break :indent self.token_it.next().count.?;
658 },
659 else => {
660 break :indent 0;
661 },
662 }
663 };
664
665 const scope = self.scopes.items[self.scopes.items.len - 1];
666 if (indent < scope.indent) {
667 log.debug("Closing scope...", .{});
668 _ = self.scopes.pop();
669 return true;
670 }
671
672 return false;
673 }
674
675 fn eatCommentsAndSpace(self: *Parser) void {
676 while (true) {
677 _ = self.token_it.peek() orelse return;
678 const token = self.token_it.next();
679 switch (token.id) {
680 .Comment, .Space => {},
681 else => {
682 self.token_it.seekBy(-1);
683 break;
684 },
685 }
686 }
687 }
688
689 fn eatToken(self: *Parser, id: Token.Id) ?TokenIndex {
690 while (true) {
691 const pos = self.token_it.pos;
692 _ = self.token_it.peek() orelse return null;
693 const token = self.token_it.next();
694 switch (token.id) {
695 .Comment, .Space => continue,
696 else => |next_id| if (next_id == id) {
697 return pos;
698 } else {
699 self.token_it.seekTo(pos);
700 return null;
701 },
702 }
703 }
704 }
705
706 fn expectToken(self: *Parser, id: Token.Id) ParseError!TokenIndex {
707 return self.eatToken(id) orelse error.UnexpectedToken;
708 }
709};
710
711test {
712 _ = @import("parse/test.zig");
713}
src/link/tapi/parse/test.zig created+556
......@@ -0,0 +1,556 @@
1const std = @import("std");
2const mem = std.mem;
3const testing = std.testing;
4
5usingnamespace @import("../parse.zig");
6
7test "explicit doc" {
8 const source =
9 \\--- !tapi-tbd
10 \\tbd-version: 4
11 \\abc-version: 5
12 \\...
13 ;
14
15 var tree = Tree.init(testing.allocator);
16 defer tree.deinit();
17 try tree.parse(source);
18
19 try testing.expectEqual(tree.docs.items.len, 1);
20
21 const doc = tree.docs.items[0].cast(Node.Doc).?;
22 try testing.expectEqual(doc.start.?, 0);
23 try testing.expectEqual(doc.end.?, tree.tokens.len - 2);
24
25 const directive = tree.tokens[doc.directive.?];
26 try testing.expectEqual(directive.id, .Literal);
27 try testing.expect(mem.eql(u8, "tapi-tbd", tree.source[directive.start..directive.end]));
28
29 try testing.expect(doc.value != null);
30 try testing.expectEqual(doc.value.?.tag, .map);
31
32 const map = doc.value.?.cast(Node.Map).?;
33 try testing.expectEqual(map.start.?, 5);
34 try testing.expectEqual(map.end.?, 14);
35 try testing.expectEqual(map.values.items.len, 2);
36
37 {
38 const entry = map.values.items[0];
39
40 const key = tree.tokens[entry.key];
41 try testing.expectEqual(key.id, .Literal);
42 try testing.expect(mem.eql(u8, "tbd-version", tree.source[key.start..key.end]));
43
44 const value = entry.value.cast(Node.Value).?;
45 const value_tok = tree.tokens[value.start.?];
46 try testing.expectEqual(value_tok.id, .Literal);
47 try testing.expect(mem.eql(u8, "4", tree.source[value_tok.start..value_tok.end]));
48 }
49
50 {
51 const entry = map.values.items[1];
52
53 const key = tree.tokens[entry.key];
54 try testing.expectEqual(key.id, .Literal);
55 try testing.expect(mem.eql(u8, "abc-version", tree.source[key.start..key.end]));
56
57 const value = entry.value.cast(Node.Value).?;
58 const value_tok = tree.tokens[value.start.?];
59 try testing.expectEqual(value_tok.id, .Literal);
60 try testing.expect(mem.eql(u8, "5", tree.source[value_tok.start..value_tok.end]));
61 }
62}
63
64test "leaf in quotes" {
65 const source =
66 \\key1: no quotes
67 \\key2: 'single quoted'
68 \\key3: "double quoted"
69 ;
70
71 var tree = Tree.init(testing.allocator);
72 defer tree.deinit();
73 try tree.parse(source);
74
75 try testing.expectEqual(tree.docs.items.len, 1);
76
77 const doc = tree.docs.items[0].cast(Node.Doc).?;
78 try testing.expectEqual(doc.start.?, 0);
79 try testing.expectEqual(doc.end.?, tree.tokens.len - 2);
80 try testing.expect(doc.directive == null);
81
82 try testing.expect(doc.value != null);
83 try testing.expectEqual(doc.value.?.tag, .map);
84
85 const map = doc.value.?.cast(Node.Map).?;
86 try testing.expectEqual(map.start.?, 0);
87 try testing.expectEqual(map.end.?, tree.tokens.len - 2);
88 try testing.expectEqual(map.values.items.len, 3);
89
90 {
91 const entry = map.values.items[0];
92
93 const key = tree.tokens[entry.key];
94 try testing.expectEqual(key.id, .Literal);
95 try testing.expect(mem.eql(
96 u8,
97 "key1",
98 tree.source[key.start..key.end],
99 ));
100
101 const value = entry.value.cast(Node.Value).?;
102 const start = tree.tokens[value.start.?];
103 const end = tree.tokens[value.end.?];
104 try testing.expectEqual(start.id, .Literal);
105 try testing.expectEqual(end.id, .Literal);
106 try testing.expect(mem.eql(
107 u8,
108 "no quotes",
109 tree.source[start.start..end.end],
110 ));
111 }
112}
113
114test "nested maps" {
115 const source =
116 \\key1:
117 \\ key1_1 : value1_1
118 \\ key1_2 : value1_2
119 \\key2 : value2
120 ;
121
122 var tree = Tree.init(testing.allocator);
123 defer tree.deinit();
124 try tree.parse(source);
125
126 try testing.expectEqual(tree.docs.items.len, 1);
127
128 const doc = tree.docs.items[0].cast(Node.Doc).?;
129 try testing.expectEqual(doc.start.?, 0);
130 try testing.expectEqual(doc.end.?, tree.tokens.len - 2);
131 try testing.expect(doc.directive == null);
132
133 try testing.expect(doc.value != null);
134 try testing.expectEqual(doc.value.?.tag, .map);
135
136 const map = doc.value.?.cast(Node.Map).?;
137 try testing.expectEqual(map.start.?, 0);
138 try testing.expectEqual(map.end.?, tree.tokens.len - 2);
139 try testing.expectEqual(map.values.items.len, 2);
140
141 {
142 const entry = map.values.items[0];
143
144 const key = tree.tokens[entry.key];
145 try testing.expectEqual(key.id, .Literal);
146 try testing.expect(mem.eql(u8, "key1", tree.source[key.start..key.end]));
147
148 const nested_map = entry.value.cast(Node.Map).?;
149 try testing.expectEqual(nested_map.start.?, 4);
150 try testing.expectEqual(nested_map.end.?, 16);
151 try testing.expectEqual(nested_map.values.items.len, 2);
152
153 {
154 const nested_entry = nested_map.values.items[0];
155
156 const nested_key = tree.tokens[nested_entry.key];
157 try testing.expectEqual(nested_key.id, .Literal);
158 try testing.expect(mem.eql(
159 u8,
160 "key1_1",
161 tree.source[nested_key.start..nested_key.end],
162 ));
163
164 const nested_value = nested_entry.value.cast(Node.Value).?;
165 const nested_value_tok = tree.tokens[nested_value.start.?];
166 try testing.expectEqual(nested_value_tok.id, .Literal);
167 try testing.expect(mem.eql(
168 u8,
169 "value1_1",
170 tree.source[nested_value_tok.start..nested_value_tok.end],
171 ));
172 }
173
174 {
175 const nested_entry = nested_map.values.items[1];
176
177 const nested_key = tree.tokens[nested_entry.key];
178 try testing.expectEqual(nested_key.id, .Literal);
179 try testing.expect(mem.eql(
180 u8,
181 "key1_2",
182 tree.source[nested_key.start..nested_key.end],
183 ));
184
185 const nested_value = nested_entry.value.cast(Node.Value).?;
186 const nested_value_tok = tree.tokens[nested_value.start.?];
187 try testing.expectEqual(nested_value_tok.id, .Literal);
188 try testing.expect(mem.eql(
189 u8,
190 "value1_2",
191 tree.source[nested_value_tok.start..nested_value_tok.end],
192 ));
193 }
194 }
195
196 {
197 const entry = map.values.items[1];
198
199 const key = tree.tokens[entry.key];
200 try testing.expectEqual(key.id, .Literal);
201 try testing.expect(mem.eql(u8, "key2", tree.source[key.start..key.end]));
202
203 const value = entry.value.cast(Node.Value).?;
204 const value_tok = tree.tokens[value.start.?];
205 try testing.expectEqual(value_tok.id, .Literal);
206 try testing.expect(mem.eql(
207 u8,
208 "value2",
209 tree.source[value_tok.start..value_tok.end],
210 ));
211 }
212}
213
214test "map of list of values" {
215 const source =
216 \\ints:
217 \\ - 0
218 \\ - 1
219 \\ - 2
220 ;
221 var tree = Tree.init(testing.allocator);
222 defer tree.deinit();
223 try tree.parse(source);
224
225 try testing.expectEqual(tree.docs.items.len, 1);
226
227 const doc = tree.docs.items[0].cast(Node.Doc).?;
228 try testing.expectEqual(doc.start.?, 0);
229 try testing.expectEqual(doc.end.?, tree.tokens.len - 2);
230
231 try testing.expect(doc.value != null);
232 try testing.expectEqual(doc.value.?.tag, .map);
233
234 const map = doc.value.?.cast(Node.Map).?;
235 try testing.expectEqual(map.start.?, 0);
236 try testing.expectEqual(map.end.?, tree.tokens.len - 2);
237 try testing.expectEqual(map.values.items.len, 1);
238
239 const entry = map.values.items[0];
240 const key = tree.tokens[entry.key];
241 try testing.expectEqual(key.id, .Literal);
242 try testing.expect(mem.eql(u8, "ints", tree.source[key.start..key.end]));
243
244 const value = entry.value.cast(Node.List).?;
245 try testing.expectEqual(value.start.?, 4);
246 try testing.expectEqual(value.end.?, tree.tokens.len - 2);
247 try testing.expectEqual(value.values.items.len, 3);
248
249 {
250 const elem = value.values.items[0].cast(Node.Value).?;
251 const leaf = tree.tokens[elem.start.?];
252 try testing.expectEqual(leaf.id, .Literal);
253 try testing.expect(mem.eql(u8, "0", tree.source[leaf.start..leaf.end]));
254 }
255
256 {
257 const elem = value.values.items[1].cast(Node.Value).?;
258 const leaf = tree.tokens[elem.start.?];
259 try testing.expectEqual(leaf.id, .Literal);
260 try testing.expect(mem.eql(u8, "1", tree.source[leaf.start..leaf.end]));
261 }
262
263 {
264 const elem = value.values.items[2].cast(Node.Value).?;
265 const leaf = tree.tokens[elem.start.?];
266 try testing.expectEqual(leaf.id, .Literal);
267 try testing.expect(mem.eql(u8, "2", tree.source[leaf.start..leaf.end]));
268 }
269}
270
271test "map of list of maps" {
272 const source =
273 \\key1:
274 \\- key2 : value2
275 \\- key3 : value3
276 \\- key4 : value4
277 ;
278
279 var tree = Tree.init(testing.allocator);
280 defer tree.deinit();
281 try tree.parse(source);
282
283 try testing.expectEqual(tree.docs.items.len, 1);
284
285 const doc = tree.docs.items[0].cast(Node.Doc).?;
286 try testing.expectEqual(doc.start.?, 0);
287 try testing.expectEqual(doc.end.?, tree.tokens.len - 2);
288
289 try testing.expect(doc.value != null);
290 try testing.expectEqual(doc.value.?.tag, .map);
291
292 const map = doc.value.?.cast(Node.Map).?;
293 try testing.expectEqual(map.start.?, 0);
294 try testing.expectEqual(map.end.?, tree.tokens.len - 2);
295 try testing.expectEqual(map.values.items.len, 1);
296
297 const entry = map.values.items[0];
298 const key = tree.tokens[entry.key];
299 try testing.expectEqual(key.id, .Literal);
300 try testing.expect(mem.eql(u8, "key1", tree.source[key.start..key.end]));
301
302 const value = entry.value.cast(Node.List).?;
303 try testing.expectEqual(value.start.?, 3);
304 try testing.expectEqual(value.end.?, tree.tokens.len - 2);
305 try testing.expectEqual(value.values.items.len, 3);
306
307 {
308 const elem = value.values.items[0].cast(Node.Map).?;
309 const nested = elem.values.items[0];
310 const nested_key = tree.tokens[nested.key];
311 try testing.expectEqual(nested_key.id, .Literal);
312 try testing.expect(mem.eql(u8, "key2", tree.source[nested_key.start..nested_key.end]));
313
314 const nested_v = nested.value.cast(Node.Value).?;
315 const leaf = tree.tokens[nested_v.start.?];
316 try testing.expectEqual(leaf.id, .Literal);
317 try testing.expect(mem.eql(u8, "value2", tree.source[leaf.start..leaf.end]));
318 }
319
320 {
321 const elem = value.values.items[1].cast(Node.Map).?;
322 const nested = elem.values.items[0];
323 const nested_key = tree.tokens[nested.key];
324 try testing.expectEqual(nested_key.id, .Literal);
325 try testing.expect(mem.eql(u8, "key3", tree.source[nested_key.start..nested_key.end]));
326
327 const nested_v = nested.value.cast(Node.Value).?;
328 const leaf = tree.tokens[nested_v.start.?];
329 try testing.expectEqual(leaf.id, .Literal);
330 try testing.expect(mem.eql(u8, "value3", tree.source[leaf.start..leaf.end]));
331 }
332
333 {
334 const elem = value.values.items[2].cast(Node.Map).?;
335 const nested = elem.values.items[0];
336 const nested_key = tree.tokens[nested.key];
337 try testing.expectEqual(nested_key.id, .Literal);
338 try testing.expect(mem.eql(u8, "key4", tree.source[nested_key.start..nested_key.end]));
339
340 const nested_v = nested.value.cast(Node.Value).?;
341 const leaf = tree.tokens[nested_v.start.?];
342 try testing.expectEqual(leaf.id, .Literal);
343 try testing.expect(mem.eql(u8, "value4", tree.source[leaf.start..leaf.end]));
344 }
345}
346
347test "list of lists" {
348 const source =
349 \\- [name , hr, avg ]
350 \\- [Mark McGwire , 65, 0.278]
351 \\- [Sammy Sosa , 63, 0.288]
352 ;
353
354 var tree = Tree.init(testing.allocator);
355 defer tree.deinit();
356 try tree.parse(source);
357
358 try testing.expectEqual(tree.docs.items.len, 1);
359
360 const doc = tree.docs.items[0].cast(Node.Doc).?;
361 try testing.expectEqual(doc.start.?, 0);
362 try testing.expectEqual(doc.end.?, tree.tokens.len - 2);
363
364 try testing.expect(doc.value != null);
365 try testing.expectEqual(doc.value.?.tag, .list);
366
367 const list = doc.value.?.cast(Node.List).?;
368 try testing.expectEqual(list.start.?, 0);
369 try testing.expectEqual(list.end.?, tree.tokens.len - 2);
370 try testing.expectEqual(list.values.items.len, 3);
371
372 {
373 try testing.expectEqual(list.values.items[0].tag, .list);
374 const nested = list.values.items[0].cast(Node.List).?;
375 try testing.expectEqual(nested.values.items.len, 3);
376
377 {
378 try testing.expectEqual(nested.values.items[0].tag, .value);
379 const value = nested.values.items[0].cast(Node.Value).?;
380 const leaf = tree.tokens[value.start.?];
381 try testing.expect(mem.eql(u8, "name", tree.source[leaf.start..leaf.end]));
382 }
383
384 {
385 try testing.expectEqual(nested.values.items[1].tag, .value);
386 const value = nested.values.items[1].cast(Node.Value).?;
387 const leaf = tree.tokens[value.start.?];
388 try testing.expect(mem.eql(u8, "hr", tree.source[leaf.start..leaf.end]));
389 }
390
391 {
392 try testing.expectEqual(nested.values.items[2].tag, .value);
393 const value = nested.values.items[2].cast(Node.Value).?;
394 const leaf = tree.tokens[value.start.?];
395 try testing.expect(mem.eql(u8, "avg", tree.source[leaf.start..leaf.end]));
396 }
397 }
398
399 {
400 try testing.expectEqual(list.values.items[1].tag, .list);
401 const nested = list.values.items[1].cast(Node.List).?;
402 try testing.expectEqual(nested.values.items.len, 3);
403
404 {
405 try testing.expectEqual(nested.values.items[0].tag, .value);
406 const value = nested.values.items[0].cast(Node.Value).?;
407 const start = tree.tokens[value.start.?];
408 const end = tree.tokens[value.end.?];
409 try testing.expect(mem.eql(u8, "Mark McGwire", tree.source[start.start..end.end]));
410 }
411
412 {
413 try testing.expectEqual(nested.values.items[1].tag, .value);
414 const value = nested.values.items[1].cast(Node.Value).?;
415 const leaf = tree.tokens[value.start.?];
416 try testing.expect(mem.eql(u8, "65", tree.source[leaf.start..leaf.end]));
417 }
418
419 {
420 try testing.expectEqual(nested.values.items[2].tag, .value);
421 const value = nested.values.items[2].cast(Node.Value).?;
422 const leaf = tree.tokens[value.start.?];
423 try testing.expect(mem.eql(u8, "0.278", tree.source[leaf.start..leaf.end]));
424 }
425 }
426
427 {
428 try testing.expectEqual(list.values.items[2].tag, .list);
429 const nested = list.values.items[2].cast(Node.List).?;
430 try testing.expectEqual(nested.values.items.len, 3);
431
432 {
433 try testing.expectEqual(nested.values.items[0].tag, .value);
434 const value = nested.values.items[0].cast(Node.Value).?;
435 const start = tree.tokens[value.start.?];
436 const end = tree.tokens[value.end.?];
437 try testing.expect(mem.eql(u8, "Sammy Sosa", tree.source[start.start..end.end]));
438 }
439
440 {
441 try testing.expectEqual(nested.values.items[1].tag, .value);
442 const value = nested.values.items[1].cast(Node.Value).?;
443 const leaf = tree.tokens[value.start.?];
444 try testing.expect(mem.eql(u8, "63", tree.source[leaf.start..leaf.end]));
445 }
446
447 {
448 try testing.expectEqual(nested.values.items[2].tag, .value);
449 const value = nested.values.items[2].cast(Node.Value).?;
450 const leaf = tree.tokens[value.start.?];
451 try testing.expect(mem.eql(u8, "0.288", tree.source[leaf.start..leaf.end]));
452 }
453 }
454}
455
456test "inline list" {
457 const source =
458 \\[name , hr, avg ]
459 ;
460
461 var tree = Tree.init(testing.allocator);
462 defer tree.deinit();
463 try tree.parse(source);
464
465 try testing.expectEqual(tree.docs.items.len, 1);
466
467 const doc = tree.docs.items[0].cast(Node.Doc).?;
468 try testing.expectEqual(doc.start.?, 0);
469 try testing.expectEqual(doc.end.?, tree.tokens.len - 2);
470
471 try testing.expect(doc.value != null);
472 try testing.expectEqual(doc.value.?.tag, .list);
473
474 const list = doc.value.?.cast(Node.List).?;
475 try testing.expectEqual(list.start.?, 0);
476 try testing.expectEqual(list.end.?, tree.tokens.len - 2);
477 try testing.expectEqual(list.values.items.len, 3);
478
479 {
480 try testing.expectEqual(list.values.items[0].tag, .value);
481 const value = list.values.items[0].cast(Node.Value).?;
482 const leaf = tree.tokens[value.start.?];
483 try testing.expect(mem.eql(u8, "name", tree.source[leaf.start..leaf.end]));
484 }
485
486 {
487 try testing.expectEqual(list.values.items[1].tag, .value);
488 const value = list.values.items[1].cast(Node.Value).?;
489 const leaf = tree.tokens[value.start.?];
490 try testing.expect(mem.eql(u8, "hr", tree.source[leaf.start..leaf.end]));
491 }
492
493 {
494 try testing.expectEqual(list.values.items[2].tag, .value);
495 const value = list.values.items[2].cast(Node.Value).?;
496 const leaf = tree.tokens[value.start.?];
497 try testing.expect(mem.eql(u8, "avg", tree.source[leaf.start..leaf.end]));
498 }
499}
500
501test "inline list as mapping value" {
502 const source =
503 \\key : [
504 \\ name ,
505 \\ hr, avg ]
506 ;
507
508 var tree = Tree.init(testing.allocator);
509 defer tree.deinit();
510 try tree.parse(source);
511
512 try testing.expectEqual(tree.docs.items.len, 1);
513
514 const doc = tree.docs.items[0].cast(Node.Doc).?;
515 try testing.expectEqual(doc.start.?, 0);
516 try testing.expectEqual(doc.end.?, tree.tokens.len - 2);
517
518 try testing.expect(doc.value != null);
519 try testing.expectEqual(doc.value.?.tag, .map);
520
521 const map = doc.value.?.cast(Node.Map).?;
522 try testing.expectEqual(map.start.?, 0);
523 try testing.expectEqual(map.end.?, tree.tokens.len - 2);
524 try testing.expectEqual(map.values.items.len, 1);
525
526 const entry = map.values.items[0];
527 const key = tree.tokens[entry.key];
528 try testing.expectEqual(key.id, .Literal);
529 try testing.expect(mem.eql(u8, "key", tree.source[key.start..key.end]));
530
531 const list = entry.value.cast(Node.List).?;
532 try testing.expectEqual(list.start.?, 4);
533 try testing.expectEqual(list.end.?, tree.tokens.len - 2);
534 try testing.expectEqual(list.values.items.len, 3);
535
536 {
537 try testing.expectEqual(list.values.items[0].tag, .value);
538 const value = list.values.items[0].cast(Node.Value).?;
539 const leaf = tree.tokens[value.start.?];
540 try testing.expect(mem.eql(u8, "name", tree.source[leaf.start..leaf.end]));
541 }
542
543 {
544 try testing.expectEqual(list.values.items[1].tag, .value);
545 const value = list.values.items[1].cast(Node.Value).?;
546 const leaf = tree.tokens[value.start.?];
547 try testing.expect(mem.eql(u8, "hr", tree.source[leaf.start..leaf.end]));
548 }
549
550 {
551 try testing.expectEqual(list.values.items[2].tag, .value);
552 const value = list.values.items[2].cast(Node.Value).?;
553 const leaf = tree.tokens[value.start.?];
554 try testing.expect(mem.eql(u8, "avg", tree.source[leaf.start..leaf.end]));
555 }
556}
src/link/tapi/yaml.zig created+651
......@@ -0,0 +1,651 @@
1const std = @import("std");
2const assert = std.debug.assert;
3const math = std.math;
4const mem = std.mem;
5const testing = std.testing;
6const log = std.log.scoped(.tapi);
7
8const Allocator = mem.Allocator;
9const ArenaAllocator = std.heap.ArenaAllocator;
10
11pub const Tokenizer = @import("Tokenizer.zig");
12pub const parse = @import("parse.zig");
13
14const Node = parse.Node;
15const Tree = parse.Tree;
16const ParseError = parse.ParseError;
17
18pub const YamlError = error{
19 UnexpectedNodeType,
20 OutOfMemory,
21} || ParseError || std.fmt.ParseIntError;
22
23pub const ValueType = enum {
24 empty,
25 int,
26 float,
27 string,
28 list,
29 map,
30};
31
32pub const List = []Value;
33pub const Map = std.StringArrayHashMap(Value);
34
35pub const Value = union(ValueType) {
36 empty,
37 int: i64,
38 float: f64,
39 string: []const u8,
40 list: List,
41 map: Map,
42
43 pub fn asInt(self: Value) !i64 {
44 if (self != .int) return error.TypeMismatch;
45 return self.int;
46 }
47
48 pub fn asFloat(self: Value) !f64 {
49 if (self != .float) return error.TypeMismatch;
50 return self.float;
51 }
52
53 pub fn asString(self: Value) ![]const u8 {
54 if (self != .string) return error.TypeMismatch;
55 return self.string;
56 }
57
58 pub fn asList(self: Value) !List {
59 if (self != .list) return error.TypeMismatch;
60 return self.list;
61 }
62
63 pub fn asMap(self: Value) !Map {
64 if (self != .map) return error.TypeMismatch;
65 return self.map;
66 }
67
68 const StringifyArgs = struct {
69 indentation: usize = 0,
70 should_inline_first_key: bool = false,
71 };
72
73 pub const StringifyError = std.os.WriteError;
74
75 pub fn stringify(self: Value, writer: anytype, args: StringifyArgs) StringifyError!void {
76 switch (self) {
77 .empty => return,
78 .int => |int| return writer.print("{}", .{int}),
79 .float => |float| return writer.print("{d}", .{float}),
80 .string => |string| return writer.print("{s}", .{string}),
81 .list => |list| {
82 const len = list.len;
83 if (len == 0) return;
84
85 const first = list[0];
86 if (first.is_compound()) {
87 for (list) |elem, i| {
88 try writer.writeByteNTimes(' ', args.indentation);
89 try writer.writeAll("- ");
90 try elem.stringify(writer, .{
91 .indentation = args.indentation + 2,
92 .should_inline_first_key = true,
93 });
94 if (i < len - 1) {
95 try writer.writeByte('\n');
96 }
97 }
98 return;
99 }
100
101 try writer.writeAll("[ ");
102 for (list) |elem, i| {
103 try elem.stringify(writer, args);
104 if (i < len - 1) {
105 try writer.writeAll(", ");
106 }
107 }
108 try writer.writeAll(" ]");
109 },
110 .map => |map| {
111 const keys = map.keys();
112 const len = keys.len;
113 if (len == 0) return;
114
115 for (keys) |key, i| {
116 if (!args.should_inline_first_key or i != 0) {
117 try writer.writeByteNTimes(' ', args.indentation);
118 }
119 try writer.print("{s}: ", .{key});
120
121 const value = map.get(key) orelse unreachable;
122 const should_inline = blk: {
123 if (!value.is_compound()) break :blk true;
124 if (value == .list and value.list.len > 0 and !value.list[0].is_compound()) break :blk true;
125 break :blk false;
126 };
127
128 if (should_inline) {
129 try value.stringify(writer, args);
130 } else {
131 try writer.writeByte('\n');
132 try value.stringify(writer, .{
133 .indentation = args.indentation + 4,
134 });
135 }
136
137 if (i < len - 1) {
138 try writer.writeByte('\n');
139 }
140 }
141 },
142 }
143 }
144
145 fn is_compound(self: Value) bool {
146 return switch (self) {
147 .list, .map => true,
148 else => false,
149 };
150 }
151
152 fn fromNode(arena: *Allocator, tree: *const Tree, node: *const Node, type_hint: ?ValueType) YamlError!Value {
153 if (node.cast(Node.Doc)) |doc| {
154 const inner = doc.value orelse {
155 // empty doc
156 return Value{ .empty = .{} };
157 };
158 return Value.fromNode(arena, tree, inner, null);
159 } else if (node.cast(Node.Map)) |map| {
160 var out_map = std.StringArrayHashMap(Value).init(arena);
161 try out_map.ensureUnusedCapacity(map.values.items.len);
162
163 for (map.values.items) |entry| {
164 const key_tok = tree.tokens[entry.key];
165 const key = try arena.dupe(u8, tree.source[key_tok.start..key_tok.end]);
166 const value = try Value.fromNode(arena, tree, entry.value, null);
167
168 out_map.putAssumeCapacityNoClobber(key, value);
169 }
170
171 return Value{ .map = out_map };
172 } else if (node.cast(Node.List)) |list| {
173 var out_list = std.ArrayList(Value).init(arena);
174 try out_list.ensureUnusedCapacity(list.values.items.len);
175
176 if (list.values.items.len > 0) {
177 const hint = if (list.values.items[0].cast(Node.Value)) |value| hint: {
178 const start = tree.tokens[value.start.?];
179 const end = tree.tokens[value.end.?];
180 const raw = tree.source[start.start..end.end];
181 _ = std.fmt.parseInt(i64, raw, 10) catch {
182 _ = std.fmt.parseFloat(f64, raw) catch {
183 break :hint ValueType.string;
184 };
185 break :hint ValueType.float;
186 };
187 break :hint ValueType.int;
188 } else null;
189
190 for (list.values.items) |elem| {
191 const value = try Value.fromNode(arena, tree, elem, hint);
192 out_list.appendAssumeCapacity(value);
193 }
194 }
195
196 return Value{ .list = out_list.toOwnedSlice() };
197 } else if (node.cast(Node.Value)) |value| {
198 const start = tree.tokens[value.start.?];
199 const end = tree.tokens[value.end.?];
200 const raw = tree.source[start.start..end.end];
201
202 if (type_hint) |hint| {
203 return switch (hint) {
204 .int => Value{ .int = try std.fmt.parseInt(i64, raw, 10) },
205 .float => Value{ .float = try std.fmt.parseFloat(f64, raw) },
206 .string => Value{ .string = try arena.dupe(u8, raw) },
207 else => unreachable,
208 };
209 }
210
211 try_int: {
212 // TODO infer base for int
213 const int = std.fmt.parseInt(i64, raw, 10) catch break :try_int;
214 return Value{ .int = int };
215 }
216 try_float: {
217 const float = std.fmt.parseFloat(f64, raw) catch break :try_float;
218 return Value{ .float = float };
219 }
220 return Value{ .string = try arena.dupe(u8, raw) };
221 } else {
222 log.err("Unexpected node type: {}", .{node.tag});
223 return error.UnexpectedNodeType;
224 }
225 }
226};
227
228pub const Yaml = struct {
229 arena: ArenaAllocator,
230 tree: ?Tree = null,
231 docs: std.ArrayList(Value),
232
233 pub fn deinit(self: *Yaml) void {
234 self.arena.deinit();
235 }
236
237 pub fn stringify(self: Yaml, writer: anytype) !void {
238 for (self.docs.items) |doc| {
239 // if (doc.directive) |directive| {
240 // try writer.print("--- !{s}\n", .{directive});
241 // }
242 try doc.stringify(writer, .{});
243 // if (doc.directive != null) {
244 // try writer.writeAll("...\n");
245 // }
246 }
247 }
248
249 pub fn load(allocator: *Allocator, source: []const u8) !Yaml {
250 var arena = ArenaAllocator.init(allocator);
251
252 var tree = Tree.init(&arena.allocator);
253 try tree.parse(source);
254
255 var docs = std.ArrayList(Value).init(&arena.allocator);
256 try docs.ensureUnusedCapacity(tree.docs.items.len);
257
258 for (tree.docs.items) |node| {
259 const value = try Value.fromNode(&arena.allocator, &tree, node, null);
260 docs.appendAssumeCapacity(value);
261 }
262
263 return Yaml{
264 .arena = arena,
265 .tree = tree,
266 .docs = docs,
267 };
268 }
269
270 pub const Error = error{
271 Unimplemented,
272 TypeMismatch,
273 StructFieldMissing,
274 ArraySizeMismatch,
275 UntaggedUnion,
276 UnionTagMissing,
277 Overflow,
278 OutOfMemory,
279 };
280
281 pub fn parse(self: *Yaml, comptime T: type) Error!T {
282 if (self.docs.items.len == 0) {
283 if (@typeInfo(T) == .Void) return {};
284 return error.TypeMismatch;
285 }
286
287 if (self.docs.items.len == 1) {
288 return self.parseValue(T, self.docs.items[0]);
289 }
290
291 switch (@typeInfo(T)) {
292 .Array => |info| {
293 var parsed: T = undefined;
294 for (self.docs.items) |doc, i| {
295 parsed[i] = try self.parseValue(info.child, doc);
296 }
297 return parsed;
298 },
299 .Pointer => |info| {
300 switch (info.size) {
301 .Slice => {
302 var parsed = try self.arena.allocator.alloc(info.child, self.docs.items.len);
303 for (self.docs.items) |doc, i| {
304 parsed[i] = try self.parseValue(info.child, doc);
305 }
306 return parsed;
307 },
308 else => return error.TypeMismatch,
309 }
310 },
311 .Union => return error.Unimplemented,
312 else => return error.TypeMismatch,
313 }
314 }
315
316 fn parseValue(self: *Yaml, comptime T: type, value: Value) Error!T {
317 return switch (@typeInfo(T)) {
318 .Int => math.cast(T, try value.asInt()),
319 .Float => math.lossyCast(T, try value.asFloat()),
320 .Struct => self.parseStruct(T, try value.asMap()),
321 .Union => self.parseUnion(T, value),
322 .Array => self.parseArray(T, try value.asList()),
323 .Pointer => {
324 if (value.asList()) |list| {
325 return self.parsePointer(T, .{ .list = list });
326 } else |_| {
327 return self.parsePointer(T, .{ .string = try value.asString() });
328 }
329 },
330 .Void => error.TypeMismatch,
331 .Optional => unreachable,
332 else => error.Unimplemented,
333 };
334 }
335
336 fn parseUnion(self: *Yaml, comptime T: type, value: Value) Error!T {
337 const union_info = @typeInfo(T).Union;
338
339 if (union_info.tag_type) |_| {
340 inline for (union_info.fields) |field| {
341 if (self.parseValue(field.field_type, value)) |u_value| {
342 return @unionInit(T, field.name, u_value);
343 } else |err| {
344 if (@as(@TypeOf(err) || error{TypeMismatch}, err) != error.TypeMismatch) return err;
345 }
346 }
347 } else return error.UntaggedUnion;
348
349 return error.UnionTagMissing;
350 }
351
352 fn parseOptional(self: *Yaml, comptime T: type, value: ?Value) Error!T {
353 const unwrapped = value orelse return null;
354 const opt_info = @typeInfo(T).Optional;
355 return @as(T, try self.parseValue(opt_info.child, unwrapped));
356 }
357
358 fn parseStruct(self: *Yaml, comptime T: type, map: Map) Error!T {
359 const struct_info = @typeInfo(T).Struct;
360 var parsed: T = undefined;
361
362 inline for (struct_info.fields) |field| {
363 const value: ?Value = map.get(field.name) orelse blk: {
364 const field_name = try mem.replaceOwned(u8, &self.arena.allocator, field.name, "_", "-");
365 break :blk map.get(field_name);
366 };
367
368 if (@typeInfo(field.field_type) == .Optional) {
369 @field(parsed, field.name) = try self.parseOptional(field.field_type, value);
370 continue;
371 }
372
373 const unwrapped = value orelse {
374 log.err("missing struct field: {s}: {s}", .{ field.name, @typeName(field.field_type) });
375 return error.StructFieldMissing;
376 };
377 @field(parsed, field.name) = try self.parseValue(field.field_type, unwrapped);
378 }
379
380 return parsed;
381 }
382
383 fn parsePointer(self: *Yaml, comptime T: type, value: Value) Error!T {
384 const ptr_info = @typeInfo(T).Pointer;
385 const arena = &self.arena.allocator;
386
387 switch (ptr_info.size) {
388 .Slice => {
389 const child_info = @typeInfo(ptr_info.child);
390 if (child_info == .Int and child_info.Int.bits == 8) {
391 return value.asString();
392 }
393
394 var parsed = try arena.alloc(ptr_info.child, value.list.len);
395 for (value.list) |elem, i| {
396 parsed[i] = try self.parseValue(ptr_info.child, elem);
397 }
398 return parsed;
399 },
400 else => return error.Unimplemented,
401 }
402 }
403
404 fn parseArray(self: *Yaml, comptime T: type, list: List) Error!T {
405 const array_info = @typeInfo(T).Array;
406 if (array_info.len != list.len) return error.ArraySizeMismatch;
407
408 var parsed: T = undefined;
409 for (list) |elem, i| {
410 parsed[i] = try self.parseValue(array_info.child, elem);
411 }
412
413 return parsed;
414 }
415};
416
417test {
418 testing.refAllDecls(@This());
419}
420
421test "simple list" {
422 const source =
423 \\- a
424 \\- b
425 \\- c
426 ;
427
428 var yaml = try Yaml.load(testing.allocator, source);
429 defer yaml.deinit();
430
431 try testing.expectEqual(yaml.docs.items.len, 1);
432
433 const list = yaml.docs.items[0].list;
434 try testing.expectEqual(list.len, 3);
435
436 try testing.expect(mem.eql(u8, list[0].string, "a"));
437 try testing.expect(mem.eql(u8, list[1].string, "b"));
438 try testing.expect(mem.eql(u8, list[2].string, "c"));
439}
440
441test "simple list typed as array of strings" {
442 const source =
443 \\- a
444 \\- b
445 \\- c
446 ;
447
448 var yaml = try Yaml.load(testing.allocator, source);
449 defer yaml.deinit();
450
451 try testing.expectEqual(yaml.docs.items.len, 1);
452
453 const arr = try yaml.parse([3][]const u8);
454 try testing.expectEqual(arr.len, 3);
455 try testing.expect(mem.eql(u8, arr[0], "a"));
456 try testing.expect(mem.eql(u8, arr[1], "b"));
457 try testing.expect(mem.eql(u8, arr[2], "c"));
458}
459
460test "simple list typed as array of ints" {
461 const source =
462 \\- 0
463 \\- 1
464 \\- 2
465 ;
466
467 var yaml = try Yaml.load(testing.allocator, source);
468 defer yaml.deinit();
469
470 try testing.expectEqual(yaml.docs.items.len, 1);
471
472 const arr = try yaml.parse([3]u8);
473 try testing.expectEqual(arr.len, 3);
474 try testing.expectEqual(arr[0], 0);
475 try testing.expectEqual(arr[1], 1);
476 try testing.expectEqual(arr[2], 2);
477}
478
479test "list of mixed sign integer" {
480 const source =
481 \\- 0
482 \\- -1
483 \\- 2
484 ;
485
486 var yaml = try Yaml.load(testing.allocator, source);
487 defer yaml.deinit();
488
489 try testing.expectEqual(yaml.docs.items.len, 1);
490
491 const arr = try yaml.parse([3]i8);
492 try testing.expectEqual(arr.len, 3);
493 try testing.expectEqual(arr[0], 0);
494 try testing.expectEqual(arr[1], -1);
495 try testing.expectEqual(arr[2], 2);
496}
497
498test "simple map untyped" {
499 const source =
500 \\a: 0
501 ;
502
503 var yaml = try Yaml.load(testing.allocator, source);
504 defer yaml.deinit();
505
506 try testing.expectEqual(yaml.docs.items.len, 1);
507
508 const map = yaml.docs.items[0].map;
509 try testing.expect(map.contains("a"));
510 try testing.expectEqual(map.get("a").?.int, 0);
511}
512
513test "simple map typed" {
514 const source =
515 \\a: 0
516 \\b: hello there
517 \\c: 'wait, what?'
518 ;
519
520 var yaml = try Yaml.load(testing.allocator, source);
521 defer yaml.deinit();
522
523 const simple = try yaml.parse(struct { a: usize, b: []const u8, c: []const u8 });
524 try testing.expectEqual(simple.a, 0);
525 try testing.expect(mem.eql(u8, simple.b, "hello there"));
526 try testing.expect(mem.eql(u8, simple.c, "wait, what?"));
527}
528
529test "typed nested structs" {
530 const source =
531 \\a:
532 \\ b: hello there
533 \\ c: 'wait, what?'
534 ;
535
536 var yaml = try Yaml.load(testing.allocator, source);
537 defer yaml.deinit();
538
539 const simple = try yaml.parse(struct {
540 a: struct {
541 b: []const u8,
542 c: []const u8,
543 },
544 });
545 try testing.expect(mem.eql(u8, simple.a.b, "hello there"));
546 try testing.expect(mem.eql(u8, simple.a.c, "wait, what?"));
547}
548
549test "multidoc typed as a slice of structs" {
550 const source =
551 \\---
552 \\a: 0
553 \\---
554 \\a: 1
555 \\...
556 ;
557
558 var yaml = try Yaml.load(testing.allocator, source);
559 defer yaml.deinit();
560
561 {
562 const result = try yaml.parse([2]struct { a: usize });
563 try testing.expectEqual(result.len, 2);
564 try testing.expectEqual(result[0].a, 0);
565 try testing.expectEqual(result[1].a, 1);
566 }
567
568 {
569 const result = try yaml.parse([]struct { a: usize });
570 try testing.expectEqual(result.len, 2);
571 try testing.expectEqual(result[0].a, 0);
572 try testing.expectEqual(result[1].a, 1);
573 }
574}
575
576test "multidoc typed as a struct is an error" {
577 const source =
578 \\---
579 \\a: 0
580 \\---
581 \\b: 1
582 \\...
583 ;
584
585 var yaml = try Yaml.load(testing.allocator, source);
586 defer yaml.deinit();
587
588 try testing.expectError(Yaml.Error.TypeMismatch, yaml.parse(struct { a: usize }));
589 try testing.expectError(Yaml.Error.TypeMismatch, yaml.parse(struct { b: usize }));
590 try testing.expectError(Yaml.Error.TypeMismatch, yaml.parse(struct { a: usize, b: usize }));
591}
592
593test "multidoc typed as a slice of structs with optionals" {
594 const source =
595 \\---
596 \\a: 0
597 \\c: 1.0
598 \\---
599 \\a: 1
600 \\b: different field
601 \\...
602 ;
603
604 var yaml = try Yaml.load(testing.allocator, source);
605 defer yaml.deinit();
606
607 const result = try yaml.parse([]struct { a: usize, b: ?[]const u8, c: ?f16 });
608 try testing.expectEqual(result.len, 2);
609
610 try testing.expectEqual(result[0].a, 0);
611 try testing.expect(result[0].b == null);
612 try testing.expect(result[0].c != null);
613 try testing.expectEqual(result[0].c.?, 1.0);
614
615 try testing.expectEqual(result[1].a, 1);
616 try testing.expect(result[1].b != null);
617 try testing.expect(mem.eql(u8, result[1].b.?, "different field"));
618 try testing.expect(result[1].c == null);
619}
620
621test "empty yaml can be represented as void" {
622 const source = "";
623 var yaml = try Yaml.load(testing.allocator, source);
624 defer yaml.deinit();
625 const result = try yaml.parse(void);
626 try testing.expect(@TypeOf(result) == void);
627}
628
629test "nonempty yaml cannot be represented as void" {
630 const source =
631 \\a: b
632 ;
633
634 var yaml = try Yaml.load(testing.allocator, source);
635 defer yaml.deinit();
636
637 try testing.expectError(Yaml.Error.TypeMismatch, yaml.parse(void));
638}
639
640test "typed array size mismatch" {
641 const source =
642 \\- 0
643 \\- 0
644 ;
645
646 var yaml = try Yaml.load(testing.allocator, source);
647 defer yaml.deinit();
648
649 try testing.expectError(Yaml.Error.ArraySizeMismatch, yaml.parse([1]usize));
650 try testing.expectError(Yaml.Error.ArraySizeMismatch, yaml.parse([5]usize));
651}