diff --git a/crt/crt1.c b/crt/crt1.c index af02af94..4f8ff05d 100644 --- a/crt/crt1.c +++ b/crt/crt1.c @@ -4,15 +4,15 @@ #include "crt_arch.h" -int main(); -void _init() __attribute__((weak)); -void _fini() __attribute__((weak)); +int main(int argc, char *argv[]); +void _init(void) __attribute__((weak)); +void _fini(void) __attribute__((weak)); _Noreturn int __libc_start_main(int (*)(), int, char **, - void (*)(), void(*)(), void(*)()); + void (*)(), void(*)()); void _start_c(long *p) { int argc = p[0]; char **argv = (void *)(p+1); - __libc_start_main(main, argc, argv, _init, _fini, 0); + __libc_start_main(main, argc, argv, _init, _fini); } diff --git a/crt/rcrt1.c b/crt/rcrt1.c index be017153..569f0ecc 100644 --- a/crt/rcrt1.c +++ b/crt/rcrt1.c @@ -3,13 +3,13 @@ #include "../ldso/dlstart.c" int main(); -void _init() __attribute__((weak)); -void _fini() __attribute__((weak)); +void _init(void) __attribute__((weak)); +void _fini(void) __attribute__((weak)); _Noreturn int __libc_start_main(int (*)(), int, char **, - void (*)(), void(*)(), void(*)()); + void (*)(), void(*)()); __attribute__((__visibility__("hidden"))) _Noreturn void __dls2(unsigned char *base, size_t *sp) { - __libc_start_main(main, *sp, (void *)(sp+1), _init, _fini, 0); + __libc_start_main(main, *sp, (void *)(sp+1), _init, _fini); } diff --git a/src/env/__libc_start_main.c b/src/env/__libc_start_main.c index 5e18ce73..61c57825 100644 --- a/src/env/__libc_start_main.c +++ b/src/env/__libc_start_main.c @@ -67,7 +67,8 @@ static void libc_start_init(void) weak_alias(libc_start_init, __libc_start_init); -int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv) +int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv, + void(*init)(), void(*fini)()) { char **envp = argv+argc+1;