#include #include #include #include #include "syscall.h" #include "atomic.h" #include "libc.h" void __init_tls(size_t *); #ifndef __c2__ static void dummy(void) {} weak_alias(dummy, _init); #else __attribute((weak)) void _init(void) {} #endif #ifndef __c2__ __attribute__((__weak__, __visibility__("hidden"))) extern void (*const __init_array_start)(void), (*const __init_array_end)(void); #else extern void(*const __init_array_start)(void); #define __init_array_end __init_array_start #endif #ifndef __c2__ static void dummy1(void *p) {} weak_alias(dummy1, __init_ssp); #else __attribute((weak)) void __init_ssp(void *p) {} #endif #define AUX_CNT 38 void __init_libc(char **envp, char *pn) { size_t i, *auxv, aux[AUX_CNT] = { 0 }; __environ = envp; for (i=0; envp[i]; i++); libc.auxv = auxv = (void *)(envp+i+1); for (i=0; auxv[i]; i+=2) if (auxv[i]