Original patch from: gentoo/src/patchsets/glibc/2.9/1503_hppa_glibc-2.7-hppa-nptl-carlos.patch

-= BEGIN original header =-
-= END original header =-

diff -durN glibc-2_9.orig/elf/rtld.c glibc-2_9/elf/rtld.c
--- glibc-2_9.orig/elf/rtld.c	2009-02-02 22:00:34.000000000 +0100
+++ glibc-2_9/elf/rtld.c	2009-02-02 22:01:12.000000000 +0100
@@ -386,14 +386,14 @@
      know it is available.  We do not have to clear the memory if we
      do not have to use the temporary bootstrap_map.  Global variables
      are initialized to zero by default.  */
-#ifndef DONT_USE_BOOTSTRAP_MAP
+#if !defined DONT_USE_BOOTSTRAP_MAP
 # ifdef HAVE_BUILTIN_MEMSET
   __builtin_memset (bootstrap_map.l_info, '\0', sizeof (bootstrap_map.l_info));
 # else
-  for (size_t cnt = 0;
-       cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]);
-       ++cnt)
-    bootstrap_map.l_info[cnt] = 0;
+  /* Clear the whole bootstrap_map structure */
+  for (char *cnt = (char *)&(bootstrap_map);
+       cnt < ((char *)&(bootstrap_map) + sizeof (bootstrap_map));
+       *cnt++ = '\0');
 # endif
 # if USE___THREAD
   bootstrap_map.l_tls_modid = 0;
diff -durN glibc-2_9.orig/include/atomic.h glibc-2_9/include/atomic.h
--- glibc-2_9.orig/include/atomic.h	2006-12-21 22:44:00.000000000 +0100
+++ glibc-2_9/include/atomic.h	2009-02-02 22:01:12.000000000 +0100
@@ -174,7 +174,7 @@
      __typeof (*(mem)) __atg5_value = (newvalue);			      \
 									      \
      do									      \
-       __atg5_oldval = *__atg5_memp;					      \
+       __atg5_oldval = *(volatile __typeof (mem))__atg5_memp;		      \
      while (__builtin_expect						      \
 	    (atomic_compare_and_exchange_bool_acq (__atg5_memp, __atg5_value, \
 						   __atg5_oldval), 0));	      \
@@ -195,7 +195,7 @@
      __typeof (*(mem)) __atg6_value = (value);				      \
 									      \
      do									      \
