]>
Commit | Line | Data |
---|---|---|
2d21ac55 | 1 | /* |
b0d623f7 | 2 | * Copyright (c) 2007, 2008 Apple Inc. All rights reserved. |
2d21ac55 A |
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 | #ifdef __DYNAMIC__ | |
29 | struct ProgramVars; /* forward reference */ | |
30 | ||
31 | extern void pthread_init(void); // from libc.a | |
32 | extern void __libc_init(const struct ProgramVars* vars); // from libc.a | |
33 | extern void __keymgr_initializer(void); // from libkeymgr.a | |
34 | extern void _dyld_initializer(void); // from libdyld.a | |
b0d623f7 | 35 | extern void libdispatch_init(void); // from libdispatch.a |
2d21ac55 A |
36 | |
37 | /* | |
38 | * libsyscall_initializer() initializes all of libSystem.dylib <rdar://problem/4892197> | |
39 | */ | |
40 | static __attribute__((constructor)) | |
41 | void libSystem_initializer(int argc, const char* argv[], const char* envp[], const char* apple[], const struct ProgramVars* vars) | |
42 | { | |
43 | mach_init(); | |
44 | pthread_init(); | |
45 | __libc_init(vars); | |
46 | __keymgr_initializer(); | |
47 | _dyld_initializer(); | |
b0d623f7 | 48 | libdispatch_init(); |
2d21ac55 A |
49 | } |
50 | ||
51 | /* | |
52 | * Old crt1.o glue used to call through mach_init_routine which was used to initialize libSystem. | |
53 | * LibSystem now auto-initializes but mach_init_routine is left for binary compatibility. | |
54 | */ | |
55 | static void mach_init_old() {} | |
56 | void (*mach_init_routine)(void) = &mach_init_old; | |
57 | ||
58 | #endif /* __DYNAMIC__ */ |