patches/uClibc/0.9.32/120-ctor-dtor-nptl-Fix-init-and-fini-function-compilation.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jul 17 17:54:21 2011 +0200 (2011-07-17)
changeset 2888 dd71df95903a
permissions -rw-r--r--
cc/gcc: pass the companion libs prefix to cc_core

In case of canadian-cross, the companion libraries are not the same for
the core cc (they run on 'build') as they are for the final cc (they run
on 'host').

Prepare for this differentiation (coming later), while retaining the
current behavior (to use the same compblibs).

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@2518
     1
commit f9e311d11c374e68736c741ede1845bdc8091627
yann@2518
     2
Author: Khem Raj <raj.khem@gmail.com>
yann@2518
     3
Date:   Mon Jun 13 16:30:55 2011 -0700
yann@2518
     4
yann@2518
     5
    ctor/dtor nptl: Fix init and fini function compilation
yann@2518
     6
    
yann@2518
     7
    We need to define the rules for .S files so it
yann@2518
     8
    gets the include paths some architectures like mips
yann@2518
     9
    include headers
yann@2518
    10
    
yann@2518
    11
    Some architectures e.g. SH have their own version
yann@2518
    12
    of pt-initfini.c so look for that first before resorting
yann@2518
    13
    to generic version of pt-initfini.c
yann@2518
    14
    
yann@2518
    15
    Signed-off-by: Khem Raj <raj.khem@gmail.com>
yann@2518
    16
    Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
yann@2518
    17
yann@2518
    18
diff --git a/libc/sysdeps/linux/mips/crtn.S b/libc/sysdeps/linux/mips/crtn.S
yann@2518
    19
index cedd593..f3756a2 100644
yann@2518
    20
--- a/libc/sysdeps/linux/mips/crtn.S
yann@2518
    21
+++ b/libc/sysdeps/linux/mips/crtn.S
yann@2518
    22
@@ -10,7 +10,6 @@
yann@2518
    23
 #NO_APP
yann@2518
    24
 	.align	2
yann@2518
    25
 	.globl	_init
yann@2518
    26
-	.ent	_init
yann@2518
    27
 	.type	_init, @function
yann@2518
    28
 #NO_APP
yann@2518
    29
 	lw	$31,28($sp)
yann@2518
    30
@@ -22,14 +21,12 @@
yann@2518
    31
 	.set	macro
yann@2518
    32
 	.set	reorder
yann@2518
    33
 
yann@2518
    34
-	.end	_init
yann@2518
    35
 #APP
yann@2518
    36
 	
yann@2518
    37
 	.section .fini
yann@2518
    38
 #NO_APP
yann@2518
    39
 	.align	2
yann@2518
    40
 	.globl	_fini
yann@2518
    41
-	.ent	_fini
yann@2518
    42
 	.type	_fini, @function
yann@2518
    43
 #NO_APP
yann@2518
    44
 	lw	$31,28($sp)
yann@2518
    45
@@ -41,7 +38,6 @@
yann@2518
    46
 	.set	macro
yann@2518
    47
 	.set	reorder
yann@2518
    48
 
yann@2518
    49
-	.end	_fini
yann@2518
    50
 #APP
yann@2518
    51
 	
yann@2518
    52
 	.ident	"GCC: (GNU) 3.3.2"
yann@2518
    53
@@ -54,10 +50,8 @@
yann@2518
    54
 	
yann@2518
    55
 	.section .init
yann@2518
    56
 #NO_APP
yann@2518
    57
-	.align	2
yann@2518
    58
 	.align	3
yann@2518
    59
 	.globl	_init
yann@2518
    60
-	.ent	_init
yann@2518
    61
 	.type	_init, @function
yann@2518
    62
 #NO_APP
yann@2518
    63
 	ld	$31,8($sp)
yann@2518
    64
@@ -68,16 +62,12 @@
yann@2518
    65
 	addiu	$sp,$sp,16
yann@2518
    66
 	.set	macro
