diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/env/__libc_start_main.c | 3 | ||||
| -rw-r--r-- | src/ldso/dynlink.c | 6 | 
2 files changed, 8 insertions, 1 deletions
diff --git a/src/env/__libc_start_main.c b/src/env/__libc_start_main.c index f6f3b14a..d1f6a5e1 100644 --- a/src/env/__libc_start_main.c +++ b/src/env/__libc_start_main.c @@ -67,6 +67,9 @@ int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv)  	uintptr_t a = (uintptr_t)&__init_array_start;  	for (; a<(uintptr_t)&__init_array_end; a+=sizeof(void(*)()))  		(*(void (**)())a)(); +#else +	void __libc_start_init(void); +	__libc_start_init();  #endif  	/* Pass control to the application */ diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index 8967505a..f144aa59 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -1203,6 +1203,11 @@ static void do_init_fini(struct dso *p)  	if (need_locking) pthread_mutex_unlock(&init_fini_lock);  } +void __libc_start_init(void) +{ +	do_init_fini(tail); +} +  static void dl_debug_state(void)  {  } @@ -1630,7 +1635,6 @@ _Noreturn void __dls3(size_t *sp)  	__init_libc(envp, argv[0]);  	atexit(do_fini);  	errno = 0; -	do_init_fini(tail);  	CRTJMP((void *)aux[AT_ENTRY], argv-1);  	for(;;);  | 
