patches/glibc/ports-2.12.1/310-hppa-nptl-carlos.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@2437
     1
yann@2437
     2
yann@2437
     3
diff -durN glibc-2.12.1.orig/elf/rtld.c glibc-2.12.1/elf/rtld.c
yann@2437
     4
--- glibc-2.12.1.orig/elf/rtld.c	2009-04-17 02:00:08.000000000 +0200
yann@2437
     5
+++ glibc-2.12.1/elf/rtld.c	2009-11-13 00:50:26.000000000 +0100
yann@2437
     6
@@ -390,14 +390,14 @@
yann@2437
     7
      know it is available.  We do not have to clear the memory if we
yann@2437
     8
      do not have to use the temporary bootstrap_map.  Global variables
yann@2437
     9
      are initialized to zero by default.  */
yann@2437
    10
-#ifndef DONT_USE_BOOTSTRAP_MAP
yann@2437
    11
+#if !defined DONT_USE_BOOTSTRAP_MAP
yann@2437
    12
 # ifdef HAVE_BUILTIN_MEMSET
yann@2437
    13
   __builtin_memset (bootstrap_map.l_info, '\0', sizeof (bootstrap_map.l_info));
yann@2437
    14
 # else
yann@2437
    15
-  for (size_t cnt = 0;
yann@2437
    16
-       cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]);
yann@2437
    17
-       ++cnt)
yann@2437
    18
-    bootstrap_map.l_info[cnt] = 0;
yann@2437
    19
+  /* Clear the whole bootstrap_map structure */
yann@2437
    20
+  for (char *cnt = (char *)&(bootstrap_map);
yann@2437
    21
+       cnt < ((char *)&(bootstrap_map) + sizeof (bootstrap_map));
yann@2437
    22
+       *cnt++ = '\0');
yann@2437
    23
 # endif
yann@2437
    24
 # if USE___THREAD
yann@2437
    25
   bootstrap_map.l_tls_modid = 0;
yann@2437
    26
diff -durN glibc-2.12.1.orig/include/atomic.h glibc-2.12.1/include/atomic.h
yann@2437
    27
--- glibc-2.12.1.orig/include/atomic.h	2009-02-09 00:49:53.000000000 +0100
yann@2437
    28
+++ glibc-2.12.1/include/atomic.h	2009-11-13 00:50:26.000000000 +0100
yann@2437
    29
@@ -185,7 +185,7 @@
yann@2437
    30
      __typeof (*(mem)) __atg5_value = (newvalue);			      \
yann@2437
    31
 									      \
yann@2437
    32
      do									      \
yann@2437
    33
-       __atg5_oldval = *__atg5_memp;					      \
yann@2437
    34
+       __atg5_oldval = *(volatile __typeof (mem))__atg5_memp;		      \
yann@2437
    35
      while (__builtin_expect						      \
yann@2437
    36
 	    (atomic_compare_and_exchange_bool_acq (__atg5_memp, __atg5_value, \
yann@2437
    37
 						   __atg5_oldval), 0));	      \
yann@2437
    38
@@ -206,7 +206,7 @@
yann@2437
    39
      __typeof (*(mem)) __atg6_value = (value);				      \
yann@2437
    40
 									      \
yann@2437
    41
      do									      \
yann@2437
    42
-       __atg6_oldval = *__atg6_memp;					      \
yann@2437
    43