yann@2518
    67
 	.set	reorder
yann@2518
    68
-
yann@2518
    69
-	.end	_init
yann@2518
    70
 #APP
yann@2518
    71
 	
yann@2518
    72
 	.section .fini
yann@2518
    73
 #NO_APP
yann@2518
    74
-	.align	2
yann@2518
    75
 	.align	3
yann@2518
    76
 	.globl	_fini
yann@2518
    77
-	.ent	_fini
yann@2518
    78
 	.type	_fini, @function
yann@2518
    79
 #NO_APP
yann@2518
    80
 	ld	$31,8($sp)
yann@2518
    81
@@ -89,7 +79,6 @@
yann@2518
    82
 	.set	macro
yann@2518
    83
 	.set	reorder
yann@2518
    84
 
yann@2518
    85
-	.end	_fini
yann@2518
    86
 #APP
yann@2518
    87
 	
yann@2518
    88
 	.ident	"GCC: (GNU) 3.4.3"
yann@2518
    89
@@ -105,7 +94,6 @@
yann@2518
    90
 #NO_APP
yann@2518
    91
 	.align	2
yann@2518
    92
 	.globl	_init
yann@2518
    93
-	.ent	_init
yann@2518
    94
 	.type	_init, @function
yann@2518
    95
 #NO_APP
yann@2518
    96
 	ld	$31,24($sp)
yann@2518
    97
@@ -118,14 +106,12 @@
yann@2518
    98
 	.set	macro
yann@2518
    99
 	.set	reorder
yann@2518
   100
 
yann@2518
   101
-	.end	_init
yann@2518
   102
 #APP
yann@2518
   103
 	
yann@2518
   104
 	.section .fini
yann@2518
   105
 #NO_APP
yann@2518
   106
 	.align	2
yann@2518
   107
 	.globl	_fini
yann@2518
   108
-	.ent	_fini
yann@2518
   109
 	.type	_fini, @function
yann@2518
   110
 #NO_APP
yann@2518
   111
 	ld	$31,24($sp)
yann@2518
   112
@@ -138,7 +124,6 @@
yann@2518
   113
 	.set	macro
yann@2518
   114
 	.set	reorder
yann@2518
   115
 
yann@2518
   116
-	.end	_fini
yann@2518
   117
 #APP
yann@2518
   118
 	
yann@2518
   119
 	.ident	"GCC: (GNU) 3.3.2"
yann@2518
   120
diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in
yann@2518
   121
index 92d72a6..849bd59 100644
yann@2518
   122
--- a/libpthread/nptl/Makefile.in
yann@2518
   123
+++ b/libpthread/nptl/Makefile.in
yann@2518
   124
@@ -64,8 +64,8 @@ endif
yann@2518
   125
 librt-so-y += $(librt_OBJS:.o=.oS) $(librt-pt-shared-only-routines-y:.o=.oS)
yann@2518
   126
 
yann@2518
   127
 ifeq ($(UCLIBC_CTOR_DTOR),y)
yann@2518
   128
-START_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/crti.o
yann@2518
   129
-END_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/crtn.o
yann@2518
   130
+START_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/pt-crti.o
yann@2518
   131
+END_FILE-libpthread.so := $(top_builddir)libpthread/nptl/sysdeps/pthread/pt-crtn.o
yann@2518
   132
 LDFLAGS-libpthread.so += -nostartfiles
yann@2518
   133
 $(top_builddir)lib/libpthread.so: | $(START_FILE-libpthread.so) $(END_FILE-libpthread.so)
yann@2518
   134
 endif
yann@2518
   135
diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in
yann@2518
   136
index d93b3a5..398eaea 100644
yann@2518
   137
--- a/libpthread/nptl/sysdeps/pthread/Makefile.in
yann@2518
   138
+++ b/libpthread/nptl/sysdeps/pthread/Makefile.in
yann@2518
   139
@@ -73,23 +73,37 @@ CFLAGS-pt-initfini.c = -S -g0 $(PICFLAG) -fno-inline-functions	\
yann@2518
   140
 			-finhibit-size-directive			\
