···11+APPLE PUBLIC SOURCE LICENSE
22+Version 2.0 - August 6, 2003
33+44+Please read this License carefully before downloading this software. By
55+downloading or using this software, you are agreeing to be bound by the terms
66+of this License. If you do not or cannot agree to the terms of this License,
77+please do not download or use the software.
88+99+Apple Note: In January 2007, Apple changed its corporate name from "Apple
1010+Computer, Inc." to "Apple Inc." This change has been reflected below and
1111+copyright years updated, but no other changes have been made to the APSL 2.0.
1212+1313+1. General; Definitions. This License applies to any program or other
1414+work which Apple Inc. ("Apple") makes publicly available and which contains a
1515+notice placed by Apple identifying such program or work as "Original Code" and
1616+stating that it is subject to the terms of this Apple Public Source License
1717+version 2.0 ("License"). As used in this License:
1818+1919+1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is the
2020+grantor of rights, (i) claims of patents that are now or hereafter acquired,
2121+owned by or assigned to Apple and (ii) that cover subject matter contained in
2222+the Original Code, but only to the extent necessary to use, reproduce and/or
2323+distribute the Original Code without infringement; and (b) in the case where
2424+You are the grantor of rights, (i) claims of patents that are now or hereafter
2525+acquired, owned by or assigned to You and (ii) that cover subject matter in
2626+Your Modifications, taken alone or in combination with Original Code.
2727+2828+1.2 "Contributor" means any person or entity that creates or contributes to
2929+the creation of Modifications.
3030+3131+1.3 "Covered Code" means the Original Code, Modifications, the combination
3232+of Original Code and any Modifications, and/or any respective portions thereof.
3333+3434+1.4 "Externally Deploy" means: (a) to sublicense, distribute or otherwise
3535+make Covered Code available, directly or indirectly, to anyone other than You;
3636+and/or (b) to use Covered Code, alone or as part of a Larger Work, in any way
3737+to provide a service, including but not limited to delivery of content, through
3838+electronic communication with a client other than You.
3939+4040+1.5 "Larger Work" means a work which combines Covered Code or portions
4141+thereof with code not governed by the terms of this License.
4242+4343+1.6 "Modifications" mean any addition to, deletion from, and/or change to,
4444+the substance and/or structure of the Original Code, any previous
4545+Modifications, the combination of Original Code and any previous Modifications,
4646+and/or any respective portions thereof. When code is released as a series of
4747+files, a Modification is: (a) any addition to or deletion from the contents of
4848+a file containing Covered Code; and/or (b) any new file or other representation
4949+of computer program statements that contains any part of Covered Code.
5050+5151+1.7 "Original Code" means (a) the Source Code of a program or other work as
5252+originally made available by Apple under this License, including the Source
5353+Code of any updates or upgrades to such programs or works made available by
5454+Apple under this License, and that has been expressly identified by Apple as
5555+such in the header file(s) of such work; and (b) the object code compiled from
5656+such Source Code and originally made available by Apple under this License
5757+5858+1.8 "Source Code" means the human readable form of a program or other work
5959+that is suitable for making modifications to it, including all modules it
6060+contains, plus any associated interface definition files, scripts used to
6161+control compilation and installation of an executable (object code).
6262+6363+1.9 "You" or "Your" means an individual or a legal entity exercising rights
6464+under this License. For legal entities, "You" or "Your" includes any entity
6565+which controls, is controlled by, or is under common control with, You, where
6666+"control" means (a) the power, direct or indirect, to cause the direction or
6767+management of such entity, whether by contract or otherwise, or (b) ownership
6868+of fifty percent (50%) or more of the outstanding shares or beneficial
6969+ownership of such entity.
7070+7171+2. Permitted Uses; Conditions & Restrictions. Subject to the terms and
7272+conditions of this License, Apple hereby grants You, effective on the date You
7373+accept this License and download the Original Code, a world-wide, royalty-free,
7474+non-exclusive license, to the extent of Apple's Applicable Patent Rights and
7575+copyrights covering the Original Code, to do the following:
7676+7777+2.1 Unmodified Code. You may use, reproduce, display, perform, internally
7878+distribute within Your organization, and Externally Deploy verbatim, unmodified
7979+copies of the Original Code, for commercial or non-commercial purposes,
8080+provided that in each instance:
8181+8282+(a) You must retain and reproduce in all copies of Original Code the
8383+copyright and other proprietary notices and disclaimers of Apple as they appear
8484+in the Original Code, and keep intact all notices in the Original Code that
8585+refer to this License; and
8686+8787+(b) You must include a copy of this License with every copy of Source Code
8888+of Covered Code and documentation You distribute or Externally Deploy, and You
8989+may not offer or impose any terms on such Source Code that alter or restrict
9090+this License or the recipients' rights hereunder, except as permitted under
9191+Section 6.
9292+9393+2.2 Modified Code. You may modify Covered Code and use, reproduce,
9494+display, perform, internally distribute within Your organization, and
9595+Externally Deploy Your Modifications and Covered Code, for commercial or
9696+non-commercial purposes, provided that in each instance You also meet all of
9797+these conditions:
9898+9999+(a) You must satisfy all the conditions of Section 2.1 with respect to the
100100+Source Code of the Covered Code;
101101+102102+(b) You must duplicate, to the extent it does not already exist, the notice
103103+in Exhibit A in each file of the Source Code of all Your Modifications, and
104104+cause the modified files to carry prominent notices stating that You changed
105105+the files and the date of any change; and
106106+107107+(c) If You Externally Deploy Your Modifications, You must make Source Code
108108+of all Your Externally Deployed Modifications either available to those to whom
109109+You have Externally Deployed Your Modifications, or publicly available. Source
110110+Code of Your Externally Deployed Modifications must be released under the terms
111111+set forth in this License, including the license grants set forth in Section 3
112112+below, for as long as you Externally Deploy the Covered Code or twelve (12)
113113+months from the date of initial External Deployment, whichever is longer. You
114114+should preferably distribute the Source Code of Your Externally Deployed
115115+Modifications electronically (e.g. download from a web site).
116116+117117+2.3 Distribution of Executable Versions. In addition, if You Externally
118118+Deploy Covered Code (Original Code and/or Modifications) in object code,
119119+executable form only, You must include a prominent notice, in the code itself
120120+as well as in related documentation, stating that Source Code of the Covered
121121+Code is available under the terms of this License with information on how and
122122+where to obtain such Source Code.
123123+124124+2.4 Third Party Rights. You expressly acknowledge and agree that although
125125+Apple and each Contributor grants the licenses to their respective portions of
126126+the Covered Code set forth herein, no assurances are provided by Apple or any
127127+Contributor that the Covered Code does not infringe the patent or other
128128+intellectual property rights of any other entity. Apple and each Contributor
129129+disclaim any liability to You for claims brought by any other entity based on
130130+infringement of intellectual property rights or otherwise. As a condition to
131131+exercising the rights and licenses granted hereunder, You hereby assume sole
132132+responsibility to secure any other intellectual property rights needed, if any.
133133+For example, if a third party patent license is required to allow You to
134134+distribute the Covered Code, it is Your responsibility to acquire that license
135135+before distributing the Covered Code.
136136+137137+3. Your Grants. In consideration of, and as a condition to, the licenses
138138+granted to You under this License, You hereby grant to any person or entity
139139+receiving or distributing Covered Code under this License a non-exclusive,
140140+royalty-free, perpetual, irrevocable license, under Your Applicable Patent
141141+Rights and other intellectual property rights (other than patent) owned or
142142+controlled by You, to use, reproduce, display, perform, modify, sublicense,
143143+distribute and Externally Deploy Your Modifications of the same scope and
144144+extent as Apple's licenses under Sections 2.1 and 2.2 above.
145145+146146+4. Larger Works. You may create a Larger Work by combining Covered Code
147147+with other code not governed by the terms of this License and distribute the
148148+Larger Work as a single product. In each such instance, You must make sure the
149149+requirements of this License are fulfilled for the Covered Code or any portion
150150+thereof.
151151+152152+5. Limitations on Patent License. Except as expressly stated in Section
153153+2, no other patent rights, express or implied, are granted by Apple herein.
154154+Modifications and/or Larger Works may require additional patent licenses from
155155+Apple which Apple may grant in its sole discretion.
156156+157157+6. Additional Terms. You may choose to offer, and to charge a fee for,
158158+warranty, support, indemnity or liability obligations and/or other rights
159159+consistent with the scope of the license granted herein ("Additional Terms") to
160160+one or more recipients of Covered Code. However, You may do so only on Your own
161161+behalf and as Your sole responsibility, and not on behalf of Apple or any
162162+Contributor. You must obtain the recipient's agreement that any such Additional
163163+Terms are offered by You alone, and You hereby agree to indemnify, defend and
164164+hold Apple and every Contributor harmless for any liability incurred by or
165165+claims asserted against Apple or such Contributor by reason of any such
166166+Additional Terms.
167167+168168+7. Versions of the License. Apple may publish revised and/or new versions
169169+of this License from time to time. Each version will be given a distinguishing
170170+version number. Once Original Code has been published under a particular
171171+version of this License, You may continue to use it under the terms of that
172172+version. You may also choose to use such Original Code under the terms of any
173173+subsequent version of this License published by Apple. No one other than Apple
174174+has the right to modify the terms applicable to Covered Code created under this
175175+License.
176176+177177+8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in
178178+part pre-release, untested, or not fully tested works. The Covered Code may
179179+contain errors that could cause failures or loss of data, and may be incomplete
180180+or contain inaccuracies. You expressly acknowledge and agree that use of the
181181+Covered Code, or any portion thereof, is at Your sole and entire risk. THE
182182+COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
183183+ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE"
184184+FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM
185185+ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT
186186+LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF
187187+SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF
188188+QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE AND EACH
189189+CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE
190190+COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR
191191+REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR
192192+ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR
193193+WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED
194194+REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You acknowledge
195195+that the Covered Code is not intended for use in the operation of nuclear
196196+facilities, aircraft navigation, communication systems, or air traffic control
197197+machines in which case the failure of the Covered Code could lead to death,
198198+personal injury, or severe physical or environmental damage.
199199+200200+9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO
201201+EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
202202+INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR
203203+YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER
204204+UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS
205205+LIABILITY OR OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF
206206+THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL
207207+PURPOSE OF ANY REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF
208208+LIABILITY OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT
209209+APPLY TO YOU. In no event shall Apple's total liability to You for all damages
210210+(other than as may be required by applicable law) under this License exceed the
211211+amount of fifty dollars ($50.00).
212212+213213+10. Trademarks. This License does not grant any rights to use the
214214+trademarks or trade names "Apple", "Mac", "Mac OS", "QuickTime", "QuickTime
215215+Streaming Server" or any other trademarks, service marks, logos or trade names
216216+belonging to Apple (collectively "Apple Marks") or to any trademark, service
217217+mark, logo or trade name belonging to any Contributor. You agree not to use
218218+any Apple Marks in or as part of the name of products derived from the Original
219219+Code or to endorse or promote products derived from the Original Code other
220220+than as expressly permitted by and in strict compliance at all times with
221221+Apple's third party trademark usage guidelines which are posted at
222222+http://www.apple.com/legal/guidelinesfor3rdparties.html.
223223+224224+11. Ownership. Subject to the licenses granted under this License, each
225225+Contributor retains all rights, title and interest in and to any Modifications
226226+made by such Contributor. Apple retains all rights, title and interest in and
227227+to the Original Code and any Modifications made by or on behalf of Apple
228228+("Apple Modifications"), and such Apple Modifications will not be automatically
229229+subject to this License. Apple may, at its sole discretion, choose to license
230230+such Apple Modifications under this License, or on different terms from those
231231+contained in this License or may choose not to license them at all.
232232+233233+12. Termination.
234234+235235+12.1 Termination. This License and the rights granted hereunder will
236236+terminate:
237237+238238+(a) automatically without notice from Apple if You fail to comply with any
239239+term(s) of this License and fail to cure such breach within 30 days of becoming
240240+aware of such breach;
241241+(b) immediately in the event of the circumstances described in Section
242242+13.5(b); or
243243+(c) automatically without notice from Apple if You, at any time during the
244244+term of this License, commence an action for patent infringement against Apple;
245245+provided that Apple did not first commence an action for patent infringement
246246+against You in that instance.
247247+248248+12.2 Effect of Termination. Upon termination, You agree to immediately stop
249249+any further use, reproduction, modification, sublicensing and distribution of
250250+the Covered Code. All sublicenses to the Covered Code which have been properly
251251+granted prior to termination shall survive any termination of this License.
252252+Provisions which, by their nature, should remain in effect beyond the
253253+termination of this License shall survive, including but not limited to
254254+Sections 3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other
255255+for compensation, indemnity or damages of any sort solely as a result of
256256+terminating this License in accordance with its terms, and termination of this
257257+License will be without prejudice to any other right or remedy of any party.
258258+259259+13. Miscellaneous.
260260+261261+13.1 Government End Users. The Covered Code is a "commercial item" as
262262+defined in FAR 2.101. Government software and technical data rights in the
263263+Covered Code include only those rights customarily provided to the public as
264264+defined in this License. This customary commercial license in technical data
265265+and software is provided in accordance with FAR 12.211 (Technical Data) and
266266+12.212 (Computer Software) and, for Department of Defense purchases, DFAR
267267+252.227-7015 (Technical Data -- Commercial Items) and 227.7202-3 (Rights in
268268+Commercial Computer Software or Computer Software Documentation). Accordingly,
269269+all U.S. Government End Users acquire Covered Code with only those rights set
270270+forth herein.
271271+272272+13.2 Relationship of Parties. This License will not be construed as
273273+creating an agency, partnership, joint venture or any other form of legal
274274+association between or among You, Apple or any Contributor, and You will not
275275+represent to the contrary, whether expressly, by implication, appearance or
276276+otherwise.
277277+278278+13.3 Independent Development. Nothing in this License will impair Apple's
279279+right to acquire, license, develop, have others develop for it, market and/or
280280+distribute technology or products that perform the same or similar functions
281281+as, or otherwise compete with, Modifications, Larger Works, technology or
282282+products that You may develop, produce, market or distribute.
283283+284284+13.4 Waiver; Construction. Failure by Apple or any Contributor to enforce
285285+any provision of this License will not be deemed a waiver of future enforcement
286286+of that or any other provision. Any law or regulation which provides that the
287287+language of a contract shall be construed against the drafter will not apply to
288288+this License.
289289+290290+13.5 Severability. (a) If for any reason a court of competent jurisdiction
291291+finds any provision of this License, or portion thereof, to be unenforceable,
292292+that provision of the License will be enforced to the maximum extent
293293+permissible so as to effect the economic benefits and intent of the parties,
294294+and the remainder of this License will continue in full force and effect. (b)
295295+Notwithstanding the foregoing, if applicable law prohibits or restricts You
296296+from fully and/or specifically complying with Sections 2 and/or 3 or prevents
297297+the enforceability of either of those Sections, this License will immediately
298298+terminate and You must immediately discontinue any use of the Covered Code and
299299+destroy all copies of it that are in your possession or control.
300300+301301+13.6 Dispute Resolution. Any litigation or other dispute resolution between
302302+You and Apple relating to this License shall take place in the Northern
303303+District of California, and You and Apple hereby consent to the personal
304304+jurisdiction of, and venue in, the state and federal courts within that
305305+District with respect to this License. The application of the United Nations
306306+Convention on Contracts for the International Sale of Goods is expressly
307307+excluded.
308308+309309+13.7 Entire Agreement; Governing Law. This License constitutes the entire
310310+agreement between the parties with respect to the subject matter hereof. This
311311+License shall be governed by the laws of the United States and the State of
312312+California, except that body of California law concerning conflicts of law.
313313+314314+Where You are located in the province of Quebec, Canada, the following clause
315315+applies: The parties hereby confirm that they have requested that this License
316316+and all related documents be drafted in English. Les parties ont exigé que le
317317+présent contrat et tous les documents connexes soient rédigés en anglais.
318318+319319+EXHIBIT A.
320320+321321+"Portions Copyright (c) 1999-2007 Apple Inc. All Rights Reserved.
322322+323323+This file contains Original Code and/or Modifications of Original Code as
324324+defined in and that are subject to the Apple Public Source License Version 2.0
325325+(the 'License'). You may not use this file except in compliance with the
326326+License. Please obtain a copy of the License at
327327+http://www.opensource.apple.com/apsl/ and read it before using this file.
328328+329329+The Original Code and all software distributed under the License are
330330+distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
331331+OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
332332+LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
333333+PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
334334+specific language governing rights and limitations under the License."
335335+
···11+/*
22+ * Copyright (c) 2010-2011 Apple Inc. All rights reserved.
33+ *
44+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
55+ *
66+ * This file contains Original Code and/or Modifications of Original Code
77+ * as defined in and that are subject to the Apple Public Source License
88+ * Version 2.0 (the 'License'). You may not use this file except in
99+ * compliance with the License. The rights granted to you under the License
1010+ * may not be used to create, or enable the creation or redistribution of,
1111+ * unlawful or unlicensed copies of an Apple operating system, or to
1212+ * circumvent, violate, or enable the circumvention or violation of, any
1313+ * terms of an Apple operating system software license agreement.
1414+ *
1515+ * Please obtain a copy of the License at
1616+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
1717+ *
1818+ * The Original Code and all software distributed under the License are
1919+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
2020+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
2121+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
2222+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
2323+ * Please see the License for the specific language governing rights and
2424+ * limitations under the License.
2525+ *
2626+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
2727+ */
2828+2929+/*
3030+ * See: <rdar://problem/8289209>, <rdar://problem/8351271>, <rdar://problem/8359348>
3131+ */
3232+3333+#if defined(__i386__) || defined(__x86_64__)
3434+3535+#define SYM(sym) \
3636+ __asm__(".globl R8289209$_" #sym "; R8289209$_" #sym ": jmp _" #sym)
3737+3838+/****************/
3939+4040+SYM(close);
4141+SYM(fork);
4242+SYM(fsync);
4343+SYM(getattrlist);
4444+SYM(getrlimit);
4545+SYM(getxattr);
4646+SYM(open);
4747+SYM(pthread_attr_destroy);
4848+SYM(pthread_attr_init);
4949+SYM(pthread_attr_setdetachstate);
5050+SYM(pthread_create);
5151+SYM(pthread_mutex_lock);
5252+SYM(pthread_mutex_unlock);
5353+SYM(pthread_self);
5454+SYM(ptrace);
5555+SYM(read);
5656+SYM(setattrlist);
5757+SYM(setrlimit);
5858+SYM(sigaction);
5959+SYM(stat);
6060+SYM(sysctl);
6161+SYM(time);
6262+SYM(unlink);
6363+SYM(write);
6464+6565+#endif /* defined(__i386__) || defined(__x86_64__) */
6666+
+76
libsystem/alloc_once_private.h
···11+/*
22+ * Copyright (c) 2012-2013 Apple Inc. All rights reserved.
33+ *
44+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
55+ *
66+ * This file contains Original Code and/or Modifications of Original Code
77+ * as defined in and that are subject to the Apple Public Source License
88+ * Version 2.0 (the 'License'). You may not use this file except in
99+ * compliance with the License. The rights granted to you under the License
1010+ * may not be used to create, or enable the creation or redistribution of,
1111+ * unlawful or unlicensed copies of an Apple operating system, or to
1212+ * circumvent, violate, or enable the circumvention or violation of, any
1313+ * terms of an Apple operating system software license agreement.
1414+ *
1515+ * Please obtain a copy of the License at
1616+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
1717+ *
1818+ * The Original Code and all software distributed under the License are
1919+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
2020+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
2121+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
2222+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
2323+ * Please see the License for the specific language governing rights and
2424+ * limitations under the License.
2525+ *
2626+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
2727+ */
2828+2929+#ifndef __OS_ALLOC__
3030+#define __OS_ALLOC__
3131+3232+#ifndef __OS_ALLOC_INDIRECT__
3333+#define __OS_ALLOC_INDIRECT__
3434+#endif // __OS_ALLOC_INDIRECT__
3535+3636+#include <os/alloc_once_impl.h>
3737+3838+/* Keys for use with os_once_alloc. */
3939+4040+/* Keys for Libsystem. */
4141+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_NOTIFY 0
4242+#define OS_ALLOC_ONCE_KEY_LIBXPC 1
4343+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_C 2
4444+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_INFO 3
4545+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_NETWORK 4
4646+#define OS_ALLOC_ONCE_KEY_LIBCACHE 5
4747+#define OS_ALLOC_ONCE_KEY_LIBCOMMONCRYPTO 6
4848+#define OS_ALLOC_ONCE_KEY_LIBDISPATCH 7
4949+#define OS_ALLOC_ONCE_KEY_LIBDYLD 8
5050+#define OS_ALLOC_ONCE_KEY_LIBKEYMGR 9
5151+#define OS_ALLOC_ONCE_KEY_LIBLAUNCH 10
5252+#define OS_ALLOC_ONCE_KEY_LIBMACHO 11
5353+#define OS_ALLOC_ONCE_KEY_OS_TRACE 12
5454+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_BLOCKS 13
5555+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_MALLOC 14
5656+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_PLATFORM 15
5757+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_PTHREAD 16
5858+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_STATS 17
5959+#define OS_ALLOC_ONCE_KEY_LIBSECINIT 18
6060+#define OS_ALLOC_ONCE_KEY_LIBSYSTEM_CORESERVICES 19
6161+6262+/* Keys OS_ALLOC_ONCE_KEY_MAX - 10 upwards are reserved for the system. */
6363+#define OS_ALLOC_ONCE_KEY_RESERVED_0 (OS_ALLOC_ONCE_KEY_MAX - 10)
6464+#define OS_ALLOC_ONCE_KEY_RESERVED_1 (OS_ALLOC_ONCE_KEY_MAX - 9)
6565+#define OS_ALLOC_ONCE_KEY_RESERVED_2 (OS_ALLOC_ONCE_KEY_MAX - 8)
6666+#define OS_ALLOC_ONCE_KEY_RESERVED_3 (OS_ALLOC_ONCE_KEY_MAX - 7)
6767+#define OS_ALLOC_ONCE_KEY_RESERVED_4 (OS_ALLOC_ONCE_KEY_MAX - 6)
6868+#define OS_ALLOC_ONCE_KEY_RESERVED_5 (OS_ALLOC_ONCE_KEY_MAX - 5)
6969+#define OS_ALLOC_ONCE_KEY_RESERVED_6 (OS_ALLOC_ONCE_KEY_MAX - 4)
7070+#define OS_ALLOC_ONCE_KEY_RESERVED_7 (OS_ALLOC_ONCE_KEY_MAX - 3)
7171+#define OS_ALLOC_ONCE_KEY_RESERVED_8 (OS_ALLOC_ONCE_KEY_MAX - 2)
7272+#define OS_ALLOC_ONCE_KEY_RESERVED_9 (OS_ALLOC_ONCE_KEY_MAX - 1)
7373+7474+/* OS_ALLOC_ONCE_KEY_MAX cannot be used. */
7575+7676+#endif // __OS_ALLOC__
···11+// Modified by Lubos Dolezel to support older (10.8) libc and newer libsystem_kernel
22+/*
33+ * Copyright (c) 2007, 2008, 2011 Apple Inc. All rights reserved.
44+ *
55+ * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
66+ *
77+ * This file contains Original Code and/or Modifications of Original Code
88+ * as defined in and that are subject to the Apple Public Source License
99+ * Version 2.0 (the 'License'). You may not use this file except in
1010+ * compliance with the License. The rights granted to you under the License
1111+ * may not be used to create, or enable the creation or redistribution of,
1212+ * unlawful or unlicensed copies of an Apple operating system, or to
1313+ * circumvent, violate, or enable the circumvention or violation of, any
1414+ * terms of an Apple operating system software license agreement.
1515+ *
1616+ * Please obtain a copy of the License at
1717+ * http://www.opensource.apple.com/apsl/ and read it before using this file.
1818+ *
1919+ * The Original Code and all software distributed under the License are
2020+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
2121+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
2222+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
2323+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
2424+ * Please see the License for the specific language governing rights and
2525+ * limitations under the License.
2626+ *
2727+ * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
2828+ */
2929+3030+#include <TargetConditionals.h> // for TARGET_OS_EMBEDDED
3131+3232+#include <_libkernel_init.h>
3333+#include <dlfcn.h>
3434+#include <errno.h>
3535+#include <stdlib.h>
3636+3737+struct ProgramVars; /* forward reference */
3838+3939+// system library initialisers
4040+extern void bootstrap_init(void); // from liblaunch.dylib
4141+extern void mach_init(void); // from libsystem_mach.dylib
4242+extern void pthread_init(void); // from libc.a
4343+extern void __libc_init(const struct ProgramVars *vars, void (*atfork_prepare)(void), void (*atfork_parent)(void), void (*atfork_child)(void), const char *apple[]); // from libc.a
4444+extern void __keymgr_initializer(void); // from libkeymgr.a
4545+extern void _dyld_initializer(void); // from libdyld.a
4646+extern void libdispatch_init(void); // from libdispatch.a
4747+extern void _libxpc_initializer(void); // from libxpc
4848+4949+// signal malloc stack logging that initialisation has finished
5050+extern void __stack_logging_early_finished(void); // form libsystem_c.dylib
5151+5252+// system library atfork handlers
5353+extern void _cthread_fork_prepare(void);
5454+extern void _cthread_fork_parent(void);
5555+extern void _cthread_fork_child(void);
5656+extern void _cthread_fork_child_postinit(void);
5757+5858+extern void _mach_fork_child(void);
5959+extern void _cproc_fork_child(void);
6060+extern void _libc_fork_child(void);
6161+extern void _notify_fork_child(void);
6262+extern void _dyld_fork_child(void);
6363+extern void xpc_atfork_prepare(void);
6464+extern void xpc_atfork_parent(void);
6565+extern void xpc_atfork_child(void);
6666+6767+// advance decls for below;
6868+void libSystem_atfork_prepare(void);
6969+void libSystem_atfork_parent(void);
7070+void libSystem_atfork_child(void);
7171+7272+// from mig_support.c in libc
7373+mach_port_t _mig_get_reply_port(void);
7474+void _mig_set_reply_port(mach_port_t);
7575+7676+void cthread_set_errno_self(int);
7777+7878+static void _pthread_exit_if_canceled(int err) { _pthread_testcancel(pthread_self(), 1); }
7979+8080+/*
8181+ * libsyscall_initializer() initializes all of libSystem.dylib <rdar://problem/4892197>
8282+ */
8383+static __attribute__((constructor))
8484+void libSystem_initializer(int argc, const char* argv[], const char* envp[], const char* apple[], const struct ProgramVars* vars)
8585+{
8686+ static const struct _libkernel_functions libkernel_funcs = {
8787+ .version = 1,
8888+ .dlsym = dlsym,
8989+ .malloc = malloc,
9090+ .free = free,
9191+ .realloc = realloc,
9292+ ._pthread_exit_if_canceled = _pthread_exit_if_canceled,
9393+ };
9494+9595+ _libkernel_init(libkernel_funcs);
9696+9797+ bootstrap_init();
9898+ mach_init();
9999+ pthread_init();
100100+ __libc_init(vars, libSystem_atfork_prepare, libSystem_atfork_parent, libSystem_atfork_child, apple);
101101+ __keymgr_initializer();
102102+ _dyld_initializer();
103103+ libdispatch_init();
104104+ _libxpc_initializer();
105105+106106+ __stack_logging_early_finished();
107107+108108+ /* <rdar://problem/11588042>
109109+ * C99 standard has the following in section 7.5(3):
110110+ * "The value of errno is zero at program startup, but is never set
111111+ * to zero by any library function."
112112+ */
113113+ errno = 0;
114114+}
115115+116116+/*
117117+ * libSystem_atfork_{prepare,parent,child}() are called by libc when we fork, then we deal with running fork handlers
118118+ * for everyone else.
119119+ */
120120+void libSystem_atfork_prepare(void)
121121+{
122122+ xpc_atfork_prepare();
123123+ _cthread_fork_prepare();
124124+}
125125+126126+void libSystem_atfork_parent(void)
127127+{
128128+ _cthread_fork_parent();
129129+ xpc_atfork_parent();
130130+}
131131+132132+void libSystem_atfork_child(void)
133133+{
134134+ _dyld_fork_child();
135135+ _cthread_fork_child();
136136+137137+ bootstrap_init();
138138+ _mach_fork_child();
139139+ _cproc_fork_child();
140140+ _libc_fork_child();
141141+ _notify_fork_child();
142142+ xpc_atfork_child();
143143+144144+ _cthread_fork_child_postinit();
145145+}
146146+147147+/*
148148+ * Old crt1.o glue used to call through mach_init_routine which was used to initialize libSystem.
149149+ * LibSystem now auto-initializes but mach_init_routine is left for binary compatibility.
150150+ */
151151+static void mach_init_old(void) {}
152152+void (*mach_init_routine)(void) = &mach_init_old;
153153+154154+/*
155155+ * This __crashreporter_info__ symbol is for all non-dylib parts of libSystem.
156156+ */
157157+const char *__crashreporter_info__;
158158+//asm (".desc __crashreporter_info__, 0x10");