#ifdef __DYNAMIC__
#include <TargetConditionals.h> // for TARGET_OS_EMBEDDED
#include <_libkernel_init.h>
#include <dlfcn.h>
struct ProgramVars;
extern void bootstrap_init(void); extern void mach_init(void); extern void pthread_init(void); extern void __libc_init(const struct ProgramVars *vars, void (*atfork_prepare)(void), void (*atfork_parent)(void), void (*atfork_child)(void), const char *apple[]); extern void __keymgr_initializer(void); extern void _dyld_initializer(void); extern void libdispatch_init(void); extern void _libxpc_initializer(void);
extern void _cthread_fork_prepare();
extern void _cthread_fork_parent();
extern void _cthread_fork_child();
extern void _cthread_fork_child_postinit();
extern void _mach_fork_child();
extern void _cproc_fork_child();
extern void _libc_fork_child();
extern void _notify_fork_child();
extern void _dyld_fork_child();
extern void xpc_atfork_prepare();
extern void xpc_atfork_parent();
extern void xpc_atfork_child();
void libSystem_atfork_prepare();
void libSystem_atfork_parent();
void libSystem_atfork_child();
mach_port_t _mig_get_reply_port();
void _mig_set_reply_port(mach_port_t);
void cthread_set_errno_self(int);
int* __error(void);
static __attribute__((constructor))
void libSystem_initializer(int argc, const char* argv[], const char* envp[], const char* apple[], const struct ProgramVars* vars)
{
_libkernel_functions_t libkernel_funcs = {
.get_reply_port = _mig_get_reply_port,
.set_reply_port = _mig_set_reply_port,
.get_errno = __error,
.set_errno = cthread_set_errno_self,
.dlsym = dlsym,
};
_libkernel_init(libkernel_funcs);
bootstrap_init();
mach_init();
pthread_init();
__libc_init(vars, libSystem_atfork_prepare, libSystem_atfork_parent, libSystem_atfork_child, apple);
__keymgr_initializer();
_dyld_initializer();
libdispatch_init();
#if !TARGET_OS_EMBEDDED || __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 // __IPHONE_5_0
_libxpc_initializer();
#endif
}
void libSystem_atfork_prepare()
{
#if !TARGET_OS_EMBEDDED || __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 // __IPHONE_5_0
xpc_atfork_prepare();
#endif
_cthread_fork_prepare();
}
void libSystem_atfork_parent()
{
_cthread_fork_parent();
#if !TARGET_OS_EMBEDDED || __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 // __IPHONE_5_0
xpc_atfork_parent();
#endif
}
void libSystem_atfork_child()
{
_dyld_fork_child();
_cthread_fork_child();
bootstrap_init();
_mach_fork_child();
_cproc_fork_child();
_libc_fork_child();
_notify_fork_child();
#if !TARGET_OS_EMBEDDED || __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 // __IPHONE_5_0
xpc_atfork_child();
#endif
_cthread_fork_child_postinit();
}
static void mach_init_old() {}
void (*mach_init_routine)(void) = &mach_init_old;
const char *__crashreporter_info__;
asm (".desc __crashreporter_info__, 0x10");
#endif