| commit f9e311d11c374e68736c741ede1845bdc8091627 |
| Author: Khem Raj <raj.khem@gmail.com> |
| 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 <raj.khem@gmail.com> |
| Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> |
| |
| 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' \ |