Gentoo Archives: gentoo-commits

From: "Mike Frysinger (vapier)" <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo commit in src/patchsets/glibc/2.14: 0020_all_glibc-tweak-rfc1918-lookup.patch 0030_all_glibc-respect-env-CPPFLAGS.patch 0055_all_glibc-2.12-static-shared-getpagesize.patch 0061_all_glibc-2.13-static-memset.patch 0085_all_glibc-disable-ldconfig.patch 1005_all_glibc-sigaction.patch 1010_all_glibc-queue-header-updates.patch 1020_all_glibc-longjmp-chk-hidden-fortify.patch 1030_all_glibc-manual-no-perl.patch 1040_all_2.3.3-localedef-fix-trampoline.patch 1055_all_glibc-resolv-dynamic.patch 1060_all_glibc-localedef-mmap.patch 1070_all_glibc-fadvise64_64.patch 1075_all_glibc-section-comments.patch 1080_all_glibc-no-inline-gmon.patch 1085_all_glibc-2.9-check_native-headers.patch 1090_all_glibc-2.3.6-fix-pr631.patch 1095_all_glibc-2.14-assume-pipe2-dup3.patch 1100_all_glibc-2.3.3-china.patch 1103_all_glibc-new-valencian-locale.patch 1120_all_glibc-2.11-longjmp-chk-fallback.patch 1130_all_glibc-2.4-undefine-__i686.patch 1160_all_glibc-2.8-nscd-one-fork.p atch 3000_all_2.3 .6-dl_execstack-PaX-support.patch 3010_all_2.3.3_pre20040117-pt_pax.patch 3020_all_glibc-tests-sandbox-libdl-paths.patch 5063_all_glibc-dont-build-timezone.patch 6120_all_ppc-glibc-2.9-atomic.patch 6130_all_ppc-glibc-2.11-cell-vector.patch README.history
Date: Wed, 01 Jun 2011 18:47:04
Message-Id: 20110601184647.075FE2004E@flycatcher.gentoo.org
1 vapier 11/06/01 18:46:47
2
3 Added: 0020_all_glibc-tweak-rfc1918-lookup.patch
4 0030_all_glibc-respect-env-CPPFLAGS.patch
5 0055_all_glibc-2.12-static-shared-getpagesize.patch
6 0061_all_glibc-2.13-static-memset.patch
7 0085_all_glibc-disable-ldconfig.patch
8 1005_all_glibc-sigaction.patch
9 1010_all_glibc-queue-header-updates.patch
10 1020_all_glibc-longjmp-chk-hidden-fortify.patch
11 1030_all_glibc-manual-no-perl.patch
12 1040_all_2.3.3-localedef-fix-trampoline.patch
13 1055_all_glibc-resolv-dynamic.patch
14 1060_all_glibc-localedef-mmap.patch
15 1070_all_glibc-fadvise64_64.patch
16 1075_all_glibc-section-comments.patch
17 1080_all_glibc-no-inline-gmon.patch
18 1085_all_glibc-2.9-check_native-headers.patch
19 1090_all_glibc-2.3.6-fix-pr631.patch
20 1095_all_glibc-2.14-assume-pipe2-dup3.patch
21 1100_all_glibc-2.3.3-china.patch
22 1103_all_glibc-new-valencian-locale.patch
23 1120_all_glibc-2.11-longjmp-chk-fallback.patch
24 1130_all_glibc-2.4-undefine-__i686.patch
25 1160_all_glibc-2.8-nscd-one-fork.patch
26 3000_all_2.3.6-dl_execstack-PaX-support.patch
27 3010_all_2.3.3_pre20040117-pt_pax.patch
28 3020_all_glibc-tests-sandbox-libdl-paths.patch
29 5063_all_glibc-dont-build-timezone.patch
30 6120_all_ppc-glibc-2.9-atomic.patch
31 6130_all_ppc-glibc-2.11-cell-vector.patch
32 README.history
33 Log:
34 initial 2.14 patchset based on last 2.13 patchset
35
36 Revision Changes Path
37 1.1 src/patchsets/glibc/2.14/0020_all_glibc-tweak-rfc1918-lookup.patch
38
39 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0020_all_glibc-tweak-rfc1918-lookup.patch?rev=1.1&view=markup
40 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0020_all_glibc-tweak-rfc1918-lookup.patch?rev=1.1&content-type=text/plain
41
42 Index: 0020_all_glibc-tweak-rfc1918-lookup.patch
43 ===================================================================
44 http://bugs.gentoo.org/315977
45
46 diff --git a/posix/gai.conf b/posix/gai.conf
47 index 195287e..efba67b 100644
48 --- a/posix/gai.conf
49 +++ b/posix/gai.conf
50 @@ -56,9 +56,7 @@
51 #
52 # scopev4 <mask> <value>
53 # Add another rule to the RFC 3484 scope table for IPv4 addresses.
54 -# By default the scope IDs described in section 3.2 in RFC 3484 are
55 -# used. Changing these defaults should hardly ever be necessary.
56 -# The defaults are equivalent to:
57 +# The definitions in RFC 3484 are equivalent to:
58 #
59 #scopev4 ::ffff:169.254.0.0/112 2
60 #scopev4 ::ffff:127.0.0.0/104 2
61 @@ -72,6 +70,6 @@
62 # have the same scope and are therefore not sorted first. To change
63 # this use only these rules:
64 #
65 -#scopev4 ::ffff:169.254.0.0/112 2
66 -#scopev4 ::ffff:127.0.0.0/104 2
67 -#scopev4 ::ffff:0.0.0.0/96 14
68 +scopev4 ::ffff:169.254.0.0/112 2
69 +scopev4 ::ffff:127.0.0.0/104 2
70 +scopev4 ::ffff:0.0.0.0/96 14
71
72
73
74 1.1 src/patchsets/glibc/2.14/0030_all_glibc-respect-env-CPPFLAGS.patch
75
76 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0030_all_glibc-respect-env-CPPFLAGS.patch?rev=1.1&view=markup
77 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0030_all_glibc-respect-env-CPPFLAGS.patch?rev=1.1&content-type=text/plain
78
79 Index: 0030_all_glibc-respect-env-CPPFLAGS.patch
80 ===================================================================
81 Respect environment CPPFLAGS when we run ./configure so we can inject
82 random -D things without having to set CFLAGS/ASFLAGS
83
84 --- libc/Makeconfig
85 +++ libc/Makeconfig
86 @@ -672,6 +672,7 @@ CPPFLAGS = $($(subdir)-CPPFLAGS) $(+incl
87 $(foreach lib,$(libof-$(basename $(@F))) \
88 $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
89 $(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
90 +CPPFLAGS += $(CPPFLAGS-config)
91 override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \
92 $(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
93 $(sysdep-CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(<F)) \
94 --- libc/config.make.in
95 +++ libc/config.make.in
96 @@ -95,6 +95,7 @@ CC = @CC@
97 CXX = @CXX@
98 BUILD_CC = @BUILD_CC@
99 CFLAGS = @CFLAGS@
100 +CPPFLAGS-config = @CPPFLAGS@
101 ASFLAGS-config = @ASFLAGS_config@
102 AR = @AR@
103 RANLIB = @RANLIB@
104
105
106
107 1.1 src/patchsets/glibc/2.14/0055_all_glibc-2.12-static-shared-getpagesize.patch
108
109 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0055_all_glibc-2.12-static-shared-getpagesize.patch?rev=1.1&view=markup
110 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0055_all_glibc-2.12-static-shared-getpagesize.patch?rev=1.1&content-type=text/plain
111
112 Index: 0055_all_glibc-2.12-static-shared-getpagesize.patch
113 ===================================================================
114 http://thread.gmane.org/gmane.comp.lib.glibc.user/579
115 http://sources.redhat.com/bugzilla/show_bug.cgi?id=11929
116 http://bugs.gentoo.org/332927
117
118 a simple statically linked app fails with glibc-2.12:
119 $ cat test.c
120 main(){getpwnam("root");}
121 $ gcc -static test.c
122 $ ./a.out
123 a.out: ../sysdeps/unix/sysv/linux/getpagesize.c:32: __getpagesize:
124 Assertion `_rtld_global_ro._dl_pagesize != 0' failed.
125 Aborted (core dumped)
126
127 the crux of the matter seems to be the fact that static apps with
128 glibc will dynamically load nss shared libraries when necessary. the
129 static code will initialize GLRO(dl_pagesize) just fine from the
130 kernel auxv, but this being the static code paths, GLRO(dl_pagesize)
131 expands into _dl_pagesize. when the nss shared libraries are loaded
132 up, the ldso is also mapped in, but it doesnt process the kernel auxv
133 (_dl_sysdep_start() is not called). so the shared library
134 GLRO(dl_pagesize) expands into _rtld_global_ro._dl_pagesize and that
135 field stays at 0.
136
137 then when the nss shared libs process the request and gets to the
138 standard "passwd" database, it calls the shared lib versions of
139 malloc/stdio which rely on the __getpagesize() function. but this
140 being in the shared library, it reads the shared GLRO(dl_pagesize)
141 which is 0, and the assert() is triggered.
142
143 i think running nscd makes things work because its nss module that
144 talks to the nscd daemon doesnt call any routines that implicitly rely
145 on __getpagesize().
146
147 this all started happening after this commit:
148 From 8f4a5048eea6536ee85c0f2670adbb97d71e427d Mon Sep 17 00:00:00 2001
149 From: Ulrich Drepper <drepper@××××××.com>
150 Date: Sat, 27 Mar 2010 06:19:50 -0700
151 Subject: [PATCH] Optimize __getpagesize a bit.
152
153 if we look at the ia64 port, we see that it has had similar logic for
154 its __getpagesize function forever. so take its DL_STATIC_INIT code
155 and move it up to the common linux tree.
156
157 2010-08-18 Mike Frysinger <vapier@g.o>
158
159 * sysdeps/unix/sysv/linux/ia64/Makefile: Move dl-static addition to
160 sysdep vars for subdir==elf to ...
161 * sysdeps/unix/sysv/linux/Makefile: ... here.
162 * sysdeps/unix/sysv/linux/ia64/dl-static.c: Move file to ...
163 * sysdeps/unix/sysv/linux/dl-static.c: ... here.
164 * sysdeps/unix/sysv/linux/ia64/ldsodefs.h: Delete, and move the
165 DL_STATIC_INIT defines to ...
166 * sysdeps/unix/sysv/linux/ldsodefs.h: ... here.
167 * sysdeps/unix/sysv/linux/ia64/getpagesize.c: Delete.
168
169 diff --git a/sysdeps/unix/sysv/linux/ia64/Makefile b/sysdeps/unix/sysv/linux/ia64/Makefile
170 index d9a35a7..3bb1ce0 100644
171 --- a/sysdeps/unix/sysv/linux/ia64/Makefile
172 +++ b/sysdeps/unix/sysv/linux/ia64/Makefile
173 @@ -12,12 +12,6 @@ sysdep_headers += sys/io.h
174 sysdep_routines += ioperm clone2
175 endif
176
177 -ifeq ($(subdir),elf)
178 -sysdep-dl-routines += dl-static
179 -sysdep_routines += $(sysdep-dl-routines)
180 -sysdep-rtld-routines += $(sysdep-dl-routines)
181 -endif
182 -
183 ifeq ($(subdir),rt)
184 librt-routines += rt-sysdep
185 endif
186 diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
187 index 4302bd3..37c56a3 100644
188 --- a/sysdeps/unix/sysv/linux/Makefile
189 +++ b/sysdeps/unix/sysv/linux/Makefile
190 @@ -147,8 +147,10 @@ sysdep_routines += xstatconv internal_statvfs internal_statvfs64 \
191 endif
192
193 ifeq ($(subdir),elf)
194 -sysdep-rtld-routines += dl-brk dl-sbrk dl-getcwd dl-openat64 dl-opendir \
195 - dl-fxstatat64
196 +sysdep-dl-routines += dl-static
197 +sysdep_routines += dl-static
198 +sysdep-rtld-routines += dl-brk dl-sbrk dl-getcwd dl-openat64 dl-opendir \
199 + dl-fxstatat64 dl-static
200
201 CPPFLAGS-lddlibc4 += -DNOT_IN_libc
202 endif
203 diff --git a/sysdeps/unix/sysv/linux/ia64/dl-static.c b/sysdeps/unix/sysv/linux/ia64/dl-static.c
204 deleted file mode 100644
205 index 4efc077..0000000
206 --- a/sysdeps/unix/sysv/linux/ia64/dl-static.c
207 +++ /dev/null
208 @@ -1,69 +0,0 @@
209 -/* Variable initialization. IA-64 version.
210 - Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
211 - This file is part of the GNU C Library.
212 -
213 - The GNU C Library is free software; you can redistribute it and/or
214 - modify it under the terms of the GNU Lesser General Public
215 - License as published by the Free Software Foundation; either
216 - version 2.1 of the License, or (at your option) any later version.
217 -
218 - The GNU C Library is distributed in the hope that it will be useful,
219 - but WITHOUT ANY WARRANTY; without even the implied warranty of
220 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
221 - Lesser General Public License for more details.
222 -
223 - You should have received a copy of the GNU Lesser General Public
224 - License along with the GNU C Library; if not, write to the Free
225 - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
226 - 02111-1307 USA. */
227 -
228 -#include <ldsodefs.h>
229 -
230 -#ifdef SHARED
231 -
232 -void
233 -_dl_var_init (void *array[])
234 -{
235 - /* It has to match "variables" below. */
236 - enum
237 - {
238 - DL_PAGESIZE = 0,
239 - DL_CLKTCK
240 - };
241 -
242 - GLRO(dl_pagesize) = *((size_t *) array[DL_PAGESIZE]);
243 - GLRO(dl_clktck) = *((int *) array[DL_CLKTCK]);
244 -}
245 -
246 -#else
247 -#include <bits/libc-lock.h>
248 -
249 -__libc_lock_define_initialized_recursive (static, _dl_static_lock)
250 -
251 -static void *variables[] =
252 -{
253 - &GLRO(dl_pagesize),
254 - &GLRO(dl_clktck)
255 -};
256 -
257 -void
258 -_dl_static_init (struct link_map *map)
259 -{
260 - const ElfW(Sym) *ref = NULL;
261 - lookup_t loadbase;
262 - void (*f) (void *[]);
263 -
264 - __libc_lock_lock_recursive (_dl_static_lock);
265 -
266 - loadbase = _dl_lookup_symbol_x ("_dl_var_init", map, &ref,
267 - map->l_local_scope, NULL, 0, 1, NULL);
268 - if (ref != NULL)
269 - {
270 - f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref);
271 - f (variables);
272 - }
273 -
274 - __libc_lock_unlock_recursive (_dl_static_lock);
275 -}
276 -
277 -#endif
278 diff --git a/sysdeps/unix/sysv/linux/dl-static.c b/sysdeps/unix/sysv/linux/dl-static.c
279 new file mode 100644
280 index 0000000..fa70811
281 --- /dev/null
282 +++ b/sysdeps/unix/sysv/linux/dl-static.c
283 @@ -0,0 +1,69 @@
284 +/* Variable initialization.
285 + Copyright (C) 2001, 2002, 2003, 2004, 2010 Free Software Foundation, Inc.
286 + This file is part of the GNU C Library.
287 +
288 + The GNU C Library is free software; you can redistribute it and/or
289 + modify it under the terms of the GNU Lesser General Public
290 + License as published by the Free Software Foundation; either
291 + version 2.1 of the License, or (at your option) any later version.
292 +
293 + The GNU C Library is distributed in the hope that it will be useful,
294 + but WITHOUT ANY WARRANTY; without even the implied warranty of
295 + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
296 + Lesser General Public License for more details.
297 +
298 + You should have received a copy of the GNU Lesser General Public
299 + License along with the GNU C Library; if not, write to the Free
300 + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
301 + 02111-1307 USA. */
302 +
303 +#include <ldsodefs.h>
304 +
305 +#ifdef SHARED
306 +
307 +void
308 +_dl_var_init (void *array[])
309 +{
310 + /* It has to match "variables" below. */
311 + enum
312 + {
313 + DL_PAGESIZE = 0,
314 + DL_CLKTCK
315 + };
316 +
317 + GLRO(dl_pagesize) = *((size_t *) array[DL_PAGESIZE]);
318 + GLRO(dl_clktck) = *((int *) array[DL_CLKTCK]);
319 +}
320 +
321 +#else
322 +#include <bits/libc-lock.h>
323 +
324 +__libc_lock_define_initialized_recursive (static, _dl_static_lock)
325 +
326 +static void *variables[] =
327 +{
328 + &GLRO(dl_pagesize),
329 + &GLRO(dl_clktck)
330 +};
331 +
332 +void
333 +_dl_static_init (struct link_map *map)
334 +{
335 + const ElfW(Sym) *ref = NULL;
336 + lookup_t loadbase;
337 + void (*f) (void *[]);
338 +
339 + __libc_lock_lock_recursive (_dl_static_lock);
340 +
341 + loadbase = _dl_lookup_symbol_x ("_dl_var_init", map, &ref,
342 + map->l_local_scope, NULL, 0, 1, NULL);
343 + if (ref != NULL)
344 + {
345 + f = (void (*) (void *[])) DL_SYMBOL_ADDRESS (loadbase, ref);
346 + f (variables);
347 + }
348 +
349 + __libc_lock_unlock_recursive (_dl_static_lock);
350 +}
351 +
352 +#endif
353 diff --git a/sysdeps/unix/sysv/linux/ia64/ldsodefs.h b/sysdeps/unix/sysv/linux/ia64/ldsodefs.h
354 deleted file mode 100644
355 index 31af624..0000000
356 --- a/sysdeps/unix/sysv/linux/ia64/ldsodefs.h
357 +++ /dev/null
358 @@ -1,33 +0,0 @@
359 -/* Run-time dynamic linker data structures for loaded ELF shared objects. IA64.
360 - Copyright (C) 2001 Free Software Foundation, Inc.
361 - This file is part of the GNU C Library.
362 -
363 - The GNU C Library is free software; you can redistribute it and/or
364 - modify it under the terms of the GNU Lesser General Public
365 - License as published by the Free Software Foundation; either
366 - version 2.1 of the License, or (at your option) any later version.
367 -
368 - The GNU C Library is distributed in the hope that it will be useful,
369 - but WITHOUT ANY WARRANTY; without even the implied warranty of
370 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
371 - Lesser General Public License for more details.
372 -
373 - You should have received a copy of the GNU Lesser General Public
374 - License along with the GNU C Library; if not, write to the Free
375 - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
376 - 02111-1307 USA. */
377 -
378 -#ifndef _LDSODEFS_H
379 -
380 -/* Get the real definitions. */
381 -#include_next <ldsodefs.h>
382 -
383 -/* Now define our stuff. */
384 -
385 -/* We need special support to initialize DSO loaded for statically linked
386 - binaries. */
387 -extern void _dl_static_init (struct link_map *map);
388 -#undef DL_STATIC_INIT
389 -#define DL_STATIC_INIT(map) _dl_static_init (map)
390 -
391 -#endif /* ldsodefs.h */
392 diff --git a/sysdeps/unix/sysv/linux/ldsodefs.h b/sysdeps/unix/sysv/linux/ldsodefs.h
393 index 5d5b1b4..ecb5d4f 100644
394 --- a/sysdeps/unix/sysv/linux/ldsodefs.h
395 +++ b/sysdeps/unix/sysv/linux/ldsodefs.h
396 @@ -36,6 +36,12 @@ extern void _dl_aux_init (ElfW(auxv_t) *av) internal_function;
397 /* Initialization which is normally done by the dynamic linker. */
398 extern void _dl_non_dynamic_init (void) internal_function;
399
400 +/* We need special support to initialize DSO loaded for statically linked
401 + binaries. */
402 +extern void _dl_static_init (struct link_map *map);
403 +#undef DL_STATIC_INIT
404 +#define DL_STATIC_INIT(map) _dl_static_init (map)
405 +
406 /* We can assume that the kernel always provides the AT_UID, AT_EUID,
407 AT_GID, and AT_EGID values in the auxiliary vector from 2.4.0 or so on. */
408 #if __ASSUME_AT_XID
409 diff --git a/sysdeps/unix/sysv/linux/ia64/getpagesize.c b/sysdeps/unix/sysv/linux/ia64/getpagesize.c
410 deleted file mode 100644
411 index 1155dfd..0000000
412 --- a/sysdeps/unix/sysv/linux/ia64/getpagesize.c
413 +++ /dev/null
414 @@ -1,39 +0,0 @@
415 -/* Copyright (C) 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
416 - This file is part of the GNU C Library.
417 -
418 - The GNU C Library is free software; you can redistribute it and/or
419 - modify it under the terms of the GNU Lesser General Public
420 - License as published by the Free Software Foundation; either
421 - version 2.1 of the License, or (at your option) any later version.
422 -
423 - The GNU C Library is distributed in the hope that it will be useful,
424 - but WITHOUT ANY WARRANTY; without even the implied warranty of
425 - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
426 - Lesser General Public License for more details.
427 -
428 - You should have received a copy of the GNU Lesser General Public
429 - License along with the GNU C Library; if not, write to the Free
430 - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
431 - 02111-1307 USA. */
432 -
433 -#include <assert.h>
434 -#include <unistd.h>
435 -#include <sys/param.h>
436 -
437 -#include <ldsodefs.h>
438 -#include <sysdep.h>
439 -#include <sys/syscall.h>
440 -
441 -/* Return the system page size. The return value will depend on how
442 - the kernel is configured. A program must use this call to
443 - determine the page size to ensure proper alignment for calls such
444 - as mmap and friends. --davidm 99/11/30 */
445 -
446 -int
447 -__getpagesize ()
448 -{
449 - assert (GLRO(dl_pagesize) != 0);
450 - return GLRO(dl_pagesize);
451 -}
452 -libc_hidden_def (__getpagesize)
453 -weak_alias (__getpagesize, getpagesize)
454
455
456
457 1.1 src/patchsets/glibc/2.14/0061_all_glibc-2.13-static-memset.patch
458
459 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0061_all_glibc-2.13-static-memset.patch?rev=1.1&view=markup
460 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0061_all_glibc-2.13-static-memset.patch?rev=1.1&content-type=text/plain
461
462 Index: 0061_all_glibc-2.13-static-memset.patch
463 ===================================================================
464 http://bugs.gentoo.org/353816
465 http://sourceware.org/ml/libc-alpha/2011-02/msg00152.html
466
467 From 87fac357a6243982ce21cb71e21bbe0d35234eed Mon Sep 17 00:00:00 2001
468 From: Mike Frysinger <vapier@g.o>
469 Date: Tue, 22 Feb 2011 13:26:19 -0500
470 Subject: [PATCH] memset: fix define usage for shared libs
471
472 The proper define to check "am I in a shared lib" is "SHARED", not "PIC".
473 The two new memset_chk functions incorrectly depend on "PIC".
474
475 Signed-off-by: Mike Frysinger <vapier@g.o>
476
477 2011-02-22 Mike Frysinger <vapier@g.o>
478
479 * sysdeps/i386/i686/memset_chk.S: Change PIC to SHARED.
480 * sysdeps/x86_64/memset_chk.S: Likewise.
481 ---
482 sysdeps/i386/i686/memset_chk.S | 2 +-
483 sysdeps/x86_64/memset_chk.S | 2 +-
484 2 files changed, 2 insertions(+), 2 deletions(-)
485
486 diff --git a/sysdeps/i386/i686/memset_chk.S b/sysdeps/i386/i686/memset_chk.S
487 index cd93d5e..e7511a0 100644
488 --- a/sysdeps/i386/i686/memset_chk.S
489 +++ b/sysdeps/i386/i686/memset_chk.S
490 @@ -20,7 +20,7 @@
491 #include <sysdep.h>
492 #include "asm-syntax.h"
493
494 -#ifndef PIC
495 +#ifndef SHARED
496 /* For libc.so this is defined in memset.S.
497 For libc.a, this is a separate source to avoid
498 memset bringing in __chk_fail and all routines
499 diff --git a/sysdeps/x86_64/memset_chk.S b/sysdeps/x86_64/memset_chk.S
500 index c1c8c23..2c4fffc 100644
501 --- a/sysdeps/x86_64/memset_chk.S
502 +++ b/sysdeps/x86_64/memset_chk.S
503 @@ -20,7 +20,7 @@
504 #include <sysdep.h>
505 #include "asm-syntax.h"
506
507 -#ifndef PIC
508 +#ifndef SHARED
509 /* For libc.so this is defined in memset.S.
510 For libc.a, this is a separate source to avoid
511 memset bringing in __chk_fail and all routines
512 --
513 1.7.4.1
514
515
516
517
518 1.1 src/patchsets/glibc/2.14/0085_all_glibc-disable-ldconfig.patch
519
520 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0085_all_glibc-disable-ldconfig.patch?rev=1.1&view=markup
521 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/0085_all_glibc-disable-ldconfig.patch?rev=1.1&content-type=text/plain
522
523 Index: 0085_all_glibc-disable-ldconfig.patch
524 ===================================================================
525 do not bother running ldconfig on DESTDIR. it wants to write the temp cache
526 file outside of the chroot. doesnt matter anyways as we wont use the cache
527 results (portage will rebuild cache), so running ldconfig is simply a waste
528 of time.
529
530 --- a/Makefile
531 +++ b/Makefile
532 @@ -117,4 +117,5 @@
533
534 install:
535 +dont-bother-with-destdir:
536 -test ! -x $(common-objpfx)elf/ldconfig || LC_ALL=C LANGUAGE=C \
537 $(common-objpfx)elf/ldconfig $(addprefix -r ,$(install_root)) \
538
539
540
541 1.1 src/patchsets/glibc/2.14/1005_all_glibc-sigaction.patch
542
543 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1005_all_glibc-sigaction.patch?rev=1.1&view=markup
544 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1005_all_glibc-sigaction.patch?rev=1.1&content-type=text/plain
545
546 Index: 1005_all_glibc-sigaction.patch
547 ===================================================================
548 http://bugs.gentoo.org/283470
549
550 work around ... not entirely sure what is going on here.
551
552 2011-03-01 squeezy <vina@××××××××××.eu>
553
554 #283470
555 * sysdeps/unix/sysv/linux/x86_64/sigaction.c fix the __restore_rt symbol
556
557 --- libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c
558 +++ libc/sysdeps/unix/sysv/linux/x86_64/sigaction.c
559 @@ -40,7 +40,7 @@
560
561 /* Using the hidden attribute here does not change the code but it
562 helps to avoid warnings. */
563 -extern void restore_rt (void) asm ("__restore_rt") attribute_hidden;
564 +extern void restore_rt (void) asm ("__restore_rt") __attribute__((__visibility__("hidden")));
565
566
567 /* If ACT is not NULL, change the action for SIG to *ACT.
568
569
570
571 1.1 src/patchsets/glibc/2.14/1010_all_glibc-queue-header-updates.patch
572
573 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1010_all_glibc-queue-header-updates.patch?rev=1.1&view=markup
574 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1010_all_glibc-queue-header-updates.patch?rev=1.1&content-type=text/plain
575
576 Index: 1010_all_glibc-queue-header-updates.patch
577 ===================================================================
578 grab some updates from FreeBSD
579
580 http://bugs.gentoo.org/201979
581
582 --- libc/misc/sys/queue.h
583 +++ libc/misc/sys/queue.h
584 @@ -136,6 +136,11 @@ struct { \
585 (var); \
586 (var) = ((var)->field.le_next))
587
588 +#define LIST_FOREACH_SAFE(var, head, field, tvar) \
589 + for ((var) = LIST_FIRST((head)); \
590 + (var) && ((tvar) = LIST_NEXT((var), field), 1); \
591 + (var) = (tvar))
592 +
593 /*
594 * List access methods.
595 */
596 @@ -197,6 +202,16 @@ struct { \
597 #define SLIST_FOREACH(var, head, field) \
598 for((var) = (head)->slh_first; (var); (var) = (var)->field.sle_next)
599
600 +#define SLIST_FOREACH_SAFE(var, head, field, tvar) \
601 + for ((var) = SLIST_FIRST((head)); \
602 + (var) && ((tvar) = SLIST_NEXT((var), field), 1); \
603 + (var) = (tvar))
604 +
605 +#define SLIST_FOREACH_PREVPTR(var, varp, head, field) \
606 + for ((varp) = &SLIST_FIRST((head)); \
607 + ((var) = *(varp)) != NULL; \
608 + (varp) = &SLIST_NEXT((var), field))
609 +
610 /*
611 * Singly-linked List access methods.
612 */
613 @@ -242,6 +257,12 @@ struct { \
614 (head)->stqh_last = &(elm)->field.stqe_next; \
615 } while (/*CONSTCOND*/0)
616
617 +#define STAILQ_LAST(head, type, field) \
618 + (STAILQ_EMPTY((head)) ? \
619 + NULL : \
620 + ((struct type *)(void *) \
621 + ((char *)((head)->stqh_last) - offsetof(struct type, field))))
622 +
623 #define STAILQ_INSERT_AFTER(head, listelm, elm, field) do { \
624 if (((elm)->field.stqe_next = (listelm)->field.stqe_next) == NULL)\
625 (head)->stqh_last = &(elm)->field.stqe_next; \
626 @@ -271,6 +292,11 @@ struct { \
627 (var); \
628 (var) = ((var)->field.stqe_next))
629
630 +#define STAILQ_FOREACH_SAFE(var, head, field, tvar) \
631 + for ((var) = STAILQ_FIRST((head)); \
632 + (var) && ((tvar) = STAILQ_NEXT((var), field), 1); \
633 + (var) = (tvar))
634 +
635
636 /*
637 * Singly-linked Tail queue access methods.
638 @@ -437,10 +463,21 @@ struct { \
639 (var); \
640 (var) = ((var)->field.tqe_next))
641
642 +#define TAILQ_FOREACH_SAFE(var, head, field, tvar) \
643 + for ((var) = TAILQ_FIRST((head)); \
644 + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
645 + (var) = (tvar))
646 +
647 #define TAILQ_FOREACH_REVERSE(var, head, headname, field) \
648 for ((var) = (*(((struct headname *)((head)->tqh_last))->tqh_last)); \
649 (var); \
650 (var) = (*(((struct headname *)((var)->field.tqe_prev))->tqh_last)))
651 +
652 +#define TAILQ_FOREACH_REVERSE_SAFE(var, head, headname, field, tvar) \
653 + for ((var) = TAILQ_LAST((head), headname); \
654 + (var) && ((tvar) = TAILQ_PREV((var), headname, field), 1); \
655 + (var) = (tvar))
656 +
657
658 /*
659 * Tail queue access methods.
660
661
662
663 1.1 src/patchsets/glibc/2.14/1020_all_glibc-longjmp-chk-hidden-fortify.patch
664
665 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1020_all_glibc-longjmp-chk-hidden-fortify.patch?rev=1.1&view=markup
666 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1020_all_glibc-longjmp-chk-hidden-fortify.patch?rev=1.1&content-type=text/plain
667
668 Index: 1020_all_glibc-longjmp-chk-hidden-fortify.patch
669 ===================================================================
670 http://bugs.gentoo.org/293637
671 http://sourceware.org/ml/libc-alpha/2009-12/msg00010.html
672
673 a bunch of ____longjmp_chk files mix PIC and SHARED code under just PIC.
674 use the HIDDEN_JUMPTARGET() function so the right function is called.
675
676 2009-11-27 Mike Frysinger <vapier@g.o>
677
678 * sysdeps/unix/sysv/linux/i386/____longjmp_chk.S (CALL_FAIL):
679 call HIDDEN_JUMPTARGET(__fortify_fail).
680 * sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S (CALL_FAIL):
681 Likewise.
682 * sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S (CALL_FAIL): Delete.
683 (CHECK_RSP): Branch to HIDDEN_JUMPTARGET(__fortify_fail).
684
685 --- a/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
686 +++ b/sysdeps/unix/sysv/linux/i386/____longjmp_chk.S
687 @@ -33,10 +33,10 @@ longjmp_msg:
688 cfi_register(%ebx,%ecx); \
689 LOAD_PIC_REG (bx); \
690 leal longjmp_msg@GOTOFF(%ebx), %eax; \
691 - call __GI___fortify_fail@PLT
692 + call HIDDEN_JUMPTARGET(__fortify_fail)
693 #else
694 # define CALL_FAIL movl $longjmp_msg, %eax; \
695 - call __fortify_fail
696 + call HIDDEN_JUMPTARGET(__fortify_fail)
697 #endif
698
699
700 --- a/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
701 +++ b/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
702 @@ -33,15 +33,15 @@ longjmp_msg:
703 cfi_remember_state; \
704 cfi_def_cfa_offset(16); \
705 leaq longjmp_msg(%rip), %rdi; \
706 - call __GI___fortify_fail; \
707 + call HIDDEN_JUMPTARGET(__fortify_fail); \
708 nop; \
709 cfi_restore_state
710 #else
711 # define CALL_FAIL subq $8, %rsp; \
712 cfi_remember_state; \
713 cfi_def_cfa_offset(16); \
714 movq $longjmp_msg, %rdi; \
715 - call __fortify_fail; \
716 + call HIDDEN_JUMPTARGET(__fortify_fail); \
717 nop; \
718 cfi_restore_state
719 #endif
720 --- a/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S
721 +++ b/sysdeps/unix/sysv/linux/ia64/____longjmp_chk.S
722 @@ -30,19 +30,13 @@ longjmp_msg:
723
724 #define __longjmp ____longjmp_chk
725
726 -#ifdef PIC
727 -# define CALL_FAIL __GI___fortify_fail
728 -#else
729 -# define CALL_FAIL __fortify_fail
730 -#endif
731 -
732 #define CHECK_RSP(reg) \
733 cmp.ltu p0, p8 = reg, r12; \
734 (p8) br.cond.dpnt .Lok;; \
735 addl r28 = @ltoffx(longjmp_msg#), r1;; \
736 ld8.mov r28 = [r28], longjmp_msg#;; \
737 ld8 out0 = [r28]; \
738 - br.call.sptk.many b0 = CALL_FAIL#;; \
739 + br.call.sptk.many b0 = HIDDEN_JUMPTARGET(__fortify_fail)#;; \
740 .Lok:
741
742 #include "__longjmp.S"
743
744
745
746 1.1 src/patchsets/glibc/2.14/1030_all_glibc-manual-no-perl.patch
747
748 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1030_all_glibc-manual-no-perl.patch?rev=1.1&view=markup
749 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1030_all_glibc-manual-no-perl.patch?rev=1.1&content-type=text/plain
750
751 Index: 1030_all_glibc-manual-no-perl.patch
752 ===================================================================
753 If we're using a cvs snapshot which updates the source files, and
754 perl isn't installed yet, then we can't regen the docs. Not a big
755 deal, so just whine a little and continue on our merry way.
756
757 http://bugs.gentoo.org/60132
758
759 --- libc/manual/Makefile
760 +++ libc/manual/Makefile
761 @@ -104,9 +104,14 @@
762 libm-err.texi: stamp-libm-err
763 stamp-libm-err: libm-err-tab.pl $(wildcard $(foreach dir,$(sysdirs),\
764 $(dir)/libm-test-ulps))
765 +ifneq ($(PERL),no)
766 pwd=`pwd`; \
767 $(PERL) $< $$pwd/.. > libm-err-tmp
768 $(move-if-change) libm-err-tmp libm-err.texi
769 +else
770 + echo "Unable to rebuild math docs, no perl installed"
771 + touch libm-err.texi
772 +endif
773 touch $@
774
775 # Generate Texinfo files from the C source for the example programs.
776
777
778
779 1.1 src/patchsets/glibc/2.14/1040_all_2.3.3-localedef-fix-trampoline.patch
780
781 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1040_all_2.3.3-localedef-fix-trampoline.patch?rev=1.1&view=markup
782 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1040_all_2.3.3-localedef-fix-trampoline.patch?rev=1.1&content-type=text/plain
783
784 Index: 1040_all_2.3.3-localedef-fix-trampoline.patch
785 ===================================================================
786 #! /bin/sh -e
787
788 # DP: Description: Fix localedef segfault when run under exec-shield,
789 # PaX or similar. (#231438, #198099)
790 # DP: Dpatch Author: James Troup <james@××××××.org>
791 # DP: Patch Author: (probably) Jakub Jelinek <jakub@××××××.com>
792 # DP: Upstream status: Unknown
793 # DP: Status Details: Unknown
794 # DP: Date: 2004-03-16
795
796 if [ $# -ne 2 ]; then
797 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
798 exit 1
799 fi
800 case "$1" in
801 -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
802 -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
803 *)
804 echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
805 exit 1
806 esac
807 exit 0
808
809 --- glibc-2.3.3-net/locale/programs/3level.h 16 Jun 2003 07:19:09 -0000 1.1.1.5
810 +++ glibc-2.3.3-redhat/locale/programs/3level.h 16 Jun 2003 09:32:40 -0000 1.4
811 @@ -204,6 +204,42 @@ CONCAT(TABLE,_iterate) (struct TABLE *t,
812 }
813 }
814 }
815 +
816 +/* GCC ATM seems to do a poor job with pointers to nested functions passed
817 + to inlined functions. Help it a little bit with this hack. */
818 +#define wchead_table_iterate(tp, fn) \
819 +do \
820 + { \
821 + struct wchead_table *t = (tp); \
822 + uint32_t index1; \
823 + for (index1 = 0; index1 < t->level1_size; index1++) \
824 + { \
825 + uint32_t lookup1 = t->level1[index1]; \
826 + if (lookup1 != ((uint32_t) ~0)) \
827 + { \
828 + uint32_t lookup1_shifted = lookup1 << t->q; \
829 + uint32_t index2; \
830 + for (index2 = 0; index2 < (1 << t->q); index2++) \
831 + { \
832 + uint32_t lookup2 = t->level2[index2 + lookup1_shifted]; \
833 + if (lookup2 != ((uint32_t) ~0)) \
834 + { \
835 + uint32_t lookup2_shifted = lookup2 << t->p; \
836 + uint32_t index3; \
837 + for (index3 = 0; index3 < (1 << t->p); index3++) \
838 + { \
839 + struct element_t *lookup3 \
840 + = t->level3[index3 + lookup2_shifted]; \
841 + if (lookup3 != NULL) \
842 + fn ((((index1 << t->q) + index2) << t->p) + index3, \
843 + lookup3); \
844 + } \
845 + } \
846 + } \
847 + } \
848 + } \
849 + } while (0)
850 +
851 #endif
852
853 #ifndef NO_FINALIZE
854
855
856
857 1.1 src/patchsets/glibc/2.14/1055_all_glibc-resolv-dynamic.patch
858
859 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1055_all_glibc-resolv-dynamic.patch?rev=1.1&view=markup
860 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1055_all_glibc-resolv-dynamic.patch?rev=1.1&content-type=text/plain
861
862 Index: 1055_all_glibc-resolv-dynamic.patch
863 ===================================================================
864 ripped from SuSE
865
866 if /etc/resolv.conf is updated, then make sure applications
867 already running get the updated information.
868
869 http://bugs.gentoo.org/177416
870
871 --- libc/resolv/res_libc.c
872 +++ libc/resolv/res_libc.c
873 @@ -22,6 +22,7 @@
874 #include <arpa/nameser.h>
875 #include <resolv.h>
876 #include <bits/libc-lock.h>
877 +#include <sys/stat.h>
878
879
880 /* The following bit is copied from res_data.c (where it is #ifdef'ed
881 @@ -101,6 +102,20 @@
882 __res_maybe_init (res_state resp, int preinit)
883 {
884 if (resp->options & RES_INIT) {
885 + static time_t last_mtime, last_check;
886 + time_t now;
887 + struct stat statbuf;
888 +
889 + time (&now);
890 + if (now != last_check) {
891 + last_check = now;
892 + if (stat (_PATH_RESCONF, &statbuf) == 0 && last_mtime != statbuf.st_mtime) {
893 + last_mtime = statbuf.st_mtime;
894 + atomicinclock (lock);
895 + atomicinc (__res_initstamp);
896 + atomicincunlock (lock);
897 + }
898 + }
899 if (__res_initstamp != resp->_u._ext.initstamp) {
900 if (resp->nscount > 0) {
901 __res_nclose (resp);
902
903
904
905 1.1 src/patchsets/glibc/2.14/1060_all_glibc-localedef-mmap.patch
906
907 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1060_all_glibc-localedef-mmap.patch?rev=1.1&view=markup
908 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1060_all_glibc-localedef-mmap.patch?rev=1.1&content-type=text/plain
909
910 Index: 1060_all_glibc-localedef-mmap.patch
911 ===================================================================
912 sniped from Debian
913 http://bugs.gentoo.org/289615
914
915 2009-10-27 Aurelien Jarno <aurelien@×××××××.net>
916
917 * locale/programs/locarchive.c: use MMAP_SHARED to reserve memory
918 used later with MMAP_FIXED | MMAP_SHARED to cope with different
919 alignment restrictions.
920
921 --- a/locale/programs/locarchive.c
922 +++ b/locale/programs/locarchive.c
923 @@ -134,7 +134,7 @@
924 size_t reserved = RESERVE_MMAP_SIZE;
925 int xflags = 0;
926 if (total < reserved
927 - && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
928 + && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
929 -1, 0)) != MAP_FAILED))
930 xflags = MAP_FIXED;
931 else
932 @@ -397,7 +397,7 @@
933 size_t reserved = RESERVE_MMAP_SIZE;
934 int xflags = 0;
935 if (total < reserved
936 - && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
937 + && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
938 -1, 0)) != MAP_FAILED))
939 xflags = MAP_FIXED;
940 else
941 @@ -615,7 +615,7 @@
942 int xflags = 0;
943 void *p;
944 if (st.st_size < reserved
945 - && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_PRIVATE | MAP_ANON,
946 + && ((p = mmap64 (NULL, reserved, PROT_NONE, MAP_SHARED | MAP_ANON,
947 -1, 0)) != MAP_FAILED))
948 xflags = MAP_FIXED;
949 else
950
951
952
953 1.1 src/patchsets/glibc/2.14/1070_all_glibc-fadvise64_64.patch
954
955 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1070_all_glibc-fadvise64_64.patch?rev=1.1&view=markup
956 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1070_all_glibc-fadvise64_64.patch?rev=1.1&content-type=text/plain
957
958 Index: 1070_all_glibc-fadvise64_64.patch
959 ===================================================================
960 ripped from Debian
961
962 ---
963 sysdeps/unix/sysv/linux/posix_fadvise.c | 13 +++++++++++++
964 1 file changed, 13 insertions(+)
965
966 --- a/sysdeps/unix/sysv/linux/posix_fadvise.c
967 +++ b/sysdeps/unix/sysv/linux/posix_fadvise.c
968 @@ -35,6 +35,19 @@
969 return INTERNAL_SYSCALL_ERRNO (ret, err);
970 return 0;
971 #else
972 +# ifdef __NR_fadvise64_64
973 + INTERNAL_SYSCALL_DECL (err);
974 + int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
975 + __LONG_LONG_PAIR ((long) (offset >> 31),
976 + (long) offset),
977 + __LONG_LONG_PAIR ((long) (len >> 31),
978 + (long) len),
979 + advise);
980 + if (INTERNAL_SYSCALL_ERROR_P (ret, err))
981 + return INTERNAL_SYSCALL_ERRNO (ret, err);
982 + return 0;
983 +# else
984 return ENOSYS;
985 +# endif
986 #endif
987 }
988
989
990
991 1.1 src/patchsets/glibc/2.14/1075_all_glibc-section-comments.patch
992
993 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1075_all_glibc-section-comments.patch?rev=1.1&view=markup
994 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1075_all_glibc-section-comments.patch?rev=1.1&content-type=text/plain
995
996 Index: 1075_all_glibc-section-comments.patch
997 ===================================================================
998 http://sources.redhat.com/ml/binutils/2004-04/msg00665.html
999
1000 fixes building on some architectures (like m68k/arm/cris/etc...) because
1001 it does the right thing
1002
1003 --- libc/include/libc-symbols.h
1004 +++ libc/include/libc-symbols.h
1005 @@ -232,12 +232,12 @@
1006 # define __make_section_unallocated(section_string)
1007 # endif
1008
1009 -/* Tacking on "\n\t#" to the section name makes gcc put it's bogus
1010 +/* Tacking on "\n#APP\n\t#" to the section name makes gcc put it's bogus
1011 section attributes on what looks like a comment to the assembler. */
1012 # ifdef HAVE_SECTION_QUOTES
1013 -# define __sec_comment "\"\n\t#\""
1014 +# define __sec_comment "\"\n#APP\n\t#\""
1015 # else
1016 -# define __sec_comment "\n\t#"
1017 +# define __sec_comment "\n#APP\n\t#"
1018 # endif
1019 # define link_warning(symbol, msg) \
1020 __make_section_unallocated (".gnu.warning." #symbol) \
1021
1022
1023
1024 1.1 src/patchsets/glibc/2.14/1080_all_glibc-no-inline-gmon.patch
1025
1026 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1080_all_glibc-no-inline-gmon.patch?rev=1.1&view=markup
1027 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1080_all_glibc-no-inline-gmon.patch?rev=1.1&content-type=text/plain
1028
1029 Index: 1080_all_glibc-no-inline-gmon.patch
1030 ===================================================================
1031 http://bugs.gentoo.org/196245
1032 http://sourceware.org/ml/libc-alpha/2006-05/msg00017.html
1033
1034 Attached is a patch to add __attribute__ ((noinline)) to
1035 call_gmon_start.
1036
1037 Without this patch, the sec script that processed initfini.s removes a
1038 part of inlined call_gmon_start, causing undefined label errors.
1039
1040 This patch solves the problem by forcing gcc not to inline
1041 call_gmon_start with __attribute__ ((noinline)).
1042
1043 Tested by building for arm-none-lixux-gnueabi. OK to apply?
1044
1045 Kazu Hirata
1046
1047 2006-05-07 Kazu Hirata &lt;kazu@××××××××××××.com&gt;
1048
1049 * sysdeps/generic/initfini.c (call_gmon_start): Add
1050 __attribute__ ((noinline)).
1051
1052 Index: sysdeps/generic/initfini.c
1053 ===================================================================
1054 --- a/sysdeps/generic/initfini.c 16 Aug 2004 04:50:53 -0000 1.9
1055 +++ b/sysdeps/generic/initfini.c 7 May 2006 15:31:08 -0000
1056 @@ -70,7 +70,7 @@
1057 /* The beginning of _init: */
1058 asm (&quot;\n/*@_init_PROLOG_BEGINS*/&quot;);
1059
1060 -static void
1061 +static void __attribute__ ((noinline))
1062 call_gmon_start(void)
1063 {
1064 extern void __gmon_start__ (void) __attribute__ ((weak)); /*weak_extern (__gmon_start__);*/
1065
1066
1067
1068 1.1 src/patchsets/glibc/2.14/1085_all_glibc-2.9-check_native-headers.patch
1069
1070 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1085_all_glibc-2.9-check_native-headers.patch?rev=1.1&view=markup
1071 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1085_all_glibc-2.9-check_native-headers.patch?rev=1.1&content-type=text/plain
1072
1073 Index: 1085_all_glibc-2.9-check_native-headers.patch
1074 ===================================================================
1075 many ports hit this warning:
1076 ../sysdeps/unix/sysv/linux/check_native.c:46: warning: implicit declaration of function 'memset'
1077 ../sysdeps/unix/sysv/linux/check_native.c:46: warning: implicit declaration of function 'memset'
1078
1079 snipped from suse
1080
1081 --- a/sysdeps/unix/sysv/linux/check_native.c
1082 +++ b/sysdeps/unix/sysv/linux/check_native.c
1083 @@ -23,6 +23,7 @@
1084 #include <stddef.h>
1085 #include <stdint.h>
1086 #include <stdlib.h>
1087 +#include <string.h>
1088 #include <time.h>
1089 #include <unistd.h>
1090 #include <net/if.h>
1091
1092
1093
1094 1.1 src/patchsets/glibc/2.14/1090_all_glibc-2.3.6-fix-pr631.patch
1095
1096 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1090_all_glibc-2.3.6-fix-pr631.patch?rev=1.1&view=markup
1097 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1090_all_glibc-2.3.6-fix-pr631.patch?rev=1.1&content-type=text/plain
1098
1099 Index: 1090_all_glibc-2.3.6-fix-pr631.patch
1100 ===================================================================
1101 From dank@×××××.com
1102 Wed Jun 15 09:12:43 PDT 2005
1103
1104 Fixes
1105
1106 build-glibc/libc.a(nsswitch.o)(.data+0x64): undefined reference to `_nss_files_getaliasent_r'
1107 build-glibc/libc.a(nsswitch.o)(.data+0x6c): undefined reference to `_nss_files_endaliasent'
1108 ... 53 lines deleted ...
1109 build-glibc/libc.a(nsswitch.o)(.data+0x21c): undefined reference to `_nss_files_getspnam_r'
1110 collect2: ld returned 1 exit status
1111 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
1112
1113 when building glibc with --enable-static-nss.
1114
1115 See http://sources.redhat.com/bugzilla/show_bug.cgi?id=631
1116
1117 --- glibc-2.3.5/Makeconfig.old Wed Jun 15 08:13:12 2005
1118 +++ glibc-2.3.5/Makeconfig Wed Jun 15 08:13:14 2005
1119 @@ -487,7 +487,7 @@
1120
1121 # The static libraries.
1122 ifeq (yes,$(build-static))
1123 -link-libc-static = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib) -Wl,--end-group
1124 +link-libc-static = -Wl,--start-group $(common-objpfx)libc.a $(static-gnulib) $(otherlibs) $(common-objpfx)libc.a -Wl,--end-group
1125 else
1126 ifeq (yes,$(build-shared))
1127 # We can try to link the programs with lib*_pic.a...
1128 --- glibc-2.3.5/elf/Makefile.old Wed Jun 15 07:46:49 2005
1129 +++ glibc-2.3.5/elf/Makefile Wed Jun 15 08:14:00 2005
1130 @@ -115,6 +115,13 @@
1131 install-bin-script = ldd
1132 endif
1133
1134 +ifeq (yes,$(build-static-nss))
1135 +nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss)
1136 +resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv)
1137 +otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
1138 + $(resolvobjdir)/libresolv.a
1139 +endif
1140 +
1141 others = sprof sln
1142 install-bin = sprof
1143 others-static = sln
1144
1145 Signed-off-by: Robert P. J. Day <rpjday@××××××××××.com>
1146
1147
1148
1149 1.1 src/patchsets/glibc/2.14/1095_all_glibc-2.14-assume-pipe2-dup3.patch
1150
1151 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1095_all_glibc-2.14-assume-pipe2-dup3.patch?rev=1.1&view=markup
1152 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1095_all_glibc-2.14-assume-pipe2-dup3.patch?rev=1.1&content-type=text/plain
1153
1154 Index: 1095_all_glibc-2.14-assume-pipe2-dup3.patch
1155 ===================================================================
1156 http://bugs.gentoo.org/250342
1157 http://sources.redhat.com/bugzilla/show_bug.cgi?id=9685
1158
1159 we cant assume sock_cloexec and pipe2 are bound together as the former defines
1160 are found in glibc only while the latter are a combo of kernel headers and
1161 glibc. so if we do a runtime detection of SOCK_CLOEXEC, but pipe2() is a stub
1162 inside of glibc, we hit a problem. for example:
1163
1164 #include <grp.h>
1165 #include <stdio.h>
1166 main()
1167 {
1168 getgrnam("portage");
1169 if (!popen("ls", "r"))
1170 perror("popen()");
1171 }
1172
1173 getgrnam() will detect that the kernel supports SOCK_CLOEXEC and then set both
1174 __have_sock_cloexec and __have_pipe2 to true. but if glibc was built against
1175 older kernel headers where __NR_pipe2 does not exist, glibc will have a ENOSYS
1176 stub for it. so popen() will always fail as glibc assumes pipe2() works.
1177
1178 --- a/include/unistd.h
1179 +++ b/include/unistd.h
1180 @@ -167,10 +167,7 @@
1181 extern int __pause_nocancel (void) attribute_hidden;
1182
1183 extern int __have_sock_cloexec;
1184 -/* At lot of other functionality became available at the same time as
1185 - SOCK_CLOEXEC. Avoid defining separate variables for all of them
1186 - unless it is really necessary. */
1187 -#define __have_pipe2 __have_sock_cloexec
1188 -#define __have_dup3 __have_sock_cloexec
1189 +extern int __have_pipe2;
1190 +extern int __have_dup3;
1191
1192 #endif
1193 --- a/socket/have_sock_cloexec.c
1194 +++ b/socket/have_sock_cloexec.c
1195 @@ -16,9 +16,18 @@
1196 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
1197 02111-1307 USA. */
1198
1199 +#include <fcntl.h>
1200 #include <sys/socket.h>
1201 #include <kernel-features.h>
1202
1203 #if defined SOCK_CLOEXEC && !defined __ASSUME_SOCK_CLOEXEC
1204 int __have_sock_cloexec;
1205 #endif
1206 +
1207 +#if defined O_CLOEXEC && !defined __ASSUME_PIPE2
1208 +int __have_pipe2;
1209 +#endif
1210 +
1211 +#if defined O_CLOEXEC && !defined __ASSUME_DUP3
1212 +int __have_dup3;
1213 +#endif
1214
1215
1216
1217 1.1 src/patchsets/glibc/2.14/1100_all_glibc-2.3.3-china.patch
1218
1219 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1100_all_glibc-2.3.3-china.patch?rev=1.1&view=markup
1220 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1100_all_glibc-2.3.3-china.patch?rev=1.1&content-type=text/plain
1221
1222 Index: 1100_all_glibc-2.3.3-china.patch
1223 ===================================================================
1224 --- a/localedata/locales/zh_TW
1225 +++ b/localedata/locales/zh_TW
1226 @@ -1,7 +1,7 @@
1227 comment_char %
1228 escape_char /
1229 %
1230 -% Chinese language locale for Taiwan R.O.C.
1231 +% Chinese language locale for Taiwan
1232 % charmap: BIG5-CP950
1233 %
1234 % Original Author:
1235 @@ -17,7 +17,7 @@
1236 % Reference: http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf
1237
1238 LC_IDENTIFICATION
1239 -title "Chinese locale for Taiwan R.O.C."
1240 +title "Chinese locale for Taiwan"
1241 source ""
1242 address ""
1243 contact ""
1244 @@ -25,7 +25,7 @@
1245 tel ""
1246 fax ""
1247 language "Chinese"
1248 -territory "Taiwan R.O.C."
1249 +territory "Taiwan"
1250 revision "0.2"
1251 date "2000-08-02"
1252 %
1253
1254
1255
1256 1.1 src/patchsets/glibc/2.14/1103_all_glibc-new-valencian-locale.patch
1257
1258 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1103_all_glibc-new-valencian-locale.patch?rev=1.1&view=markup
1259 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1103_all_glibc-new-valencian-locale.patch?rev=1.1&content-type=text/plain
1260
1261 Index: 1103_all_glibc-new-valencian-locale.patch
1262 ===================================================================
1263 http://bugs.gentoo.org/show_bug.cgi?id=131815
1264 http://sourceware.org/bugzilla/show_bug.cgi?id=2522
1265
1266 --- localedata/SUPPORTED
1267 +++ localedata/SUPPORTED
1268 @@ -68,6 +68,8 @@
1269 ca_ES.UTF-8/UTF-8 \
1270 ca_ES/ISO-8859-1 \
1271 ca_ES@euro/ISO-8859-15 \
1272 +ca_ES.UTF-8@valencia/UTF-8 \
1273 +ca_ES@valencia/ISO-8859-15 \
1274 ca_FR.UTF-8/UTF-8 \
1275 ca_FR/ISO-8859-15 \
1276 ca_IT.UTF-8/UTF-8 \
1277 --- localedata/locales/ca_ES@valencia
1278 +++ localedata/locales/ca_ES@valencia
1279 @@ -0,0 +1,96 @@
1280 +comment_char %
1281 +escape_char /
1282 +%
1283 +% Valencian (southern Catalan) locale for Spain with Euro
1284 +%
1285 +% Note that this locale is almost the same as ca_ES@euro. The point of having
1286 +% a separate locale is only for PO translations, which have a lot of social
1287 +% support and are very appreciated by the Valencian-speaking community.
1288 +%
1289 +% Contact: Jordi Mallach
1290 +% Email: jordi@×××.org
1291 +% Tel:
1292 +% Fax:
1293 +% Language: ca
1294 +% Territory: ES
1295 +% Option: euro
1296 +% Revision: 1.0
1297 +% Date: 2006-04-06
1298 +% Application: general
1299 +% Users: general
1300 +% Repertoiremap: mnemonic,ds
1301 +% Charset: ISO-8859-15
1302 +% Distribution and use is free, also
1303 +% for commercial purposes.
1304 +
1305 +LC_IDENTIFICATION
1306 +title "Valencian (southern Catalan) locale for Spain with Euro"
1307 +source ""
1308 +address ""
1309 +contact "Jordi Mallach"
1310 +email "jordi@×××.org"
1311 +tel ""
1312 +fax ""
1313 +language "Catalan"
1314 +territory "Spain"
1315 +revision "1.0"
1316 +date "2006-04-06"
1317 +%
1318 +category "ca_ES@valencia:2006";LC_IDENTIFICATION
1319 +category "ca_ES@valencia:2006";LC_CTYPE
1320 +category "ca_ES@valencia:2006";LC_COLLATE
1321 +category "ca_ES@valencia:2006";LC_MONETARY
1322 +category "ca_ES@valencia:2006";LC_NUMERIC
1323 +category "ca_ES@valencia:2006";LC_TIME
1324 +category "ca_ES@valencia:2006";LC_MESSAGES
1325 +category "ca_ES@valencia:2006";LC_PAPER
1326 +category "ca_ES@valencia:2006";LC_NAME
1327 +category "ca_ES@valencia:2006";LC_ADDRESS
1328 +category "ca_ES@valencia:2006";LC_TELEPHONE
1329 +category "ca_ES@valencia:2006";LC_MEASUREMENT
1330 +
1331 +END LC_IDENTIFICATION
1332 +
1333 +LC_CTYPE
1334 +copy "i18n"
1335 +END LC_CTYPE
1336 +
1337 +LC_COLLATE
1338 +copy "ca_ES"
1339 +END LC_COLLATE
1340 +
1341 +LC_MONETARY
1342 +copy "ca_ES"
1343 +END LC_MONETARY
1344 +
1345 +LC_NUMERIC
1346 +copy "ca_ES"
1347 +END LC_NUMERIC
1348 +
1349 +LC_TIME
1350 +copy "ca_ES"
1351 +END LC_TIME
1352 +
1353 +LC_MESSAGES
1354 +copy "ca_ES"
1355 +END LC_MESSAGES
1356 +
1357 +LC_PAPER
1358 +copy "ca_ES"
1359 +END LC_PAPER
1360 +
1361 +LC_NAME
1362 +copy "ca_ES"
1363 +END LC_NAME
1364 +
1365 +LC_ADDRESS
1366 +copy "ca_ES"
1367 +END LC_ADDRESS
1368 +
1369 +LC_TELEPHONE
1370 +copy "ca_ES"
1371 +END LC_TELEPHONE
1372 +
1373 +LC_MEASUREMENT
1374 +copy "ca_ES"
1375 +END LC_MEASUREMENT
1376
1377
1378
1379 1.1 src/patchsets/glibc/2.14/1120_all_glibc-2.11-longjmp-chk-fallback.patch
1380
1381 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1120_all_glibc-2.11-longjmp-chk-fallback.patch?rev=1.1&view=markup
1382 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1120_all_glibc-2.11-longjmp-chk-fallback.patch?rev=1.1&content-type=text/plain
1383
1384 Index: 1120_all_glibc-2.11-longjmp-chk-fallback.patch
1385 ===================================================================
1386 --- debug/____longjmp_chk.c
1387 +++ debug/____longjmp_chk.c
1388 @@ -0,0 +1,7 @@
1389 +/* Stub to make building happy -- no fortify checks, but
1390 + it at least does the correct thing (longjmps). */
1391 +#include <setjmp.h>
1392 +void ____longjmp_chk (__jmp_buf env, int val)
1393 +{
1394 + return __longjmp (env, val);
1395 +}
1396
1397
1398
1399 1.1 src/patchsets/glibc/2.14/1130_all_glibc-2.4-undefine-__i686.patch
1400
1401 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1130_all_glibc-2.4-undefine-__i686.patch?rev=1.1&view=markup
1402 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1130_all_glibc-2.4-undefine-__i686.patch?rev=1.1&content-type=text/plain
1403
1404 Index: 1130_all_glibc-2.4-undefine-__i686.patch
1405 ===================================================================
1406 If gcc is configured to generate i686 code or better by default (like
1407 when using the --with-arch=pentium3 configure option), then the __i686
1408 macro will always be defined automatically and thus screw up the
1409 compilation of some .S files.
1410 http://bugs.gentoo.org/131108
1411 http://sourceware.org/ml/libc-alpha/2006-04/msg00090.html
1412
1413 2006-04-25 Mike Frysinger <vapier@g.o>
1414
1415 * sysdeps/i386/sysdep.h (__i686): Undefine.
1416
1417 --- sysdeps/i386/sysdep.h
1418 +++ sysdeps/i386/sysdep.h
1419 @@ -17,6 +17,14 @@
1420 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
1421 02111-1307 USA. */
1422
1423 +/*
1424 + * When building for i686 targets or better, gcc automatically defines
1425 + * '__i686' to '1' for us which causes trouble when using section names
1426 + * like '__i686.get_pc_thunk.reg'. Since we check for __i686__ in the
1427 + * code, killing '__i686' shouldn't be a problem.
1428 + */
1429 +#undef __i686
1430 +
1431 #include <sysdeps/generic/sysdep.h>
1432
1433 #ifdef __ASSEMBLER__
1434
1435 Note: this breaks mips so we wrap it in a hackish __i686__ for now ...
1436
1437 2006-04-25 Mike Frysinger <vapier@g.o>
1438
1439 * sysdeps/pthread/pt-initfini.c: Include sysdep.h.
1440
1441 --- nptl/sysdeps/pthread/pt-initfini.c
1442 +++ nptl/sysdeps/pthread/pt-initfini.c
1443 @@ -45,6 +45,9 @@
1444 /* Embed an #include to pull in the alignment and .end directives. */
1445 asm ("\n#include \"defs.h\"");
1446
1447 +/* Embed an #include to pull in asm settings. */
1448 +asm ("\n#ifdef __i686__\n#include <sysdep.h>\n#endif");
1449 +
1450 /* The initial common code ends here. */
1451 asm ("\n/*@HEADER_ENDS*/");
1452
1453
1454
1455
1456 1.1 src/patchsets/glibc/2.14/1160_all_glibc-2.8-nscd-one-fork.patch
1457
1458 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1160_all_glibc-2.8-nscd-one-fork.patch?rev=1.1&view=markup
1459 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/1160_all_glibc-2.8-nscd-one-fork.patch?rev=1.1&content-type=text/plain
1460
1461 Index: 1160_all_glibc-2.8-nscd-one-fork.patch
1462 ===================================================================
1463 only fork one to assist in stop-start-daemon assumptions about daemon behavior
1464
1465 http://bugs.gentoo.org/190785
1466
1467 --- libc/nscd/nscd.c
1468 +++ libc/nscd/nscd.c
1469 @@ -178,6 +178,9 @@
1470 if (pid != 0)
1471 exit (0);
1472
1473 + if (write_pid (_PATH_NSCDPID) < 0)
1474 + dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
1475 +
1476 int nullfd = open (_PATH_DEVNULL, O_RDWR);
1477 if (nullfd != -1)
1478 {
1479 @@ -227,12 +230,6 @@
1480 for (i = min_close_fd; i < getdtablesize (); i++)
1481 close (i);
1482
1483 - pid = fork ();
1484 - if (pid == -1)
1485 - error (EXIT_FAILURE, errno, _("cannot fork"));
1486 - if (pid != 0)
1487 - exit (0);
1488 -
1489 setsid ();
1490
1491 if (chdir ("/") != 0)
1492 @@ -241,9 +238,6 @@
1493
1494 openlog ("nscd", LOG_CONS | LOG_ODELAY, LOG_DAEMON);
1495
1496 - if (write_pid (_PATH_NSCDPID) < 0)
1497 - dbg_log ("%s: %s", _PATH_NSCDPID, strerror (errno));
1498 -
1499 if (!init_logfile ())
1500 dbg_log (_("Could not create log file"));
1501
1502
1503
1504 1.1 src/patchsets/glibc/2.14/3000_all_2.3.6-dl_execstack-PaX-support.patch
1505
1506 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/3000_all_2.3.6-dl_execstack-PaX-support.patch?rev=1.1&view=markup
1507 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/3000_all_2.3.6-dl_execstack-PaX-support.patch?rev=1.1&content-type=text/plain
1508
1509 Index: 3000_all_2.3.6-dl_execstack-PaX-support.patch
1510 ===================================================================
1511 With latest versions of glibc, a lot of apps failed on a PaX enabled
1512 system with:
1513 cannot enable executable stack as shared object requires: Permission denied
1514
1515 This is due to PaX 'exec-protecting' the stack, and ld.so then trying
1516 to make the stack executable due to some libraries not containing the
1517 PT_GNU_STACK section. Bug #32960. <azarah@g.o> (12 Nov 2003).
1518
1519 Patch also NPTL. Bug #116086. <kevquinn@g.o> (20 Dec 2005).
1520
1521 --- sysdeps/unix/sysv/linux/dl-execstack.c
1522 +++ sysdeps/unix/sysv/linux/dl-execstack.c
1523 @@ -63,7 +63,10 @@
1524 else
1525 # endif
1526 {
1527 - result = errno;
1528 + if (errno == EACCES) /* PAX is enabled */
1529 + result = 0;
1530 + else
1531 + result = errno;
1532 goto out;
1533 }
1534 }
1535 @@ -89,7 +92,12 @@
1536 page -= size;
1537 else
1538 {
1539 - if (errno != ENOMEM) /* Unexpected failure mode. */
1540 + if (errno == EACCES) /* PAX is enabled */
1541 + {
1542 + result = 0;
1543 + goto out;
1544 + }
1545 + else if (errno != ENOMEM) /* Unexpected failure mode. */
1546 {
1547 result = errno;
1548 goto out;
1549 @@ -115,7 +123,12 @@
1550 page += size;
1551 else
1552 {
1553 - if (errno != ENOMEM) /* Unexpected failure mode. */
1554 + if (errno == EACCES) /* PAX is enabled */
1555 + {
1556 + result = 0;
1557 + goto out;
1558 + }
1559 + else if (errno != ENOMEM) /* Unexpected failure mode. */
1560 {
1561 result = errno;
1562 goto out;
1563 --- nptl/allocatestack.c
1564 +++ nptl/allocatestack.c
1565 @@ -279,7 +279,8 @@
1566 size_t len = pd->stackblock_size - pd->guardsize;
1567 #endif
1568 if (mprotect (stack, len, PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
1569 - return errno;
1570 + if (errno != EACCES) /* PAX is enabled */
1571 + return errno;
1572
1573 return 0;
1574 }
1575
1576
1577
1578 1.1 src/patchsets/glibc/2.14/3010_all_2.3.3_pre20040117-pt_pax.patch
1579
1580 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/3010_all_2.3.3_pre20040117-pt_pax.patch?rev=1.1&view=markup
1581 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/3010_all_2.3.3_pre20040117-pt_pax.patch?rev=1.1&content-type=text/plain
1582
1583 Index: 3010_all_2.3.3_pre20040117-pt_pax.patch
1584 ===================================================================
1585 --- elf/elf.h
1586 +++ elf/elf.h
1587 @@ -568,6 +568,7 @@
1588 #define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
1589 #define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
1590 #define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
1591 +#define PT_PAX_FLAGS 0x65041580 /* Indicates PaX flag markings */
1592 #define PT_LOSUNW 0x6ffffffa
1593 #define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
1594 #define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
1595 @@ -581,6 +582,18 @@
1596 #define PF_X (1 << 0) /* Segment is executable */
1597 #define PF_W (1 << 1) /* Segment is writable */
1598 #define PF_R (1 << 2) /* Segment is readable */
1599 +#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */
1600 +#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */
1601 +#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */
1602 +#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */
1603 +#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */
1604 +#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */
1605 +#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */
1606 +#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */
1607 +#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */
1608 +#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */
1609 +#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */
1610 +#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */
1611 #define PF_MASKOS 0x0ff00000 /* OS-specific */
1612 #define PF_MASKPROC 0xf0000000 /* Processor-specific */
1613
1614
1615
1616
1617 1.1 src/patchsets/glibc/2.14/3020_all_glibc-tests-sandbox-libdl-paths.patch
1618
1619 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/3020_all_glibc-tests-sandbox-libdl-paths.patch?rev=1.1&view=markup
1620 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/3020_all_glibc-tests-sandbox-libdl-paths.patch?rev=1.1&content-type=text/plain
1621
1622 Index: 3020_all_glibc-tests-sandbox-libdl-paths.patch
1623 ===================================================================
1624 when glibc runs its tests, it does so by invoking the local library loader.
1625 in Gentoo, we build/run inside of our "sandbox" which itself is linked against
1626 libdl (so that it can load libraries and pull out symbols). the trouble
1627 is that when you upgrade from an older glibc to the new one, often times
1628 internal symbols change name or abi. this is normally OK as you cannot use
1629 libc.so from say version 2.3.6 but libpthread.so from say version 2.5, so
1630 we always say "keep all of the glibc libraries from the same build". but
1631 when glibc runs its tests, it uses dynamic paths to point to its new local
1632 copies of libraries. if the test doesnt use libdl, then glibc doesnt add
1633 its path, and when sandbox triggers the loading of libdl, glibc does so
1634 from the host system system. this gets us into the case of all libraries
1635 are from the locally compiled version of glibc except for libdl.so.
1636
1637 Fix by Wormo
1638
1639 http://bugs.gentoo.org/56898
1640
1641 --- libc/grp/tst_fgetgrent.sh
1642 +++ libc/grp/tst_fgetgrent.sh
1643 @@ -24,7 +24,8 @@
1644 rtld_installed_name=$1; shift
1645
1646 testout=${common_objpfx}/grp/tst_fgetgrent.out
1647 -library_path=${common_objpfx}
1648 +# make sure libdl is also in path in case sandbox is in use
1649 +library_path=${common_objpfx}:${common_objpfx}/dlfcn
1650
1651 result=0
1652
1653 --- libc/iconvdata/run-iconv-test.sh
1654 +++ libc/iconvdata/run-iconv-test.sh
1655 @@ -34,7 +34,7 @@
1656 export GCONV_PATH
1657
1658 # We have to have some directories in the library path.
1659 -LIBPATH=$codir:$codir/iconvdata
1660 +LIBPATH=$codir:$codir/iconvdata:$codir/dlfcn
1661
1662 # How the start the iconv(1) program.
1663 ICONV='$codir/elf/ld.so --library-path $LIBPATH --inhibit-rpath ${from}.so \
1664 --- libc/iconvdata/tst-table.sh
1665 +++ libc/iconvdata/tst-table.sh
1666 @@ -59,8 +59,11 @@
1667 irreversible=${charset}.irreversible
1668 fi
1669
1670 +# make sure libdl is also in path in case sandbox is in use
1671 +library_path=${common_objpfx}:${common_objpfx}/dlfcn
1672 +
1673 # iconv in one direction.
1674 -${common_objpfx}elf/ld.so --library-path $common_objpfx \
1675 +${common_objpfx}elf/ld.so --library-path $library_path \
1676 ${objpfx}tst-table-from ${charset} \
1677 > ${objpfx}tst-${charset}.table
1678
1679 --- libc/intl/tst-codeset.sh
1680 +++ libc/intl/tst-codeset.sh
1681 @@ -37,6 +37,9 @@
1682 LOCPATH=${common_objpfx}localedata
1683 export LOCPATH
1684
1685 +# make sure libdl is also in path in case sandbox is in use
1686 +library_path=${common_objpfx}:${common_objpfx}/dlfcn
1687 +
1688 ${common_objpfx}elf/ld.so --library-path $common_objpfx \
1689 ${objpfx}tst-codeset > ${objpfx}tst-codeset.out
1690
1691 --- libc/intl/tst-gettext.sh
1692 +++ libc/intl/tst-gettext.sh
1693 @@ -51,9 +51,12 @@
1694 LOCPATH=${common_objpfx}localedata
1695 export LOCPATH
1696
1697 +# make sure libdl is also in path in case sandbox is in use
1698 +library_path=${common_objpfx}:${common_objpfx}/dlfcn
1699 +
1700 # Now run the test.
1701 MALLOC_TRACE=$malloc_trace LOCPATH=${objpfx}localedir:$LOCPATH \
1702 -${common_objpfx}elf/ld.so --library-path $common_objpfx \
1703 +${common_objpfx}elf/ld.so --library-path $library_path \
1704 ${objpfx}tst-gettext > ${objpfx}tst-gettext.out ${objpfx}domaindir
1705
1706 exit $?
1707 --- libc/intl/tst-gettext2.sh
1708 +++ libc/intl/tst-gettext2.sh
1709 @@ -65,8 +65,11 @@
1710 LOCPATH=${objpfx}domaindir
1711 export LOCPATH
1712
1713 +# make sure libdl is also in path in case sandbox is in use
1714 +library_path=${common_objpfx}:${common_objpfx}/dlfcn
1715 +
1716 # Now run the test.
1717 -${common_objpfx}elf/ld.so --library-path $common_objpfx \
1718 +${common_objpfx}elf/ld.so --library-path $library_path \
1719 ${objpfx}tst-gettext2 > ${objpfx}tst-gettext2.out ${objpfx}domaindir &&
1720 cmp ${objpfx}tst-gettext2.out - <<EOF
1721 String1 - Lang1: 1st string
1722 --- libc/intl/tst-translit.sh
1723 +++ libc/intl/tst-translit.sh
1724 @@ -36,7 +36,10 @@
1725 LOCPATH=${common_objpfx}localedata
1726 export LOCPATH
1727
1728 -${common_objpfx}elf/ld.so --library-path $common_objpfx \
1729 +# make sure libdl is also in path in case sandbox is in use
1730 +library_path=${common_objpfx}:${common_objpfx}/dlfcn
1731 +
1732 +${common_objpfx}elf/ld.so --library-path $library_path \
1733 ${objpfx}tst-translit > ${objpfx}tst-translit.out ${objpfx}domaindir
1734
1735 exit $?
1736 --- libc/malloc/tst-mtrace.sh
1737 +++ libc/malloc/tst-mtrace.sh
1738 @@ -24,9 +24,12 @@
1739 status=0
1740 trap "rm -f ${common_objpfx}malloc/tst-mtrace.leak; exit 1" 1 2 15
1741
1742 +# make sure libdl is also in path in case sandbox is in use
1743 +library_path=${common_objpfx}:${common_objpfx}/dlfcn
1744 +
1745 MALLOC_TRACE=${common_objpfx}malloc/tst-mtrace.leak \
1746 LOCPATH=${common_objpfx}localedata GCONV_PATH=${common_objpfx}iconvdata \
1747 -${common_objpfx}elf/ld.so --library-path $common_objpfx \
1748 +${common_objpfx}elf/ld.so --library-path $library_path \
1749 ${common_objpfx}malloc/tst-mtrace || status=1
1750
1751 if test $status -eq 0 && test -f ${common_objpfx}malloc/mtrace; then
1752 --- libc/nptl/tst-tls6.sh
1753 +++ libc/nptl/tst-tls6.sh
1754 @@ -5,8 +5,8 @@
1755 rtld_installed_name=$1; shift
1756 logfile=$common_objpfx/nptl/tst-tls6.out
1757
1758 -# We have to find libc and nptl
1759 -library_path=${common_objpfx}:${common_objpfx}nptl
1760 +# We have to find libc and nptl (also libdl in case sandbox is in use)
1761 +library_path=${common_objpfx}:${common_objpfx}nptl:${common_objpfx}/dlfcn
1762 tst_tls5="${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
1763 ${common_objpfx}/nptl/tst-tls5"
1764
1765 --- libc/posix/globtest.sh
1766 +++ libc/posix/globtest.sh
1767 @@ -18,7 +18,7 @@
1768 esac
1769
1770 # We have to find the libc and the NSS modules.
1771 -library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod
1772 +library_path=${common_objpfx}:${common_objpfx}nss:${common_objpfx}nis:${common_objpfx}db2:${common_objpfx}hesiod:${common_objpfx}/dlfcn
1773
1774 # Since we use `sort' we must make sure to use the same locale everywhere.
1775 LC_ALL=C
1776 --- libc/posix/tst-getconf.sh
1777 +++ libc/posix/tst-getconf.sh
1778 @@ -10,7 +10,10 @@
1779 else
1780 rtld_installed_name=$1; shift
1781 runit() {
1782 - ${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} "$@"
1783 +
1784 + # make sure libdl is also in path in case sandbox is in use
1785 + library_path=${common_objpfx}:${common_objpfx}/dlfcn
1786 + ${elf_objpfx}${rtld_installed_name} --library-path ${library_path} "$@"
1787 }
1788 fi
1789
1790 --- libc/posix/wordexp-tst.sh
1791 +++ libc/posix/wordexp-tst.sh
1792 @@ -19,8 +19,11 @@
1793 "
1794 export IFS
1795
1796 +# make sure libdl is also in path in case sandbox is in use
1797 +library_path=${common_objpfx}:${common_objpfx}/dlfcn
1798 +
1799 failed=0
1800 -${elf_objpfx}${rtld_installed_name} --library-path ${common_objpfx} \
1801 +${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
1802 ${common_objpfx}posix/wordexp-test '$*' > ${testout}1
1803 cat <<"EOF" | cmp - ${testout}1 >> $logfile || failed=1
1804 wordexp returned 0
1805
1806
1807
1808 1.1 src/patchsets/glibc/2.14/5063_all_glibc-dont-build-timezone.patch
1809
1810 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/5063_all_glibc-dont-build-timezone.patch?rev=1.1&view=markup
1811 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/5063_all_glibc-dont-build-timezone.patch?rev=1.1&content-type=text/plain
1812
1813 Index: 5063_all_glibc-dont-build-timezone.patch
1814 ===================================================================
1815 timezone data has been split into the package sys-libs/timezone-data
1816
1817 --- glibc/Makeconfig
1818 +++ glibc/Makeconfig
1819 @@ -922,1 +922,1 @@
1820 - crypt nss localedata timezone rt conform debug \
1821 + crypt nss localedata rt conform debug \
1822
1823
1824
1825 1.1 src/patchsets/glibc/2.14/6120_all_ppc-glibc-2.9-atomic.patch
1826
1827 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/6120_all_ppc-glibc-2.9-atomic.patch?rev=1.1&view=markup
1828 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/6120_all_ppc-glibc-2.9-atomic.patch?rev=1.1&content-type=text/plain
1829
1830 Index: 6120_all_ppc-glibc-2.9-atomic.patch
1831 ===================================================================
1832 sniped from suse
1833
1834 Index: sysdeps/powerpc/bits/atomic.h
1835 ===================================================================
1836 RCS file: /cvs/glibc/libc/sysdeps/powerpc/bits/atomic.h,v
1837 retrieving revision 1.17
1838 diff -u -a -p -r1.17 atomic.h
1839 --- a/sysdeps/powerpc/bits/atomic.h 26 Mar 2007 20:15:28 -0000 1.17
1840 +++ b/sysdeps/powerpc/bits/atomic.h 31 May 2008 08:50:56 -0000
1841 @@ -85,14 +85,14 @@ typedef uintmax_t uatomic_max_t;
1842 __typeof (*(mem)) __tmp; \
1843 __typeof (mem) __memp = (mem); \
1844 __asm __volatile ( \
1845 - "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
1846 + "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1847 " cmpw %0,%2\n" \
1848 " bne 2f\n" \
1849 - " stwcx. %3,0,%1\n" \
1850 + " stwcx. %3,%y1\n" \
1851 " bne- 1b\n" \
1852 "2: " __ARCH_ACQ_INSTR \
1853 - : "=&r" (__tmp) \
1854 - : "b" (__memp), "r" (oldval), "r" (newval) \
1855 + : "=&r" (__tmp), "+Z" (*__memp) \
1856 + : "r" (oldval), "r" (newval) \
1857 : "cr0", "memory"); \
1858 __tmp; \
1859 })
1860 @@ -102,14 +102,14 @@ typedef uintmax_t uatomic_max_t;
1861 __typeof (*(mem)) __tmp; \
1862 __typeof (mem) __memp = (mem); \
1863 __asm __volatile (__ARCH_REL_INSTR "\n" \
1864 - "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
1865 + "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
1866 " cmpw %0,%2\n" \
1867 " bne 2f\n" \
1868 - " stwcx. %3,0,%1\n" \
1869 + " stwcx. %3,%y1\n" \
1870 " bne- 1b\n" \
1871 "2: " \
1872 - : "=&r" (__tmp) \
1873 - : "b" (__memp), "r" (oldval), "r" (newval) \
1874 + : "=&r" (__tmp), "+Z" (__memp) \
1875 + : "r" (oldval), "r" (newval) \
1876 : "cr0", "memory"); \
1877 __tmp; \
1878 })
1879 @@ -118,12 +118,12 @@ typedef uintmax_t uatomic_max_t;
1880 ({ \
1881 __typeof (*mem) __val; \
1882 __asm __volatile ( \
1883 - "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
1884 - " stwcx. %3,0,%2\n" \
1885 + "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1886 + " stwcx. %2,%y1\n" \
1887 " bne- 1b\n" \
1888 " " __ARCH_ACQ_INSTR \
1889 - : "=&r" (__val), "=m" (*mem) \
1890 - : "b" (mem), "r" (value), "m" (*mem) \
1891 + : "=&r" (__val), "+Z" (*mem) \
1892 + : "r" (value) \
1893 : "cr0", "memory"); \
1894 __val; \
1895 })
1896 @@ -132,11 +132,11 @@ typedef uintmax_t uatomic_max_t;
1897 ({ \
1898 __typeof (*mem) __val; \
1899 __asm __volatile (__ARCH_REL_INSTR "\n" \
1900 - "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
1901 - " stwcx. %3,0,%2\n" \
1902 + "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
1903 + " stwcx. %2,%y1\n" \
1904 " bne- 1b" \
1905 - : "=&r" (__val), "=m" (*mem) \
1906 - : "b" (mem), "r" (value), "m" (*mem) \
1907 + : "=&r" (__val), "+Z" (*mem) \
1908 + : "r" (value) \
1909 : "cr0", "memory"); \
1910 __val; \
1911 })
1912 @@ -144,12 +144,12 @@ typedef uintmax_t uatomic_max_t;
1913 #define __arch_atomic_exchange_and_add_32(mem, value) \
1914 ({ \
1915 __typeof (*mem) __val, __tmp; \
1916 - __asm __volatile ("1: lwarx %0,0,%3\n" \
1917 - " add %1,%0,%4\n" \
1918 - " stwcx. %1,0,%3\n" \
1919 + __asm __volatile ("1: lwarx %0,%y2\n" \
1920 + " add %1,%0,%3\n" \
1921 + " stwcx. %1,%y2\n" \
1922 " bne- 1b" \
1923 - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
1924 - : "b" (mem), "r" (value), "m" (*mem) \
1925 + : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
1926 + : "r" (value) \
1927 : "cr0", "memory"); \
1928 __val; \
1929 })
1930 @@ -157,12 +157,12 @@ typedef uintmax_t uatomic_max_t;
1931 #define __arch_atomic_increment_val_32(mem) \
1932 ({ \
1933 __typeof (*(mem)) __val; \
1934 - __asm __volatile ("1: lwarx %0,0,%2\n" \
1935 + __asm __volatile ("1: lwarx %0,%y1\n" \
1936 " addi %0,%0,1\n" \
1937 - " stwcx. %0,0,%2\n" \
1938 + " stwcx. %0,%y1\n" \
1939 " bne- 1b" \
1940 - : "=&b" (__val), "=m" (*mem) \
1941 - : "b" (mem), "m" (*mem) \
1942 + : "=&b" (__val), "+Z" (*mem) \
1943 + : \
1944 : "cr0", "memory"); \
1945 __val; \
1946 })
1947 @@ -170,27 +170,27 @@ typedef uintmax_t uatomic_max_t;
1948 #define __arch_atomic_decrement_val_32(mem) \
1949 ({ \
1950 __typeof (*(mem)) __val; \
1951 - __asm __volatile ("1: lwarx %0,0,%2\n" \
1952 + __asm __volatile ("1: lwarx %0,%y1\n" \
1953 " subi %0,%0,1\n" \
1954 - " stwcx. %0,0,%2\n" \
1955 + " stwcx. %0,%y1\n" \
1956 " bne- 1b" \
1957 - : "=&b" (__val), "=m" (*mem) \
1958 - : "b" (mem), "m" (*mem) \
1959 + : "=&b" (__val), "+Z" (*mem) \
1960 + : \
1961 : "cr0", "memory"); \
1962 __val; \
1963 })
1964
1965 #define __arch_atomic_decrement_if_positive_32(mem) \
1966 ({ int __val, __tmp; \
1967 - __asm __volatile ("1: lwarx %0,0,%3\n" \
1968 + __asm __volatile ("1: lwarx %0,%y2\n" \
1969 " cmpwi 0,%0,0\n" \
1970 " addi %1,%0,-1\n" \
1971 " ble 2f\n" \
1972 - " stwcx. %1,0,%3\n" \
1973 + " stwcx. %1,%y2\n" \
1974 " bne- 1b\n" \
1975 "2: " __ARCH_ACQ_INSTR \
1976 - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
1977 - : "b" (mem), "m" (*mem) \
1978 + : "=&b" (__val), "=&r" (__tmp), "+Z" (*mem) \
1979 + : \
1980 : "cr0", "memory"); \
1981 __val; \
1982 })
1983 Index: sysdeps/powerpc/powerpc32/bits/atomic.h
1984 ===================================================================
1985 RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc32/bits/atomic.h,v
1986 retrieving revision 1.6
1987 diff -u -a -p -r1.6 atomic.h
1988 --- a/sysdeps/powerpc/powerpc32/bits/atomic.h 26 Mar 2007 20:15:45 -0000 1.6
1989 +++ b/sysdeps/powerpc/powerpc32/bits/atomic.h 31 May 2008 08:50:56 -0000
1990 @@ -44,14 +44,14 @@
1991 ({ \
1992 unsigned int __tmp; \
1993 __asm __volatile ( \
1994 - "1: lwarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
1995 + "1: lwarx %0,%y1" MUTEX_HINT_ACQ "\n" \
1996 " subf. %0,%2,%0\n" \
1997 " bne 2f\n" \
1998 - " stwcx. %3,0,%1\n" \
1999 + " stwcx. %3,%y1\n" \
2000 " bne- 1b\n" \
2001 "2: " __ARCH_ACQ_INSTR \
2002 - : "=&r" (__tmp) \
2003 - : "b" (mem), "r" (oldval), "r" (newval) \
2004 + : "=&r" (__tmp), "+Z" (*(mem)) \
2005 + : "r" (oldval), "r" (newval) \
2006 : "cr0", "memory"); \
2007 __tmp != 0; \
2008 })
2009 @@ -60,14 +60,14 @@
2010 ({ \
2011 unsigned int __tmp; \
2012 __asm __volatile (__ARCH_REL_INSTR "\n" \
2013 - "1: lwarx %0,0,%1" MUTEX_HINT_REL "\n" \
2014 + "1: lwarx %0,%y1" MUTEX_HINT_REL "\n" \
2015 " subf. %0,%2,%0\n" \
2016 " bne 2f\n" \
2017 - " stwcx. %3,0,%1\n" \
2018 + " stwcx. %3,%y1\n" \
2019 " bne- 1b\n" \
2020 "2: " \
2021 - : "=&r" (__tmp) \
2022 - : "b" (mem), "r" (oldval), "r" (newval) \
2023 + : "=&r" (__tmp), "+Z" (*(mem)) \
2024 + : "r" (oldval), "r" (newval) \
2025 : "cr0", "memory"); \
2026 __tmp != 0; \
2027 })
2028 Index: sysdeps/powerpc/powerpc64/bits/atomic.h
2029 ===================================================================
2030 RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc64/bits/atomic.h,v
2031 retrieving revision 1.8
2032 diff -u -a -p -r1.8 atomic.h
2033 --- a/sysdeps/powerpc/powerpc64/bits/atomic.h 26 Mar 2007 20:16:03 -0000 1.8
2034 +++ b/sysdeps/powerpc/powerpc64/bits/atomic.h 31 May 2008 08:50:56 -0000
2035 @@ -44,14 +44,14 @@
2036 ({ \
2037 unsigned int __tmp, __tmp2; \
2038 __asm __volatile (" clrldi %1,%1,32\n" \
2039 - "1: lwarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
2040 + "1: lwarx %0,%y2" MUTEX_HINT_ACQ "\n" \
2041 " subf. %0,%1,%0\n" \
2042 " bne 2f\n" \
2043 - " stwcx. %4,0,%2\n" \
2044 + " stwcx. %4,%y2\n" \
2045 " bne- 1b\n" \
2046 "2: " __ARCH_ACQ_INSTR \
2047 - : "=&r" (__tmp), "=r" (__tmp2) \
2048 - : "b" (mem), "1" (oldval), "r" (newval) \
2049 + : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
2050 + : "1" (oldval), "r" (newval) \
2051 : "cr0", "memory"); \
2052 __tmp != 0; \
2053 })
2054 @@ -61,14 +61,14 @@
2055 unsigned int __tmp, __tmp2; \
2056 __asm __volatile (__ARCH_REL_INSTR "\n" \
2057 " clrldi %1,%1,32\n" \
2058 - "1: lwarx %0,0,%2" MUTEX_HINT_REL "\n" \
2059 + "1: lwarx %0,%y2" MUTEX_HINT_REL "\n" \
2060 " subf. %0,%1,%0\n" \
2061 " bne 2f\n" \
2062 - " stwcx. %4,0,%2\n" \
2063 + " stwcx. %4,%y2\n" \
2064 " bne- 1b\n" \
2065 "2: " \
2066 - : "=&r" (__tmp), "=r" (__tmp2) \
2067 - : "b" (mem), "1" (oldval), "r" (newval) \
2068 + : "=&r" (__tmp), "=r" (__tmp2), "+Z" (*(mem)) \
2069 + : "1" (oldval), "r" (newval) \
2070 : "cr0", "memory"); \
2071 __tmp != 0; \
2072 })
2073 @@ -82,14 +82,14 @@
2074 ({ \
2075 unsigned long __tmp; \
2076 __asm __volatile ( \
2077 - "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
2078 + "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
2079 " subf. %0,%2,%0\n" \
2080 " bne 2f\n" \
2081 - " stdcx. %3,0,%1\n" \
2082 + " stdcx. %3,%y1\n" \
2083 " bne- 1b\n" \
2084 "2: " __ARCH_ACQ_INSTR \
2085 - : "=&r" (__tmp) \
2086 - : "b" (mem), "r" (oldval), "r" (newval) \
2087 + : "=&r" (__tmp), "+Z" (*(mem)) \
2088 + : "r" (oldval), "r" (newval) \
2089 : "cr0", "memory"); \
2090 __tmp != 0; \
2091 })
2092 @@ -98,14 +98,14 @@
2093 ({ \
2094 unsigned long __tmp; \
2095 __asm __volatile (__ARCH_REL_INSTR "\n" \
2096 - "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
2097 + "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
2098 " subf. %0,%2,%0\n" \
2099 " bne 2f\n" \
2100 - " stdcx. %3,0,%1\n" \
2101 + " stdcx. %3,%y1\n" \
2102 " bne- 1b\n" \
2103 "2: " \
2104 - : "=&r" (__tmp) \
2105 - : "b" (mem), "r" (oldval), "r" (newval) \
2106 + : "=&r" (__tmp), "+Z" (*(mem)) \
2107 + : "r" (oldval), "r" (newval) \
2108 : "cr0", "memory"); \
2109 __tmp != 0; \
2110 })
2111 @@ -115,14 +115,14 @@
2112 __typeof (*(mem)) __tmp; \
2113 __typeof (mem) __memp = (mem); \
2114 __asm __volatile ( \
2115 - "1: ldarx %0,0,%1" MUTEX_HINT_ACQ "\n" \
2116 + "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
2117 " cmpd %0,%2\n" \
2118 " bne 2f\n" \
2119 - " stdcx. %3,0,%1\n" \
2120 + " stdcx. %3,%y1\n" \
2121 " bne- 1b\n" \
2122 "2: " __ARCH_ACQ_INSTR \
2123 - : "=&r" (__tmp) \
2124 - : "b" (__memp), "r" (oldval), "r" (newval) \
2125 + : "=&r" (__tmp), "+Z" (*__memp) \
2126 + : "r" (oldval), "r" (newval) \
2127 : "cr0", "memory"); \
2128 __tmp; \
2129 })
2130 @@ -132,14 +132,14 @@
2131 __typeof (*(mem)) __tmp; \
2132 __typeof (mem) __memp = (mem); \
2133 __asm __volatile (__ARCH_REL_INSTR "\n" \
2134 - "1: ldarx %0,0,%1" MUTEX_HINT_REL "\n" \
2135 + "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
2136 " cmpd %0,%2\n" \
2137 " bne 2f\n" \
2138 - " stdcx. %3,0,%1\n" \
2139 + " stdcx. %3,%y1\n" \
2140 " bne- 1b\n" \
2141 "2: " \
2142 - : "=&r" (__tmp) \
2143 - : "b" (__memp), "r" (oldval), "r" (newval) \
2144 + : "=&r" (__tmp), "+Z" (*__memp) \
2145 + : "r" (oldval), "r" (newval) \
2146 : "cr0", "memory"); \
2147 __tmp; \
2148 })
2149 @@ -148,12 +148,12 @@
2150 ({ \
2151 __typeof (*mem) __val; \
2152 __asm __volatile (__ARCH_REL_INSTR "\n" \
2153 - "1: ldarx %0,0,%2" MUTEX_HINT_ACQ "\n" \
2154 - " stdcx. %3,0,%2\n" \
2155 + "1: ldarx %0,%y1" MUTEX_HINT_ACQ "\n" \
2156 + " stdcx. %2,%y1\n" \
2157 " bne- 1b\n" \
2158 " " __ARCH_ACQ_INSTR \
2159 - : "=&r" (__val), "=m" (*mem) \
2160 - : "b" (mem), "r" (value), "m" (*mem) \
2161 + : "=&r" (__val), "+Z" (*(mem)) \
2162 + : "r" (value) \
2163 : "cr0", "memory"); \
2164 __val; \
2165 })
2166 @@ -162,11 +162,11 @@
2167 ({ \
2168 __typeof (*mem) __val; \
2169 __asm __volatile (__ARCH_REL_INSTR "\n" \
2170 - "1: ldarx %0,0,%2" MUTEX_HINT_REL "\n" \
2171 - " stdcx. %3,0,%2\n" \
2172 + "1: ldarx %0,%y1" MUTEX_HINT_REL "\n" \
2173 + " stdcx. %2,%y1\n" \
2174 " bne- 1b" \
2175 - : "=&r" (__val), "=m" (*mem) \
2176 - : "b" (mem), "r" (value), "m" (*mem) \
2177 + : "=&r" (__val), "+Z" (*(mem)) \
2178 + : "r" (value) \
2179 : "cr0", "memory"); \
2180 __val; \
2181 })
2182 @@ -174,12 +174,12 @@
2183 #define __arch_atomic_exchange_and_add_64(mem, value) \
2184 ({ \
2185 __typeof (*mem) __val, __tmp; \
2186 - __asm __volatile ("1: ldarx %0,0,%3\n" \
2187 - " add %1,%0,%4\n" \
2188 - " stdcx. %1,0,%3\n" \
2189 + __asm __volatile ("1: ldarx %0,%y2\n" \
2190 + " add %1,%0,%3\n" \
2191 + " stdcx. %1,%y2\n" \
2192 " bne- 1b" \
2193 - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
2194 - : "b" (mem), "r" (value), "m" (*mem) \
2195 + : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
2196 + : "r" (value) \
2197 : "cr0", "memory"); \
2198 __val; \
2199 })
2200 @@ -187,12 +187,12 @@
2201 #define __arch_atomic_increment_val_64(mem) \
2202 ({ \
2203 __typeof (*(mem)) __val; \
2204 - __asm __volatile ("1: ldarx %0,0,%2\n" \
2205 + __asm __volatile ("1: ldarx %0,%y1\n" \
2206 " addi %0,%0,1\n" \
2207 - " stdcx. %0,0,%2\n" \
2208 + " stdcx. %0,%y1\n" \
2209 " bne- 1b" \
2210 - : "=&b" (__val), "=m" (*mem) \
2211 - : "b" (mem), "m" (*mem) \
2212 + : "=&b" (__val), "+Z" (*(mem)) \
2213 + : \
2214 : "cr0", "memory"); \
2215 __val; \
2216 })
2217 @@ -200,27 +200,27 @@
2218 #define __arch_atomic_decrement_val_64(mem) \
2219 ({ \
2220 __typeof (*(mem)) __val; \
2221 - __asm __volatile ("1: ldarx %0,0,%2\n" \
2222 + __asm __volatile ("1: ldarx %0,%y1\n" \
2223 " subi %0,%0,1\n" \
2224 - " stdcx. %0,0,%2\n" \
2225 + " stdcx. %0,%y1\n" \
2226 " bne- 1b" \
2227 - : "=&b" (__val), "=m" (*mem) \
2228 - : "b" (mem), "m" (*mem) \
2229 + : "=&b" (__val), "+Z" (*(mem)) \
2230 + : \
2231 : "cr0", "memory"); \
2232 __val; \
2233 })
2234
2235 #define __arch_atomic_decrement_if_positive_64(mem) \
2236 ({ int __val, __tmp; \
2237 - __asm __volatile ("1: ldarx %0,0,%3\n" \
2238 + __asm __volatile ("1: ldarx %0,%y2\n" \
2239 " cmpdi 0,%0,0\n" \
2240 " addi %1,%0,-1\n" \
2241 " ble 2f\n" \
2242 - " stdcx. %1,0,%3\n" \
2243 + " stdcx. %1,%y2\n" \
2244 " bne- 1b\n" \
2245 "2: " __ARCH_ACQ_INSTR \
2246 - : "=&b" (__val), "=&r" (__tmp), "=m" (*mem) \
2247 - : "b" (mem), "m" (*mem) \
2248 + : "=&b" (__val), "=&r" (__tmp), "+Z" (*(mem)) \
2249 + : \
2250 : "cr0", "memory"); \
2251 __val; \
2252 })
2253
2254
2255
2256 1.1 src/patchsets/glibc/2.14/6130_all_ppc-glibc-2.11-cell-vector.patch
2257
2258 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/6130_all_ppc-glibc-2.11-cell-vector.patch?rev=1.1&view=markup
2259 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/6130_all_ppc-glibc-2.11-cell-vector.patch?rev=1.1&content-type=text/plain
2260
2261 Index: 6130_all_ppc-glibc-2.11-cell-vector.patch
2262 ===================================================================
2263 http://sourceware.org/ml/libc-alpha/2009-11/msg00017.html
2264
2265 From: Petr Baudis <pasky at suse dot cz>
2266 To: libc-alpha at sourceware dot org
2267 Date: Fri, 6 Nov 2009 12:03:59 +0100
2268 Subject: Fix compilation with Altivec
2269
2270 (This is essentially the same as Andreas Schwab's similar change in Oct
2271 2004. glibc-2.11 fails to build with -mcpu=cell, where __vector is
2272 gcc-reserved keyword.)
2273
2274 2009-11-06 Petr Baudis <pasky@××××.cz>
2275
2276 * include/sys/uio.h: Change __vector to __iovec to avoid clash
2277 with altivec.
2278
2279 diff --git a/include/sys/uio.h b/include/sys/uio.h
2280 index 8c2b016..bfaec59 100644
2281 --- a/include/sys/uio.h
2282 +++ b/include/sys/uio.h
2283 @@ -2,12 +2,12 @@
2284 #include <misc/sys/uio.h>
2285
2286 /* Now define the internal interfaces. */
2287 -extern ssize_t __readv (int __fd, __const struct iovec *__vector,
2288 +extern ssize_t __readv (int __fd, __const struct iovec *__iovec,
2289 int __count);
2290 -extern ssize_t __libc_readv (int __fd, __const struct iovec *__vector,
2291 +extern ssize_t __libc_readv (int __fd, __const struct iovec *__iovec,
2292 int __count);
2293 -extern ssize_t __writev (int __fd, __const struct iovec *__vector,
2294 +extern ssize_t __writev (int __fd, __const struct iovec *__iovec,
2295 int __count);
2296 -extern ssize_t __libc_writev (int __fd, __const struct iovec *__vector,
2297 +extern ssize_t __libc_writev (int __fd, __const struct iovec *__iovec,
2298 int __count);
2299 #endif
2300
2301
2302
2303 1.1 src/patchsets/glibc/2.14/README.history
2304
2305 file : http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/README.history?rev=1.1&view=markup
2306 plain: http://sources.gentoo.org/viewvc.cgi/gentoo/src/patchsets/glibc/2.14/README.history?rev=1.1&content-type=text/plain
2307
2308 Index: README.history
2309 ===================================================================
2310 1 01.06.2011
2311 + 0020_all_glibc-tweak-rfc1918-lookup.patch
2312 + 0030_all_glibc-respect-env-CPPFLAGS.patch
2313 + 0055_all_glibc-2.12-static-shared-getpagesize.patch
2314 + 0061_all_glibc-2.13-static-memset.patch
2315 + 0085_all_glibc-disable-ldconfig.patch
2316 + 1005_all_glibc-sigaction.patch
2317 + 1010_all_glibc-queue-header-updates.patch
2318 + 1020_all_glibc-longjmp-chk-hidden-fortify.patch
2319 + 1030_all_glibc-manual-no-perl.patch
2320 + 1040_all_2.3.3-localedef-fix-trampoline.patch
2321 + 1055_all_glibc-resolv-dynamic.patch
2322 + 1060_all_glibc-localedef-mmap.patch
2323 + 1070_all_glibc-fadvise64_64.patch
2324 + 1075_all_glibc-section-comments.patch
2325 + 1080_all_glibc-no-inline-gmon.patch
2326 + 1085_all_glibc-2.9-check_native-headers.patch
2327 + 1090_all_glibc-2.3.6-fix-pr631.patch
2328 + 1095_all_glibc-2.14-assume-pipe2-dup3.patch
2329 + 1100_all_glibc-2.3.3-china.patch
2330 + 1103_all_glibc-new-valencian-locale.patch
2331 + 1120_all_glibc-2.11-longjmp-chk-fallback.patch
2332 + 1130_all_glibc-2.4-undefine-__i686.patch
2333 + 1160_all_glibc-2.8-nscd-one-fork.patch
2334 + 3000_all_2.3.6-dl_execstack-PaX-support.patch
2335 + 3010_all_2.3.3_pre20040117-pt_pax.patch
2336 + 3020_all_glibc-tests-sandbox-libdl-paths.patch
2337 + 5063_all_glibc-dont-build-timezone.patch
2338 + 6120_all_ppc-glibc-2.9-atomic.patch
2339 + 6130_all_ppc-glibc-2.11-cell-vector.patch