diff options
Diffstat (limited to 'lib/csu/mips/crt1.c')
-rw-r--r-- | lib/csu/mips/crt1.c | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/lib/csu/mips/crt1.c b/lib/csu/mips/crt1.c index 94a3046..1968f06 100644 --- a/lib/csu/mips/crt1.c +++ b/lib/csu/mips/crt1.c @@ -43,17 +43,11 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include "libc_private.h" #include "crtbrand.c" +#include "ignore_init.c" struct Struct_Obj_Entry; struct ps_strings; -extern int _DYNAMIC; -#pragma weak _DYNAMIC - -extern void _init(void); -extern void _fini(void); -extern int main(int, char **, char **); - #ifdef GCRT extern void _mcleanup(void); extern void monstartup(void *, void *); @@ -61,9 +55,6 @@ extern int eprol; extern int etext; #endif -char **environ; -const char *__progname = ""; - void __start(char **, void (*)(void), struct Struct_Obj_Entry *, struct ps_strings *); /* The entry function. */ @@ -81,13 +72,8 @@ __start(char **ap, argv = ap + 1; env = ap + 2 + argc; environ = env; - if (argc > 0 && argv[0] != NULL) { - const char *s; - __progname = argv[0]; - for (s = __progname; *s != '\0'; s++) - if (*s == '/') - __progname = s + 1; - } + if (argc > 0 && argv[0] != NULL) + handle_progname(argv[0]); if (&_DYNAMIC != NULL) atexit(cleanup); @@ -96,13 +82,11 @@ __start(char **ap, #ifdef GCRT atexit(_mcleanup); -#endif - atexit(_fini); -#ifdef GCRT monstartup(&eprol, &etext); #endif - _init(); - exit( main(argc, argv, env) ); + + handle_static_init(argc, argv, env); + exit(main(argc, argv, env)); } #ifdef GCRT |