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