patches/glibc/ports-2.10.1/310-hppa-nptl-carlos.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Jan 17 23:06:02 2010 +0100 (2010-01-17)
changeset 1740 c57458bb354d
permissions -rw-r--r--
configure: do not require hg when configuring in an hg clone

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