commit f9e311d11c374e68736c741ede1845bdc8091627 Author: Khem Raj Date: Mon Jun 13 16:30:55 2011 -0700 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 Signed-off-by: Bernhard Reutner-Fischer diff --git a/libc/sysdeps/linux/mips/crtn.S b/libc/sysdeps/linux/mips/crtn.S index cedd593..f3756a2 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 92d72a6..849bd59 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 d93b3a5..398eaea 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' \