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