yann@2518
   141
 			-fno-asynchronous-unwind-tables -fno-unwind-tables \
yann@2518
   142
 			$(patsubst -f%,-fno-%,$(call check_gcc,-fexceptions,))
yann@2518
   143
-ASFLAGS-crti.S = -g0
yann@2518
   144
-ASFLAGS-crtn.S = -g0
yann@2518
   145
 
yann@2518
   146
-$(libpthread_pthread_OUT)/pt-initfini.s: $(libpthread_pthread_DIR)/pt-initfini.c
yann@2518
   147
+#ASFLAGS += $(PICFLAG) -I$(top_srcdir)include -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)
yann@2518
   148
+ifneq ($(wildcard $(libpthread_DIR)/sysdeps/linux/$(TARGET_ARCH)/pt-initfini.c),)
yann@2518
   149
+PTHREAD_INITFINI := $(libpthread_DIR)/sysdeps/linux/$(TARGET_ARCH)/pt-initfini.c
yann@2518
   150
+else
yann@2518
   151
+PTHREAD_INITFINI := $(libpthread_pthread_DIR)/pt-initfini.c
yann@2518
   152
+endif
yann@2518
   153
+
yann@2518
   154
+ASFLAGS-pt-crti.S =  $(PICFLAG)
yann@2518
   155
+ASFLAGS-pt-crtn.S =  $(PICFLAG)
yann@2518
   156
+
yann@2518
   157
+$(libpthread_pthread_OUT)/pt-crti.o: $(libpthread_pthread_OUT)/pt-crti.S
yann@2518
   158
+	$(compile.S)
yann@2518
   159
+
yann@2518
   160
+$(libpthread_pthread_OUT)/pt-crtn.o: $(libpthread_pthread_OUT)/pt-crtn.S
yann@2518
   161
+	$(compile.S)
yann@2518
   162
+
yann@2518
   163
+$(libpthread_pthread_OUT)/pt-initfini.s: $(PTHREAD_INITFINI)
yann@2518
   164
 	$(compile.c)
yann@2518
   165
-$(libpthread_pthread_OUT)/defs.h: $(libpthread_pthread_DIR)/pt-initfini.c
yann@2518
   166
+$(libpthread_pthread_OUT)/defs.h: $(PTHREAD_INITFINI)
yann@2518
   167
 	$(do_sed) -n -e '/@TESTS_BEGIN/,/@TESTS_END/p' $< | \
yann@2518
   168
 		$(AWK) -f $(top_srcdir)extra/scripts/defs.awk > $@.tmp
yann@2518
   169
 	$(Q)mv $@.tmp $@
yann@2518
   170
 
yann@2518
   171
-$(libpthread_pthread_OUT)/crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h
yann@2518
   172
+$(libpthread_pthread_OUT)/pt-crti.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h
yann@2518
   173
 	$(do_sed) -n -e '/[ 	]*\.file/d' \
yann@2518
   174
 		-e '1,/@HEADER_ENDS/p' \
yann@2518
   175
 		-e '/@_.*_PROLOG_BEGINS/,/@_.*_PROLOG_ENDS/p' \
yann@2518
   176
 		-e '/@TRAILER_BEGINS/,$$p' $< > $@.tmp
yann@2518
   177
 	$(Q)mv $@.tmp $@
yann@2518
   178
-$(libpthread_pthread_OUT)/crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h
yann@2518
   179
+$(libpthread_pthread_OUT)/pt-crtn.S: $(libpthread_pthread_OUT)/pt-initfini.s $(libpthread_pthread_OUT)/defs.h
yann@2518
   180
 	$(do_sed) -n -e '/[ 	]*\.file/d' \
yann@2518
   181
 		-e '1,/@HEADER_ENDS/p' \
yann@2518
   182
 		-e '/@_.*_EPILOG_BEGINS/,/@_.*_EPILOG_ENDS/p' \