1 Original patch from: gentoo/src/patchsets/glibc/2.9/1503_hppa_glibc-2.7-hppa-nptl-carlos.patch
3 -= BEGIN original header =-
4 -= END original header =-
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
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));
18 - for (size_t cnt = 0;
19 - cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]);
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));
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
33 __typeof (*(mem)) __atg5_value = (newvalue); \
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)); \
42 __typeof (*(mem)) __atg6_value = (value); \
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, \
51 __typeof (*(mem)) __atg7_value = (value); \
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, \
60 __typeof (mem) __atg8_memp = (mem); \
61 __typeof (*(mem)) __atg8_value = (value); \
63 - __atg8_oldval = *__atg8_memp; \
64 + __atg8_oldval = *(volatile __typeof (mem))__atg8_memp; \
65 if (__atg8_oldval >= __atg8_value) \
67 } while (__builtin_expect \
69 __typeof (mem) __atg9_memp = (mem); \
70 __typeof (*(mem)) __atg9_value = (value); \
72 - __atg9_oldv = *__atg9_memp; \
73 + __atg9_oldv = *(volatile __typeof (mem))__atg9_memp; \
74 if (__atg9_oldv >= __atg9_value) \
76 } while (__builtin_expect \
78 __typeof (mem) __atg10_memp = (mem); \
79 __typeof (*(mem)) __atg10_value = (value); \
81 - __atg10_oldval = *__atg10_memp; \
82 + __atg10_oldval = *(volatile __typeof (mem))__atg10_memp; \
83 if (__atg10_oldval <= __atg10_value) \
85 } while (__builtin_expect \
90 - __atg11_oldval = *__atg11_memp; \
91 + __atg11_oldval = *(volatile __typeof (mem))__atg11_memp; \
92 if (__builtin_expect (__atg11_oldval <= 0, 0)) \
96 __typeof (*(mem)) __atg14_mask = ((__typeof (*(mem))) 1 << (bit)); \
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,\
105 __typeof (*(mem)) __atg15_mask = (mask); \
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, \
114 __typeof (*(mem)) __atg16_mask = (mask); \
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,\
123 __typeof (*(mem)) __atg17_mask = (mask); \
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, \
132 __typeof (*(mem)) __atg18_mask = (mask); \
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,\
141 __typeof (*(mem)) __atg19_mask = (mask); \
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
153 # Files which must not be linked with libpthread.
154 tests-nolibpthread = tst-unload
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;
163 distribute = eintr.c tst-cleanup4aux.c
166 CFLAGS-tst-cleanupx4.c += -fexceptions
167 CFLAGS-tst-oncex3.c += -fexceptions
168 CFLAGS-tst-oncex4.c += -fexceptions
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)
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
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);
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
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)
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
230 $(SHELL) -e tst-printf.sh $(common-objpfx) '$(run-program-prefix)'
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
242 while (inlen < 0 && errno == EINTR);
245 - if (errno == EWOULDBLOCK)
246 + if (errno == EWOULDBLOCK || errno == EAGAIN)
248 cu->cu_error.re_errno = errno;
249 return (cu->cu_error.re_status = RPC_CANTRECV);