-       __atg6_oldval = *__atg6_memp;					      \
+       __atg6_oldval = *(volatile __typeof (mem))__atg6_memp;		      \
      while (__builtin_expect						      \
 	    (atomic_compare_and_exchange_bool_acq (__atg6_memp,		      \
 						   __atg6_oldval	      \
@@ -213,7 +213,7 @@
      __typeof (*(mem)) __atg7_value = (value);				      \
 									      \
      do									      \
-       __atg7_oldv = *__atg7_memp;					      \
+       __atg7_oldv = *(volatile __typeof (mem))__atg7_memp;		      \
      while (__builtin_expect						      \
 	    (catomic_compare_and_exchange_bool_acq (__atg7_memp,	      \
 						    __atg7_oldv		      \
@@ -231,7 +231,7 @@
     __typeof (mem) __atg8_memp = (mem);					      \
     __typeof (*(mem)) __atg8_value = (value);				      \
     do {								      \
-      __atg8_oldval = *__atg8_memp;					      \
+      __atg8_oldval = *(volatile __typeof (mem))__atg8_memp;		      \
       if (__atg8_oldval >= __atg8_value)				      \
 	break;								      \
     } while (__builtin_expect						      \
@@ -248,7 +248,7 @@
     __typeof (mem) __atg9_memp = (mem);					      \
     __typeof (*(mem)) __atg9_value = (value);				      \
     do {								      \
-      __atg9_oldv = *__atg9_memp;					      \
+      __atg9_oldv = *(volatile __typeof (mem))__atg9_memp;		      \
       if (__atg9_oldv >= __atg9_value)					      \
 	break;								      \
     } while (__builtin_expect						      \
@@ -266,7 +266,7 @@
     __typeof (mem) __atg10_memp = (mem);				      \
     __typeof (*(mem)) __atg10_value = (value);				      \
     do {								      \
-      __atg10_oldval = *__atg10_memp;					      \
+      __atg10_oldval = *(volatile __typeof (mem))__atg10_memp;		      \
       if (__atg10_oldval <= __atg10_value)				      \
 	break;								      \
     } while (__builtin_expect						      \
@@ -350,7 +350,7 @@
 									      \
      do									      \
        {								      \
-	 __atg11_oldval = *__atg11_memp;				      \
+	 __atg11_oldval = *(volatile __typeof (mem))__atg11_memp;	      \
 	 if (__builtin_expect (__atg11_oldval <= 0, 0))			      \
 	   break;							      \
        }								      \
@@ -389,7 +389,7 @@
      __typeof (*(mem)) __atg14_mask = ((__typeof (*(mem))) 1 << (bit));	      \
 									      \
      do									      \
-       __atg14_old = (*__atg14_memp);					      \
+       __atg14_old = (*(volatile __typeof (mem))__atg14_memp);		      \
      while (__builtin_expect						      \
 	    (atomic_compare_and_exchange_bool_acq (__atg14_memp,	      \
 						   __atg14_old | __atg14_mask,\
@@ -407,7 +407,7 @@
     __typeof (*(mem)) __atg15_mask = (mask);				      \
 									      \
     do									      \
-      __atg15_old = (*__atg15_memp);					      \
+      __atg15_old = (*(volatile __typeof (mem))__atg15_memp);		      \
     while (__builtin_expect						      \
 	   (atomic_compare_and_exchange_bool_acq (__atg15_memp,		      \
 						  __atg15_old & __atg15_mask, \
@@ -423,7 +423,7 @@
      __typeof (*(mem)) __atg16_mask = (mask);				      \
 									      \
      do									      \
-       __atg16_old = (*__atg16_memp);					      \
+       __atg16_old = (*(volatile __typeof (mem))__atg16_memp);		      \
      while (__builtin_expect						      \
 	    (atomic_compare_and_exchange_bool_acq (__atg16_memp,	      \
 						   __atg16_old & __atg16_mask,\
@@ -441,7 +441,7 @@
     __typeof (*(mem)) __atg17_mask = (mask);				      \
 									      \
     do									      \
-      __atg17_old = (*__atg17_memp);					      \
+      __atg17_old = (*(volatile __typeof (mem))__atg17_memp);		      \
     while (__builtin_expect						      \
 	   (atomic_compare_and_exchange_bool_acq (__atg17_memp,		      \
 						  __atg17_old | __atg17_mask, \
@@ -457,7 +457,7 @@
     __typeof (*(mem)) __atg18_mask = (mask);				      \
 									      \
     do									      \
-      __atg18_old = (*__atg18_memp);					      \
+      __atg18_old = (*(volatile __typeof (mem))__atg18_memp);		      \
     while (__builtin_expect						      \
 	   (catomic_compare_and_exchange_bool_acq (__atg18_memp,	      \
 						   __atg18_old | __atg18_mask,\
@@ -473,7 +473,7 @@
      __typeof (*(mem)) __atg19_mask = (mask);				      \
 									      \
      do									      \
-       __atg19_old = (*__atg19_memp);					      \
+       __atg19_old = (*(volatile __typeof (mem))__atg19_memp);		      \
      while (__builtin_expect						      \
 	    (atomic_compare_and_exchange_bool_acq (__atg19_memp,	      \
 						   __atg19_old | __atg19_mask,\
diff -durN glibc-2_9.orig/nptl/Makefile glibc-2_9/nptl/Makefile
--- glibc-2_9.orig/nptl/Makefile	2008-11-12 14:38:23.000000000 +0100
+++ glibc-2_9/nptl/Makefile	2009-02-02 22:01:12.000000000 +0100
@@ -262,9 +262,9 @@
 # Files which must not be linked with libpthread.
 tests-nolibpthread = tst-unload
 
-# This sets the stack resource limit to 1023kb, which is not a multiple
-# of the page size since every architecture's page size is > 1k.
-tst-oddstacklimit-ENV = ; ulimit -s 1023;
+# This sets the stack resource limit to 8193kb, which is not a multiple
+# of the page size since every architecture's page size is 4096 bytes.
+tst-oddstacklimit-ENV = ; ulimit -s 8193;
 
 distribute = eintr.c tst-cleanup4aux.c
 
@@ -423,6 +423,35 @@
 CFLAGS-tst-cleanupx4.c += -fexceptions
 CFLAGS-tst-oncex3.c += -fexceptions
 CFLAGS-tst-oncex4.c += -fexceptions
+
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed
+LDFLAGS-tst-cancelx2 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx3 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx4 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx5 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx6 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx7 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx8 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx9 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx10 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx11 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx12 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx13 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx14 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx15 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx16 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx17 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx18 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx20 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cancelx21 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cleanupx0 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cleanupx1 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cleanupx2 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cleanupx3 += $(ldflags-libgcc_s)
+LDFLAGS-tst-cleanupx4 += $(ldflags-libgcc_s)
+LDFLAGS-tst-oncex3 += $(ldflags-libgcc_s)
+LDFLAGS-tst-oncex4 += $(ldflags-libgcc_s)
+
 CFLAGS-tst-align.c += $(stack-align-test-flags)
 CFLAGS-tst-align3.c += $(stack-align-test-flags)
 CFLAGS-tst-initializers1.c = -W -Wall -Werror
diff -durN glibc-2_9.orig/nptl/pthread_barrier_wait.c glibc-2_9/nptl/pthread_barrier_wait.c
--- glibc-2_9.orig/nptl/pthread_barrier_wait.c	2007-08-01 06:18:50.000000000 +0200
+++ glibc-2_9/nptl/pthread_barrier_wait.c	2009-02-02 22:01:12.000000000 +0100
@@ -64,7 +64,7 @@
       do
 	lll_futex_wait (&ibarrier->curr_event, event,
 			ibarrier->private ^ FUTEX_PRIVATE_FLAG);
-      while (event == ibarrier->curr_event);
+      while (event == *(volatile unsigned int *)&ibarrier->curr_event);
     }
 
   /* Make sure the init_count is stored locally or in a register.  */
diff -durN glibc-2_9.orig/nptl/sysdeps/pthread/Makefile glibc-2_9/nptl/sysdeps/pthread/Makefile
--- glibc-2_9.orig/nptl/sysdeps/pthread/Makefile	2006-02-28 08:09:41.000000000 +0100
+++ glibc-2_9/nptl/sysdeps/pthread/Makefile	2009-02-02 22:01:12.000000000 +0100
@@ -41,7 +41,9 @@
 
 ifeq ($(have-forced-unwind),yes)
 tests += tst-mqueue8x
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed
 CFLAGS-tst-mqueue8x.c += -fexceptions
+LDFLAGS-tst-mqueue8x += $(ldflags-libgcc_s) 
 endif
 endif
 
diff -durN glibc-2_9.orig/stdio-common/Makefile glibc-2_9/stdio-common/Makefile
--- glibc-2_9.orig/stdio-common/Makefile	2008-07-08 18:32:28.000000000 +0200
+++ glibc-2_9/stdio-common/Makefile	2009-02-02 22:01:12.000000000 +0100
@@ -80,7 +80,7 @@
 	$(SHELL) -e tst-printf.sh $(common-objpfx) '$(run-program-prefix)'
 endif
 
-CFLAGS-vfprintf.c = -Wno-uninitialized
+CFLAGS-vfprintf.c = -Wno-uninitialized -fno-delayed-branch
 CFLAGS-vfwprintf.c = -Wno-uninitialized
 CFLAGS-tst-printf.c = -Wno-format
 CFLAGS-tstdiomisc.c = -Wno-format
diff -durN glibc-2_9.orig/sunrpc/clnt_udp.c glibc-2_9/sunrpc/clnt_udp.c
--- glibc-2_9.orig/sunrpc/clnt_udp.c	2008-07-26 10:42:44.000000000 +0200
+++ glibc-2_9/sunrpc/clnt_udp.c	2009-02-02 22:01:12.000000000 +0100
@@ -462,7 +462,7 @@
       while (inlen < 0 && errno == EINTR);
       if (inlen < 0)
 	{
-	  if (errno == EWOULDBLOCK)
+	  if (errno == EWOULDBLOCK || errno == EAGAIN)
 	    continue;
 	  cu->cu_error.re_errno = errno;
 	  return (cu->cu_error.re_status = RPC_CANTRECV);
