1 |
vapier 10/04/25 16:44:49 |
2 |
|
3 |
Added: 0020_all_glibc-tweak-rfc1918-lookup.patch |
4 |
0030_all_glibc-respect-env-CPPFLAGS.patch |
5 |
0044_all_glibc-2.10-resolv-nameserver-fallback.patch |
6 |
0085_all_glibc-disable-ldconfig.patch |
7 |
1010_all_glibc-queue-header-updates.patch |
8 |
1020_all_glibc-longjmp-chk-hidden-fortify.patch |
9 |
1030_all_glibc-manual-no-perl.patch |
10 |
1040_all_2.3.3-localedef-fix-trampoline.patch |
11 |
1055_all_glibc-resolv-dynamic.patch |
12 |
1060_all_glibc-localedef-mmap.patch |
13 |
1070_all_glibc-fadvise64_64.patch |
14 |
1073_all_glibc-ldbl-nexttowardf.patch |
15 |
1075_all_glibc-section-comments.patch |
16 |
1080_all_glibc-no-inline-gmon.patch |
17 |
1085_all_glibc-2.9-check_native-headers.patch |
18 |
1090_all_glibc-2.3.6-fix-pr631.patch |
19 |
1095_all_glibc-2.9-assume-pipe2.patch |
20 |
1100_all_glibc-2.3.3-china.patch |
21 |
1103_all_glibc-new-valencian-locale.patch |
22 |
1120_all_glibc-2.11-longjmp-chk-fallback.patch |
23 |
1130_all_glibc-2.4-undefine-__i686.patch |
24 |
1160_all_glibc-2.8-nscd-one-fork.patch |
25 |
1503_hppa_glibc-2.7-hppa-nptl-carlos.patch |
26 |
1530_all_glibc-m68k-sys-user.patch |
27 |
3000_all_2.3.6-dl_execstack-PaX-support.patch |
28 |
3010_all_2.3.3_pre20040117-pt_pax.patch |
29 |
3020_all_glibc-tests-sandbox-libdl-paths.patch |
30 |
5021_all_2.9-fnmatch.patch |
31 |
5063_all_glibc-dont-build-timezone.patch |
32 |
6001_all_alpha-glibc-2.4-xstat.patch |
33 |
6015_all_alpha-glibc-2.5-no-page-header.patch |
34 |
6017_all_alpha-glibc-2.8-creat.patch |
35 |
6018_all_alpha-glibc-2.8-cache-shape.patch |
36 |
6019_all_alpha-glibc-ptr-mangling.patch |
37 |
6020_all_alpha-fix-gcc-4.1-warnings.patch |
38 |
6020_all_alpha-floor_ceil_fix.patch |
39 |
6021_all_alpha-add-dl-procinfo-support.patch |
40 |
6022_alpha_alpha-add-fdatasync-support.patch |
41 |
6023_all_alpha-fcntl-updates.patch |
42 |
6024_all_alpha-settime-typo.patch |
43 |
6026_all_alpha-fix-rtld-fPIC.patch |
44 |
6027_all_alpha-fix-memchr.patch |
45 |
6028_all_alpha-fix-SOCK_NONBLOCK.patch |
46 |
6120_all_ppc-glibc-2.9-atomic.patch |
47 |
6130_all_ppc-glibc-2.11-cell-vector.patch |
48 |
6220_all_glibc-2.4-arm-cirrus-ep93xx-maverick-crunch-fpu.patch |
49 |
6240_all_glibc-2.8-nptl-lowlevellock.patch |
50 |
6418_all_sh-glibc-2.9-set-fpscr-proto.patch |
51 |
6600_mips_librt-mips.patch |
52 |
6605_all_glibc-2.4-fpu-cw-mips.patch |
53 |
6610_all_glibc-r10k-workarounds.patch |
54 |
README.history |
55 |
Log: |
56 |
initial 2.11.1 patchset based on last 2.11 patchset |
57 |
|
58 |
Revision Changes Path |
59 |
1.1 src/patchsets/glibc/2.11.1/0020_all_glibc-tweak-rfc1918-lookup.patch |
60 |
|
61 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/0020_all_glibc-tweak-rfc1918-lookup.patch?rev=1.1&view=markup |
62 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/0020_all_glibc-tweak-rfc1918-lookup.patch?rev=1.1&content-type=text/plain |
63 |
|
64 |
Index: 0020_all_glibc-tweak-rfc1918-lookup.patch |
65 |
=================================================================== |
66 |
http://bugs.gentoo.org/315977 |
67 |
|
68 |
diff --git a/posix/gai.conf b/posix/gai.conf |
69 |
index 195287e..efba67b 100644 |
70 |
--- a/posix/gai.conf |
71 |
+++ b/posix/gai.conf |
72 |
@@ -56,9 +56,7 @@ |
73 |
# |
74 |
# scopev4 <mask> <value> |
75 |
# Add another rule to the RFC 3484 scope table for IPv4 addresses. |
76 |
-# By default the scope IDs described in section 3.2 in RFC 3484 are |
77 |
-# used. Changing these defaults should hardly ever be necessary. |
78 |
-# The defaults are equivalent to: |
79 |
+# The definitions in RFC 3484 are equivalent to: |
80 |
# |
81 |
#scopev4 ::ffff:169.254.0.0/112 2 |
82 |
#scopev4 ::ffff:127.0.0.0/104 2 |
83 |
@@ -66,3 +66,12 @@ |
84 |
#scopev4 ::ffff:172.16.0.0/108 5 |
85 |
#scopev4 ::ffff:192.168.0.0/112 5 |
86 |
#scopev4 ::ffff:0.0.0.0/96 14 |
87 |
+# |
88 |
+# For sites which use site-local IPv4 addresses behind NAT there is |
89 |
+# the problem that even if IPv4 addresses are preferred they do not |
90 |
+# have the same scope and are therefore not sorted first. To change |
91 |
+# this use only these rules: |
92 |
+# |
93 |
+scopev4 ::ffff:169.254.0.0/112 2 |
94 |
+scopev4 ::ffff:127.0.0.0/104 2 |
95 |
+scopev4 ::ffff:0.0.0.0/96 14 |
96 |
|
97 |
|
98 |
|
99 |
1.1 src/patchsets/glibc/2.11.1/0030_all_glibc-respect-env-CPPFLAGS.patch |
100 |
|
101 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/0030_all_glibc-respect-env-CPPFLAGS.patch?rev=1.1&view=markup |
102 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/0030_all_glibc-respect-env-CPPFLAGS.patch?rev=1.1&content-type=text/plain |
103 |
|
104 |
Index: 0030_all_glibc-respect-env-CPPFLAGS.patch |
105 |
=================================================================== |
106 |
Respect environment CPPFLAGS when we run ./configure so we can inject |
107 |
random -D things without having to set CFLAGS/ASFLAGS |
108 |
|
109 |
--- libc/Makeconfig |
110 |
+++ libc/Makeconfig |
111 |
@@ -672,6 +672,7 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl |
112 |
$(foreach lib,$(libof-$(basename $(@F))) \ |
113 |
$(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \ |
114 |
$(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F))) |
115 |
+CPPFLAGS += $(CPPFLAGS-config) |
116 |
override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \ |
117 |
$(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \ |
118 |
$(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \ |
119 |
--- libc/config.make.in |
120 |
+++ libc/config.make.in |
121 |
@@ -95,6 +95,7 @@ CC = @CC@ |
122 |
CXX = @CXX@ |
123 |
BUILD_CC = @BUILD_CC@ |
124 |
CFLAGS = @CFLAGS@ |
125 |
+CPPFLAGS-config = @CPPFLAGS@ |
126 |
ASFLAGS-config = @ASFLAGS_config@ |
127 |
AR = @AR@ |
128 |
RANLIB = @RANLIB@ |
129 |
|
130 |
|
131 |
|
132 |
1.1 src/patchsets/glibc/2.11.1/0044_all_glibc-2.10-resolv-nameserver-fallback.patch |
133 |
|
134 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/0044_all_glibc-2.10-resolv-nameserver-fallback.patch?rev=1.1&view=markup |
135 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/0044_all_glibc-2.10-resolv-nameserver-fallback.patch?rev=1.1&content-type=text/plain |
136 |
|
137 |
Index: 0044_all_glibc-2.10-resolv-nameserver-fallback.patch |
138 |
=================================================================== |
139 |
http://sourceware.org/bugzilla/show_bug.cgi?id=10851 |
140 |
|
141 |
2009-11-20 Petr Baudis <pasky@××××.cz> |
142 |
|
143 |
[BZ #10851] |
144 |
* resolv/res_init.c (__res_vinit): Initialize nscount again to |
145 |
one so that the default localhost nameserver record is used. |
146 |
|
147 |
diff --git a/resolv/res_init.c b/resolv/res_init.c |
148 |
index 40dbe7d..99ef8cf 100644 |
149 |
--- a/resolv/res_init.c |
150 |
+++ b/resolv/res_init.c |
151 |
@@ -183,7 +183,7 @@ __res_vinit(res_state statp, int preinit) { |
152 |
#endif |
153 |
statp->nsaddr.sin_family = AF_INET; |
154 |
statp->nsaddr.sin_port = htons(NAMESERVER_PORT); |
155 |
- statp->nscount = 0; |
156 |
+ statp->nscount = 1; |
157 |
statp->ndots = 1; |
158 |
statp->pfcode = 0; |
159 |
statp->_vcsock = -1; |
160 |
@@ -420,7 +420,8 @@ __res_vinit(res_state statp, int preinit) { |
161 |
continue; |
162 |
} |
163 |
} |
164 |
- statp->nscount = nservall; |
165 |
+ if (nservall > 0) |
166 |
+ statp->nscount = nservall; |
167 |
#ifdef _LIBC |
168 |
if (nservall - nserv > 0) { |
169 |
statp->_u._ext.nscount6 = nservall - nserv; |
170 |
|
171 |
|
172 |
|
173 |
1.1 src/patchsets/glibc/2.11.1/0085_all_glibc-disable-ldconfig.patch |
174 |
|
175 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/0085_all_glibc-disable-ldconfig.patch?rev=1.1&view=markup |
176 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/0085_all_glibc-disable-ldconfig.patch?rev=1.1&content-type=text/plain |
177 |
|
178 |
Index: 0085_all_glibc-disable-ldconfig.patch |
179 |
=================================================================== |
180 |
do not bother running ldconfig on DESTDIR. it wants to write the temp cache |
181 |
file outside of the chroot. doesnt matter anyways as we wont use the cache |
182 |
results (portage will rebuild cache), so running ldconfig is simply a waste |
183 |
of time. |
184 |
|
185 |
--- Makefile |
186 |
+++ Makefile |
187 |
@@ -117,4 +117,5 @@ |
188 |
|
189 |
install: |
190 |
+dont-bother-with-destdir: |
191 |
-test ! -x $(common-objpfx)elf/ldconfig || LC_ALL=C LANGUAGE=C \ |
192 |
$(common-objpfx)elf/ldconfig $(addprefix -r ,$(install_root)) \ |
193 |
|
194 |
|
195 |
|
196 |
1.1 src/patchsets/glibc/2.11.1/1010_all_glibc-queue-header-updates.patch |
197 |
|
198 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1010_all_glibc-queue-header-updates.patch?rev=1.1&view=markup |
199 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1010_all_glibc-queue-header-updates.patch?rev=1.1&content-type=text/plain |
200 |
|
201 |
Index: 1010_all_glibc-queue-header-updates.patch |
202 |
=================================================================== |
203 |
grab some updates from FreeBSD |
204 |
|
205 |
http://bugs.gentoo.org/201979 |
206 |
|
207 |
--- libc/misc/sys/queue.h |
208 |
+++ libc/misc/sys/queue.h |
209 |
@@ -136,6 +136,11 @@ struct { \ |
210 |
(var); \ |
211 |
(var) = ((var)->field.le_next)) |
212 |
|
213 |
+#define LIST_FOREACH_SAFE(var, head, field, tvar) \ |
214 |
+ for ((var) = LIST_FIRST((head)); \ |
215 |
+ (var) && ((tvar) = LIST_NEXT((var), field), 1); \ |
216 |
+ (var) = (tvar)) |
217 |
+ |
218 |
/* |
219 |
* List access methods. |
220 |
*/ |
221 |
@@ -197,6 +202,16 @@ struct { \ |
222 |
#define SLIST_FOREACH(var, head, field) \ |
223 |
for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next) |
224 |
|
225 |
+#define SLIST_FOREACH_SAFE(var, head, field, tvar) \ |
226 |
+ for ((var) = SLIST_FIRST((head)); \ |
227 |
+ (var) && ((tvar) = SLIST_NEXT((var), field), 1); \ |
228 |
+ (var) = (tvar)) |
229 |
+ |
230 |
+#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \ |
231 |
+ for ((varp) = &SLIST_FIRST((head)); \ |
232 |
+ ((var) = *(varp)) != NULL; \ |
233 |
+ (varp) = &SLIST_NEXT((var), field)) |
234 |
+ |
235 |
/* |
236 |
* Singly-linked List access methods. |
237 |
*/ |
238 |
@@ -242,6 +257,12 @@ struct { \ |
239 |
(head)->stqh_last = &(elm)->field.stqe_next; \ |
240 |
} while (/*CONSTCOND*/0) |
241 |
|
242 |
+#define STAILQ_LAST(head, type, field) \ |
243 |
+ (STAILQ_EMPTY((head)) ? \ |
244 |
+ NULL : \ |
245 |
+ ((struct type *)(void *) \ |
246 |
+ ((char *)((head)->stqh_last) - offsetof(struct type, field)))) |
247 |
+ |
248 |
#define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \ |
249 |
if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\ |
250 |
(head)->stqh_last = &(elm)->field.stqe_next; \ |
251 |
@@ -271,6 +292,11 @@ struct { \ |
252 |
(var); \ |
253 |
(var) = ((var)->field.stqe_next)) |
254 |
|
255 |
+#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \ |
256 |
+ for ((var) = STAILQ_FIRST((head)); \ |
257 |
+ (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \ |
258 |
+ (var) = (tvar)) |
259 |
+ |
260 |
|
261 |
/* |
262 |
* Singly-linked Tail queue access methods. |
263 |
@@ -437,10 +463,21 @@ struct { \ |
264 |
(var); \ |
265 |
(var) = ((var)->field.tqe_next)) |
266 |
|
267 |
+#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ |
268 |
+ for ((var) = TAILQ_FIRST((head)); \ |
269 |
+ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ |
270 |
+ (var) = (tvar)) |
271 |
+ |
272 |
#define TAILQ_FOREACH_REVERSE(var, head, headname, field) \ |
273 |
for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \ |
274 |
(var); \ |
275 |
(var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last))) |
276 |
+ |
277 |
+#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \ |
278 |
+ for ((var) = TAILQ_LAST((head), headname); \ |
279 |
+ (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \ |
280 |
+ (var) = (tvar)) |
281 |
+ |
282 |
|
283 |
/* |
284 |
* Tail queue access methods. |
285 |
|
286 |
|
287 |
|
288 |
1.1 src/patchsets/glibc/2.11.1/1020_all_glibc-longjmp-chk-hidden-fortify.patch |
289 |
|
290 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1020_all_glibc-longjmp-chk-hidden-fortify.patch?rev=1.1&view=markup |
291 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1020_all_glibc-longjmp-chk-hidden-fortify.patch?rev=1.1&content-type=text/plain |
292 |
|
293 |
Index: 1020_all_glibc-longjmp-chk-hidden-fortify.patch |
294 |
=================================================================== |
295 |
http://bugs.gentoo.org/293637 |
296 |
http://sourceware.org/ml/libc-alpha/2009-12/msg00010.html |
297 |
|
298 |
a bunch of ____longjmp_chk files mix PIC and SHARED code under just PIC. |
299 |
use the HIDDEN_JUMPTARGET() function so the right function is called. |
300 |
|
301 |
2009-11-27 Mike Frysinger <vapier@g.o> |
302 |
|
303 |
* sysdeps/unix/sysv/linux/i386/____longjmp_chk.S (CALL_FAIL): |
304 |
call HIDDEN_JUMPTARGET(__fortify_fail). |
305 |
* sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S (CALL_FAIL): |
306 |
Likewise. |
307 |
* sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S (CALL_FAIL): Delete. |
308 |
(CHECK_RSP): Branch to HIDDEN_JUMPTARGET(__fortify_fail). |
309 |
|
310 |
--- a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S |
311 |
+++ b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S |
312 |
@@ -33,10 +33,10 @@ longjmp_msg: |
313 |
cfi_register(%ebx,%ecx); \ |
314 |
LOAD_PIC_REG (bx); \ |
315 |
leal longjmp_msg@GOTOFF(%ebx), %eax; \ |
316 |
- call __GI___fortify_fail@PLT |
317 |
+ call HIDDEN_JUMPTARGET(__fortify_fail) |
318 |
#else |
319 |
# define CALL_FAIL movl $longjmp_msg, %eax; \ |
320 |
- call __fortify_fail |
321 |
+ call HIDDEN_JUMPTARGET(__fortify_fail) |
322 |
#endif |
323 |
|
324 |
|
325 |
--- a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S |
326 |
+++ b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S |
327 |
@@ -31,10 +31,10 @@ longjmp_msg: |
328 |
|
329 |
#ifdef PIC |
330 |
# define CALL_FAIL leaq longjmp_msg(%rip), %rdi; \ |
331 |
- call __GI___fortify_fail |
332 |
+ call HIDDEN_JUMPTARGET(__fortify_fail) |
333 |
#else |
334 |
# define CALL_FAIL movq $longjmp_msg, %rdi; \ |
335 |
- call __fortify_fail |
336 |
+ call HIDDEN_JUMPTARGET(__fortify_fail) |
337 |
#endif |
338 |
|
339 |
#define CHECK_RSP(reg) \ |
340 |
--- a/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S |
341 |
+++ b/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S |
342 |
@@ -30,19 +30,13 @@ longjmp_msg: |
343 |
|
344 |
#define __longjmp ____longjmp_chk |
345 |
|
346 |
-#ifdef PIC |
347 |
-# define CALL_FAIL __GI___fortify_fail |
348 |
-#else |
349 |
-# define CALL_FAIL __fortify_fail |
350 |
-#endif |
351 |
- |
352 |
#define CHECK_RSP(reg) \ |
353 |
cmp.ltu p0, p8 = reg, r12; \ |
354 |
(p8) br.cond.dpnt .Lok;; \ |
355 |
addl r28 = @ltoffx(longjmp_msg#), r1;; \ |
356 |
ld8.mov r28 = [r28], longjmp_msg#;; \ |
357 |
ld8 out0 = [r28]; \ |
358 |
- br.call.sptk.many b0 = CALL_FAIL#;; \ |
359 |
+ br.call.sptk.many b0 = HIDDEN_JUMPTARGET(__fortify_fail)#;; \ |
360 |
.Lok: |
361 |
|
362 |
#include "__longjmp.S" |
363 |
|
364 |
|
365 |
|
366 |
1.1 src/patchsets/glibc/2.11.1/1030_all_glibc-manual-no-perl.patch |
367 |
|
368 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1030_all_glibc-manual-no-perl.patch?rev=1.1&view=markup |
369 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1030_all_glibc-manual-no-perl.patch?rev=1.1&content-type=text/plain |
370 |
|
371 |
Index: 1030_all_glibc-manual-no-perl.patch |
372 |
=================================================================== |
373 |
If we're using a cvs snapshot which updates the source files, and |
374 |
perl isn't installed yet, then we can't regen the docs. Not a big |
375 |
deal, so just whine a little and continue on our merry way. |
376 |
|
377 |
http://bugs.gentoo.org/60132 |
378 |
|
379 |
--- libc/manual/Makefile |
380 |
+++ libc/manual/Makefile |
381 |
@@ -104,9 +104,14 @@ |
382 |
libm-err.texi: stamp-libm-err |
383 |
stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\ |
384 |
$(dir)/libm-test-ulps)) |
385 |
+ifneq ($(PERL),no) |
386 |
pwd=`pwd`; \ |
387 |
$(PERL) $< $$pwd/.. > libm-err-tmp |
388 |
$(move-if-change) libm-err-tmp libm-err.texi |
389 |
+else |
390 |
+ echo "Unable to rebuild math docs, no perl installed" |
391 |
+ touch libm-err.texi |
392 |
+endif |
393 |
touch $@ |
394 |
|
395 |
# Generate Texinfo files from the C source for the example programs. |
396 |
|
397 |
|
398 |
|
399 |
1.1 src/patchsets/glibc/2.11.1/1040_all_2.3.3-localedef-fix-trampoline.patch |
400 |
|
401 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1040_all_2.3.3-localedef-fix-trampoline.patch?rev=1.1&view=markup |
402 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1040_all_2.3.3-localedef-fix-trampoline.patch?rev=1.1&content-type=text/plain |
403 |
|
404 |
Index: 1040_all_2.3.3-localedef-fix-trampoline.patch |
405 |
=================================================================== |
406 |
#! /bin/sh -e |
407 |
|
408 |
# DP: Description: Fix localedef segfault when run under exec-shield, |
409 |
# PaX or similar. (#231438, #198099) |
410 |
# DP: Dpatch Author: James Troup <james@××××××.org> |
411 |
# DP: Patch Author: (probably) Jakub Jelinek <jakub@××××××.com> |
412 |
# DP: Upstream status: Unknown |
413 |
# DP: Status Details: Unknown |
414 |
# DP: Date: 2004-03-16 |
415 |
|
416 |
if [ $# -ne 2 ]; then |
417 |
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" |
418 |
exit 1 |
419 |
fi |
420 |
case "$1" in |
421 |
-patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;; |
422 |
-unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;; |
423 |
*) |
424 |
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" |
425 |
exit 1 |
426 |
esac |
427 |
exit 0 |
428 |
|
429 |
--- glibc-2.3.3-net/locale/programs/3level.h 16 Jun 2003 07:19:09 -0000 1.1.1.5 |
430 |
+++ glibc-2.3.3-redhat/locale/programs/3level.h 16 Jun 2003 09:32:40 -0000 1.4 |
431 |
@@ -204,6 +204,42 @@ CONCAT(TABLE,_iterate) (struct TABLE *t, |
432 |
} |
433 |
} |
434 |
} |
435 |
+ |
436 |
+/* GCC ATM seems to do a poor job with pointers to nested functions passed |
437 |
+ to inlined functions. Help it a little bit with this hack. */ |
438 |
+#define wchead_table_iterate(tp, fn) \ |
439 |
+do \ |
440 |
+ { \ |
441 |
+ struct wchead_table *t = (tp); \ |
442 |
+ uint32_t index1; \ |
443 |
+ for (index1 = 0; index1 < t->level1_size; index1++) \ |
444 |
+ { \ |
445 |
+ uint32_t lookup1 = t->level1[index1]; \ |
446 |
+ if (lookup1 != ((uint32_t) ~0)) \ |
447 |
+ { \ |
448 |
+ uint32_t lookup1_shifted = lookup1 << t->q; \ |
449 |
+ uint32_t index2; \ |
450 |
+ for (index2 = 0; index2 < (1 << t->q); index2++) \ |
451 |
+ { \ |
452 |
+ uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \ |
453 |
+ if (lookup2 != ((uint32_t) ~0)) \ |
454 |
+ { \ |
455 |
+ uint32_t lookup2_shifted = lookup2 << t->p; \ |
456 |
+ uint32_t index3; \ |
457 |
+ for (index3 = 0; index3 < (1 << t->p); index3++) \ |
458 |
+ { \ |
459 |
+ struct element_t *lookup3 \ |
460 |
+ = t->level3[index3 + lookup2_shifted]; \ |
461 |
+ if (lookup3 != NULL) \ |
462 |
+ fn ((((index1 << t->q) + index2) << t->p) + index3, \ |
463 |
+ lookup3); \ |
464 |
+ } \ |
465 |
+ } \ |
466 |
+ } \ |
467 |
+ } \ |
468 |
+ } \ |
469 |
+ } while (0) |
470 |
+ |
471 |
#endif |
472 |
|
473 |
#ifndef NO_FINALIZE |
474 |
|
475 |
|
476 |
|
477 |
1.1 src/patchsets/glibc/2.11.1/1055_all_glibc-resolv-dynamic.patch |
478 |
|
479 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1055_all_glibc-resolv-dynamic.patch?rev=1.1&view=markup |
480 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1055_all_glibc-resolv-dynamic.patch?rev=1.1&content-type=text/plain |
481 |
|
482 |
Index: 1055_all_glibc-resolv-dynamic.patch |
483 |
=================================================================== |
484 |
ripped from SuSE |
485 |
|
486 |
if /etc/resolv.conf is updated, then make sure applications |
487 |
already running get the updated information. |
488 |
|
489 |
http://bugs.gentoo.org/177416 |
490 |
|
491 |
--- libc/resolv/res_libc.c |
492 |
+++ libc/resolv/res_libc.c |
493 |
@@ -22,6 +22,7 @@ |
494 |
#include <arpa/nameser.h> |
495 |
#include <resolv.h> |
496 |
#include <bits/libc-lock.h> |
497 |
+#include <sys/stat.h> |
498 |
|
499 |
|
500 |
/* The following bit is copied from res_data.c (where it is #ifdef'ed |
501 |
@@ -101,6 +102,20 @@ |
502 |
__res_maybe_init (res_state resp, int preinit) |
503 |
{ |
504 |
if (resp->options & RES_INIT) { |
505 |
+ static time_t last_mtime, last_check; |
506 |
+ time_t now; |
507 |
+ struct stat statbuf; |
508 |
+ |
509 |
+ time (&now); |
510 |
+ if (now != last_check) { |
511 |
+ last_check = now; |
512 |
+ if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) { |
513 |
+ last_mtime = statbuf.st_mtime; |
514 |
+ atomicinclock (lock); |
515 |
+ atomicinc (__res_initstamp); |
516 |
+ atomicincunlock (lock); |
517 |
+ } |
518 |
+ } |
519 |
if (__res_initstamp != resp->_u._ext.initstamp) { |
520 |
if (resp->nscount > 0) { |
521 |
__res_nclose (resp); |
522 |
|
523 |
|
524 |
|
525 |
1.1 src/patchsets/glibc/2.11.1/1060_all_glibc-localedef-mmap.patch |
526 |
|
527 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1060_all_glibc-localedef-mmap.patch?rev=1.1&view=markup |
528 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1060_all_glibc-localedef-mmap.patch?rev=1.1&content-type=text/plain |
529 |
|
530 |
Index: 1060_all_glibc-localedef-mmap.patch |
531 |
=================================================================== |
532 |
sniped from Debian |
533 |
http://bugs.gentoo.org/289615 |
534 |
|
535 |
2009-10-27 Aurelien Jarno <aurelien@×××××××.net> |
536 |
|
537 |
* locale/programs/locarchive.c: use MMAP_SHARED to reserve memory |
538 |
used later with MMAP_FIXED | MMAP_SHARED to cope with different |
539 |
alignment restrictions. |
540 |
|
541 |
--- a/locale/programs/locarchive.c |
542 |
+++ b/locale/programs/locarchive.c |
543 |
@@ -134,7 +134,7 @@ |
544 |
size_t reserved = RESERVE_MMAP_SIZE; |
545 |
int xflags = 0; |
546 |
if (total < reserved |
547 |
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, |
548 |
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, |
549 |
-1, 0)) != MAP_FAILED)) |
550 |
xflags = MAP_FIXED; |
551 |
else |
552 |
@@ -397,7 +397,7 @@ |
553 |
size_t reserved = RESERVE_MMAP_SIZE; |
554 |
int xflags = 0; |
555 |
if (total < reserved |
556 |
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, |
557 |
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, |
558 |
-1, 0)) != MAP_FAILED)) |
559 |
xflags = MAP_FIXED; |
560 |
else |
561 |
@@ -615,7 +615,7 @@ |
562 |
int xflags = 0; |
563 |
void *p; |
564 |
if (st.st_size < reserved |
565 |
- && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON, |
566 |
+ && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON, |
567 |
-1, 0)) != MAP_FAILED)) |
568 |
xflags = MAP_FIXED; |
569 |
else |
570 |
|
571 |
|
572 |
|
573 |
1.1 src/patchsets/glibc/2.11.1/1070_all_glibc-fadvise64_64.patch |
574 |
|
575 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1070_all_glibc-fadvise64_64.patch?rev=1.1&view=markup |
576 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1070_all_glibc-fadvise64_64.patch?rev=1.1&content-type=text/plain |
577 |
|
578 |
Index: 1070_all_glibc-fadvise64_64.patch |
579 |
=================================================================== |
580 |
ripped from Debian |
581 |
|
582 |
--- |
583 |
sysdeps/unix/sysv/linux/posix_fadvise.c | 13 +++++++++++++ |
584 |
1 file changed, 13 insertions(+) |
585 |
|
586 |
--- a/sysdeps/unix/sysv/linux/posix_fadvise.c |
587 |
+++ b/sysdeps/unix/sysv/linux/posix_fadvise.c |
588 |
@@ -35,6 +35,19 @@ |
589 |
return INTERNAL_SYSCALL_ERRNO (ret, err); |
590 |
return 0; |
591 |
#else |
592 |
+# ifdef __NR_fadvise64_64 |
593 |
+ INTERNAL_SYSCALL_DECL (err); |
594 |
+ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd, |
595 |
+ __LONG_LONG_PAIR ((long) (offset >> 31), |
596 |
+ (long) offset), |
597 |
+ __LONG_LONG_PAIR ((long) (len >> 31), |
598 |
+ (long) len), |
599 |
+ advise); |
600 |
+ if (INTERNAL_SYSCALL_ERROR_P (ret, err)) |
601 |
+ return INTERNAL_SYSCALL_ERRNO (ret, err); |
602 |
+ return 0; |
603 |
+# else |
604 |
return ENOSYS; |
605 |
+# endif |
606 |
#endif |
607 |
} |
608 |
|
609 |
|
610 |
|
611 |
1.1 src/patchsets/glibc/2.11.1/1073_all_glibc-ldbl-nexttowardf.patch |
612 |
|
613 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1073_all_glibc-ldbl-nexttowardf.patch?rev=1.1&view=markup |
614 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1073_all_glibc-ldbl-nexttowardf.patch?rev=1.1&content-type=text/plain |
615 |
|
616 |
Index: 1073_all_glibc-ldbl-nexttowardf.patch |
617 |
=================================================================== |
618 |
ripped from Debian |
619 |
|
620 |
this change was made to generic __nexttowardf, but not the long double version |
621 |
|
622 |
2008-05-05 Aurelien Jarno <aurelien@×××××××.net> |
623 |
|
624 |
* sysdeps/ieee754/ldbl-128/s_nexttowardf.c: Include float.h. |
625 |
(__nexttowardf): Use math_opt_barrier and |
626 |
math_force_eval macros. If FLT_EVAL_METHOD is not 0, force |
627 |
x to float using asm. |
628 |
|
629 |
--- |
630 |
sysdeps/ieee754/ldbl-128/s_nexttowardf.c | 26 ++++++++++++++++---------- |
631 |
1 file changed, 16 insertions(+), 10 deletions(-) |
632 |
|
633 |
--- a/sysdeps/ieee754/ldbl-128/s_nexttowardf.c |
634 |
+++ b/sysdeps/ieee754/ldbl-128/s_nexttowardf.c |
635 |
@@ -19,7 +19,8 @@ |
636 |
#endif |
637 |
|
638 |
#include "math.h" |
639 |
-#include "math_private.h" |
640 |
+#include <math_private.h> |
641 |
+#include <float.h> |
642 |
|
643 |
#ifdef __STDC__ |
644 |
float __nexttowardf(float x, long double y) |
645 |
@@ -44,10 +45,12 @@ |
646 |
return x+y; |
647 |
if((long double) x==y) return y; /* x=y, return y */ |
648 |
if(ix==0) { /* x == 0 */ |
649 |
- float x2; |
650 |
+ float u; |
651 |
SET_FLOAT_WORD(x,(u_int32_t)((hy>>32)&0x80000000)|1);/* return +-minsub*/ |
652 |
- x2 = x*x; |
653 |
- if(x2==x) return x2; else return x; /* raise underflow flag */ |
654 |
+ u = math_opt_barrier (x); |
655 |
+ u = u * u; |
656 |
+ math_force_eval (u); /* raise underflow flag */ |
657 |
+ return x; |
658 |
} |
659 |
if(hx>=0) { /* x > 0 */ |
660 |
if(hy<0||(ix>>23)>(iy>>48)-0x3f80 |
661 |
@@ -67,13 +70,16 @@ |
662 |
} |
663 |
} |
664 |
hy = hx&0x7f800000; |
665 |
- if(hy>=0x7f800000) return x+x; /* overflow */ |
666 |
+ if(hy>=0x7f800000) { |
667 |
+ x = x+x; /* overflow */ |
668 |
+ if (FLT_EVAL_METHOD != 0) |
669 |
+ /* Force conversion to float. */ |
670 |
+ asm ("" : "+m"(x)); |
671 |
+ return x; |
672 |
+ } |
673 |
if(hy<0x00800000) { /* underflow */ |
674 |
- float x2 = x*x; |
675 |
- if(x2!=x) { /* raise underflow flag */ |
676 |
- SET_FLOAT_WORD(x2,hx); |
677 |
- return x2; |
678 |
- } |
679 |
+ float u = x*x; |
680 |
+ math_force_eval (u); /* raise underflow flag */ |
681 |
} |
682 |
SET_FLOAT_WORD(x,hx); |
683 |
return x; |
684 |
|
685 |
|
686 |
|
687 |
1.1 src/patchsets/glibc/2.11.1/1075_all_glibc-section-comments.patch |
688 |
|
689 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1075_all_glibc-section-comments.patch?rev=1.1&view=markup |
690 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1075_all_glibc-section-comments.patch?rev=1.1&content-type=text/plain |
691 |
|
692 |
Index: 1075_all_glibc-section-comments.patch |
693 |
=================================================================== |
694 |
http://sources.redhat.com/ml/binutils/2004-04/msg00665.html |
695 |
|
696 |
fixes building on some architectures (like m68k/arm/cris/etc...) because |
697 |
it does the right thing |
698 |
|
699 |
--- libc/include/libc-symbols.h |
700 |
+++ libc/include/libc-symbols.h |
701 |
@@ -232,12 +232,12 @@ |
702 |
# define __make_section_unallocated(section_string) |
703 |
# endif |
704 |
|
705 |
-/* Tacking on "\n\t#" to the section name makes gcc put it's bogus |
706 |
+/* Tacking on "\n#APP\n\t#" to the section name makes gcc put it's bogus |
707 |
section attributes on what looks like a comment to the assembler. */ |
708 |
# ifdef HAVE_SECTION_QUOTES |
709 |
-# define __sec_comment "\"\n\t#\"" |
710 |
+# define __sec_comment "\"\n#APP\n\t#\"" |
711 |
# else |
712 |
-# define __sec_comment "\n\t#" |
713 |
+# define __sec_comment "\n#APP\n\t#" |
714 |
# endif |
715 |
# define link_warning(symbol, msg) \ |
716 |
__make_section_unallocated (".gnu.warning." #symbol) \ |
717 |
|
718 |
|
719 |
|
720 |
1.1 src/patchsets/glibc/2.11.1/1080_all_glibc-no-inline-gmon.patch |
721 |
|
722 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1080_all_glibc-no-inline-gmon.patch?rev=1.1&view=markup |
723 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1080_all_glibc-no-inline-gmon.patch?rev=1.1&content-type=text/plain |
724 |
|
725 |
Index: 1080_all_glibc-no-inline-gmon.patch |
726 |
=================================================================== |
727 |
http://bugs.gentoo.org/196245 |
728 |
http://sourceware.org/ml/libc-alpha/2006-05/msg00017.html |
729 |
|
730 |
Attached is a patch to add __attribute__ ((noinline)) to |
731 |
call_gmon_start. |
732 |
|
733 |
Without this patch, the sec script that processed initfini.s removes a |
734 |
part of inlined call_gmon_start, causing undefined label errors. |
735 |
|
736 |
This patch solves the problem by forcing gcc not to inline |
737 |
call_gmon_start with __attribute__ ((noinline)). |
738 |
|
739 |
Tested by building for arm-none-lixux-gnueabi. OK to apply? |
740 |
|
741 |
Kazu Hirata |
742 |
|
743 |
2006-05-07 Kazu Hirata <kazu@××××××××××××.com> |
744 |
|
745 |
* sysdeps/generic/initfini.c (call_gmon_start): Add |
746 |
__attribute__ ((noinline)). |
747 |
|
748 |
Index: sysdeps/generic/initfini.c |
749 |
=================================================================== |
750 |
--- sysdeps/generic/initfini.c 16 Aug 2004 04:50:53 -0000 1.9 |
751 |
+++ sysdeps/generic/initfini.c 7 May 2006 15:31:08 -0000 |
752 |
@@ -70,7 +70,7 @@ |
753 |
/* The beginning of _init: */ |
754 |
asm ("\n/*@_init_PROLOG_BEGINS*/"); |
755 |
|
756 |
-static void |
757 |
+static void __attribute__ ((noinline)) |
758 |
call_gmon_start(void) |
759 |
{ |
760 |
extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/ |
761 |
|
762 |
|
763 |
|
764 |
1.1 src/patchsets/glibc/2.11.1/1085_all_glibc-2.9-check_native-headers.patch |
765 |
|
766 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1085_all_glibc-2.9-check_native-headers.patch?rev=1.1&view=markup |
767 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1085_all_glibc-2.9-check_native-headers.patch?rev=1.1&content-type=text/plain |
768 |
|
769 |
Index: 1085_all_glibc-2.9-check_native-headers.patch |
770 |
=================================================================== |
771 |
many ports hit this warning: |
772 |
../sysdeps/unix/sysv/linux/check_native.c:46: warning: implicit declaration of function 'memset' |
773 |
../sysdeps/unix/sysv/linux/check_native.c:46: warning: implicit declaration of function 'memset' |
774 |
|
775 |
snipped from suse |
776 |
|
777 |
--- sysdeps/unix/sysv/linux/check_native.c |
778 |
+++ sysdeps/unix/sysv/linux/check_native.c |
779 |
@@ -23,6 +23,7 @@ |
780 |
#include <stddef.h> |
781 |
#include <stdint.h> |
782 |
#include <stdlib.h> |
783 |
+#include <string.h> |
784 |
#include <time.h> |
785 |
#include <unistd.h> |
786 |
#include <net/if.h> |
787 |
|
788 |
|
789 |
|
790 |
1.1 src/patchsets/glibc/2.11.1/1090_all_glibc-2.3.6-fix-pr631.patch |
791 |
|
792 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1090_all_glibc-2.3.6-fix-pr631.patch?rev=1.1&view=markup |
793 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1090_all_glibc-2.3.6-fix-pr631.patch?rev=1.1&content-type=text/plain |
794 |
|
795 |
Index: 1090_all_glibc-2.3.6-fix-pr631.patch |
796 |
=================================================================== |
797 |
From dank@×××××.com |
798 |
Wed Jun 15 09:12:43 PDT 2005 |
799 |
|
800 |
Fixes |
801 |
|
802 |
build-glibc/libc.a(nsswitch.o)(.data+0x64): undefined reference to `_nss_files_getaliasent_r' |
803 |
build-glibc/libc.a(nsswitch.o)(.data+0x6c): undefined reference to `_nss_files_endaliasent' |
804 |
... 53 lines deleted ... |
805 |
build-glibc/libc.a(nsswitch.o)(.data+0x21c): undefined reference to `_nss_files_getspnam_r' |
806 |
collect2: ld returned 1 exit status |
807 |
make[2]: *** [/build/gcc-3.4.3-glibc-2.3.5-hdrs-2.6.11.2/i686-unknown-linux-gnu/build-glibc/elf/ldconfig] Error 1 |
808 |
|
809 |
when building glibc with --enable-static-nss. |
810 |
|
811 |
See http://sources.redhat.com/bugzilla/show_bug.cgi?id=631 |
812 |
|
813 |
--- glibc-2.3.5/Makeconfig.old Wed Jun 15 08:13:12 2005 |
814 |
+++ glibc-2.3.5/Makeconfig Wed Jun 15 08:13:14 2005 |
815 |
@@ -487,7 +487,7 @@ |
816 |
|
817 |
# The static libraries. |
818 |
ifeq (yes,$(build-static)) |
819 |
-link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(common-objpfx)libc.a |
820 |
+link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(otherlibs) $(common-objpfx)libc.a |
821 |
else |
822 |
ifeq (yes,$(build-shared)) |
823 |
# We can try to link the programs with lib*_pic.a... |
824 |
--- glibc-2.3.5/elf/Makefile.old Wed Jun 15 07:46:49 2005 |
825 |
+++ glibc-2.3.5/elf/Makefile Wed Jun 15 08:14:00 2005 |
826 |
@@ -115,6 +115,13 @@ |
827 |
install-bin-script = ldd |
828 |
endif |
829 |
|
830 |
+ifeq (yes,$(build-static-nss)) |
831 |
+nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss) |
832 |
+resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv) |
833 |
+otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \ |
834 |
+ $(resolvobjdir)/libresolv.a |
835 |
+endif |
836 |
+ |
837 |
others = sprof sln |
838 |
install-bin = sprof |
839 |
others-static = sln |
840 |
|
841 |
Signed-off-by: Robert P. J. Day <rpjday@××××××××××.com> |
842 |
|
843 |
|
844 |
|
845 |
1.1 src/patchsets/glibc/2.11.1/1095_all_glibc-2.9-assume-pipe2.patch |
846 |
|
847 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1095_all_glibc-2.9-assume-pipe2.patch?rev=1.1&view=markup |
848 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1095_all_glibc-2.9-assume-pipe2.patch?rev=1.1&content-type=text/plain |
849 |
|
850 |
Index: 1095_all_glibc-2.9-assume-pipe2.patch |
851 |
=================================================================== |
852 |
http://bugs.gentoo.org/250342 |
853 |
http://sources.redhat.com/bugzilla/show_bug.cgi?id=9685 |
854 |
|
855 |
we cant assume sock_cloexec and pipe2 are bound together as the former defines |
856 |
are found in glibc only while the latter are a combo of kernel headers and |
857 |
glibc. so if we do a runtime detection of SOCK_CLOEXEC, but pipe2() is a stub |
858 |
inside of glibc, we hit a problem. for example: |
859 |
|
860 |
#include <grp.h> |
861 |
#include <stdio.h> |
862 |
main() |
863 |
{ |
864 |
getgrnam("portage"); |
865 |
if (!popen("ls", "r")) |
866 |
perror("popen()"); |
867 |
} |
868 |
|
869 |
getgrnam() will detect that the kernel supports SOCK_CLOEXEC and then set both |
870 |
__have_sock_cloexec and __have_pipe2 to true. but if glibc was built against |
871 |
older kernel headers where __NR_pipe2 does not exist, glibc will have a ENOSYS |
872 |
stub for it. so popen() will always fail as glibc assumes pipe2() works. |
873 |
|
874 |
--- include/unistd.h |
875 |
+++ include/unistd.h |
876 |
@@ -167,9 +167,6 @@ |
877 |
extern int __pause_nocancel (void) attribute_hidden; |
878 |
|
879 |
extern int __have_sock_cloexec; |
880 |
-/* At lot of other functionality became available at the same time as |
881 |
- SOCK_CLOEXEC. Avoid defining separate variables for all of them |
882 |
- unless it is really necessary. */ |
883 |
-#define __have_pipe2 __have_sock_cloexec |
884 |
+extern int __have_pipe2; |
885 |
|
886 |
#endif |
887 |
--- socket/have_sock_cloexec.c |
888 |
+++ socket/have_sock_cloexec.c |
889 |
@@ -16,9 +16,14 @@ |
890 |
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
891 |
02111-1307 USA. */ |
892 |
|
893 |
+#include <fcntl.h> |
894 |
#include <sys/socket.h> |
895 |
#include <kernel-features.h> |
896 |
|
897 |
#if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC |
898 |
int __have_sock_cloexec; |
899 |
#endif |
900 |
+ |
901 |
+#if defined O_CLOEXEC && !defined __ASSUME_PIPE2 |
902 |
+int __have_pipe2; |
903 |
+#endif |
904 |
|
905 |
|
906 |
|
907 |
1.1 src/patchsets/glibc/2.11.1/1100_all_glibc-2.3.3-china.patch |
908 |
|
909 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1100_all_glibc-2.3.3-china.patch?rev=1.1&view=markup |
910 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1100_all_glibc-2.3.3-china.patch?rev=1.1&content-type=text/plain |
911 |
|
912 |
Index: 1100_all_glibc-2.3.3-china.patch |
913 |
=================================================================== |
914 |
--- localedata/locales/zh_TW |
915 |
+++ localedata/locales/zh_TW |
916 |
@@ -1,7 +1,7 @@ |
917 |
comment_char % |
918 |
escape_char / |
919 |
% |
920 |
-% Chinese language locale for Taiwan R.O.C. |
921 |
+% Chinese language locale for Taiwan |
922 |
% charmap: BIG5-CP950 |
923 |
% |
924 |
% Original Author: |
925 |
@@ -17,7 +17,7 @@ |
926 |
% Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf |
927 |
|
928 |
LC_IDENTIFICATION |
929 |
-title "Chinese locale for Taiwan R.O.C." |
930 |
+title "Chinese locale for Taiwan" |
931 |
source "" |
932 |
address "" |
933 |
contact "" |
934 |
@@ -25,7 +25,7 @@ |
935 |
tel "" |
936 |
fax "" |
937 |
language "Chinese" |
938 |
-territory "Taiwan R.O.C." |
939 |
+territory "Taiwan" |
940 |
revision "0.2" |
941 |
date "2000-08-02" |
942 |
% |
943 |
|
944 |
|
945 |
|
946 |
1.1 src/patchsets/glibc/2.11.1/1103_all_glibc-new-valencian-locale.patch |
947 |
|
948 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1103_all_glibc-new-valencian-locale.patch?rev=1.1&view=markup |
949 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1103_all_glibc-new-valencian-locale.patch?rev=1.1&content-type=text/plain |
950 |
|
951 |
Index: 1103_all_glibc-new-valencian-locale.patch |
952 |
=================================================================== |
953 |
http://bugs.gentoo.org/show_bug.cgi?id=131815 |
954 |
http://sourceware.org/bugzilla/show_bug.cgi?id=2522 |
955 |
|
956 |
--- localedata/SUPPORTED |
957 |
+++ localedata/SUPPORTED |
958 |
@@ -68,6 +68,8 @@ |
959 |
ca_ES.UTF-8/UTF-8 \ |
960 |
ca_ES/ISO-8859-1 \ |
961 |
ca_ES@euro/ISO-8859-15 \ |
962 |
+ca_ES.UTF-8@valencia/UTF-8 \ |
963 |
+ca_ES@valencia/ISO-8859-15 \ |
964 |
ca_FR.UTF-8/UTF-8 \ |
965 |
ca_FR/ISO-8859-15 \ |
966 |
ca_IT.UTF-8/UTF-8 \ |
967 |
--- localedata/locales/ca_ES@valencia |
968 |
+++ localedata/locales/ca_ES@valencia |
969 |
@@ -0,0 +1,96 @@ |
970 |
+comment_char % |
971 |
+escape_char / |
972 |
+% |
973 |
+% Valencian (southern Catalan) locale for Spain with Euro |
974 |
+% |
975 |
+% Note that this locale is almost the same as ca_ES@euro. The point of having |
976 |
+% a separate locale is only for PO translations, which have a lot of social |
977 |
+% support and are very appreciated by the Valencian-speaking community. |
978 |
+% |
979 |
+% Contact: Jordi Mallach |
980 |
+% Email: jordi@×××.org |
981 |
+% Tel: |
982 |
+% Fax: |
983 |
+% Language: ca |
984 |
+% Territory: ES |
985 |
+% Option: euro |
986 |
+% Revision: 1.0 |
987 |
+% Date: 2006-04-06 |
988 |
+% Application: general |
989 |
+% Users: general |
990 |
+% Repertoiremap: mnemonic,ds |
991 |
+% Charset: ISO-8859-15 |
992 |
+% Distribution and use is free, also |
993 |
+% for commercial purposes. |
994 |
+ |
995 |
+LC_IDENTIFICATION |
996 |
+title "Valencian (southern Catalan) locale for Spain with Euro" |
997 |
+source "" |
998 |
+address "" |
999 |
+contact "Jordi Mallach" |
1000 |
+email "jordi@×××.org" |
1001 |
+tel "" |
1002 |
+fax "" |
1003 |
+language "Catalan" |
1004 |
+territory "Spain" |
1005 |
+revision "1.0" |
1006 |
+date "2006-04-06" |
1007 |
+% |
1008 |
+category "ca_ES@valencia:2006";LC_IDENTIFICATION |
1009 |
+category "ca_ES@valencia:2006";LC_CTYPE |
1010 |
+category "ca_ES@valencia:2006";LC_COLLATE |
1011 |
+category "ca_ES@valencia:2006";LC_MONETARY |
1012 |
+category "ca_ES@valencia:2006";LC_NUMERIC |
1013 |
+category "ca_ES@valencia:2006";LC_TIME |
1014 |
+category "ca_ES@valencia:2006";LC_MESSAGES |
1015 |
+category "ca_ES@valencia:2006";LC_PAPER |
1016 |
+category "ca_ES@valencia:2006";LC_NAME |
1017 |
+category "ca_ES@valencia:2006";LC_ADDRESS |
1018 |
+category "ca_ES@valencia:2006";LC_TELEPHONE |
1019 |
+category "ca_ES@valencia:2006";LC_MEASUREMENT |
1020 |
+ |
1021 |
+END LC_IDENTIFICATION |
1022 |
+ |
1023 |
+LC_CTYPE |
1024 |
+copy "i18n" |
1025 |
+END LC_CTYPE |
1026 |
+ |
1027 |
+LC_COLLATE |
1028 |
+copy "ca_ES" |
1029 |
+END LC_COLLATE |
1030 |
+ |
1031 |
+LC_MONETARY |
1032 |
+copy "ca_ES" |
1033 |
+END LC_MONETARY |
1034 |
+ |
1035 |
+LC_NUMERIC |
1036 |
+copy "ca_ES" |
1037 |
+END LC_NUMERIC |
1038 |
+ |
1039 |
+LC_TIME |
1040 |
+copy "ca_ES" |
1041 |
+END LC_TIME |
1042 |
+ |
1043 |
+LC_MESSAGES |
1044 |
+copy "ca_ES" |
1045 |
+END LC_MESSAGES |
1046 |
+ |
1047 |
+LC_PAPER |
1048 |
+copy "ca_ES" |
1049 |
+END LC_PAPER |
1050 |
+ |
1051 |
+LC_NAME |
1052 |
+copy "ca_ES" |
1053 |
+END LC_NAME |
1054 |
+ |
1055 |
+LC_ADDRESS |
1056 |
+copy "ca_ES" |
1057 |
+END LC_ADDRESS |
1058 |
+ |
1059 |
+LC_TELEPHONE |
1060 |
+copy "ca_ES" |
1061 |
+END LC_TELEPHONE |
1062 |
+ |
1063 |
+LC_MEASUREMENT |
1064 |
+copy "ca_ES" |
1065 |
+END LC_MEASUREMENT |
1066 |
|
1067 |
|
1068 |
|
1069 |
1.1 src/patchsets/glibc/2.11.1/1120_all_glibc-2.11-longjmp-chk-fallback.patch |
1070 |
|
1071 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1120_all_glibc-2.11-longjmp-chk-fallback.patch?rev=1.1&view=markup |
1072 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1120_all_glibc-2.11-longjmp-chk-fallback.patch?rev=1.1&content-type=text/plain |
1073 |
|
1074 |
Index: 1120_all_glibc-2.11-longjmp-chk-fallback.patch |
1075 |
=================================================================== |
1076 |
--- debug/____longjmp_chk.c |
1077 |
+++ debug/____longjmp_chk.c |
1078 |
@@ -0,0 +1,7 @@ |
1079 |
+/* Stub to make building happy -- no fortify checks, but |
1080 |
+ it at least does the correct thing (longjmps). */ |
1081 |
+#include <setjmp.h> |
1082 |
+void ____longjmp_chk (__jmp_buf env, int val) |
1083 |
+{ |
1084 |
+ return __longjmp (env, val); |
1085 |
+} |
1086 |
|
1087 |
|
1088 |
|
1089 |
1.1 src/patchsets/glibc/2.11.1/1130_all_glibc-2.4-undefine-__i686.patch |
1090 |
|
1091 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1130_all_glibc-2.4-undefine-__i686.patch?rev=1.1&view=markup |
1092 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1130_all_glibc-2.4-undefine-__i686.patch?rev=1.1&content-type=text/plain |
1093 |
|
1094 |
Index: 1130_all_glibc-2.4-undefine-__i686.patch |
1095 |
=================================================================== |
1096 |
If gcc is configured to generate i686 code or better by default (like |
1097 |
when using the --with-arch=pentium3 configure option), then the __i686 |
1098 |
macro will always be defined automatically and thus screw up the |
1099 |
compilation of some .S files. |
1100 |
http://bugs.gentoo.org/131108 |
1101 |
http://sourceware.org/ml/libc-alpha/2006-04/msg00090.html |
1102 |
|
1103 |
2006-04-25 Mike Frysinger <vapier@g.o> |
1104 |
|
1105 |
* sysdeps/i386/sysdep.h (__i686): Undefine. |
1106 |
|
1107 |
--- sysdeps/i386/sysdep.h |
1108 |
+++ sysdeps/i386/sysdep.h |
1109 |
@@ -17,6 +17,14 @@ |
1110 |
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
1111 |
02111-1307 USA. */ |
1112 |
|
1113 |
+/* |
1114 |
+ * When building for i686 targets or better, gcc automatically defines |
1115 |
+ * '__i686' to '1' for us which causes trouble when using section names |
1116 |
+ * like '__i686.get_pc_thunk.reg'. Since we check for __i686__ in the |
1117 |
+ * code, killing '__i686' shouldn't be a problem. |
1118 |
+ */ |
1119 |
+#undef __i686 |
1120 |
+ |
1121 |
#include <sysdeps/generic/sysdep.h> |
1122 |
|
1123 |
#ifdef __ASSEMBLER__ |
1124 |
|
1125 |
Note: this breaks mips so we wrap it in a hackish __i686__ for now ... |
1126 |
|
1127 |
2006-04-25 Mike Frysinger <vapier@g.o> |
1128 |
|
1129 |
* sysdeps/pthread/pt-initfini.c: Include sysdep.h. |
1130 |
|
1131 |
--- nptl/sysdeps/pthread/pt-initfini.c |
1132 |
+++ nptl/sysdeps/pthread/pt-initfini.c |
1133 |
@@ -45,6 +45,9 @@ |
1134 |
/* Embed an #include to pull in the alignment and .end directives. */ |
1135 |
asm ("\n#include \"defs.h\""); |
1136 |
|
1137 |
+/* Embed an #include to pull in asm settings. */ |
1138 |
+asm ("\n#ifdef __i686__\n#include <sysdep.h>\n#endif"); |
1139 |
+ |
1140 |
/* The initial common code ends here. */ |
1141 |
asm ("\n/*@HEADER_ENDS*/"); |
1142 |
|
1143 |
|
1144 |
|
1145 |
|
1146 |
1.1 src/patchsets/glibc/2.11.1/1160_all_glibc-2.8-nscd-one-fork.patch |
1147 |
|
1148 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1160_all_glibc-2.8-nscd-one-fork.patch?rev=1.1&view=markup |
1149 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1160_all_glibc-2.8-nscd-one-fork.patch?rev=1.1&content-type=text/plain |
1150 |
|
1151 |
Index: 1160_all_glibc-2.8-nscd-one-fork.patch |
1152 |
=================================================================== |
1153 |
only fork one to assist in stop-start-daemon assumptions about daemon behavior |
1154 |
|
1155 |
http://bugs.gentoo.org/190785 |
1156 |
|
1157 |
--- libc/nscd/nscd.c |
1158 |
+++ libc/nscd/nscd.c |
1159 |
@@ -178,6 +178,9 @@ |
1160 |
if (pid != 0) |
1161 |
exit (0); |
1162 |
|
1163 |
+ if (write_pid (_PATH_NSCDPID) < 0) |
1164 |
+ dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno)); |
1165 |
+ |
1166 |
int nullfd = open (_PATH_DEVNULL, O_RDWR); |
1167 |
if (nullfd != -1) |
1168 |
{ |
1169 |
@@ -227,12 +230,6 @@ |
1170 |
for (i = min_close_fd; i < getdtablesize (); i++) |
1171 |
close (i); |
1172 |
|
1173 |
- pid = fork (); |
1174 |
- if (pid == -1) |
1175 |
- error (EXIT_FAILURE, errno, _("cannot fork")); |
1176 |
- if (pid != 0) |
1177 |
- exit (0); |
1178 |
- |
1179 |
setsid (); |
1180 |
|
1181 |
if (chdir ("/") != 0) |
1182 |
@@ -241,9 +238,6 @@ |
1183 |
|
1184 |
openlog ("nscd", LOG_CONS | LOG_ODELAY, LOG_DAEMON); |
1185 |
|
1186 |
- if (write_pid (_PATH_NSCDPID) < 0) |
1187 |
- dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno)); |
1188 |
- |
1189 |
if (!init_logfile ()) |
1190 |
dbg_log (_("Could not create log file")); |
1191 |
|
1192 |
|
1193 |
|
1194 |
1.1 src/patchsets/glibc/2.11.1/1503_hppa_glibc-2.7-hppa-nptl-carlos.patch |
1195 |
|
1196 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1503_hppa_glibc-2.7-hppa-nptl-carlos.patch?rev=1.1&view=markup |
1197 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1503_hppa_glibc-2.7-hppa-nptl-carlos.patch?rev=1.1&content-type=text/plain |
1198 |
|
1199 |
Index: 1503_hppa_glibc-2.7-hppa-nptl-carlos.patch |
1200 |
=================================================================== |
1201 |
--- elf/rtld.c.orig |
1202 |
+++ elf/rtld.c |
1203 |
@@ -379,14 +379,14 @@ |
1204 |
know it is available. We do not have to clear the memory if we |
1205 |
do not have to use the temporary bootstrap_map. Global variables |
1206 |
are initialized to zero by default. */ |
1207 |
-#ifndef DONT_USE_BOOTSTRAP_MAP |
1208 |
+#if !defined DONT_USE_BOOTSTRAP_MAP |
1209 |
# ifdef HAVE_BUILTIN_MEMSET |
1210 |
__builtin_memset (bootstrap_map.l_info, '\0', sizeof (bootstrap_map.l_info)); |
1211 |
# else |
1212 |
- for (size_t cnt = 0; |
1213 |
- cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]); |
1214 |
- ++cnt) |
1215 |
- bootstrap_map.l_info[cnt] = 0; |
1216 |
+ /* Clear the whole bootstrap_map structure */ |
1217 |
+ for (char *cnt = (char *)&(bootstrap_map); |
1218 |
+ cnt < ((char *)&(bootstrap_map) + sizeof (bootstrap_map)); |
1219 |
+ *cnt++ = '\0'); |
1220 |
# endif |
1221 |
# if USE___THREAD |
1222 |
bootstrap_map.l_tls_modid = 0; |
1223 |
--- include/atomic.h.orig |
1224 |
+++ include/atomic.h |
1225 |
@@ -174,7 +174,7 @@ |
1226 |
__typeof (*(mem)) __atg5_value = (newvalue); \ |
1227 |
\ |
1228 |
do \ |
1229 |
- __atg5_oldval = *__atg5_memp; \ |
1230 |
+ __atg5_oldval = *(volatile __typeof (mem))__atg5_memp; \ |
1231 |
while (__builtin_expect \ |
1232 |
(atomic_compare_and_exchange_bool_acq (__atg5_memp, __atg5_value, \ |
1233 |
__atg5_oldval), 0)); \ |
1234 |
@@ -195,7 +195,7 @@ |
1235 |
__typeof (*(mem)) __atg6_value = (value); \ |
1236 |
\ |
1237 |
do \ |
1238 |
- __atg6_oldval = *__atg6_memp; \ |
1239 |
+ __atg6_oldval = *(volatile __typeof (mem))__atg6_memp; \ |
1240 |
while (__builtin_expect \ |
1241 |
(atomic_compare_and_exchange_bool_acq (__atg6_memp, \ |
1242 |
__atg6_oldval \ |
1243 |
@@ -213,7 +213,7 @@ |
1244 |
__typeof (*(mem)) __atg7_value = (value); \ |
1245 |
\ |
1246 |
do \ |
1247 |
- __atg7_oldv = *__atg7_memp; \ |
1248 |
+ __atg7_oldv = *(volatile __typeof (mem))__atg7_memp; \ |
1249 |
while (__builtin_expect \ |
1250 |
(catomic_compare_and_exchange_bool_acq (__atg7_memp, \ |
1251 |
__atg7_oldv \ |
1252 |
@@ -231,7 +231,7 @@ |
1253 |
__typeof (mem) __atg8_memp = (mem); \ |
1254 |
__typeof (*(mem)) __atg8_value = (value); \ |
1255 |
do { \ |
1256 |
- __atg8_oldval = *__atg8_memp; \ |
1257 |
+ __atg8_oldval = *(volatile __typeof (mem))__atg8_memp; \ |
1258 |
if (__atg8_oldval >= __atg8_value) \ |
1259 |
break; \ |
1260 |
} while (__builtin_expect \ |
1261 |
@@ -248,7 +248,7 @@ |
1262 |
__typeof (mem) __atg9_memp = (mem); \ |
1263 |
__typeof (*(mem)) __atg9_value = (value); \ |
1264 |
do { \ |
1265 |
- __atg9_oldv = *__atg9_memp; \ |
1266 |
+ __atg9_oldv = *(volatile __typeof (mem))__atg9_memp; \ |
1267 |
if (__atg9_oldv >= __atg9_value) \ |
1268 |
break; \ |
1269 |
} while (__builtin_expect \ |
1270 |
@@ -266,7 +266,7 @@ |
1271 |
__typeof (mem) __atg10_memp = (mem); \ |
1272 |
__typeof (*(mem)) __atg10_value = (value); \ |
1273 |
do { \ |
1274 |
- __atg10_oldval = *__atg10_memp; \ |
1275 |
+ __atg10_oldval = *(volatile __typeof (mem))__atg10_memp; \ |
1276 |
if (__atg10_oldval <= __atg10_value) \ |
1277 |
break; \ |
1278 |
} while (__builtin_expect \ |
1279 |
@@ -350,7 +350,7 @@ |
1280 |
\ |
1281 |
do \ |
1282 |
{ \ |
1283 |
- __atg11_oldval = *__atg11_memp; \ |
1284 |
+ __atg11_oldval = *(volatile __typeof (mem))__atg11_memp; \ |
1285 |
if (__builtin_expect (__atg11_oldval <= 0, 0)) \ |
1286 |
break; \ |
1287 |
} \ |
1288 |
@@ -389,7 +389,7 @@ |
1289 |
__typeof (*(mem)) __atg14_mask = ((__typeof (*(mem))) 1 << (bit)); \ |
1290 |
\ |
1291 |
do \ |
1292 |
- __atg14_old = (*__atg14_memp); \ |
1293 |
+ __atg14_old = (*(volatile __typeof (mem))__atg14_memp); \ |
1294 |
while (__builtin_expect \ |
1295 |
(atomic_compare_and_exchange_bool_acq (__atg14_memp, \ |
1296 |
__atg14_old | __atg14_mask,\ |
1297 |
@@ -407,7 +407,7 @@ |
1298 |
__typeof (*(mem)) __atg15_mask = (mask); \ |
1299 |
\ |
1300 |
do \ |
1301 |
- __atg15_old = (*__atg15_memp); \ |
1302 |
+ __atg15_old = (*(volatile __typeof (mem))__atg15_memp); \ |
1303 |
while (__builtin_expect \ |
1304 |
(atomic_compare_and_exchange_bool_acq (__atg15_memp, \ |
1305 |
__atg15_old & __atg15_mask, \ |
1306 |
@@ -423,7 +423,7 @@ |
1307 |
__typeof (*(mem)) __atg16_mask = (mask); \ |
1308 |
\ |
1309 |
do \ |
1310 |
- __atg16_old = (*__atg16_memp); \ |
1311 |
+ __atg16_old = (*(volatile __typeof (mem))__atg16_memp); \ |
1312 |
while (__builtin_expect \ |
1313 |
(atomic_compare_and_exchange_bool_acq (__atg16_memp, \ |
1314 |
__atg16_old & __atg16_mask,\ |
1315 |
@@ -441,7 +441,7 @@ |
1316 |
__typeof (*(mem)) __atg17_mask = (mask); \ |
1317 |
\ |
1318 |
do \ |
1319 |
- __atg17_old = (*__atg17_memp); \ |
1320 |
+ __atg17_old = (*(volatile __typeof (mem))__atg17_memp); \ |
1321 |
while (__builtin_expect \ |
1322 |
(atomic_compare_and_exchange_bool_acq (__atg17_memp, \ |
1323 |
__atg17_old | __atg17_mask, \ |
1324 |
@@ -457,7 +457,7 @@ |
1325 |
__typeof (*(mem)) __atg18_mask = (mask); \ |
1326 |
\ |
1327 |
do \ |
1328 |
- __atg18_old = (*__atg18_memp); \ |
1329 |
+ __atg18_old = (*(volatile __typeof (mem))__atg18_memp); \ |
1330 |
while (__builtin_expect \ |
1331 |
(catomic_compare_and_exchange_bool_acq (__atg18_memp, \ |
1332 |
__atg18_old | __atg18_mask,\ |
1333 |
@@ -473,7 +473,7 @@ |
1334 |
__typeof (*(mem)) __atg19_mask = (mask); \ |
1335 |
\ |
1336 |
do \ |
1337 |
- __atg19_old = (*__atg19_memp); \ |
1338 |
+ __atg19_old = (*(volatile __typeof (mem))__atg19_memp); \ |
1339 |
while (__builtin_expect \ |
1340 |
(atomic_compare_and_exchange_bool_acq (__atg19_memp, \ |
1341 |
__atg19_old | __atg19_mask,\ |
1342 |
--- nptl/Makefile.orig |
1343 |
+++ nptl/Makefile |
1344 |
@@ -263,9 +263,9 @@ |
1345 |
# Files which must not be linked with libpthread. |
1346 |
tests-nolibpthread = tst-unload |
1347 |
|
1348 |
-# This sets the stack resource limit to 1023kb, which is not a multiple |
1349 |
-# of the page size since every architecture's page size is > 1k. |
1350 |
-tst-oddstacklimit-ENV = ; ulimit -s 1023; |
1351 |
+# This sets the stack resource limit to 8193kb, which is not a multiple |
1352 |
+# of the page size since every architecture's page size is 4096 bytes. |
1353 |
+tst-oddstacklimit-ENV = ; ulimit -s 8193; |
1354 |
|
1355 |
distribute = eintr.c tst-cleanup4aux.c |
1356 |
|
1357 |
@@ -424,6 +424,35 @@ |
1358 |
CFLAGS-tst-cleanupx4.c += -fexceptions |
1359 |
CFLAGS-tst-oncex3.c += -fexceptions |
1360 |
CFLAGS-tst-oncex4.c += -fexceptions |
1361 |
+ |
1362 |
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed |
1363 |
+LDFLAGS-tst-cancelx2 += $(ldflags-libgcc_s) |
1364 |
+LDFLAGS-tst-cancelx3 += $(ldflags-libgcc_s) |
1365 |
+LDFLAGS-tst-cancelx4 += $(ldflags-libgcc_s) |
1366 |
+LDFLAGS-tst-cancelx5 += $(ldflags-libgcc_s) |
1367 |
+LDFLAGS-tst-cancelx6 += $(ldflags-libgcc_s) |
1368 |
+LDFLAGS-tst-cancelx7 += $(ldflags-libgcc_s) |
1369 |
+LDFLAGS-tst-cancelx8 += $(ldflags-libgcc_s) |
1370 |
+LDFLAGS-tst-cancelx9 += $(ldflags-libgcc_s) |
1371 |
+LDFLAGS-tst-cancelx10 += $(ldflags-libgcc_s) |
1372 |
+LDFLAGS-tst-cancelx11 += $(ldflags-libgcc_s) |
1373 |
+LDFLAGS-tst-cancelx12 += $(ldflags-libgcc_s) |
1374 |
+LDFLAGS-tst-cancelx13 += $(ldflags-libgcc_s) |
1375 |
+LDFLAGS-tst-cancelx14 += $(ldflags-libgcc_s) |
1376 |
+LDFLAGS-tst-cancelx15 += $(ldflags-libgcc_s) |
1377 |
+LDFLAGS-tst-cancelx16 += $(ldflags-libgcc_s) |
1378 |
+LDFLAGS-tst-cancelx17 += $(ldflags-libgcc_s) |
1379 |
+LDFLAGS-tst-cancelx18 += $(ldflags-libgcc_s) |
1380 |
+LDFLAGS-tst-cancelx20 += $(ldflags-libgcc_s) |
1381 |
+LDFLAGS-tst-cancelx21 += $(ldflags-libgcc_s) |
1382 |
+LDFLAGS-tst-cleanupx0 += $(ldflags-libgcc_s) |
1383 |
+LDFLAGS-tst-cleanupx1 += $(ldflags-libgcc_s) |
1384 |
+LDFLAGS-tst-cleanupx2 += $(ldflags-libgcc_s) |
1385 |
+LDFLAGS-tst-cleanupx3 += $(ldflags-libgcc_s) |
1386 |
+LDFLAGS-tst-cleanupx4 += $(ldflags-libgcc_s) |
1387 |
+LDFLAGS-tst-oncex3 += $(ldflags-libgcc_s) |
1388 |
+LDFLAGS-tst-oncex4 += $(ldflags-libgcc_s) |
1389 |
+ |
1390 |
CFLAGS-tst-align.c += $(stack-align-test-flags) |
1391 |
CFLAGS-tst-align3.c += $(stack-align-test-flags) |
1392 |
CFLAGS-tst-initializers1.c = -W -Wall -Werror |
1393 |
--- nptl.orig/pthread_barrier_wait.c |
1394 |
+++ nptl/pthread_barrier_wait.c |
1395 |
@@ -64,7 +64,7 @@ |
1396 |
do |
1397 |
lll_futex_wait (&ibarrier->curr_event, event, |
1398 |
ibarrier->private ^ FUTEX_PRIVATE_FLAG); |
1399 |
- while (event == ibarrier->curr_event); |
1400 |
+ while (event == *(volatile unsigned int *)&ibarrier->curr_event); |
1401 |
} |
1402 |
|
1403 |
/* Make sure the init_count is stored locally or in a register. */ |
1404 |
--- nptl/sysdeps/pthread/Makefile.orig |
1405 |
+++ nptl/sysdeps/pthread/Makefile |
1406 |
@@ -41,7 +41,9 @@ |
1407 |
|
1408 |
ifeq ($(have-forced-unwind),yes) |
1409 |
tests += tst-mqueue8x |
1410 |
+ldflags-libgcc_s = --as-needed -lgcc_s --no-as-needed |
1411 |
CFLAGS-tst-mqueue8x.c += -fexceptions |
1412 |
+LDFLAGS-tst-mqueue8x += $(ldflags-libgcc_s) |
1413 |
endif |
1414 |
endif |
1415 |
|
1416 |
--- stdio-common/Makefile.orig |
1417 |
+++ stdio-common/Makefile |
1418 |
@@ -79,7 +79,7 @@ |
1419 |
$(SHELL) -e tst-printf.sh $(common-objpfx) '$(run-program-prefix)' |
1420 |
endif |
1421 |
|
1422 |
-CFLAGS-vfprintf.c = -Wno-uninitialized |
1423 |
+CFLAGS-vfprintf.c = -Wno-uninitialized -fno-delayed-branch |
1424 |
CFLAGS-vfwprintf.c = -Wno-uninitialized |
1425 |
CFLAGS-tst-printf.c = -Wno-format |
1426 |
CFLAGS-tstdiomisc.c = -Wno-format |
1427 |
--- sunrpc/clnt_udp.c.orig |
1428 |
+++ sunrpc/clnt_udp.c |
1429 |
@@ -419,7 +419,7 @@ |
1430 |
while (inlen < 0 && errno == EINTR); |
1431 |
if (inlen < 0) |
1432 |
{ |
1433 |
- if (errno == EWOULDBLOCK) |
1434 |
+ if (errno == EWOULDBLOCK || errno == EAGAIN) |
1435 |
continue; |
1436 |
cu->cu_error.re_errno = errno; |
1437 |
return (cu->cu_error.re_status = RPC_CANTRECV); |
1438 |
|
1439 |
|
1440 |
|
1441 |
1.1 src/patchsets/glibc/2.11.1/1530_all_glibc-m68k-sys-user.patch |
1442 |
|
1443 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1530_all_glibc-m68k-sys-user.patch?rev=1.1&view=markup |
1444 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/1530_all_glibc-m68k-sys-user.patch?rev=1.1&content-type=text/plain |
1445 |
|
1446 |
Index: 1530_all_glibc-m68k-sys-user.patch |
1447 |
=================================================================== |
1448 |
copied from kernel as it is sanitized now |
1449 |
|
1450 |
--- libc/ports/sysdeps/unix/sysv/linux/m68k/sys/user.h |
1451 |
+++ libc/ports/sysdeps/unix/sysv/linux/m68k/sys/user.h |
1452 |
@@ -0,0 +1,87 @@ |
1453 |
+#ifndef _SYS_USER_H |
1454 |
+#define _SYS_USER_H |
1455 |
+ |
1456 |
+/* Core file format: The core file is written in such a way that gdb |
1457 |
+ can understand it and provide useful information to the user (under |
1458 |
+ linux we use the 'trad-core' bfd). There are quite a number of |
1459 |
+ obstacles to being able to view the contents of the floating point |
1460 |
+ registers, and until these are solved you will not be able to view the |
1461 |
+ contents of them. Actually, you can read in the core file and look at |
1462 |
+ the contents of the user struct to find out what the floating point |
1463 |
+ registers contain. |
1464 |
+ The actual file contents are as follows: |
1465 |
+ UPAGE: 1 page consisting of a user struct that tells gdb what is present |
1466 |
+ in the file. Directly after this is a copy of the task_struct, which |
1467 |
+ is currently not used by gdb, but it may come in useful at some point. |
1468 |
+ All of the registers are stored as part of the upage. The upage should |
1469 |
+ always be only one page. |
1470 |
+ DATA: The data area is stored. We use current->end_text to |
1471 |
+ current->brk to pick up all of the user variables, plus any memory |
1472 |
+ that may have been malloced. No attempt is made to determine if a page |
1473 |
+ is demand-zero or if a page is totally unused, we just cover the entire |
1474 |
+ range. All of the addresses are rounded in such a way that an integral |
1475 |
+ number of pages is written. |
1476 |
+ STACK: We need the stack information in order to get a meaningful |
1477 |
+ backtrace. We need to write the data from (esp) to |
1478 |
+ current->start_stack, so we round each of these off in order to be able |
1479 |
+ to write an integer number of pages. |
1480 |
+ The minimum core file size is 3 pages, or 12288 bytes. |
1481 |
+*/ |
1482 |
+ |
1483 |
+struct user_m68kfp_struct { |
1484 |
+ unsigned long fpregs[8*3]; /* fp0-fp7 registers */ |
1485 |
+ unsigned long fpcntl[3]; /* fp control regs */ |
1486 |
+}; |
1487 |
+ |
1488 |
+/* This is the old layout of "struct pt_regs" as of Linux 1.x, and |
1489 |
+ is still the layout used by user (the new pt_regs doesn't have |
1490 |
+ all registers). */ |
1491 |
+struct user_regs_struct { |
1492 |
+ long d1,d2,d3,d4,d5,d6,d7; |
1493 |
+ long a0,a1,a2,a3,a4,a5,a6; |
1494 |
+ long d0; |
1495 |
+ long usp; |
1496 |
+ long orig_d0; |
1497 |
+ short stkadj; |
1498 |
+ short sr; |
1499 |
+ long pc; |
1500 |
+ short fmtvec; |
1501 |
+ short __fill; |
1502 |
+}; |
1503 |
+ |
1504 |
+ |
1505 |
+/* When the kernel dumps core, it starts by dumping the user struct - |
1506 |
+ this will be used by gdb to figure out where the data and stack segments |
1507 |
+ are within the file, and what virtual addresses to use. */ |
1508 |
+struct user{ |
1509 |
+/* We start with the registers, to mimic the way that "memory" is returned |
1510 |
+ from the ptrace(3,...) function. */ |
1511 |
+ struct user_regs_struct regs; /* Where the registers are actually stored */ |
1512 |
+/* ptrace does not yet supply these. Someday.... */ |
1513 |
+ int u_fpvalid; /* True if math co-processor being used. */ |
1514 |
+ /* for this mess. Not yet used. */ |
1515 |
+ struct user_m68kfp_struct m68kfp; /* Math Co-processor registers. */ |
1516 |
+/* The rest of this junk is to help gdb figure out what goes where */ |
1517 |
+ unsigned long int u_tsize; /* Text segment size (pages). */ |
1518 |
+ unsigned long int u_dsize; /* Data segment size (pages). */ |
1519 |
+ unsigned long int u_ssize; /* Stack segment size (pages). */ |
1520 |
+ unsigned long start_code; /* Starting virtual address of text. */ |
1521 |
+ unsigned long start_stack; /* Starting virtual address of stack area. |
1522 |
+ This is actually the bottom of the stack, |
1523 |
+ the top of the stack is always found in the |
1524 |
+ esp register. */ |
1525 |
+ long int signal; /* Signal that caused the core dump. */ |
1526 |
+ int reserved; /* No longer used */ |
1527 |
+ struct user_regs_struct *u_ar0; |
1528 |
+ /* Used by gdb to help find the values for */ |
1529 |
+ /* the registers. */ |
1530 |
+ struct user_m68kfp_struct* u_fpstate; /* Math Co-processor pointer. */ |
1531 |
+ unsigned long magic; /* To uniquely identify a core file */ |
1532 |
+ char u_comm[32]; /* User command that was responsible */ |
1533 |
+}; |
1534 |
+#define NBPG 4096 |
1535 |
+#define UPAGES 1 |
1536 |
+#define HOST_TEXT_START_ADDR (u.start_code) |
1537 |
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG) |
1538 |
+ |
1539 |
+#endif |
1540 |
|
1541 |
|
1542 |
|
1543 |
1.1 src/patchsets/glibc/2.11.1/3000_all_2.3.6-dl_execstack-PaX-support.patch |
1544 |
|
1545 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/3000_all_2.3.6-dl_execstack-PaX-support.patch?rev=1.1&view=markup |
1546 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/3000_all_2.3.6-dl_execstack-PaX-support.patch?rev=1.1&content-type=text/plain |
1547 |
|
1548 |
Index: 3000_all_2.3.6-dl_execstack-PaX-support.patch |
1549 |
=================================================================== |
1550 |
With latest versions of glibc, a lot of apps failed on a PaX enabled |
1551 |
system with: |
1552 |
cannot enable executable stack as shared object requires: Permission denied |
1553 |
|
1554 |
This is due to PaX 'exec-protecting' the stack, and ld.so then trying |
1555 |
to make the stack executable due to some libraries not containing the |
1556 |
PT_GNU_STACK section. Bug #32960. <azarah@g.o> (12 Nov 2003). |
1557 |
|
1558 |
Patch also NPTL. Bug #116086. <kevquinn@g.o> (20 Dec 2005). |
1559 |
|
1560 |
--- sysdeps/unix/sysv/linux/dl-execstack.c |
1561 |
+++ sysdeps/unix/sysv/linux/dl-execstack.c |
1562 |
@@ -63,7 +63,10 @@ |
1563 |
else |
1564 |
# endif |
1565 |
{ |
1566 |
- result = errno; |
1567 |
+ if (errno == EACCES) /* PAX is enabled */ |
1568 |
+ result = 0; |
1569 |
+ else |
1570 |
+ result = errno; |
1571 |
goto out; |
1572 |
} |
1573 |
} |
1574 |
@@ -89,7 +92,12 @@ |
1575 |
page -= size; |
1576 |
else |
1577 |
{ |
1578 |
- if (errno != ENOMEM) /* Unexpected failure mode. */ |
1579 |
+ if (errno == EACCES) /* PAX is enabled */ |
1580 |
+ { |
1581 |
+ result = 0; |
1582 |
+ goto out; |
1583 |
+ } |
1584 |
+ else if (errno != ENOMEM) /* Unexpected failure mode. */ |
1585 |
{ |
1586 |
result = errno; |
1587 |
goto out; |
1588 |
@@ -115,7 +123,12 @@ |
1589 |
page += size; |
1590 |
else |
1591 |
{ |
1592 |
- if (errno != ENOMEM) /* Unexpected failure mode. */ |
1593 |
+ if (errno == EACCES) /* PAX is enabled */ |
1594 |
+ { |
1595 |
+ result = 0; |
1596 |
+ goto out; |
1597 |
+ } |
1598 |
+ else if (errno != ENOMEM) /* Unexpected failure mode. */ |
1599 |
{ |
1600 |
result = errno; |
1601 |
goto out; |
1602 |
--- nptl/allocatestack.c |
1603 |
+++ nptl/allocatestack.c |
1604 |
@@ -279,7 +279,8 @@ |
1605 |
size_t len = pd->stackblock_size - pd->guardsize; |
1606 |
#endif |
1607 |
if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0) |
1608 |
- return errno; |
1609 |
+ if (errno != EACCES) /* PAX is enabled */ |
1610 |
+ return errno; |
1611 |
|
1612 |
return 0; |
1613 |
} |
1614 |
|
1615 |
|
1616 |
|
1617 |
1.1 src/patchsets/glibc/2.11.1/3010_all_2.3.3_pre20040117-pt_pax.patch |
1618 |
|
1619 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/3010_all_2.3.3_pre20040117-pt_pax.patch?rev=1.1&view=markup |
1620 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/3010_all_2.3.3_pre20040117-pt_pax.patch?rev=1.1&content-type=text/plain |
1621 |
|
1622 |
Index: 3010_all_2.3.3_pre20040117-pt_pax.patch |
1623 |
=================================================================== |
1624 |
--- elf/elf.h |
1625 |
+++ elf/elf.h |
1626 |
@@ -568,6 +568,7 @@ |
1627 |
#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */ |
1628 |
#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */ |
1629 |
#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */ |
1630 |
+#define PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */ |
1631 |
#define PT_LOSUNW 0x6ffffffa |
1632 |
#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */ |
1633 |
#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */ |
1634 |
@@ -581,6 +582,18 @@ |
1635 |
#define PF_X (1 << 0) /* Segment is executable */ |
1636 |
#define PF_W (1 << 1) /* Segment is writable */ |
1637 |
#define PF_R (1 << 2) /* Segment is readable */ |
1638 |
+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */ |
1639 |
+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */ |
1640 |
+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */ |
1641 |
+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */ |
1642 |
+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */ |
1643 |
+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */ |
1644 |
+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */ |
1645 |
+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */ |
1646 |
+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */ |
1647 |
+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */ |
1648 |
+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */ |
1649 |
+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */ |
1650 |
#define PF_MASKOS 0x0ff00000 /* OS-specific */ |
1651 |
#define PF_MASKPROC 0xf0000000 /* Processor-specific */ |
1652 |
|
1653 |
|
1654 |
|
1655 |
|
1656 |
1.1 src/patchsets/glibc/2.11.1/3020_all_glibc-tests-sandbox-libdl-paths.patch |
1657 |
|
1658 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/3020_all_glibc-tests-sandbox-libdl-paths.patch?rev=1.1&view=markup |
1659 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/3020_all_glibc-tests-sandbox-libdl-paths.patch?rev=1.1&content-type=text/plain |
1660 |
|
1661 |
Index: 3020_all_glibc-tests-sandbox-libdl-paths.patch |
1662 |
=================================================================== |
1663 |
when glibc runs its tests, it does so by invoking the local library loader. |
1664 |
in Gentoo, we build/run inside of our "sandbox" which itself is linked against |
1665 |
libdl (so that it can load libraries and pull out symbols). the trouble |
1666 |
is that when you upgrade from an older glibc to the new one, often times |
1667 |
internal symbols change name or abi. this is normally OK as you cannot use |
1668 |
libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so |
1669 |
we always say "keep all of the glibc libraries from the same build". but |
1670 |
when glibc runs its tests, it uses dynamic paths to point to its new local |
1671 |
copies of libraries. if the test doesnt use libdl, then glibc doesnt add |
1672 |
its path, and when sandbox triggers the loading of libdl, glibc does so |
1673 |
from the host system system. this gets us into the case of all libraries |
1674 |
are from the locally compiled version of glibc except for libdl.so. |
1675 |
|
1676 |
Fix by Wormo |
1677 |
|
1678 |
http://bugs.gentoo.org/56898 |
1679 |
|
1680 |
--- libc/grp/tst_fgetgrent.sh |
1681 |
+++ libc/grp/tst_fgetgrent.sh |
1682 |
@@ -24,7 +24,8 @@ |
1683 |
rtld_installed_name=$1; shift |
1684 |
|
1685 |
testout=${common_objpfx}/grp/tst_fgetgrent.out |
1686 |
-library_path=${common_objpfx} |
1687 |
+# make sure libdl is also in path in case sandbox is in use |
1688 |
+library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1689 |
|
1690 |
result=0 |
1691 |
|
1692 |
--- libc/iconvdata/run-iconv-test.sh |
1693 |
+++ libc/iconvdata/run-iconv-test.sh |
1694 |
@@ -34,7 +34,7 @@ |
1695 |
export GCONV_PATH |
1696 |
|
1697 |
# We have to have some directories in the library path. |
1698 |
-LIBPATH=$codir:$codir/iconvdata |
1699 |
+LIBPATH=$codir:$codir/iconvdata:$codir/dlfcn |
1700 |
|
1701 |
# How the start the iconv(1) program. |
1702 |
ICONV='$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \ |
1703 |
--- libc/iconvdata/tst-table.sh |
1704 |
+++ libc/iconvdata/tst-table.sh |
1705 |
@@ -59,8 +59,11 @@ |
1706 |
irreversible=${charset}.irreversible |
1707 |
fi |
1708 |
|
1709 |
+# make sure libdl is also in path in case sandbox is in use |
1710 |
+library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1711 |
+ |
1712 |
# iconv in one direction. |
1713 |
-${common_objpfx}elf/ld.so --library-path $common_objpfx \ |
1714 |
+${common_objpfx}elf/ld.so --library-path $library_path \ |
1715 |
${objpfx}tst-table-from ${charset} \ |
1716 |
> ${objpfx}tst-${charset}.table |
1717 |
|
1718 |
--- libc/intl/tst-codeset.sh |
1719 |
+++ libc/intl/tst-codeset.sh |
1720 |
@@ -37,6 +37,9 @@ |
1721 |
LOCPATH=${common_objpfx}localedata |
1722 |
export LOCPATH |
1723 |
|
1724 |
+# make sure libdl is also in path in case sandbox is in use |
1725 |
+library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1726 |
+ |
1727 |
${common_objpfx}elf/ld.so --library-path $common_objpfx \ |
1728 |
${objpfx}tst-codeset > ${objpfx}tst-codeset.out |
1729 |
|
1730 |
--- libc/intl/tst-gettext.sh |
1731 |
+++ libc/intl/tst-gettext.sh |
1732 |
@@ -51,9 +51,12 @@ |
1733 |
LOCPATH=${common_objpfx}localedata |
1734 |
export LOCPATH |
1735 |
|
1736 |
+# make sure libdl is also in path in case sandbox is in use |
1737 |
+library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1738 |
+ |
1739 |
# Now run the test. |
1740 |
MALLOC_TRACE=$malloc_trace LOCPATH=${objpfx}localedir:$LOCPATH \ |
1741 |
-${common_objpfx}elf/ld.so --library-path $common_objpfx \ |
1742 |
+${common_objpfx}elf/ld.so --library-path $library_path \ |
1743 |
${objpfx}tst-gettext > ${objpfx}tst-gettext.out ${objpfx}domaindir |
1744 |
|
1745 |
exit $? |
1746 |
--- libc/intl/tst-gettext2.sh |
1747 |
+++ libc/intl/tst-gettext2.sh |
1748 |
@@ -65,8 +65,11 @@ |
1749 |
LOCPATH=${objpfx}domaindir |
1750 |
export LOCPATH |
1751 |
|
1752 |
+# make sure libdl is also in path in case sandbox is in use |
1753 |
+library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1754 |
+ |
1755 |
# Now run the test. |
1756 |
-${common_objpfx}elf/ld.so --library-path $common_objpfx \ |
1757 |
+${common_objpfx}elf/ld.so --library-path $library_path \ |
1758 |
${objpfx}tst-gettext2 > ${objpfx}tst-gettext2.out ${objpfx}domaindir && |
1759 |
cmp ${objpfx}tst-gettext2.out - <<EOF |
1760 |
String1 - Lang1: 1st string |
1761 |
--- libc/intl/tst-translit.sh |
1762 |
+++ libc/intl/tst-translit.sh |
1763 |
@@ -36,7 +36,10 @@ |
1764 |
LOCPATH=${common_objpfx}localedata |
1765 |
export LOCPATH |
1766 |
|
1767 |
-${common_objpfx}elf/ld.so --library-path $common_objpfx \ |
1768 |
+# make sure libdl is also in path in case sandbox is in use |
1769 |
+library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1770 |
+ |
1771 |
+${common_objpfx}elf/ld.so --library-path $library_path \ |
1772 |
${objpfx}tst-translit > ${objpfx}tst-translit.out ${objpfx}domaindir |
1773 |
|
1774 |
exit $? |
1775 |
--- libc/malloc/tst-mtrace.sh |
1776 |
+++ libc/malloc/tst-mtrace.sh |
1777 |
@@ -24,9 +24,12 @@ |
1778 |
status=0 |
1779 |
trap "rm -f ${common_objpfx}malloc/tst-mtrace.leak; exit 1" 1 2 15 |
1780 |
|
1781 |
+# make sure libdl is also in path in case sandbox is in use |
1782 |
+library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1783 |
+ |
1784 |
MALLOC_TRACE=${common_objpfx}malloc/tst-mtrace.leak \ |
1785 |
LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \ |
1786 |
-${common_objpfx}elf/ld.so --library-path $common_objpfx \ |
1787 |
+${common_objpfx}elf/ld.so --library-path $library_path \ |
1788 |
${common_objpfx}malloc/tst-mtrace || status=1 |
1789 |
|
1790 |
if test $status -eq 0 && test -f ${common_objpfx}malloc/mtrace; then |
1791 |
--- libc/nptl/tst-tls6.sh |
1792 |
+++ libc/nptl/tst-tls6.sh |
1793 |
@@ -5,8 +5,8 @@ |
1794 |
rtld_installed_name=$1; shift |
1795 |
logfile=$common_objpfx/nptl/tst-tls6.out |
1796 |
|
1797 |
-# We have to find libc and nptl |
1798 |
-library_path=${common_objpfx}:${common_objpfx}nptl |
1799 |
+# We have to find libc and nptl (also libdl in case sandbox is in use) |
1800 |
+library_path=${common_objpfx}:${common_objpfx}nptl:${common_objpfx}/dlfcn |
1801 |
tst_tls5="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \ |
1802 |
${common_objpfx}/nptl/tst-tls5" |
1803 |
|
1804 |
--- libc/posix/globtest.sh |
1805 |
+++ libc/posix/globtest.sh |
1806 |
@@ -18,7 +18,7 @@ |
1807 |
esac |
1808 |
|
1809 |
# We have to find the libc and the NSS modules. |
1810 |
-library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod |
1811 |
+library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod:${common_objpfx}/dlfcn |
1812 |
|
1813 |
# Since we use `sort' we must make sure to use the same locale everywhere. |
1814 |
LC_ALL=C |
1815 |
--- libc/posix/tst-getconf.sh |
1816 |
+++ libc/posix/tst-getconf.sh |
1817 |
@@ -10,7 +10,10 @@ |
1818 |
else |
1819 |
rtld_installed_name=$1; shift |
1820 |
runit() { |
1821 |
- ${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} "$@" |
1822 |
+ |
1823 |
+ # make sure libdl is also in path in case sandbox is in use |
1824 |
+ library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1825 |
+ ${elf_objpfx}${rtld_installed_name} --library-path ${library_path} "$@" |
1826 |
} |
1827 |
fi |
1828 |
|
1829 |
--- libc/posix/wordexp-tst.sh |
1830 |
+++ libc/posix/wordexp-tst.sh |
1831 |
@@ -19,8 +19,11 @@ |
1832 |
" |
1833 |
export IFS |
1834 |
|
1835 |
+# make sure libdl is also in path in case sandbox is in use |
1836 |
+library_path=${common_objpfx}:${common_objpfx}/dlfcn |
1837 |
+ |
1838 |
failed=0 |
1839 |
-${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} \ |
1840 |
+${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \ |
1841 |
${common_objpfx}posix/wordexp-test '$*' > ${testout}1 |
1842 |
cat <<"EOF" | cmp - ${testout}1 >> $logfile || failed=1 |
1843 |
wordexp returned 0 |
1844 |
|
1845 |
|
1846 |
|
1847 |
1.1 src/patchsets/glibc/2.11.1/5021_all_2.9-fnmatch.patch |
1848 |
|
1849 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/5021_all_2.9-fnmatch.patch?rev=1.1&view=markup |
1850 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/5021_all_2.9-fnmatch.patch?rev=1.1&content-type=text/plain |
1851 |
|
1852 |
Index: 5021_all_2.9-fnmatch.patch |
1853 |
=================================================================== |
1854 |
http://sourceware.org/ml/libc-hacker/2002-11/msg00071.html |
1855 |
|
1856 |
When fnmatch detects an invalid multibyte character it should fall back to |
1857 |
single byte matching, so that "*" has a chance to match such a string. |
1858 |
|
1859 |
Andreas. |
1860 |
|
1861 |
2005-04-12 Andreas Schwab <schwab@××××.de> |
1862 |
|
1863 |
* posix/fnmatch.c (fnmatch): If conversion to wide character |
1864 |
fails fall back to single byte matching. |
1865 |
|
1866 |
Index: posix/fnmatch.c |
1867 |
=================================================================== |
1868 |
--- posix/fnmatch.c.orig 2007-05-18 10:40:34.000000000 +0200 |
1869 |
+++ posix/fnmatch.c 2007-05-18 13:21:47.199478000 +0200 |
1870 |
@@ -327,6 +327,7 @@ |
1871 |
# if HANDLE_MULTIBYTE |
1872 |
if (__builtin_expect (MB_CUR_MAX, 1) != 1) |
1873 |
{ |
1874 |
+ const char *orig_pattern = pattern; |
1875 |
mbstate_t ps; |
1876 |
size_t n; |
1877 |
const char *p; |
1878 |
@@ -378,10 +379,8 @@ |
1879 |
wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); |
1880 |
n = mbsrtowcs (wstring, &p, n + 1, &ps); |
1881 |
if (__builtin_expect (n == (size_t) -1, 0)) |
1882 |
- /* Something wrong. |
1883 |
- XXX Do we have to set `errno' to something which mbsrtows hasn't |
1884 |
- already done? */ |
1885 |
- return -1; |
1886 |
+ /* Something wrong. Fall back to single byte matching. */ |
1887 |
+ goto try_singlebyte; |
1888 |
if (p) |
1889 |
memset (&ps, '\0', sizeof (ps)); |
1890 |
} |
1891 |
@@ -389,10 +388,8 @@ |
1892 |
{ |
1893 |
n = mbsrtowcs (NULL, &string, 0, &ps); |
1894 |
if (__builtin_expect (n == (size_t) -1, 0)) |
1895 |
- /* Something wrong. |
1896 |
- XXX Do we have to set `errno' to something which mbsrtows hasn't |
1897 |
- already done? */ |
1898 |
- return -1; |
1899 |
+ /* Something wrong. Fall back to single byte matching. */ |
1900 |
+ goto try_singlebyte; |
1901 |
wstring = (wchar_t *) alloca ((n + 1) * sizeof (wchar_t)); |
1902 |
assert (mbsinit (&ps)); |
1903 |
(void) mbsrtowcs (wstring, &string, n + 1, &ps); |
1904 |
@@ -400,6 +397,9 @@ |
1905 |
|
1906 |
return internal_fnwmatch (wpattern, wstring, wstring + n, |
1907 |
flags & FNM_PERIOD, flags, NULL); |
1908 |
+ |
1909 |
+ try_singlebyte: |
1910 |
+ pattern = orig_pattern; |
1911 |
} |
1912 |
# endif /* mbstate_t and mbsrtowcs or _LIBC. */ |
1913 |
|
1914 |
|
1915 |
|
1916 |
|
1917 |
1.1 src/patchsets/glibc/2.11.1/5063_all_glibc-dont-build-timezone.patch |
1918 |
|
1919 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/5063_all_glibc-dont-build-timezone.patch?rev=1.1&view=markup |
1920 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/5063_all_glibc-dont-build-timezone.patch?rev=1.1&content-type=text/plain |
1921 |
|
1922 |
Index: 5063_all_glibc-dont-build-timezone.patch |
1923 |
=================================================================== |
1924 |
timezone data has been split into the package sys-libs/timezone-data |
1925 |
|
1926 |
--- glibc/Makeconfig |
1927 |
+++ glibc/Makeconfig |
1928 |
@@ -922,1 +922,1 @@ |
1929 |
- crypt nss localedata timezone rt conform debug \ |
1930 |
+ crypt nss localedata rt conform debug \ |
1931 |
|
1932 |
|
1933 |
|
1934 |
1.1 src/patchsets/glibc/2.11.1/6001_all_alpha-glibc-2.4-xstat.patch |
1935 |
|
1936 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6001_all_alpha-glibc-2.4-xstat.patch?rev=1.1&view=markup |
1937 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6001_all_alpha-glibc-2.4-xstat.patch?rev=1.1&content-type=text/plain |
1938 |
|
1939 |
Index: 6001_all_alpha-glibc-2.4-xstat.patch |
1940 |
=================================================================== |
1941 |
http://sources.redhat.com/bugzilla/show_bug.cgi?id=1026 |
1942 |
http://sourceware.org/ml/libc-alpha/2005-02/msg00122.html |
1943 |
|
1944 |
2005-02-26 GOTO Masanori <gotom@×××××××××.jp> |
1945 |
|
1946 |
* sysdeps/unix/sysv/linux/kernel-features.h: Define |
1947 |
__ASSUME_STAT64_SYSCALL. |
1948 |
* sysdeps/unix/sysv/linux/alpha/fxstat.c: Check |
1949 |
__ASSUME_STAT64_SYSCALL. |
1950 |
* sysdeps/unix/sysv/linux/alpha/fxstatat.c: Likewise. |
1951 |
* sysdeps/unix/sysv/linux/alpha/lxstat.c: Likewise. |
1952 |
* sysdeps/unix/sysv/linux/alpha/xstat.c: Likewise. |
1953 |
* sysdeps/unix/sysv/linux/alpha/xstatconv.c: Don't define |
1954 |
__libc_missing_axp_stat64 when it's not needed. |
1955 |
* sysdeps/unix/sysv/linux/alpha/xstatconv.h: Likewise. |
1956 |
|
1957 |
--- sysdeps/unix/sysv/linux/kernel-features.h |
1958 |
+++ sysdeps/unix/sysv/linux/kernel-features.h |
1959 |
@@ -412,6 +412,11 @@ |
1960 |
# define __ASSUME_GETDENTS32_D_TYPE 1 |
1961 |
#endif |
1962 |
|
1963 |
+/* Starting with version 2.6.4, alpha stat64 syscalls are available. */ |
1964 |
+#if __LINUX_KERNEL_VERSION >= 0x020604 && defined __alpha__ |
1965 |
+# define __ASSUME_STAT64_SYSCALL 1 |
1966 |
+#endif |
1967 |
+ |
1968 |
/* Starting with version 2.5.3, the initial location returned by `brk' |
1969 |
after exec is always rounded up to the next page. */ |
1970 |
#if __LINUX_KERNEL_VERSION >= 132355 |
1971 |
--- ports/sysdeps/unix/sysv/linux/alpha/fxstat.c |
1972 |
+++ ports/sysdeps/unix/sysv/linux/alpha/fxstat.c |
1973 |
@@ -35,27 +35,39 @@ int |
1974 |
__fxstat (int vers, int fd, struct stat *buf) |
1975 |
{ |
1976 |
INTERNAL_SYSCALL_DECL (err); |
1977 |
- int result, errno_out; |
1978 |
+ int result; |
1979 |
struct kernel_stat kbuf; |
1980 |
|
1981 |
+#if __ASSUME_STAT64_SYSCALL > 0 |
1982 |
+ if (vers == _STAT_VER_KERNEL64) |
1983 |
+ { |
1984 |
+ result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf); |
1985 |
+ if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
1986 |
+ return result; |
1987 |
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); |
1988 |
+ return -1; |
1989 |
+ } |
1990 |
+#elif defined __NR_fstat64 |
1991 |
if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64) |
1992 |
{ |
1993 |
+ int errno_out; |
1994 |
result = INTERNAL_SYSCALL (fstat64, err, 2, fd, buf); |
1995 |
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
1996 |
return result; |
1997 |
errno_out = INTERNAL_SYSCALL_ERRNO (result, err); |
1998 |
if (errno_out != ENOSYS) |
1999 |
- goto fail; |
2000 |
+ { |
2001 |
+ __set_errno (errno_out); |
2002 |
+ return -1; |
2003 |
+ } |
2004 |
__libc_missing_axp_stat64 = 1; |
2005 |
} |
2006 |
+#endif |
2007 |
|
2008 |
result = INTERNAL_SYSCALL (fstat, err, 2, fd, &kbuf); |
2009 |
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
2010 |
return __xstat_conv (vers, &kbuf, buf); |
2011 |
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err); |
2012 |
- |
2013 |
- fail: |
2014 |
- __set_errno (errno_out); |
2015 |
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); |
2016 |
return -1; |
2017 |
} |
2018 |
hidden_def (__fxstat) |
2019 |
--- ports/sysdeps/unix/sysv/linux/alpha/fxstatat.c |
2020 |
+++ ports/sysdeps/unix/sysv/linux/alpha/fxstatat.c |
2021 |
@@ -65,6 +65,20 @@ __fxstatat (int vers, int fd, const char |
2022 |
int result, errno_out; |
2023 |
struct kernel_stat kst; |
2024 |
|
2025 |
+#if __ASSUME_STAT64_SYSCALL > 0 |
2026 |
+ if (vers == _STAT_VER_KERNEL64) |
2027 |
+ { |
2028 |
+ if (flag & AT_SYMLINK_NOFOLLOW) |
2029 |
+ result = INTERNAL_SYSCALL (lstat64, err, 2, file, st); |
2030 |
+ else |
2031 |
+ result = INTERNAL_SYSCALL (stat64, err, 2, file, st); |
2032 |
+ |
2033 |
+ if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
2034 |
+ return result; |
2035 |
+ errno_out = INTERNAL_SYSCALL_ERRNO (result, err); |
2036 |
+ goto fail; |
2037 |
+ } |
2038 |
+#elif defined __NR_stat64 |
2039 |
if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64) |
2040 |
{ |
2041 |
if (flag & AT_SYMLINK_NOFOLLOW) |
2042 |
@@ -79,6 +93,7 @@ __fxstatat (int vers, int fd, const char |
2043 |
goto fail; |
2044 |
__libc_missing_axp_stat64 = 1; |
2045 |
} |
2046 |
+#endif |
2047 |
|
2048 |
if (flag & AT_SYMLINK_NOFOLLOW) |
2049 |
result = INTERNAL_SYSCALL (lstat, err, 2, file, &kst); |
2050 |
--- ports/sysdeps/unix/sysv/linux/alpha/lxstat.c |
2051 |
+++ ports/sysdeps/unix/sysv/linux/alpha/lxstat.c |
2052 |
@@ -35,27 +35,39 @@ int |
2053 |
__lxstat (int vers, const char *name, struct stat *buf) |
2054 |
{ |
2055 |
INTERNAL_SYSCALL_DECL (err); |
2056 |
- int result, errno_out; |
2057 |
+ int result; |
2058 |
struct kernel_stat kbuf; |
2059 |
|
2060 |
+#if __ASSUME_STAT64_SYSCALL > 0 |
2061 |
+ if (vers == _STAT_VER_KERNEL64) |
2062 |
+ { |
2063 |
+ result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf); |
2064 |
+ if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
2065 |
+ return result; |
2066 |
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); |
2067 |
+ return -1; |
2068 |
+ } |
2069 |
+#elif defined __NR_lstat64 |
2070 |
if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64) |
2071 |
{ |
2072 |
+ int errno_out; |
2073 |
result = INTERNAL_SYSCALL (lstat64, err, 2, name, buf); |
2074 |
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
2075 |
return result; |
2076 |
errno_out = INTERNAL_SYSCALL_ERRNO (result, err); |
2077 |
if (errno_out != ENOSYS) |
2078 |
- goto fail; |
2079 |
+ { |
2080 |
+ __set_errno (errno_out); |
2081 |
+ return -1; |
2082 |
+ } |
2083 |
__libc_missing_axp_stat64 = 1; |
2084 |
} |
2085 |
+#endif |
2086 |
|
2087 |
result = INTERNAL_SYSCALL (lstat, err, 2, name, &kbuf); |
2088 |
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
2089 |
return __xstat_conv (vers, &kbuf, buf); |
2090 |
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err); |
2091 |
- |
2092 |
- fail: |
2093 |
- __set_errno (errno_out); |
2094 |
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); |
2095 |
return -1; |
2096 |
} |
2097 |
hidden_def (__lxstat) |
2098 |
--- ports/sysdeps/unix/sysv/linux/alpha/xstat.c |
2099 |
+++ ports/sysdeps/unix/sysv/linux/alpha/xstat.c |
2100 |
@@ -35,27 +35,39 @@ int |
2101 |
__xstat (int vers, const char *name, struct stat *buf) |
2102 |
{ |
2103 |
INTERNAL_SYSCALL_DECL (err); |
2104 |
- int result, errno_out; |
2105 |
+ int result; |
2106 |
struct kernel_stat kbuf; |
2107 |
|
2108 |
+#if __ASSUME_STAT64_SYSCALL > 0 |
2109 |
+ if (vers == _STAT_VER_KERNEL64) |
2110 |
+ { |
2111 |
+ result = INTERNAL_SYSCALL (stat64, err, 2, name, buf); |
2112 |
+ if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
2113 |
+ return result; |
2114 |
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); |
2115 |
+ return -1; |
2116 |
+ } |
2117 |
+#elif defined __NR_stat64 |
2118 |
if (vers == _STAT_VER_KERNEL64 && !__libc_missing_axp_stat64) |
2119 |
{ |
2120 |
+ int errno_out; |
2121 |
result = INTERNAL_SYSCALL (stat64, err, 2, name, buf); |
2122 |
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
2123 |
return result; |
2124 |
errno_out = INTERNAL_SYSCALL_ERRNO (result, err); |
2125 |
if (errno_out != ENOSYS) |
2126 |
- goto fail; |
2127 |
+ { |
2128 |
+ __set_errno (errno_out); |
2129 |
+ return -1; |
2130 |
+ } |
2131 |
__libc_missing_axp_stat64 = 1; |
2132 |
} |
2133 |
+#endif |
2134 |
|
2135 |
result = INTERNAL_SYSCALL (stat, err, 2, name, &kbuf); |
2136 |
if (__builtin_expect (!INTERNAL_SYSCALL_ERROR_P (result, err), 1)) |
2137 |
return __xstat_conv (vers, &kbuf, buf); |
2138 |
- errno_out = INTERNAL_SYSCALL_ERRNO (result, err); |
2139 |
- |
2140 |
- fail: |
2141 |
- __set_errno (errno_out); |
2142 |
+ __set_errno (INTERNAL_SYSCALL_ERRNO (result, err)); |
2143 |
return -1; |
2144 |
} |
2145 |
hidden_def (__xstat) |
2146 |
--- ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c |
2147 |
+++ ports/sysdeps/unix/sysv/linux/alpha/xstatconv.c |
2148 |
@@ -22,9 +22,14 @@ |
2149 |
#include <sys/stat.h> |
2150 |
#include <kernel_stat.h> |
2151 |
#include <xstatconv.h> |
2152 |
+#include <sys/syscall.h> |
2153 |
|
2154 |
|
2155 |
+#ifdef __NR_stat64 |
2156 |
+# if __ASSUME_STAT64_SYSCALL == 0 |
2157 |
int __libc_missing_axp_stat64; |
2158 |
+# endif |
2159 |
+#endif |
2160 |
|
2161 |
int |
2162 |
__xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf) |
2163 |
--- ports/sysdeps/unix/sysv/linux/alpha/xstatconv.h |
2164 |
+++ ports/sysdeps/unix/sysv/linux/alpha/xstatconv.h |
2165 |
@@ -18,7 +18,12 @@ |
2166 |
02111-1307 USA. */ |
2167 |
|
2168 |
#include <kernel-features.h> |
2169 |
+#include <sys/syscall.h> |
2170 |
|
2171 |
+#ifdef __NR_stat64 |
2172 |
+# if __ASSUME_STAT64_SYSCALL == 0 |
2173 |
extern int __libc_missing_axp_stat64 attribute_hidden; |
2174 |
+# endif |
2175 |
+#endif |
2176 |
extern int __xstat_conv (int vers, struct kernel_stat *kbuf, void *ubuf) |
2177 |
attribute_hidden; |
2178 |
|
2179 |
|
2180 |
|
2181 |
1.1 src/patchsets/glibc/2.11.1/6015_all_alpha-glibc-2.5-no-page-header.patch |
2182 |
|
2183 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6015_all_alpha-glibc-2.5-no-page-header.patch?rev=1.1&view=markup |
2184 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6015_all_alpha-glibc-2.5-no-page-header.patch?rev=1.1&content-type=text/plain |
2185 |
|
2186 |
Index: 6015_all_alpha-glibc-2.5-no-page-header.patch |
2187 |
=================================================================== |
2188 |
2008-06-07 Mike Frysinger <vapier@g.o> |
2189 |
|
2190 |
* sysdeps/unix/sysv/linux/alpha/sys/user.h: Copy page.h definitions |
2191 |
from the kernel header to sys/user.h and remove the #include of |
2192 |
sys/user.h. |
2193 |
|
2194 |
--- ports/sysdeps/unix/sysv/linux/alpha/sys/user.h |
2195 |
+++ ports/sysdeps/unix/sysv/linux/alpha/sys/user.h |
2196 |
@@ -23,7 +23,6 @@ |
2197 |
only. Don't read too much into it. Don't use it for anything other |
2198 |
than gdb/strace unless you know what you are doing. */ |
2199 |
|
2200 |
-#include <asm/page.h> |
2201 |
#include <asm/reg.h> |
2202 |
|
2203 |
struct user |
2204 |
@@ -41,6 +40,9 @@ struct user |
2205 |
char u_comm[32]; /* user command name */ |
2206 |
}; |
2207 |
|
2208 |
+#define PAGE_SHIFT 13 |
2209 |
+#define PAGE_SIZE (1 << PAGE_SHIFT) |
2210 |
+#define PAGE_MASK (~(PAGE_SIZE-1)) |
2211 |
#define NBPG PAGE_SIZE |
2212 |
#define UPAGES 1 |
2213 |
#define HOST_TEXT_START_ADDR (u.start_code) |
2214 |
|
2215 |
|
2216 |
|
2217 |
1.1 src/patchsets/glibc/2.11.1/6017_all_alpha-glibc-2.8-creat.patch |
2218 |
|
2219 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6017_all_alpha-glibc-2.8-creat.patch?rev=1.1&view=markup |
2220 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6017_all_alpha-glibc-2.8-creat.patch?rev=1.1&content-type=text/plain |
2221 |
|
2222 |
Index: 6017_all_alpha-glibc-2.8-creat.patch |
2223 |
=================================================================== |
2224 |
alpha does not have a __NR_creat |
2225 |
|
2226 |
http://bugs.gentoo.org/227275 |
2227 |
http://sourceware.org/bugzilla/show_bug.cgi?id=6650 |
2228 |
|
2229 |
--- libc/sysdeps/unix/sysv/linux/wordsize-64/creat64.c |
2230 |
+++ libc/sysdeps/unix/sysv/linux/wordsize-64/creat64.c |
2231 |
@@ -1 +1,5 @@ |
2232 |
/* Defined as alias for the syscall. */ |
2233 |
+#include <sysdep.h> |
2234 |
+#ifndef __NR_creat |
2235 |
+#include "../../../../../io/creat64.c" |
2236 |
+#endif |
2237 |
|
2238 |
|
2239 |
|
2240 |
1.1 src/patchsets/glibc/2.11.1/6018_all_alpha-glibc-2.8-cache-shape.patch |
2241 |
|
2242 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6018_all_alpha-glibc-2.8-cache-shape.patch?rev=1.1&view=markup |
2243 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6018_all_alpha-glibc-2.8-cache-shape.patch?rev=1.1&content-type=text/plain |
2244 |
|
2245 |
Index: 6018_all_alpha-glibc-2.8-cache-shape.patch |
2246 |
=================================================================== |
2247 |
older verisons of glibc would build dl-sysdep as shared-only and dl-support as |
2248 |
static-only. alpha hooks in a cache variable via dl-auxv.h. newer versions of |
2249 |
glibc build dl-sysdep as both shared and static which means we now have symbol |
2250 |
duplication for static builds with dl-sysdep and dl-support. since dl-sysdep |
2251 |
is both shared/static, there is no point in hooking dl-support anymore, so we |
2252 |
can punt it. |
2253 |
|
2254 |
--- ports/sysdeps/unix/sysv/linux/alpha/dl-support.c |
2255 |
+++ ports/sysdeps/unix/sysv/linux/alpha/dl-support.c |
2256 |
@@ -1,2 +0,0 @@ |
2257 |
-#include "dl-auxv.h" |
2258 |
-#include <elf/dl-support.c> |
2259 |
|
2260 |
|
2261 |
|
2262 |
1.1 src/patchsets/glibc/2.11.1/6019_all_alpha-glibc-ptr-mangling.patch |
2263 |
|
2264 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6019_all_alpha-glibc-ptr-mangling.patch?rev=1.1&view=markup |
2265 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6019_all_alpha-glibc-ptr-mangling.patch?rev=1.1&content-type=text/plain |
2266 |
|
2267 |
Index: 6019_all_alpha-glibc-ptr-mangling.patch |
2268 |
=================================================================== |
2269 |
http://bugs.gentoo.org/201910 |
2270 |
|
2271 |
For every arch, PTR_MANGLE and PTR_DEMANGLE defines are in |
2272 |
sysdeps/unix/sysv/linux/<arch>/sysdep.h. But for alpha this is not true. The |
2273 |
defines are in sysdeps/unix/alpha/sysdep.h and unix/sysv/linux/alpha/sysdep.h |
2274 |
includes the first. |
2275 |
|
2276 |
This is a patch that fixes the issue and let alpha build, at the expense of |
2277 |
disabling MANGLING in the non PIC case, but googling showed that the issue is |
2278 |
known, and that nobody really cares about it. |
2279 |
|
2280 |
Info from: http://sourceware.org/bugzilla/show_bug.cgi?id=5216 |
2281 |
|
2282 |
--- ports/sysdeps/unix/alpha/sysdep.h |
2283 |
+++ ports/sysdeps/unix/alpha/sysdep.h |
2284 |
@@ -397,42 +397,4 @@ __LABEL(name) \ |
2285 |
_sc_ret = _sc_0, _sc_err = _sc_19; \ |
2286 |
} |
2287 |
|
2288 |
-/* Pointer mangling support. Note that tls access is slow enough that |
2289 |
- we don't deoptimize things by placing the pointer check value there. */ |
2290 |
- |
2291 |
-#include <stdint.h> |
2292 |
- |
2293 |
-#if defined NOT_IN_libc && defined IS_IN_rtld |
2294 |
-# ifdef __ASSEMBLER__ |
2295 |
-# define PTR_MANGLE(dst, src, tmp) \ |
2296 |
- ldah tmp, __pointer_chk_guard_local($29) !gprelhigh; \ |
2297 |
- ldq tmp, __pointer_chk_guard_local(tmp) !gprellow; \ |
2298 |
- xor src, tmp, dst |
2299 |
-# define PTR_MANGLE2(dst, src, tmp) \ |
2300 |
- xor src, tmp, dst |
2301 |
-# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp) |
2302 |
-# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp) |
2303 |
-# else |
2304 |
-extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden; |
2305 |
-# define PTR_MANGLE(var) \ |
2306 |
- (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local) |
2307 |
-# define PTR_DEMANGLE(var) PTR_MANGLE(var) |
2308 |
-# endif |
2309 |
-#elif defined PIC |
2310 |
-# ifdef __ASSEMBLER__ |
2311 |
-# define PTR_MANGLE(dst, src, tmp) \ |
2312 |
- ldq tmp, __pointer_chk_guard; \ |
2313 |
- xor src, tmp, dst |
2314 |
-# define PTR_MANGLE2(dst, src, tmp) \ |
2315 |
- xor src, tmp, dst |
2316 |
-# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp) |
2317 |
-# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp) |
2318 |
-# else |
2319 |
-extern uintptr_t __pointer_chk_guard attribute_relro; |
2320 |
-# define PTR_MANGLE(var) \ |
2321 |
- (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard) |
2322 |
-# define PTR_DEMANGLE(var) PTR_MANGLE(var) |
2323 |
-# endif |
2324 |
-#endif |
2325 |
- |
2326 |
#endif /* ASSEMBLER */ |
2327 |
|
2328 |
--- ports/sysdeps/unix/sysv/linux/alpha/sysdep.h |
2329 |
+++ ports/sysdeps/unix/sysv/linux/alpha/sysdep.h |
2330 |
@@ -98,4 +98,46 @@ |
2331 |
INTERNAL_SYSCALL1(name, err_out, nr, args); \ |
2332 |
}) |
2333 |
|
2334 |
+/* Pointer mangling support. Note that tls access is slow enough that |
2335 |
+ we don't deoptimize things by placing the pointer check value there. */ |
2336 |
+ |
2337 |
+#if defined NOT_IN_libc && defined IS_IN_rtld |
2338 |
+# ifdef __ASSEMBLER__ |
2339 |
+# define PTR_MANGLE(dst, src, tmp) \ |
2340 |
+ ldah tmp, __pointer_chk_guard_local($29) !gprelhigh; \ |
2341 |
+ ldq tmp, __pointer_chk_guard_local(tmp) !gprellow; \ |
2342 |
+ xor src, tmp, dst |
2343 |
+# define PTR_MANGLE2(dst, src, tmp) \ |
2344 |
+ xor src, tmp, dst |
2345 |
+# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp) |
2346 |
+# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp) |
2347 |
+# else |
2348 |
+extern uintptr_t __pointer_chk_guard_local attribute_relro attribute_hidden; |
2349 |
+# define PTR_MANGLE(var) \ |
2350 |
+ (var) = (__typeof (var)) ((uintptr_t) (var) ^ __pointer_chk_guard_local) |
2351 |
+# define PTR_DEMANGLE(var) PTR_MANGLE(var) |
2352 |
+# endif |
2353 |
+#elif defined PIC |
2354 |
+# ifdef __ASSEMBLER__ |
2355 |
+# define PTR_MANGLE(dst, src, tmp) \ |
2356 |
+ ldq tmp, __pointer_chk_guard; \ |
2357 |
+ xor src, tmp, dst |
2358 |
+# define PTR_MANGLE2(dst, src, tmp) \ |
2359 |
+ xor src, tmp, dst |
2360 |
+# define PTR_DEMANGLE(dst, tmp) PTR_MANGLE(dst, dst, tmp) |
2361 |
+# define PTR_DEMANGLE2(dst, tmp) PTR_MANGLE2(dst, dst, tmp) |
2362 |
+# else |
2363 |
+extern uintptr_t __pointer_chk_guard attribute_relro; |
2364 |
+# define PTR_MANGLE(var) \ |
2365 |
+ (var) = (void *) ((uintptr_t) (var) ^ __pointer_chk_guard) |
2366 |
+# define PTR_DEMANGLE(var) PTR_MANGLE(var) |
2367 |
+# endif |
2368 |
+#else |
2369 |
+/* Pointer mangling is not yet supported for static libc on alpha. */ |
2370 |
+# ifndef __ASSEMBLER__ |
2371 |
+# define PTR_MANGLE(var) (void) (var) |
2372 |
+# define PTR_DEMANGLE(var) (void) (var) |
2373 |
+# endif |
2374 |
+#endif |
2375 |
+ |
2376 |
#endif /* _LINUX_ALPHA_SYSDEP_H */ |
2377 |
|
2378 |
|
2379 |
|
2380 |
1.1 src/patchsets/glibc/2.11.1/6020_all_alpha-fix-gcc-4.1-warnings.patch |
2381 |
|
2382 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6020_all_alpha-fix-gcc-4.1-warnings.patch?rev=1.1&view=markup |
2383 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6020_all_alpha-fix-gcc-4.1-warnings.patch?rev=1.1&content-type=text/plain |
2384 |
|
2385 |
Index: 6020_all_alpha-fix-gcc-4.1-warnings.patch |
2386 |
=================================================================== |
2387 |
2006-05-30 Falk Hueffner <falk@××××××.org> |
2388 |
|
2389 |
* sysdeps/unix/sysv/linux/alpha/ioperm.c: force the architecture |
2390 |
to ev6 in assembly code. |
2391 |
|
2392 |
{standard input}: Assembler messages: |
2393 |
{standard input}:341: Error: macro requires $at register while noat in effect |
2394 |
{standard input}:374: Error: macro requires $at register while noat in effect |
2395 |
{standard input}:438: Error: macro requires $at register while noat in effect |
2396 |
{standard input}:471: Error: macro requires $at register while noat in effect |
2397 |
make[3]: *** [/tmp/buildd/glibc-2.3.6/build-tree/alpha-libc/misc/ioperm.o] Error 1 |
2398 |
|
2399 |
Hrm. gcc puts .arch ev4 into the .s, and this overrides -mev6 for as. |
2400 |
I cannot really think of anything better than |
2401 |
|
2402 |
--- |
2403 |
ports/sysdeps/unix/sysv/linux/alpha/ioperm.c | 8 ++++---- |
2404 |
1 file changed, 4 insertions(+), 4 deletions(-) |
2405 |
|
2406 |
--- ports/sysdeps/unix/sysv/linux/alpha/ioperm.c |
2407 |
+++ ports/sysdeps/unix/sysv/linux/alpha/ioperm.c |
2408 |
@@ -178,13 +178,13 @@ |
2409 |
static inline void |
2410 |
stb_mb(unsigned char val, unsigned long addr) |
2411 |
{ |
2412 |
- __asm__("stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val)); |
2413 |
+ __asm__(".arch ev6; stb %1,%0; mb" : "=m"(*(vucp)addr) : "r"(val)); |
2414 |
} |
2415 |
|
2416 |
static inline void |
2417 |
stw_mb(unsigned short val, unsigned long addr) |
2418 |
{ |
2419 |
- __asm__("stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val)); |
2420 |
+ __asm__(".arch ev6; stw %1,%0; mb" : "=m"(*(vusp)addr) : "r"(val)); |
2421 |
} |
2422 |
|
2423 |
static inline void |
2424 |
@@ -356,7 +356,7 @@ |
2425 |
unsigned long int addr = dense_port_to_cpu_addr (port); |
2426 |
unsigned char r; |
2427 |
|
2428 |
- __asm__ ("ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr)); |
2429 |
+ __asm__ (".arch ev6; ldbu %0,%1" : "=r"(r) : "m"(*(vucp)addr)); |
2430 |
return r; |
2431 |
} |
2432 |
|
2433 |
@@ -366,7 +366,7 @@ |
2434 |
unsigned long int addr = dense_port_to_cpu_addr (port); |
2435 |
unsigned short r; |
2436 |
|
2437 |
- __asm__ ("ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr)); |
2438 |
+ __asm__ (".arch ev6; ldwu %0,%1" : "=r"(r) : "m"(*(vusp)addr)); |
2439 |
return r; |
2440 |
} |
2441 |
|
2442 |
|
2443 |
|
2444 |
|
2445 |
1.1 src/patchsets/glibc/2.11.1/6020_all_alpha-floor_ceil_fix.patch |
2446 |
|
2447 |
file : http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6020_all_alpha-floor_ceil_fix.patch?rev=1.1&view=markup |
2448 |
plain: http://sources.gentoo.org/viewcvs.py/gentoo/src/patchsets/glibc/2.11.1/6020_all_alpha-floor_ceil_fix.patch?rev=1.1&content-type=text/plain |
2449 |
|
2450 |
Index: 6020_all_alpha-floor_ceil_fix.patch |
2451 |
=================================================================== |
2452 |
http://sources.redhat.com/bugzilla/show_bug.cgi?id=5350 |
2453 |
https://bugs.gentoo.org/264335 |
2454 |
|
2455 |
--- ports/sysdeps/alpha/fpu/s_ceil.c |
2456 |
+++ ports/sysdeps/alpha/fpu/s_ceil.c |
2457 |
@@ -27,20 +27,25 @@ |
2458 |
double |
2459 |
__ceil (double x) |
2460 |
{ |
2461 |
- double two52 = copysign (0x1.0p52, x); |
2462 |
- double r, tmp; |
2463 |
- |
2464 |
- __asm ( |
2465 |
+ if (isless (fabs (x), 9007199254740992.0)) /* 1 << DBL_MANT_DIG */ |
2466 |
+ { |
2467 |
+ double tmp1, new_x; |
2468 |
+ |
2469 |
+ new_x = -x; |
2470 |
+ __asm ( |
2471 |
#ifdef _IEEE_FP_INEXACT |
2472 |
- "addt/suim %2, %3, %1\n\tsubt/suim %1, %3, %0" |
2473 |
+ "cvttq/svim %2,%1\n\t" |
2474 |
#else |
2475 |
- "addt/sum %2, %3, %1\n\tsubt/sum %1, %3, %0" |
2476 |
+ "cvttq/svm %2,%1\n\t" |
2477 |
#endif |
2478 |
- : "=&f"(r), "=&f"(tmp) |
2479 |
- : "f"(-x), "f"(-two52)); |
2480 |
+ "cvtqt/m %1,%0\n\t" |
2481 |
+ : "=f"(new_x), "=&f"(tmp1) |
2482 |
+ : "f"(new_x)); |
2483 |
|
2484 |
- /* Fix up the negation we did above, as well as handling -0 properly. */ |
2485 |
- return copysign (r, x); |
2486 |
+ /* Fix up the negation we did above, as well as handling -0 properly. */ |
2487 |
+ x = copysign(new_x, x); |
2488 |
+ } |
2489 |
+ return x; |
2490 |
} |
2491 |
|
2492 |
weak_alias (__ceil, ceil) |
2493 |
--- ports/sysdeps/alpha/fpu/s_ceilf.c |
2494 |
+++ ports/sysdeps/alpha/fpu/s_ceilf.c |
2495 |
@@ -26,20 +26,30 @@ |
2496 |
float |
2497 |
__ceilf (float x) |
2498 |
{ |
2499 |
- float two23 = copysignf (0x1.0p23, x); |