diff -r 000000000000 -r 4ccfca658d9b patches/uClibc/0.9.32/120-ctor-dtor-nptl-Fix-init-and-fini-function-compilation.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/uClibc/0.9.32/120-ctor-dtor-nptl-Fix-init-and-fini-function-compilation.patch Sat Jul 14 18:25:47 2012 +0200 @@ -0,0 +1,182 @@ +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' \