Got the separation between start_dyn.o and libroot.so wrong:
__libc_argc and __libc_argv are initialized in libroot's startup code. That fix now makes BApplication::ArgvReceived() work as it should. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11198 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
96b5ca7902
commit
9465cd7465
@ -1,13 +1,13 @@
|
|||||||
/*
|
/*
|
||||||
** Copyright 2003-2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
* Copyright 2003-2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
|
||||||
** Distributed under the terms of the Haiku License.
|
* Distributed under the terms of the MIT License.
|
||||||
**
|
*
|
||||||
** Copyright 2001, Travis Geiselbrecht. All rights reserved.
|
* Copyright 2001, Travis Geiselbrecht. All rights reserved.
|
||||||
** Distributed under the terms of the NewOS License.
|
* Distributed under the terms of the NewOS License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <user_runtime.h>
|
#include <user_runtime.h>
|
||||||
#include <syscalls.h>
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -15,14 +15,11 @@
|
|||||||
|
|
||||||
extern int main(int argc, char **argv);
|
extern int main(int argc, char **argv);
|
||||||
|
|
||||||
int _start(int argc, char **argv, char **, struct uspace_program_args *);
|
int _start(int argc, char **argv, char **env, struct uspace_program_args *args);
|
||||||
|
|
||||||
// these are part of libroot.so, and initialized here
|
// these are part of libroot.so, and initialized here
|
||||||
extern int __libc_argc;
|
|
||||||
extern char **__libc_argv;
|
|
||||||
extern char **argv_save;
|
extern char **argv_save;
|
||||||
extern thread_id __main_thread_id;
|
extern thread_id __main_thread_id;
|
||||||
|
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
|
|
||||||
@ -33,16 +30,15 @@ extern char **environ;
|
|||||||
int
|
int
|
||||||
_start(int argc, char **argv, char **_environ, struct uspace_program_args *args)
|
_start(int argc, char **argv, char **_environ, struct uspace_program_args *args)
|
||||||
{
|
{
|
||||||
int retcode;
|
int returnCode;
|
||||||
|
|
||||||
__libc_argc = args->argc;
|
argv_save = args->argv;
|
||||||
__libc_argv = argv_save = args->argv;
|
|
||||||
__main_thread_id = find_thread(NULL);
|
__main_thread_id = find_thread(NULL);
|
||||||
environ = args->envp;
|
environ = args->envp;
|
||||||
|
|
||||||
retcode = main(__libc_argc, __libc_argv);
|
returnCode = main(__libc_argc, __libc_argv);
|
||||||
|
|
||||||
exit(retcode);
|
exit(returnCode);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2003-2004, Axel Dörfler, axeld@pinc-software.de.
|
* Copyright 2003-2005, Axel Dörfler, axeld@pinc-software.de.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -14,12 +14,12 @@
|
|||||||
void initialize_before(image_id imageID, struct uspace_program_args const *args);
|
void initialize_before(image_id imageID, struct uspace_program_args const *args);
|
||||||
|
|
||||||
char *__progname = NULL;
|
char *__progname = NULL;
|
||||||
|
int __libc_argc;
|
||||||
|
char **__libc_argv;
|
||||||
|
|
||||||
char _single_threaded = true;
|
char _single_threaded = true;
|
||||||
// determines if I/O locking needed; needed for BeOS compatibility
|
// determines if I/O locking needed; needed for BeOS compatibility
|
||||||
|
|
||||||
int __libc_argc;
|
|
||||||
char **__libc_argv;
|
|
||||||
thread_id __main_thread_id;
|
thread_id __main_thread_id;
|
||||||
char **argv_save;
|
char **argv_save;
|
||||||
// needed for BeOS compatibility - they are set in the startup code
|
// needed for BeOS compatibility - they are set in the startup code
|
||||||
@ -37,6 +37,9 @@ initialize_before(image_id imageID, struct uspace_program_args const *args)
|
|||||||
__progname++;
|
__progname++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__libc_argc = args->argc;
|
||||||
|
__libc_argv = args->argv;
|
||||||
|
|
||||||
__init_time();
|
__init_time();
|
||||||
__init_image(args);
|
__init_image(args);
|
||||||
__init_dlfcn(args);
|
__init_dlfcn(args);
|
||||||
|
Loading…
Reference in New Issue
Block a user