diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2012-03-11 20:04:09 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2012-03-11 20:04:09 +0000 |
| commit | a22748dbd9f365c8a5f0483a973c2295b245b94c (patch) | |
| tree | 87fa5b72982e5d814e7f1852737adcdcb1b08fc7 /lib/csu/powerpc | |
| parent | 83aa9cc00c2d83d05a0efe7a1496d8aab4a153bb (diff) | |
Notes
Diffstat (limited to 'lib/csu/powerpc')
| -rw-r--r-- | lib/csu/powerpc/Makefile | 6 | ||||
| -rw-r--r-- | lib/csu/powerpc/crt1.c | 27 |
2 files changed, 9 insertions, 24 deletions
diff --git a/lib/csu/powerpc/Makefile b/lib/csu/powerpc/Makefile index 095a9ad14a68..1e1d1fa2d55a 100644 --- a/lib/csu/powerpc/Makefile +++ b/lib/csu/powerpc/Makefile @@ -18,21 +18,21 @@ CLEANFILES+= crt1.s gcrt1.s Scrt1.s crt1.s: crt1.c ${CC} ${CFLAGS} -S -o ${.TARGET} ${.CURDIR}/crt1.c - sed -i "" -e '/\.note\.ABI-tag/s/progbits/note/' ${.TARGET} + sed ${SED_FIX_NOTE} ${.TARGET} crt1.o: crt1.s ${CC} ${CFLAGS} -c -o ${.TARGET} crt1.s gcrt1.s: crt1.c ${CC} ${CFLAGS} -DGCRT -S -o ${.TARGET} ${.CURDIR}/crt1.c - sed -i "" -e '/\.note\.ABI-tag/s/progbits/note/' ${.TARGET} + sed ${SED_FIX_NOTE} ${.TARGET} gcrt1.o: gcrt1.s ${CC} ${CFLAGS} -c -o ${.TARGET} gcrt1.s Scrt1.s: crt1.c ${CC} ${CFLAGS} -fPIC -DPIC -S -o ${.TARGET} ${.CURDIR}/crt1.c - sed -i "" -e '/\.note\.ABI-tag/s/progbits/note/' ${.TARGET} + sed ${SED_FIX_NOTE} ${.TARGET} Scrt1.o: Scrt1.s ${CC} ${CFLAGS} -c -o ${.TARGET} Scrt1.s diff --git a/lib/csu/powerpc/crt1.c b/lib/csu/powerpc/crt1.c index 67de2f5d6f42..c3be90da3481 100644 --- a/lib/csu/powerpc/crt1.c +++ b/lib/csu/powerpc/crt1.c @@ -52,17 +52,11 @@ __FBSDID("$FreeBSD$"); #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 _fini(void); -extern void _init(void); -extern int main(int, char **, char **); - #ifdef GCRT extern void _mcleanup(void); extern void monstartup(void *, void *); @@ -70,8 +64,6 @@ extern int eprol; extern int etext; #endif -char **environ; -const char *__progname = ""; struct ps_strings *__ps_strings; void _start(int, char **, char **, const struct Struct_Obj_Entry *, @@ -88,16 +80,11 @@ _start(int argc, char **argv, char **env, const struct Struct_Obj_Entry *obj __unused, void (*cleanup)(void), struct ps_strings *ps_strings) { - const char *s; environ = env; - if (argc > 0 && argv[0] != NULL) { - __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 (ps_strings != (struct ps_strings *)0) __ps_strings = ps_strings; @@ -109,13 +96,11 @@ _start(int argc, char **argv, char **env, #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 |
