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