diff options
author | Khem Raj <raj.khem@gmail.com> | 2011-06-13 16:30:55 -0700 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2011-06-13 16:33:20 -0700 |
commit | c97ce776368ec5d9d954fc8653f3e1c11490fc74 (patch) | |
tree | 8a2cbc68157aaed06a8b811bbf30b964298ba597 | |
parent | 45046d8134da4dee6a5d382cfbd17a1039e55f27 (diff) |
ctor/dtor nptl: Fix init and fini function compilation
We need to define the rules for .S files so it
gets the include paths some architectures like mips
include headers
Some architectures e.g. SH have their own version
of pt-initfini.c so look for that first before resorting
to generic version of pt-initfini.c
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r-- | libc/sysdeps/linux/mips/crtn.S | 15 | ||||
-rw-r--r-- | libpthread/nptl/Makefile.in | 4 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/pthread/Makefile.in | 26 |
3 files changed, 22 insertions, 23 deletions
diff --git a/libc/sysdeps/linux/mips/crtn.S b/libc/sysdeps/linux/mips/crtn.S index cedd593f0..f3756a2f1 100644 --- a/libc/sysdeps/linux/mips/crtn.S +++ b/libc/sysdeps/linux/mips/crtn.S @@ -10,7 +10,6 @@ #NO_APP .align 2 .globl _init - .ent _init .type _init, @function #NO_APP lw $31,28($sp) @@ -22,14 +21,12 @@ .set macro .set reorder - .end _init #APP .section .fini #NO_APP .align 2 .globl _fini - .ent _fini .type _fini, @function #NO_APP lw $31,28($sp) @@ -41,7 +38,6 @@ .set macro .set reorder - .end _fini #APP .ident "GCC: (GNU) 3.3.2" @@ -54,10 +50,8 @@ .section .init #NO_APP - .align 2 .align 3 .globl _init - .ent _init .type _init, @function #NO_APP ld $31,8($sp) @@ -68,16 +62,12 @@ addiu $sp,$sp,16 .set macro .set reorder - - .end _init #APP .section .fini #NO_APP - .align 2 .align 3 .globl _fini - .ent _fini .type _fini, @function #NO_APP ld $31,8($sp) @@ -89,7 +79,6 @@ .set macro .set reorder - .end _fini #APP .ident "GCC: (GNU) 3.4.3" @@ -105,7 +94,6 @@ #NO_APP .align 2 .globl _init - .ent _init .type _init, @function #NO_APP ld $31,24($sp) @@ -118,14 +106,12 @@ .set macro .set reorder - .end _init #APP .section .fini #NO_APP .align 2 .globl _fini - .ent _fini .type _fini, @function #NO_APP ld $31,24($sp) @@ -138,7 +124,6 @@ .set macro .set reorder - .end _fini #APP .ident "GCC: (GNU) 3.3.2" diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in index 92d72a6cb..849bd5965 100644 --- a/libpthread/nptl/Makefile.in +++ b/libpthread/nptl/Makefile.in @@ -64,8 +64,8 @@ endif librt-so-y += $(librt_OBJS:.o=.oS) $(librt-pt-shared-only-routines-y:.o=.oS) ifeq ($(UCLIBC_CTOR_DTOR),y) -START_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/crti.o -END_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/crtn.o +START_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/pt-crti.o +END_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/pt-crtn.o LDFLAGS-libpthread.so += -nostartfiles $(top_builddir)lib/libpthread.so: | $(START_FILE-libpthread.so) $(END_FILE-libpthread.so) endif diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in index d93b3a55f..398eaea12 100644 --- a/libpthread/nptl/sysdeps/pthread/Makefile.in +++ b/libpthread/nptl/sysdeps/pthread/Makefile.in @@ -73,23 +73,37 @@ CFLAGS-pt-initfini.c = -S -g0 $(PICFLAG) -fno-inline-functions \ -finhibit-size-directive \ -fno-asynchronous-unwind-tables -fno-unwind-tables \ $(patsubst -f%,-fno-%,$(call check_gcc,-fexceptions,)) -ASFLAGS-crti.S = -g0 -ASFLAGS-crtn.S = -g0 -$(libpthread_pthread_OUT)/pt-initfini.s: $(libpthread_pthread_DIR)/pt-initfini.c +#ASFLAGS += $(PICFLAG) -I$(top_srcdir)include -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) +ifneq ($(wildcard $(libpthread_DIR)/sysdeps/linux/$(TARGET_ARCH)/pt-initfini.c),) +PTHREAD_INITFINI := $(libpthread_DIR)/sysdeps/linux/$(TARGET_ARCH)/pt-initfini.c +else +PTHREAD_INITFINI := $(libpthread_pthread_DIR)/pt-initfini.c +endif + +ASFLAGS-pt-crti.S = $(PICFLAG) +ASFLAGS-pt-crtn.S = $(PICFLAG) + +$(libpthread_pthread_OUT)/pt-crti.o: $(libpthread_pthread_OUT)/pt-crti.S + $(compile.S) + +$(libpthread_pthread_OUT)/pt-crtn.o: $(libpthread_pthread_OUT)/pt-crtn.S + $(compile.S) + +$(libpthread_pthread_OUT)/pt-initfini.s: $(PTHREAD_INITFINI) $(compile.c) -$(libpthread_pthread_OUT)/defs.h: $(libpthread_pthread_DIR)/pt-initfini.c +$(libpthread_pthread_OUT)/defs.h: $(PTHREAD_INITFINI) $(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \ $(AWK) -f $(top_srcdir)extra/scripts/defs.awk > $@.tmp $(Q)mv $@.tmp $@ -$(libpthread_pthread_OUT)/crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h +$(libpthread_pthread_OUT)/pt-crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h $(do_sed) -n -e '/[ ]*\.file/d' \ -e '1,/@HEADER_ENDS/p' \ -e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \ -e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp $(Q)mv $@.tmp $@ -$(libpthread_pthread_OUT)/crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h +$(libpthread_pthread_OUT)/pt-crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h $(do_sed) -n -e '/[ ]*\.file/d' \ -e '1,/@HEADER_ENDS/p' \ -e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \ |