[git commit] ctor/dtor nptl: Fix init and fini function compilation
Khem Raj
raj.khem at gmail.com
Mon Jun 13 23:34:11 UTC 2011
commit: http://git.uclibc.org/uClibc/commit/?id=c97ce776368ec5d9d954fc8653f3e1c11490fc74
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master
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 at gmail.com>
---
libc/sysdeps/linux/mips/crtn.S | 15 ---------------
libpthread/nptl/Makefile.in | 4 ++--
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 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' \
--
1.7.3.4
More information about the uClibc-cvs
mailing list