+       __atg6_oldval = *(volatile __typeof (mem))__atg6_memp;		      \
yann@2437
    44
      while (__builtin_expect						      \
yann@2437
    45
 	    (atomic_compare_and_exchange_bool_acq (__atg6_memp,		      \
yann@2437
    46
 						   __atg6_oldval	      \
yann@2437
    47
@@ -224,7 +224,7 @@
yann@2437
    48
      __typeof (*(mem)) __atg7_value = (value);				      \
yann@2437
    49
 									      \
yann@2437
    50
      do									      \
yann@2437
    51
-       __atg7_oldv = *__atg7_memp;					      \
yann@2437
    52
+       __atg7_oldv = *(volatile __typeof (mem))__atg7_memp;		      \
yann@2437
    53
      while (__builtin_expect						      \
yann@2437
    54
 	    (catomic_compare_and_exchange_bool_acq (__atg7_memp,	      \
yann@2437
    55
 						    __atg7_oldv		      \
yann@2437
    56
@@ -242,7 +242,7 @@
yann@2437
    57
     __typeof (mem) __atg8_memp = (mem);					      \
yann@2437
    58
     __typeof (*(mem)) __atg8_value = (value);				      \
yann@2437
    59
     do {								      \
yann@2437
    60
-      __atg8_oldval = *__atg8_memp;					      \
yann@2437
    61
+      __atg8_oldval = *(volatile __typeof (mem))__atg8_memp;		      \
yann@2437
    62
       if (__atg8_oldval >= __atg8_value)				      \
yann@2437
    63
 	break;								      \
yann@2437
    64
     } while (__builtin_expect						      \
yann@2437
    65
@@ -259,7 +259,7 @@
yann@2437
    66
     __typeof (mem) __atg9_memp = (mem);					      \
yann@2437
    67
     __typeof (*(mem)) __atg9_value = (value);				      \
yann@2437
    68
     do {								      \
yann@2437
    69
-      __atg9_oldv = *__atg9_memp;					      \
yann@2437
    70
+      __atg9_oldv = *(volatile __typeof (mem))__atg9_memp;		      \
yann@2437
    71
       if (__atg9_oldv >= __atg9_value)					      \
yann@2437
    72
 	break;								      \
yann@2437
    73
     } while (__builtin_expect						      \
yann@2437
    74
@@ -277,7 +277,7 @@
yann@2437
    75
     __typeof (mem) __atg10_memp = (mem);				      \
yann@2437
    76
     __typeof (*(mem)) __atg10_value = (value);				      \
yann@2437
    77
     do {								      \
yann@2437
    78
-      __atg10_oldval = *__atg10_memp;					      \
yann@2437
    79
+      __atg10_oldval = *(volatile __typeof (mem))__atg10_memp;		      \
yann@2437
    80
       if (__atg10_oldval <= __atg10_value)				      \
yann@2437
    81
 	break;								      \
yann@2437
    82
     } while (__builtin_expect						      \
yann@2437
    83
@@ -361,7 +361,7 @@
yann@2437
    84
 									      \
yann@2437
    85
      do									      \
yann@2437
    86
        {								      \
yann@2437
    87
-	 __atg11_oldval = *__atg11_memp;				      \
yann@2437
    88
+	 __atg11_oldval = *(volatile __typeof (mem))__atg11_memp;	      \
yann@2437
    89
 	 if (__builtin_expect (__atg11_oldval <= 0, 0))			      \
yann@2437
    90
 	   break;							      \
yann@2437
    91
        }								      \
yann@2437
    92
@@ -400,7 +400,7 @@
yann@2437
    93
      __typeof (*(mem)) __atg14_mask = ((__typeof (*(mem))) 1 << (bit));	      \
yann@2437
    94
 									      \
yann@2437
    95
      do									      \
yann@2437
    96
-       __atg14_old = (*__atg14_memp);					      \
yann@2437
    97
+       __atg14_old = (*(volatile __typeof (mem))__atg14_memp);		      \
yann@2437
    98
      while (__builtin_expect						      \
yann@2437
    99
 	    (atomic_compare_and_exchange_bool_acq (__atg14_memp,	      \
yann@2437
   100
 						   __atg14_old | __atg14_mask,\
yann@2437
   101
@@ -418,7 +418,7 @@
yann@2437
   102
     __typeof (*(mem)) __atg15_mask = (mask);				      \
yann@2437
   103
 									      \
yann@2437
   104
     do									      \
yann@2437
   105
-      __atg15_old = (*__atg15_memp);					      \
yann@2437
   106
+      __atg15_old = (*(volatile __typeof (mem))__atg15_memp);		      \
yann@2437
   107
     while (__builtin_expect						      \
yann@2437
   108
 	   (atomic_compare_and_exchange_bool_acq (__atg15_memp,		      \
yann@2437
   109
 						  __atg15_old & __atg15_mask, \
yann@2437
   110
@@ -450,7 +450,7 @@
yann@2437
   111
      __typeof (*(mem)) __atg16_mask = (mask);				      \
yann@2437
   112
 									      \
yann@2437
   113
      do									      \
yann@2437
   114
-       __atg16_old = (*__atg16_memp);					      \
yann@2437
   115
+       __atg16_old = (*(volatile __typeof (mem))__atg16_memp);		      \
yann@2437
   116
      while (__builtin_expect						      \
yann@2437
   117
 	    (atomic_compare_and_exchange_bool_acq (__atg16_memp,	      \
yann@2437
   118
 						   __atg16_old & __atg16_mask,\
yann@2437
   119
@@ -468,7 +468,7 @@
yann@2437
   120
     __typeof (*(mem)) __atg17_mask = (mask);				      \
yann@2437
   121
 									      \
yann@2437
   122
     do									      \
yann@2437
   123
-      __atg17_old = (*__atg17_memp);					      \
yann@2437
   124
+      __atg17_old = (*(volatile __typeof (mem))__atg17_memp);		      \
yann@2437
   125
     while (__builtin_expect						      \
yann@2437
   126
 	   (atomic_compare_and_exchange_bool_acq (__atg17_memp,		      \
yann@2437
   127
 						  __atg17_old | __atg17_mask, \
yann@2437
   128
@@ -484,7 +484,7 @@
yann@2437
   129
     __typeof (*(mem)) __atg18_mask = (mask);				      \
yann@2437
   130
 									      \
yann@2437
   131
     do									      \
yann@2437
   132
-      __atg18_old = (*__atg18_memp);					      \
yann@2437
   133
+      __atg18_old = (*(volatile __typeof (mem))__atg18_memp);		      \
yann@2437
   134
     while (__builtin_expect						      \
yann@2437
   135
 	   (catomic_compare_and_exchange_bool_acq (__atg18_memp,	      \
yann@2437
   136
 						   __atg18_old | __atg18_mask,\
yann@2437
   137
@@ -500,7 +500,7 @@
yann@2437
   138
      __typeof (*(mem)) __atg19_mask = (mask);				      \
yann@2437
   139
 									      \
yann@2437
   140
      do									      \
yann@2437
   141
-       __atg19_old = (*__atg19_memp);					      \
yann@2437
   142
+       __atg19_old = (*(volatile __typeof (mem))__atg19_memp);		      \
yann@2437
   143
      while (__builtin_expect						      \
yann@2437
   144
 	    (atomic_compare_and_exchange_bool_acq (__atg19_memp,	      \
yann@2437
   145
 						   __atg19_old | __atg19_mask,\
yann@2437
   146
diff -durN glibc-2.12.1.orig/nptl/Makefile glibc-2.12.1/nptl/Makefile
yann@2437
   147
--- glibc-2.12.1.orig/nptl/Makefile	2008-11-12 14:38:23.000000000 +0100
yann@2437
   148
+++ glibc-2.12.1/nptl/Makefile	2009-11-13 00:50:26.000000000 +0100
yann@2437
   149
@@ -264,9 +264,9 @@
yann@2437
   150
 # Files which must not be linked with libpthread.
yann@2437
   151
 tests-nolibpthread = tst-unload
yann@2437
   152
 
yann@2437
   153
-# This sets the stack resource limit to 1023kb, which is not a multiple
yann@2437
   154
-# of the page size since every architecture's page size is > 1k.
yann@2437
   155
-tst-oddstacklimit-ENV = ; ulimit -s 1023;
yann@2437
   156
+# This sets the stack resource limit to 8193kb, which is not a multiple
yann@2437
   157
+# of the page size since every architecture's page size is 4096 bytes.
yann@2437
   158
+tst-oddstacklimit-ENV = ; ulimit -s 8193;
yann@2437
   159
 
yann@2437
   160
 distribute = eintr.c tst-cleanup4aux.c
yann@2437
   161
 
yann@2437
   162
@@ -425,6 +425,35 @@
yann@2437
   163
 CFLAGS-tst-cleanupx4.c += -fexceptions
yann@2437
   164
 CFLAGS-tst-oncex3.c += -fexceptions
yann@2437
   165
 CFLAGS-tst-oncex4.c += -fexceptions
yann@2437
   166
+
yann@2437
   167
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed
yann@2437
   168
+LDFLAGS-tst-cancelx2 += $(ldflags-libgcc_s)
yann@2437
   169
+LDFLAGS-tst-cancelx3 += $(ldflags-libgcc_s)
yann@2437
   170
+LDFLAGS-tst-cancelx4 += $(ldflags-libgcc_s)
yann@2437
   171
+LDFLAGS-tst-cancelx5 += $(ldflags-libgcc_s)
yann@2437
   172
+LDFLAGS-tst-cancelx6 += $(ldflags-libgcc_s)
yann@2437
   173
+LDFLAGS-tst-cancelx7 += $(ldflags-libgcc_s)
yann@2437
   174
+LDFLAGS-tst-cancelx8 += $(ldflags-libgcc_s)
yann@2437
   175
+LDFLAGS-tst-cancelx9 += $(ldflags-libgcc_s)
yann@2437
   176
+LDFLAGS-tst-cancelx10 += $(ldflags-libgcc_s)
yann@2437
   177
+LDFLAGS-tst-cancelx11 += $(ldflags-libgcc_s)
yann@2437
   178
+LDFLAGS-tst-cancelx12 += $(ldflags-libgcc_s)
yann@2437
   179
+LDFLAGS-tst-cancelx13 += $(ldflags-libgcc_s)
yann@2437
   180
+LDFLAGS-tst-cancelx14 += $(ldflags-libgcc_s)
yann@2437
   181
+LDFLAGS-tst-cancelx15 += $(ldflags-libgcc_s)
yann@2437
   182
+LDFLAGS-tst-cancelx16 += $(ldflags-libgcc_s)
yann@2437
   183
+LDFLAGS-tst-cancelx17 += $(ldflags-libgcc_s)
yann@2437
   184
+LDFLAGS-tst-cancelx18 += $(ldflags-libgcc_s)
yann@2437
   185
+LDFLAGS-tst-cancelx20 += $(ldflags-libgcc_s)
yann@2437
   186
+LDFLAGS-tst-cancelx21 += $(ldflags-libgcc_s)
yann@2437
   187
+LDFLAGS-tst-cleanupx0 += $(ldflags-libgcc_s)
yann@2437
   188
+LDFLAGS-tst-cleanupx1 += $(ldflags-libgcc_s)
yann@2437
   189
+LDFLAGS-tst-cleanupx2 += $(ldflags-libgcc_s)
yann@2437
   190
+LDFLAGS-tst-cleanupx3 += $(ldflags-libgcc_s)
yann@2437
   191
+LDFLAGS-tst-cleanupx4 += $(ldflags-libgcc_s)
yann@2437
   192
+LDFLAGS-tst-oncex3 += $(ldflags-libgcc_s)
yann@2437
   193
+LDFLAGS-tst-oncex4 += $(ldflags-libgcc_s)
yann@2437
   194
+
yann@2437
   195
 CFLAGS-tst-align.c += $(stack-align-test-flags)
yann@2437
   196
 CFLAGS-tst-align3.c += $(stack-align-test-flags)
yann@2437
   197
 CFLAGS-tst-initializers1.c = -W -Wall -Werror
yann@2437
   198
diff -durN glibc-2.12.1.orig/nptl/pthread_barrier_wait.c glibc-2.12.1/nptl/pthread_barrier_wait.c
yann@2437
   199
--- glibc-2.12.1.orig/nptl/pthread_barrier_wait.c	2007-08-01 06:18:50.000000000 +0200
yann@2437
   200
+++ glibc-2.12.1/nptl/pthread_barrier_wait.c	2009-11-13 00:50:26.000000000 +0100
yann@2437
   201
@@ -64,7 +64,7 @@
yann@2437
   202
       do
yann@2437
   203
 	lll_futex_wait (&ibarrier->curr_event, event,
yann@2437
   204
 			ibarrier->private ^ FUTEX_PRIVATE_FLAG);
yann@2437
   205
-      while (event == ibarrier->curr_event);
yann@2437
   206
+      while (event == *(volatile unsigned int *)&ibarrier->curr_event);
yann@2437
   207
     }
yann@2437
   208
 
yann@2437
   209
   /* Make sure the init_count is stored locally or in a register.  */
yann@2437
   210
diff -durN glibc-2.12.1.orig/nptl/sysdeps/pthread/Makefile glibc-2.12.1/nptl/sysdeps/pthread/Makefile
yann@2437
   211
--- glibc-2.12.1.orig/nptl/sysdeps/pthread/Makefile	2006-02-28 08:09:41.000000000 +0100
yann@2437
   212
+++ glibc-2.12.1/nptl/sysdeps/pthread/Makefile	2009-11-13 00:50:26.000000000 +0100
yann@2437
   213
@@ -33,7 +33,9 @@
yann@2437
   214
 
yann@2437
   215
 ifeq ($(have-forced-unwind),yes)
yann@2437
   216
 tests += tst-mqueue8x
yann@2437
   217
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed
yann@2437
   218
 CFLAGS-tst-mqueue8x.c += -fexceptions
yann@2437
   219
+LDFLAGS-tst-mqueue8x += $(ldflags-libgcc_s) 
yann@2437
   220
 endif
yann@2437
   221
 endif
yann@2437
   222
 
yann@2437
   223
diff -durN glibc-2.12.1.orig/stdio-common/Makefile glibc-2.12.1/stdio-common/Makefile
yann@2437
   224
--- glibc-2.12.1.orig/stdio-common/Makefile	2009-04-11 07:29:56.000000000 +0200
yann@2437
   225
+++ glibc-2.12.1/stdio-common/Makefile	2009-11-13 00:50:26.000000000 +0100
yann@2437
   226
@@ -82,7 +82,7 @@
yann@2437
   227
 	$(SHELL) -e tst-printf.sh $(common-objpfx) '$(run-program-prefix)'
yann@2437
   228
 endif
yann@2437
   229
 
yann@2437
   230
-CFLAGS-vfprintf.c = -Wno-uninitialized
yann@2437
   231
+CFLAGS-vfprintf.c = -Wno-uninitialized -fno-delayed-branch
yann@2437
   232
 CFLAGS-vfwprintf.c = -Wno-uninitialized
yann@2437
   233
 CFLAGS-tst-printf.c = -Wno-format
yann@2437
   234
 CFLAGS-tstdiomisc.c = -Wno-format
yann@2437
   235
diff -durN glibc-2.12.1.orig/sunrpc/clnt_udp.c glibc-2.12.1/sunrpc/clnt_udp.c
yann@2437
   236
--- glibc-2.12.1.orig/sunrpc/clnt_udp.c	2008-07-26 10:42:44.000000000 +0200
yann@2437
   237
+++ glibc-2.12.1/sunrpc/clnt_udp.c	2009-11-13 00:50:26.000000000 +0100
yann@2437
   238
@@ -456,7 +456,7 @@
yann@2437
   239
       while (inlen < 0 && errno == EINTR);
yann@2437
   240
       if (inlen < 0)
yann@2437
   241
 	{
yann@2437
   242
-	  if (errno == EWOULDBLOCK)
yann@2437
   243
+	  if (errno == EWOULDBLOCK || errno == EAGAIN)
yann@2437
   244
 	    continue;
yann@2437
   245
 	  cu->cu_error.re_errno = errno;
yann@2437
   246
 	  return (cu->cu_error.re_status = RPC_CANTRECV);