summaryrefslogtreecommitdiffstats
path: root/lib/csu/mips/crt1.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/csu/mips/crt1.c')
-rw-r--r--lib/csu/mips/crt1.c28
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
OpenPOWER on IntegriCloud