diff --git a/src/kernel/glue/start_dyn.c b/src/kernel/glue/start_dyn.c index 357e5bb2d8..c790b91d8d 100644 --- a/src/kernel/glue/start_dyn.c +++ b/src/kernel/glue/start_dyn.c @@ -1,4 +1,7 @@ -/* +/* +** Copyright 2003-2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved. +** Distributed under the terms of the Haiku License. +** ** Copyright 2001, Travis Geiselbrecht. All rights reserved. ** Distributed under the terms of the NewOS License. */ @@ -14,8 +17,11 @@ extern int main(int argc, char **argv); int _start(int argc, char **argv, char **, struct uspace_program_args *); -//static char empty[1]; -//char *__progname = empty; +// these are part of libroot.so, and initialized here +extern int __libc_argc; +extern char **__libc_argv; +extern char **argv_save; +extern thread_id __main_thread_id; extern char **environ; @@ -29,9 +35,12 @@ _start(int argc, char **argv, char **_environ, struct uspace_program_args *args) { int retcode; + __libc_argc = args->argc; + __libc_argv = argv_save = args->argv; + __main_thread_id = find_thread(NULL); environ = args->envp; - retcode = main(args->argc, args->argv); + retcode = main(__libc_argc, __libc_argv); exit(retcode); return 0;