this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Adding libsystem

+679
+1
CMakeLists.txt
··· 18 18 add_subdirectory(libc) 19 19 add_subdirectory(libm) 20 20 add_subdirectory(libmalloc) 21 + add_subdirectory(libsystem) 21 22
+335
libsystem/APPLE_LICENSE
··· 1 + APPLE PUBLIC SOURCE LICENSE 2 + Version 2.0 - August 6, 2003 3 + 4 + Please read this License carefully before downloading this software. By 5 + downloading or using this software, you are agreeing to be bound by the terms 6 + of this License. If you do not or cannot agree to the terms of this License, 7 + please do not download or use the software. 8 + 9 + Apple Note: In January 2007, Apple changed its corporate name from "Apple 10 + Computer, Inc." to "Apple Inc." This change has been reflected below and 11 + copyright years updated, but no other changes have been made to the APSL 2.0. 12 + 13 + 1. General; Definitions. This License applies to any program or other 14 + work which Apple Inc. ("Apple") makes publicly available and which contains a 15 + notice placed by Apple identifying such program or work as "Original Code" and 16 + stating that it is subject to the terms of this Apple Public Source License 17 + version 2.0 ("License"). As used in this License: 18 + 19 + 1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is the 20 + grantor of rights, (i) claims of patents that are now or hereafter acquired, 21 + owned by or assigned to Apple and (ii) that cover subject matter contained in 22 + the Original Code, but only to the extent necessary to use, reproduce and/or 23 + distribute the Original Code without infringement; and (b) in the case where 24 + You are the grantor of rights, (i) claims of patents that are now or hereafter 25 + acquired, owned by or assigned to You and (ii) that cover subject matter in 26 + Your Modifications, taken alone or in combination with Original Code. 27 + 28 + 1.2 "Contributor" means any person or entity that creates or contributes to 29 + the creation of Modifications. 30 + 31 + 1.3 "Covered Code" means the Original Code, Modifications, the combination 32 + of Original Code and any Modifications, and/or any respective portions thereof. 33 + 34 + 1.4 "Externally Deploy" means: (a) to sublicense, distribute or otherwise 35 + make Covered Code available, directly or indirectly, to anyone other than You; 36 + and/or (b) to use Covered Code, alone or as part of a Larger Work, in any way 37 + to provide a service, including but not limited to delivery of content, through 38 + electronic communication with a client other than You. 39 + 40 + 1.5 "Larger Work" means a work which combines Covered Code or portions 41 + thereof with code not governed by the terms of this License. 42 + 43 + 1.6 "Modifications" mean any addition to, deletion from, and/or change to, 44 + the substance and/or structure of the Original Code, any previous 45 + Modifications, the combination of Original Code and any previous Modifications, 46 + and/or any respective portions thereof. When code is released as a series of 47 + files, a Modification is: (a) any addition to or deletion from the contents of 48 + a file containing Covered Code; and/or (b) any new file or other representation 49 + of computer program statements that contains any part of Covered Code. 50 + 51 + 1.7 "Original Code" means (a) the Source Code of a program or other work as 52 + originally made available by Apple under this License, including the Source 53 + Code of any updates or upgrades to such programs or works made available by 54 + Apple under this License, and that has been expressly identified by Apple as 55 + such in the header file(s) of such work; and (b) the object code compiled from 56 + such Source Code and originally made available by Apple under this License 57 + 58 + 1.8 "Source Code" means the human readable form of a program or other work 59 + that is suitable for making modifications to it, including all modules it 60 + contains, plus any associated interface definition files, scripts used to 61 + control compilation and installation of an executable (object code). 62 + 63 + 1.9 "You" or "Your" means an individual or a legal entity exercising rights 64 + under this License. For legal entities, "You" or "Your" includes any entity 65 + which controls, is controlled by, or is under common control with, You, where 66 + "control" means (a) the power, direct or indirect, to cause the direction or 67 + management of such entity, whether by contract or otherwise, or (b) ownership 68 + of fifty percent (50%) or more of the outstanding shares or beneficial 69 + ownership of such entity. 70 + 71 + 2. Permitted Uses; Conditions & Restrictions. Subject to the terms and 72 + conditions of this License, Apple hereby grants You, effective on the date You 73 + accept this License and download the Original Code, a world-wide, royalty-free, 74 + non-exclusive license, to the extent of Apple's Applicable Patent Rights and 75 + copyrights covering the Original Code, to do the following: 76 + 77 + 2.1 Unmodified Code. You may use, reproduce, display, perform, internally 78 + distribute within Your organization, and Externally Deploy verbatim, unmodified 79 + copies of the Original Code, for commercial or non-commercial purposes, 80 + provided that in each instance: 81 + 82 + (a) You must retain and reproduce in all copies of Original Code the 83 + copyright and other proprietary notices and disclaimers of Apple as they appear 84 + in the Original Code, and keep intact all notices in the Original Code that 85 + refer to this License; and 86 + 87 + (b) You must include a copy of this License with every copy of Source Code 88 + of Covered Code and documentation You distribute or Externally Deploy, and You 89 + may not offer or impose any terms on such Source Code that alter or restrict 90 + this License or the recipients' rights hereunder, except as permitted under 91 + Section 6. 92 + 93 + 2.2 Modified Code. You may modify Covered Code and use, reproduce, 94 + display, perform, internally distribute within Your organization, and 95 + Externally Deploy Your Modifications and Covered Code, for commercial or 96 + non-commercial purposes, provided that in each instance You also meet all of 97 + these conditions: 98 + 99 + (a) You must satisfy all the conditions of Section 2.1 with respect to the 100 + Source Code of the Covered Code; 101 + 102 + (b) You must duplicate, to the extent it does not already exist, the notice 103 + in Exhibit A in each file of the Source Code of all Your Modifications, and 104 + cause the modified files to carry prominent notices stating that You changed 105 + the files and the date of any change; and 106 + 107 + (c) If You Externally Deploy Your Modifications, You must make Source Code 108 + of all Your Externally Deployed Modifications either available to those to whom 109 + You have Externally Deployed Your Modifications, or publicly available. Source 110 + Code of Your Externally Deployed Modifications must be released under the terms 111 + set forth in this License, including the license grants set forth in Section 3 112 + below, for as long as you Externally Deploy the Covered Code or twelve (12) 113 + months from the date of initial External Deployment, whichever is longer. You 114 + should preferably distribute the Source Code of Your Externally Deployed 115 + Modifications electronically (e.g. download from a web site). 116 + 117 + 2.3 Distribution of Executable Versions. In addition, if You Externally 118 + Deploy Covered Code (Original Code and/or Modifications) in object code, 119 + executable form only, You must include a prominent notice, in the code itself 120 + as well as in related documentation, stating that Source Code of the Covered 121 + Code is available under the terms of this License with information on how and 122 + where to obtain such Source Code. 123 + 124 + 2.4 Third Party Rights. You expressly acknowledge and agree that although 125 + Apple and each Contributor grants the licenses to their respective portions of 126 + the Covered Code set forth herein, no assurances are provided by Apple or any 127 + Contributor that the Covered Code does not infringe the patent or other 128 + intellectual property rights of any other entity. Apple and each Contributor 129 + disclaim any liability to You for claims brought by any other entity based on 130 + infringement of intellectual property rights or otherwise. As a condition to 131 + exercising the rights and licenses granted hereunder, You hereby assume sole 132 + responsibility to secure any other intellectual property rights needed, if any. 133 + For example, if a third party patent license is required to allow You to 134 + distribute the Covered Code, it is Your responsibility to acquire that license 135 + before distributing the Covered Code. 136 + 137 + 3. Your Grants. In consideration of, and as a condition to, the licenses 138 + granted to You under this License, You hereby grant to any person or entity 139 + receiving or distributing Covered Code under this License a non-exclusive, 140 + royalty-free, perpetual, irrevocable license, under Your Applicable Patent 141 + Rights and other intellectual property rights (other than patent) owned or 142 + controlled by You, to use, reproduce, display, perform, modify, sublicense, 143 + distribute and Externally Deploy Your Modifications of the same scope and 144 + extent as Apple's licenses under Sections 2.1 and 2.2 above. 145 + 146 + 4. Larger Works. You may create a Larger Work by combining Covered Code 147 + with other code not governed by the terms of this License and distribute the 148 + Larger Work as a single product. In each such instance, You must make sure the 149 + requirements of this License are fulfilled for the Covered Code or any portion 150 + thereof. 151 + 152 + 5. Limitations on Patent License. Except as expressly stated in Section 153 + 2, no other patent rights, express or implied, are granted by Apple herein. 154 + Modifications and/or Larger Works may require additional patent licenses from 155 + Apple which Apple may grant in its sole discretion. 156 + 157 + 6. Additional Terms. You may choose to offer, and to charge a fee for, 158 + warranty, support, indemnity or liability obligations and/or other rights 159 + consistent with the scope of the license granted herein ("Additional Terms") to 160 + one or more recipients of Covered Code. However, You may do so only on Your own 161 + behalf and as Your sole responsibility, and not on behalf of Apple or any 162 + Contributor. You must obtain the recipient's agreement that any such Additional 163 + Terms are offered by You alone, and You hereby agree to indemnify, defend and 164 + hold Apple and every Contributor harmless for any liability incurred by or 165 + claims asserted against Apple or such Contributor by reason of any such 166 + Additional Terms. 167 + 168 + 7. Versions of the License. Apple may publish revised and/or new versions 169 + of this License from time to time. Each version will be given a distinguishing 170 + version number. Once Original Code has been published under a particular 171 + version of this License, You may continue to use it under the terms of that 172 + version. You may also choose to use such Original Code under the terms of any 173 + subsequent version of this License published by Apple. No one other than Apple 174 + has the right to modify the terms applicable to Covered Code created under this 175 + License. 176 + 177 + 8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in 178 + part pre-release, untested, or not fully tested works. The Covered Code may 179 + contain errors that could cause failures or loss of data, and may be incomplete 180 + or contain inaccuracies. You expressly acknowledge and agree that use of the 181 + Covered Code, or any portion thereof, is at Your sole and entire risk. THE 182 + COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF 183 + ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" 184 + FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM 185 + ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT 186 + LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF 187 + SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF 188 + QUIET ENJOYMENT, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. APPLE AND EACH 189 + CONTRIBUTOR DOES NOT WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE 190 + COVERED CODE, THAT THE FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR 191 + REQUIREMENTS, THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR 192 + ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO ORAL OR 193 + WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED 194 + REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY. You acknowledge 195 + that the Covered Code is not intended for use in the operation of nuclear 196 + facilities, aircraft navigation, communication systems, or air traffic control 197 + machines in which case the failure of the Covered Code could lead to death, 198 + personal injury, or severe physical or environmental damage. 199 + 200 + 9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO 201 + EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL, 202 + INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR 203 + YOUR USE OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER 204 + UNDER A THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS 205 + LIABILITY OR OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF 206 + THE POSSIBILITY OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL 207 + PURPOSE OF ANY REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF 208 + LIABILITY OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT 209 + APPLY TO YOU. In no event shall Apple's total liability to You for all damages 210 + (other than as may be required by applicable law) under this License exceed the 211 + amount of fifty dollars ($50.00). 212 + 213 + 10. Trademarks. This License does not grant any rights to use the 214 + trademarks or trade names "Apple", "Mac", "Mac OS", "QuickTime", "QuickTime 215 + Streaming Server" or any other trademarks, service marks, logos or trade names 216 + belonging to Apple (collectively "Apple Marks") or to any trademark, service 217 + mark, logo or trade name belonging to any Contributor. You agree not to use 218 + any Apple Marks in or as part of the name of products derived from the Original 219 + Code or to endorse or promote products derived from the Original Code other 220 + than as expressly permitted by and in strict compliance at all times with 221 + Apple's third party trademark usage guidelines which are posted at 222 + http://www.apple.com/legal/guidelinesfor3rdparties.html. 223 + 224 + 11. Ownership. Subject to the licenses granted under this License, each 225 + Contributor retains all rights, title and interest in and to any Modifications 226 + made by such Contributor. Apple retains all rights, title and interest in and 227 + to the Original Code and any Modifications made by or on behalf of Apple 228 + ("Apple Modifications"), and such Apple Modifications will not be automatically 229 + subject to this License. Apple may, at its sole discretion, choose to license 230 + such Apple Modifications under this License, or on different terms from those 231 + contained in this License or may choose not to license them at all. 232 + 233 + 12. Termination. 234 + 235 + 12.1 Termination. This License and the rights granted hereunder will 236 + terminate: 237 + 238 + (a) automatically without notice from Apple if You fail to comply with any 239 + term(s) of this License and fail to cure such breach within 30 days of becoming 240 + aware of such breach; 241 + (b) immediately in the event of the circumstances described in Section 242 + 13.5(b); or 243 + (c) automatically without notice from Apple if You, at any time during the 244 + term of this License, commence an action for patent infringement against Apple; 245 + provided that Apple did not first commence an action for patent infringement 246 + against You in that instance. 247 + 248 + 12.2 Effect of Termination. Upon termination, You agree to immediately stop 249 + any further use, reproduction, modification, sublicensing and distribution of 250 + the Covered Code. All sublicenses to the Covered Code which have been properly 251 + granted prior to termination shall survive any termination of this License. 252 + Provisions which, by their nature, should remain in effect beyond the 253 + termination of this License shall survive, including but not limited to 254 + Sections 3, 5, 8, 9, 10, 11, 12.2 and 13. No party will be liable to any other 255 + for compensation, indemnity or damages of any sort solely as a result of 256 + terminating this License in accordance with its terms, and termination of this 257 + License will be without prejudice to any other right or remedy of any party. 258 + 259 + 13. Miscellaneous. 260 + 261 + 13.1 Government End Users. The Covered Code is a "commercial item" as 262 + defined in FAR 2.101. Government software and technical data rights in the 263 + Covered Code include only those rights customarily provided to the public as 264 + defined in this License. This customary commercial license in technical data 265 + and software is provided in accordance with FAR 12.211 (Technical Data) and 266 + 12.212 (Computer Software) and, for Department of Defense purchases, DFAR 267 + 252.227-7015 (Technical Data -- Commercial Items) and 227.7202-3 (Rights in 268 + Commercial Computer Software or Computer Software Documentation). Accordingly, 269 + all U.S. Government End Users acquire Covered Code with only those rights set 270 + forth herein. 271 + 272 + 13.2 Relationship of Parties. This License will not be construed as 273 + creating an agency, partnership, joint venture or any other form of legal 274 + association between or among You, Apple or any Contributor, and You will not 275 + represent to the contrary, whether expressly, by implication, appearance or 276 + otherwise. 277 + 278 + 13.3 Independent Development. Nothing in this License will impair Apple's 279 + right to acquire, license, develop, have others develop for it, market and/or 280 + distribute technology or products that perform the same or similar functions 281 + as, or otherwise compete with, Modifications, Larger Works, technology or 282 + products that You may develop, produce, market or distribute. 283 + 284 + 13.4 Waiver; Construction. Failure by Apple or any Contributor to enforce 285 + any provision of this License will not be deemed a waiver of future enforcement 286 + of that or any other provision. Any law or regulation which provides that the 287 + language of a contract shall be construed against the drafter will not apply to 288 + this License. 289 + 290 + 13.5 Severability. (a) If for any reason a court of competent jurisdiction 291 + finds any provision of this License, or portion thereof, to be unenforceable, 292 + that provision of the License will be enforced to the maximum extent 293 + permissible so as to effect the economic benefits and intent of the parties, 294 + and the remainder of this License will continue in full force and effect. (b) 295 + Notwithstanding the foregoing, if applicable law prohibits or restricts You 296 + from fully and/or specifically complying with Sections 2 and/or 3 or prevents 297 + the enforceability of either of those Sections, this License will immediately 298 + terminate and You must immediately discontinue any use of the Covered Code and 299 + destroy all copies of it that are in your possession or control. 300 + 301 + 13.6 Dispute Resolution. Any litigation or other dispute resolution between 302 + You and Apple relating to this License shall take place in the Northern 303 + District of California, and You and Apple hereby consent to the personal 304 + jurisdiction of, and venue in, the state and federal courts within that 305 + District with respect to this License. The application of the United Nations 306 + Convention on Contracts for the International Sale of Goods is expressly 307 + excluded. 308 + 309 + 13.7 Entire Agreement; Governing Law. This License constitutes the entire 310 + agreement between the parties with respect to the subject matter hereof. This 311 + License shall be governed by the laws of the United States and the State of 312 + California, except that body of California law concerning conflicts of law. 313 + 314 + Where You are located in the province of Quebec, Canada, the following clause 315 + applies: The parties hereby confirm that they have requested that this License 316 + and all related documents be drafted in English. Les parties ont exigé que le 317 + présent contrat et tous les documents connexes soient rédigés en anglais. 318 + 319 + EXHIBIT A. 320 + 321 + "Portions Copyright (c) 1999-2007 Apple Inc. All Rights Reserved. 322 + 323 + This file contains Original Code and/or Modifications of Original Code as 324 + defined in and that are subject to the Apple Public Source License Version 2.0 325 + (the 'License'). You may not use this file except in compliance with the 326 + License. Please obtain a copy of the License at 327 + http://www.opensource.apple.com/apsl/ and read it before using this file. 328 + 329 + The Original Code and all software distributed under the License are 330 + distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS 331 + OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT 332 + LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR 333 + PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the 334 + specific language governing rights and limitations under the License." 335 +
+29
libsystem/CMakeLists.txt
··· 1 + project(darling-libsystem_init) 2 + 3 + cmake_minimum_required(VERSION 2.4.0) 4 + 5 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc") 6 + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -nostdlib") 7 + 8 + include_directories(${CMAKE_SOURCE_DIR}/libc/fbsdcompat) 9 + include_directories(${CMAKE_SOURCE_DIR}/kernel/libsyscall/wrappers) 10 + 11 + if(CMAKE_SIZEOF_VOID_P EQUAL 4 OR CMAKE_INSTALL_LIBDIR STREQUAL "lib32") 12 + set(BITS 32) 13 + add_definitions(-DTARGET_CPU_X86=1) 14 + else(CMAKE_SIZEOF_VOID_P EQUAL 4 OR CMAKE_INSTALL_LIBDIR STREQUAL "lib32") 15 + set(BITS 64) 16 + add_definitions(-DTARGET_CPU_X86_64=1) 17 + endif(CMAKE_SIZEOF_VOID_P EQUAL 4 OR CMAKE_INSTALL_LIBDIR STREQUAL "lib32") 18 + 19 + add_definitions(-DTARGET_OS_MAC=1) 20 + add_definitions(-DHAVE_STDINT_H=1) 21 + add_definitions(-D__APPLE__ -D__DYNAMIC__) 22 + 23 + set(libsystem_sources 24 + init.c 25 + dummy.c 26 + ) 27 + 28 + add_library(system SHARED ${libsystem_sources}) 29 + target_link_libraries(system system_malloc system_c system_kernel)
+66
libsystem/CompatibilityHacks.c
··· 1 + /* 2 + * Copyright (c) 2010-2011 Apple Inc. All rights reserved. 3 + * 4 + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 + * 6 + * This file contains Original Code and/or Modifications of Original Code 7 + * as defined in and that are subject to the Apple Public Source License 8 + * Version 2.0 (the 'License'). You may not use this file except in 9 + * compliance with the License. The rights granted to you under the License 10 + * may not be used to create, or enable the creation or redistribution of, 11 + * unlawful or unlicensed copies of an Apple operating system, or to 12 + * circumvent, violate, or enable the circumvention or violation of, any 13 + * terms of an Apple operating system software license agreement. 14 + * 15 + * Please obtain a copy of the License at 16 + * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 + * 18 + * The Original Code and all software distributed under the License are 19 + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 + * Please see the License for the specific language governing rights and 24 + * limitations under the License. 25 + * 26 + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 + */ 28 + 29 + /* 30 + * See: <rdar://problem/8289209>, <rdar://problem/8351271>, <rdar://problem/8359348> 31 + */ 32 + 33 + #if defined(__i386__) || defined(__x86_64__) 34 + 35 + #define SYM(sym) \ 36 + __asm__(".globl R8289209$_" #sym "; R8289209$_" #sym ": jmp _" #sym) 37 + 38 + /****************/ 39 + 40 + SYM(close); 41 + SYM(fork); 42 + SYM(fsync); 43 + SYM(getattrlist); 44 + SYM(getrlimit); 45 + SYM(getxattr); 46 + SYM(open); 47 + SYM(pthread_attr_destroy); 48 + SYM(pthread_attr_init); 49 + SYM(pthread_attr_setdetachstate); 50 + SYM(pthread_create); 51 + SYM(pthread_mutex_lock); 52 + SYM(pthread_mutex_unlock); 53 + SYM(pthread_self); 54 + SYM(ptrace); 55 + SYM(read); 56 + SYM(setattrlist); 57 + SYM(setrlimit); 58 + SYM(sigaction); 59 + SYM(stat); 60 + SYM(sysctl); 61 + SYM(time); 62 + SYM(unlink); 63 + SYM(write); 64 + 65 + #endif /* defined(__i386__) || defined(__x86_64__) */ 66 +
+76
libsystem/alloc_once_private.h
··· 1 + /* 2 + * Copyright (c) 2012-2013 Apple Inc. All rights reserved. 3 + * 4 + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 + * 6 + * This file contains Original Code and/or Modifications of Original Code 7 + * as defined in and that are subject to the Apple Public Source License 8 + * Version 2.0 (the 'License'). You may not use this file except in 9 + * compliance with the License. The rights granted to you under the License 10 + * may not be used to create, or enable the creation or redistribution of, 11 + * unlawful or unlicensed copies of an Apple operating system, or to 12 + * circumvent, violate, or enable the circumvention or violation of, any 13 + * terms of an Apple operating system software license agreement. 14 + * 15 + * Please obtain a copy of the License at 16 + * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 + * 18 + * The Original Code and all software distributed under the License are 19 + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 + * Please see the License for the specific language governing rights and 24 + * limitations under the License. 25 + * 26 + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 + */ 28 + 29 + #ifndef __OS_ALLOC__ 30 + #define __OS_ALLOC__ 31 + 32 + #ifndef __OS_ALLOC_INDIRECT__ 33 + #define __OS_ALLOC_INDIRECT__ 34 + #endif // __OS_ALLOC_INDIRECT__ 35 + 36 + #include <os/alloc_once_impl.h> 37 + 38 + /* Keys for use with os_once_alloc. */ 39 + 40 + /* Keys for Libsystem. */ 41 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_NOTIFY 0 42 + #define OS_ALLOC_ONCE_KEY_LIBXPC 1 43 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_C 2 44 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_INFO 3 45 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_NETWORK 4 46 + #define OS_ALLOC_ONCE_KEY_LIBCACHE 5 47 + #define OS_ALLOC_ONCE_KEY_LIBCOMMONCRYPTO 6 48 + #define OS_ALLOC_ONCE_KEY_LIBDISPATCH 7 49 + #define OS_ALLOC_ONCE_KEY_LIBDYLD 8 50 + #define OS_ALLOC_ONCE_KEY_LIBKEYMGR 9 51 + #define OS_ALLOC_ONCE_KEY_LIBLAUNCH 10 52 + #define OS_ALLOC_ONCE_KEY_LIBMACHO 11 53 + #define OS_ALLOC_ONCE_KEY_OS_TRACE 12 54 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_BLOCKS 13 55 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_MALLOC 14 56 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_PLATFORM 15 57 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_PTHREAD 16 58 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_STATS 17 59 + #define OS_ALLOC_ONCE_KEY_LIBSECINIT 18 60 + #define OS_ALLOC_ONCE_KEY_LIBSYSTEM_CORESERVICES 19 61 + 62 + /* Keys OS_ALLOC_ONCE_KEY_MAX - 10 upwards are reserved for the system. */ 63 + #define OS_ALLOC_ONCE_KEY_RESERVED_0 (OS_ALLOC_ONCE_KEY_MAX - 10) 64 + #define OS_ALLOC_ONCE_KEY_RESERVED_1 (OS_ALLOC_ONCE_KEY_MAX - 9) 65 + #define OS_ALLOC_ONCE_KEY_RESERVED_2 (OS_ALLOC_ONCE_KEY_MAX - 8) 66 + #define OS_ALLOC_ONCE_KEY_RESERVED_3 (OS_ALLOC_ONCE_KEY_MAX - 7) 67 + #define OS_ALLOC_ONCE_KEY_RESERVED_4 (OS_ALLOC_ONCE_KEY_MAX - 6) 68 + #define OS_ALLOC_ONCE_KEY_RESERVED_5 (OS_ALLOC_ONCE_KEY_MAX - 5) 69 + #define OS_ALLOC_ONCE_KEY_RESERVED_6 (OS_ALLOC_ONCE_KEY_MAX - 4) 70 + #define OS_ALLOC_ONCE_KEY_RESERVED_7 (OS_ALLOC_ONCE_KEY_MAX - 3) 71 + #define OS_ALLOC_ONCE_KEY_RESERVED_8 (OS_ALLOC_ONCE_KEY_MAX - 2) 72 + #define OS_ALLOC_ONCE_KEY_RESERVED_9 (OS_ALLOC_ONCE_KEY_MAX - 1) 73 + 74 + /* OS_ALLOC_ONCE_KEY_MAX cannot be used. */ 75 + 76 + #endif // __OS_ALLOC__
+14
libsystem/dummy.c
··· 1 + 2 + void _notify_fork_child(void) {} 3 + void _dyld_fork_child(void) {} 4 + void xpc_atfork_prepare(void) {} 5 + void xpc_atfork_parent(void) {} 6 + void xpc_atfork_child(void) {} 7 + void _libSC_info_fork_prepare(void) {} 8 + void _libSC_info_fork_parent(void) {} 9 + void _libSC_info_fork_child(void) {} 10 + void _asl_fork_child(void) {} 11 + 12 + void dispatch_atfork_prepare(void) {} 13 + void dispatch_atfork_parent(void) {} 14 + void dispatch_atfork_child(void) {}
+158
libsystem/init.c
··· 1 + // Modified by Lubos Dolezel to support older (10.8) libc and newer libsystem_kernel 2 + /* 3 + * Copyright (c) 2007, 2008, 2011 Apple Inc. All rights reserved. 4 + * 5 + * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 6 + * 7 + * This file contains Original Code and/or Modifications of Original Code 8 + * as defined in and that are subject to the Apple Public Source License 9 + * Version 2.0 (the 'License'). You may not use this file except in 10 + * compliance with the License. The rights granted to you under the License 11 + * may not be used to create, or enable the creation or redistribution of, 12 + * unlawful or unlicensed copies of an Apple operating system, or to 13 + * circumvent, violate, or enable the circumvention or violation of, any 14 + * terms of an Apple operating system software license agreement. 15 + * 16 + * Please obtain a copy of the License at 17 + * http://www.opensource.apple.com/apsl/ and read it before using this file. 18 + * 19 + * The Original Code and all software distributed under the License are 20 + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 21 + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 22 + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 23 + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 24 + * Please see the License for the specific language governing rights and 25 + * limitations under the License. 26 + * 27 + * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 28 + */ 29 + 30 + #include <TargetConditionals.h> // for TARGET_OS_EMBEDDED 31 + 32 + #include <_libkernel_init.h> 33 + #include <dlfcn.h> 34 + #include <errno.h> 35 + #include <stdlib.h> 36 + 37 + struct ProgramVars; /* forward reference */ 38 + 39 + // system library initialisers 40 + extern void bootstrap_init(void); // from liblaunch.dylib 41 + extern void mach_init(void); // from libsystem_mach.dylib 42 + extern void pthread_init(void); // from libc.a 43 + 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 44 + extern void __keymgr_initializer(void); // from libkeymgr.a 45 + extern void _dyld_initializer(void); // from libdyld.a 46 + extern void libdispatch_init(void); // from libdispatch.a 47 + extern void _libxpc_initializer(void); // from libxpc 48 + 49 + // signal malloc stack logging that initialisation has finished 50 + extern void __stack_logging_early_finished(void); // form libsystem_c.dylib 51 + 52 + // system library atfork handlers 53 + extern void _cthread_fork_prepare(void); 54 + extern void _cthread_fork_parent(void); 55 + extern void _cthread_fork_child(void); 56 + extern void _cthread_fork_child_postinit(void); 57 + 58 + extern void _mach_fork_child(void); 59 + extern void _cproc_fork_child(void); 60 + extern void _libc_fork_child(void); 61 + extern void _notify_fork_child(void); 62 + extern void _dyld_fork_child(void); 63 + extern void xpc_atfork_prepare(void); 64 + extern void xpc_atfork_parent(void); 65 + extern void xpc_atfork_child(void); 66 + 67 + // advance decls for below; 68 + void libSystem_atfork_prepare(void); 69 + void libSystem_atfork_parent(void); 70 + void libSystem_atfork_child(void); 71 + 72 + // from mig_support.c in libc 73 + mach_port_t _mig_get_reply_port(void); 74 + void _mig_set_reply_port(mach_port_t); 75 + 76 + void cthread_set_errno_self(int); 77 + 78 + static void _pthread_exit_if_canceled(int err) { _pthread_testcancel(pthread_self(), 1); } 79 + 80 + /* 81 + * libsyscall_initializer() initializes all of libSystem.dylib <rdar://problem/4892197> 82 + */ 83 + static __attribute__((constructor)) 84 + void libSystem_initializer(int argc, const char* argv[], const char* envp[], const char* apple[], const struct ProgramVars* vars) 85 + { 86 + static const struct _libkernel_functions libkernel_funcs = { 87 + .version = 1, 88 + .dlsym = dlsym, 89 + .malloc = malloc, 90 + .free = free, 91 + .realloc = realloc, 92 + ._pthread_exit_if_canceled = _pthread_exit_if_canceled, 93 + }; 94 + 95 + _libkernel_init(libkernel_funcs); 96 + 97 + bootstrap_init(); 98 + mach_init(); 99 + pthread_init(); 100 + __libc_init(vars, libSystem_atfork_prepare, libSystem_atfork_parent, libSystem_atfork_child, apple); 101 + __keymgr_initializer(); 102 + _dyld_initializer(); 103 + libdispatch_init(); 104 + _libxpc_initializer(); 105 + 106 + __stack_logging_early_finished(); 107 + 108 + /* <rdar://problem/11588042> 109 + * C99 standard has the following in section 7.5(3): 110 + * "The value of errno is zero at program startup, but is never set 111 + * to zero by any library function." 112 + */ 113 + errno = 0; 114 + } 115 + 116 + /* 117 + * libSystem_atfork_{prepare,parent,child}() are called by libc when we fork, then we deal with running fork handlers 118 + * for everyone else. 119 + */ 120 + void libSystem_atfork_prepare(void) 121 + { 122 + xpc_atfork_prepare(); 123 + _cthread_fork_prepare(); 124 + } 125 + 126 + void libSystem_atfork_parent(void) 127 + { 128 + _cthread_fork_parent(); 129 + xpc_atfork_parent(); 130 + } 131 + 132 + void libSystem_atfork_child(void) 133 + { 134 + _dyld_fork_child(); 135 + _cthread_fork_child(); 136 + 137 + bootstrap_init(); 138 + _mach_fork_child(); 139 + _cproc_fork_child(); 140 + _libc_fork_child(); 141 + _notify_fork_child(); 142 + xpc_atfork_child(); 143 + 144 + _cthread_fork_child_postinit(); 145 + } 146 + 147 + /* 148 + * Old crt1.o glue used to call through mach_init_routine which was used to initialize libSystem. 149 + * LibSystem now auto-initializes but mach_init_routine is left for binary compatibility. 150 + */ 151 + static void mach_init_old(void) {} 152 + void (*mach_init_routine)(void) = &mach_init_old; 153 + 154 + /* 155 + * This __crashreporter_info__ symbol is for all non-dylib parts of libSystem. 156 + */ 157 + const char *__crashreporter_info__; 158 + //asm (".desc __crashreporter_info__, 0x10");