diff --git a/.cvsignore b/.cvsignore index aeb8122..19267bf 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,2 @@ -glibc-20060217T1609.tar.bz2 -glibc-fedora-20060217T1609.tar.bz2 +glibc-20060301T0647.tar.bz2 +glibc-fedora-20060301T0647.tar.bz2 diff --git a/glibc-fedora.patch b/glibc-fedora.patch index 88c04f0..a9deec2 100644 --- a/glibc-fedora.patch +++ b/glibc-fedora.patch @@ -1,14 +1,6 @@ ---- glibc-20060217T1609/ChangeLog 15 Feb 2006 18:14:59 -0000 1.9991 -+++ glibc-20060217T1609-fedora/ChangeLog 17 Feb 2006 16:18:18 -0000 1.8782.2.164 -@@ -1,3 +1,7 @@ -+2006-02-17 Jakub Jelinek -+ -+ * include/atomic.h (atomic_and, atomic_or): Define. -+ - 2006-02-15 Ulrich Drepper - - * sysdeps/unix/sysv/linux/sparc/bits/mman.h: Define MADV_DONTFORK -@@ -94,6 +98,11 @@ +--- glibc-20060301T0647/ChangeLog 1 Mar 2006 06:38:57 -0000 1.10036 ++++ glibc-20060301T0647-fedora/ChangeLog 1 Mar 2006 06:55:37 -0000 1.8782.2.165 +@@ -804,6 +804,11 @@ (__MATHDECL_2): Use __REDIRECT_NTH instead of __REDIRECT followed by __THROW. @@ -20,7 +12,7 @@ 2006-02-02 Ulrich Drepper * sysdeps/unix/sysv/linux/futimesat.c [__NR_futimesat] -@@ -153,6 +162,11 @@ +@@ -863,6 +868,11 @@ * sysdeps/ieee754/ldbl-128/s_llrintl.c (__llrintl): Fix a typo. * sysdeps/s390/fpu/libm-test-ulps: Remove llrint ulps. @@ -32,7 +24,7 @@ 2006-01-19 Thomas Schwinge * libio/genops.c: Include . -@@ -2579,6 +2593,10 @@ +@@ -3289,6 +3299,10 @@ * elf/order2mod2.c (init): Cast ignored value to void. @@ -43,7 +35,7 @@ 2005-12-27 Ulrich Drepper * elf/tst-tls13.c (do_test): Avoid using the library path when -@@ -2862,6 +2880,26 @@ +@@ -3572,6 +3586,26 @@ * sysdeps/unix/sysv/linux/time.c: If __NR_time is not defined, use sysdeps/unix/time.c implementation. @@ -70,7 +62,7 @@ 2005-12-19 Ulrich Drepper [BZ #1955] -@@ -5980,6 +6018,11 @@ +@@ -6690,6 +6724,11 @@ R_ARM_TLS_TPOFF32, R_ARM_TLS_GD32, R_ARM_TLS_LDM32, R_ARM_TLS_LDO32, R_ARM_TLS_IE32, R_ARM_TLS_LE32): New macros. @@ -82,7 +74,7 @@ 2005-10-03 Roland McGrath * sysdeps/powerpc/nofpu: Directory removed, saved in ports repository. -@@ -6974,6 +7017,12 @@ +@@ -7684,6 +7723,12 @@ * argp/argp-help.c (__argp_error): __asprintf -> vasprintf. (__argp_failure): Likewise. @@ -95,7 +87,7 @@ 2005-08-08 Ulrich Drepper * nscd/cache.c (cache_add): Commit hash table and header to disk. -@@ -7098,6 +7147,17 @@ +@@ -7808,6 +7853,17 @@ __syslog_chk. * misc/Versions: Export __syslog_chk and __vsyslog_chk. @@ -113,7 +105,7 @@ 2005-07-28 Thomas Schwinge [BZ #1137] -@@ -10158,6 +10218,18 @@ +@@ -10868,6 +10924,18 @@ * scripts/soversions.awk: Fix default version set handling. @@ -132,8 +124,8 @@ 2005-02-10 Roland McGrath [BZ #157] ---- glibc-20060217T1609/ChangeLog.11 10 Nov 2000 03:31:36 -0000 1.1 -+++ glibc-20060217T1609-fedora/ChangeLog.11 22 Sep 2004 21:20:47 -0000 1.1.4.1 +--- glibc-20060301T0647/ChangeLog.11 10 Nov 2000 03:31:36 -0000 1.1 ++++ glibc-20060301T0647-fedora/ChangeLog.11 22 Sep 2004 21:20:47 -0000 1.1.4.1 @@ -1352,6 +1352,11 @@ * sysdeps/unix/sysv/linux/mips/sys/tas.h: Add missing .mips0 at the end of inline assembler code. @@ -183,8 +175,8 @@ * sysdeps/arm/bits/huge_val.h (HUGE_VAL, HUGE_VALF): Add __extension__ to hexadecimal floating constant notation. * sysdeps/i386/bits/huge_val.h (HUGE_VAL, HUGE_VALF, HUGE_VALL): ---- glibc-20060217T1609/ChangeLog.12 16 Aug 2001 05:24:54 -0000 1.1 -+++ glibc-20060217T1609-fedora/ChangeLog.12 22 Sep 2004 21:20:47 -0000 1.1.4.1 +--- glibc-20060301T0647/ChangeLog.12 16 Aug 2001 05:24:54 -0000 1.1 ++++ glibc-20060301T0647-fedora/ChangeLog.12 22 Sep 2004 21:20:47 -0000 1.1.4.1 @@ -7729,6 +7729,13 @@ * Versions.def [ld]: Add GLIBC_2.2.1. @@ -211,8 +203,8 @@ 2001-01-02 Franz Sirl * sysdeps/powerpc/dl-machine.c (__process_machine_rela): Fix typo. ---- glibc-20060217T1609/ChangeLog.15 16 Feb 2005 07:34:17 -0000 1.1 -+++ glibc-20060217T1609-fedora/ChangeLog.15 3 Mar 2005 17:29:57 -0000 1.1.6.2 +--- glibc-20060301T0647/ChangeLog.15 16 Feb 2005 07:34:17 -0000 1.1 ++++ glibc-20060301T0647-fedora/ChangeLog.15 3 Mar 2005 17:29:57 -0000 1.1.6.2 @@ -477,6 +477,14 @@ 2004-11-26 Jakub Jelinek @@ -293,8 +285,8 @@ 2004-08-30 Roland McGrath * scripts/extract-abilist.awk: If `lastversion' variable defined, omit ---- glibc-20060217T1609/csu/elf-init.c 5 Nov 2005 17:41:38 -0000 1.8 -+++ glibc-20060217T1609-fedora/csu/elf-init.c 15 Nov 2005 09:54:10 -0000 1.3.2.6 +--- glibc-20060301T0647/csu/elf-init.c 5 Nov 2005 17:41:38 -0000 1.8 ++++ glibc-20060301T0647-fedora/csu/elf-init.c 15 Nov 2005 09:54:10 -0000 1.3.2.6 @@ -49,6 +49,23 @@ extern void (*__init_array_end []) (int, extern void (*__fini_array_start []) (void) attribute_hidden; extern void (*__fini_array_end []) (void) attribute_hidden; @@ -319,8 +311,8 @@ /* These function symbols are provided for the .init/.fini section entry points automagically by the linker. */ ---- glibc-20060217T1609/debug/tst-chk1.c 22 Aug 2005 15:12:34 -0000 1.14 -+++ glibc-20060217T1609-fedora/debug/tst-chk1.c 24 Aug 2005 07:23:26 -0000 1.1.2.15 +--- glibc-20060301T0647/debug/tst-chk1.c 22 Aug 2005 15:12:34 -0000 1.14 ++++ glibc-20060301T0647-fedora/debug/tst-chk1.c 24 Aug 2005 07:23:26 -0000 1.1.2.15 @@ -17,6 +17,9 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ @@ -349,8 +341,8 @@ # define O 0 #else # define O 1 ---- glibc-20060217T1609/elf/ldconfig.c 1 Jan 2006 19:15:56 -0000 1.52 -+++ glibc-20060217T1609-fedora/elf/ldconfig.c 2 Jan 2006 10:52:50 -0000 1.47.2.7 +--- glibc-20060301T0647/elf/ldconfig.c 1 Jan 2006 19:15:56 -0000 1.52 ++++ glibc-20060301T0647-fedora/elf/ldconfig.c 2 Jan 2006 10:52:50 -0000 1.47.2.7 @@ -693,7 +693,18 @@ search_dir (const struct dir_entry *entr #endif !is_hwcap_platform (direntry->d_name))) @@ -452,8 +444,8 @@ } search_dirs (); ---- glibc-20060217T1609/elf/tst-stackguard1.c 26 Jun 2005 18:08:36 -0000 1.1 -+++ glibc-20060217T1609-fedora/elf/tst-stackguard1.c 8 Aug 2005 21:24:27 -0000 1.1.2.3 +--- glibc-20060301T0647/elf/tst-stackguard1.c 26 Jun 2005 18:08:36 -0000 1.1 ++++ glibc-20060301T0647-fedora/elf/tst-stackguard1.c 8 Aug 2005 21:24:27 -0000 1.1.2.3 @@ -160,17 +160,21 @@ do_test (void) the 16 runs, something is very wrong. */ int ndifferences = 0; @@ -478,8 +470,8 @@ { puts ("stack guard canaries are not randomized enough"); puts ("nor equal to the default canary value"); ---- glibc-20060217T1609/iconv/iconvconfig.c 1 Jan 2006 19:15:56 -0000 1.25 -+++ glibc-20060217T1609-fedora/iconv/iconvconfig.c 2 Jan 2006 10:52:50 -0000 1.19.2.6 +--- glibc-20060301T0647/iconv/iconvconfig.c 1 Jan 2006 19:15:56 -0000 1.25 ++++ glibc-20060301T0647-fedora/iconv/iconvconfig.c 2 Jan 2006 10:52:50 -0000 1.19.2.6 @@ -1011,6 +1011,34 @@ next_prime (uint32_t seed) module name offset (following last entry with step count 0) @@ -556,59 +548,8 @@ /* Open the output file. */ if (output_file == NULL) { ---- glibc-20060217T1609/include/atomic.h 20 Aug 2005 01:14:07 -0000 1.16 -+++ glibc-20060217T1609-fedora/include/atomic.h 17 Feb 2006 16:18:19 -0000 1.15.2.2 -@@ -1,5 +1,5 @@ - /* Internal macros for atomic operations for GNU C Library. -- Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -+ Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2002. - -@@ -273,6 +273,41 @@ - __oldval & __mask; }) - #endif - -+/* Atomically *mem &= mask and return the old value of *mem. */ -+#ifndef atomic_and -+# define atomic_and(mem, mask) \ -+ ({ __typeof (*(mem)) __oldval; \ -+ __typeof (mem) __memp = (mem); \ -+ __typeof (*(mem)) __mask = (mask); \ -+ \ -+ do \ -+ __oldval = (*__memp); \ -+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \ -+ __oldval \ -+ & __mask, \ -+ __oldval),\ -+ 0)); \ -+ \ -+ __oldval; }) -+#endif -+ -+/* Atomically *mem |= mask and return the old value of *mem. */ -+#ifndef atomic_or -+# define atomic_or(mem, mask) \ -+ ({ __typeof (*(mem)) __oldval; \ -+ __typeof (mem) __memp = (mem); \ -+ __typeof (*(mem)) __mask = (mask); \ -+ \ -+ do \ -+ __oldval = (*__memp); \ -+ while (__builtin_expect (atomic_compare_and_exchange_bool_acq (__memp, \ -+ __oldval \ -+ | __mask, \ -+ __oldval),\ -+ 0)); \ -+ \ -+ __oldval; }) -+#endif - - #ifndef atomic_full_barrier - # define atomic_full_barrier() __asm ("" ::: "memory") ---- glibc-20060217T1609/include/features.h 5 Jan 2006 12:25:35 -0000 1.42 -+++ glibc-20060217T1609-fedora/include/features.h 6 Jan 2006 09:23:23 -0000 1.35.2.11 +--- glibc-20060301T0647/include/features.h 5 Jan 2006 12:25:35 -0000 1.42 ++++ glibc-20060301T0647-fedora/include/features.h 6 Jan 2006 09:23:23 -0000 1.35.2.11 @@ -275,7 +275,13 @@ #endif @@ -624,16 +565,16 @@ # if _FORTIFY_SOURCE > 1 # define __USE_FORTIFY_LEVEL 2 # else ---- glibc-20060217T1609/include/bits/stdlib-ldbl.h 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/include/bits/stdlib-ldbl.h 1 Feb 2006 09:30:43 -0000 1.1.2.1 +--- glibc-20060301T0647/include/bits/stdlib-ldbl.h 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/include/bits/stdlib-ldbl.h 1 Feb 2006 09:30:43 -0000 1.1.2.1 @@ -0,0 +1 @@ +#include ---- glibc-20060217T1609/include/bits/wchar-ldbl.h 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/include/bits/wchar-ldbl.h 1 Feb 2006 09:30:43 -0000 1.1.2.1 +--- glibc-20060301T0647/include/bits/wchar-ldbl.h 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/include/bits/wchar-ldbl.h 1 Feb 2006 09:30:43 -0000 1.1.2.1 @@ -0,0 +1 @@ +#include ---- glibc-20060217T1609/intl/locale.alias 4 Dec 2003 07:57:47 -0000 1.23 -+++ glibc-20060217T1609-fedora/intl/locale.alias 22 Sep 2004 21:20:53 -0000 1.23.2.1 +--- glibc-20060301T0647/intl/locale.alias 4 Dec 2003 07:57:47 -0000 1.23 ++++ glibc-20060301T0647-fedora/intl/locale.alias 22 Sep 2004 21:20:53 -0000 1.23.2.1 @@ -58,8 +58,6 @@ korean ko_KR.eucKR korean.euc ko_KR.eucKR ko_KR ko_KR.eucKR @@ -643,8 +584,8 @@ norwegian nb_NO.ISO-8859-1 nynorsk nn_NO.ISO-8859-1 polish pl_PL.ISO-8859-2 ---- glibc-20060217T1609/libio/stdio.h 16 Jan 2006 20:12:21 -0000 1.86 -+++ glibc-20060217T1609-fedora/libio/stdio.h 30 Jan 2006 09:29:46 -0000 1.78.2.8 +--- glibc-20060301T0647/libio/stdio.h 16 Jan 2006 20:12:21 -0000 1.86 ++++ glibc-20060301T0647-fedora/libio/stdio.h 30 Jan 2006 09:29:46 -0000 1.78.2.8 @@ -142,10 +142,12 @@ typedef _G_fpos64_t fpos64_t; extern struct _IO_FILE *stdin; /* Standard input stream. */ extern struct _IO_FILE *stdout; /* Standard output stream. */ @@ -658,8 +599,8 @@ __BEGIN_NAMESPACE_STD /* Remove file FILENAME. */ ---- glibc-20060217T1609/libio/bits/stdio2.h 19 Mar 2005 00:14:58 -0000 1.4 -+++ glibc-20060217T1609-fedora/libio/bits/stdio2.h 27 Jun 2005 13:04:16 -0000 1.1.2.6 +--- glibc-20060301T0647/libio/bits/stdio2.h 19 Mar 2005 00:14:58 -0000 1.4 ++++ glibc-20060301T0647-fedora/libio/bits/stdio2.h 27 Jun 2005 13:04:16 -0000 1.1.2.6 @@ -61,14 +61,25 @@ extern int __vfprintf_chk (FILE *__restr extern int __vprintf_chk (int __flag, __const char *__restrict __format, _G_va_list __ap); @@ -690,8 +631,8 @@ #endif ---- glibc-20060217T1609/locale/iso-4217.def 23 Sep 2005 19:07:54 -0000 1.18 -+++ glibc-20060217T1609-fedora/locale/iso-4217.def 3 Oct 2005 20:44:15 -0000 1.15.2.3 +--- glibc-20060301T0647/locale/iso-4217.def 23 Sep 2005 19:07:54 -0000 1.18 ++++ glibc-20060301T0647-fedora/locale/iso-4217.def 3 Oct 2005 20:44:15 -0000 1.15.2.3 @@ -8,6 +8,7 @@ * * !!! The list has to be sorted !!! @@ -783,8 +724,8 @@ DEFINE_INT_CURR("PYG") /* Paraguay Guarani */ DEFINE_INT_CURR("QAR") /* Qatar Rial */ DEFINE_INT_CURR("ROL") /* Romanian Leu */ ---- glibc-20060217T1609/locale/programs/3level.h 7 Dec 2005 05:47:27 -0000 1.6 -+++ glibc-20060217T1609-fedora/locale/programs/3level.h 19 Dec 2005 12:11:15 -0000 1.5.2.2 +--- glibc-20060301T0647/locale/programs/3level.h 7 Dec 2005 05:47:27 -0000 1.6 ++++ glibc-20060301T0647-fedora/locale/programs/3level.h 19 Dec 2005 12:11:15 -0000 1.5.2.2 @@ -202,6 +202,42 @@ CONCAT(TABLE,_iterate) (struct TABLE *t, } } @@ -828,8 +769,8 @@ #endif #ifndef NO_FINALIZE ---- glibc-20060217T1609/localedata/Makefile 25 Sep 2005 17:01:12 -0000 1.102 -+++ glibc-20060217T1609-fedora/localedata/Makefile 3 Oct 2005 20:44:15 -0000 1.101.2.2 +--- glibc-20060301T0647/localedata/Makefile 25 Sep 2005 17:01:12 -0000 1.102 ++++ glibc-20060301T0647-fedora/localedata/Makefile 3 Oct 2005 20:44:15 -0000 1.101.2.2 @@ -222,6 +222,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo echo -n '...'; \ input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ @@ -838,8 +779,8 @@ -i locales/$$input -c -f charmaps/$$charset \ $(addprefix --prefix=,$(install_root)) $$locale; \ echo ' done'; \ ---- glibc-20060217T1609/localedata/SUPPORTED 5 Nov 2005 16:25:49 -0000 1.87 -+++ glibc-20060217T1609-fedora/localedata/SUPPORTED 15 Nov 2005 08:21:56 -0000 1.71.2.8 +--- glibc-20060301T0647/localedata/SUPPORTED 5 Nov 2005 16:25:49 -0000 1.87 ++++ glibc-20060301T0647-fedora/localedata/SUPPORTED 15 Nov 2005 08:21:56 -0000 1.71.2.8 @@ -69,6 +69,7 @@ cy_GB.UTF-8/UTF-8 \ cy_GB/ISO-8859-14 \ da_DK.UTF-8/UTF-8 \ @@ -881,8 +822,8 @@ ta_IN/UTF-8 \ te_IN/UTF-8 \ tg_TJ.UTF-8/UTF-8 \ ---- glibc-20060217T1609/localedata/locales/cy_GB 28 Sep 2004 04:37:33 -0000 1.4 -+++ glibc-20060217T1609-fedora/localedata/locales/cy_GB 29 Sep 2004 08:48:23 -0000 1.3.2.2 +--- glibc-20060301T0647/localedata/locales/cy_GB 28 Sep 2004 04:37:33 -0000 1.4 ++++ glibc-20060301T0647-fedora/localedata/locales/cy_GB 29 Sep 2004 08:48:23 -0000 1.3.2.2 @@ -248,8 +248,11 @@ mon "" d_fmt "" @@ -897,8 +838,8 @@ END LC_TIME LC_MESSAGES ---- glibc-20060217T1609/localedata/locales/en_GB 31 Oct 2004 23:42:26 -0000 1.12 -+++ glibc-20060217T1609-fedora/localedata/locales/en_GB 2 Nov 2004 12:25:47 -0000 1.10.2.2 +--- glibc-20060301T0647/localedata/locales/en_GB 31 Oct 2004 23:42:26 -0000 1.12 ++++ glibc-20060301T0647-fedora/localedata/locales/en_GB 2 Nov 2004 12:25:47 -0000 1.10.2.2 @@ -112,8 +112,8 @@ mon "" d_fmt "" @@ -910,8 +851,8 @@ date_fmt "/ / " ---- glibc-20060217T1609/localedata/locales/no_NO 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/localedata/locales/no_NO 22 Sep 2004 21:21:01 -0000 1.11.2.1 +--- glibc-20060301T0647/localedata/locales/no_NO 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/localedata/locales/no_NO 22 Sep 2004 21:21:01 -0000 1.11.2.1 @@ -0,0 +1,69 @@ +escape_char / +comment_char % @@ -982,8 +923,8 @@ +LC_ADDRESS +copy "nb_NO" +END LC_ADDRESS ---- glibc-20060217T1609/localedata/locales/zh_TW 31 Oct 2004 23:42:28 -0000 1.7 -+++ glibc-20060217T1609-fedora/localedata/locales/zh_TW 2 Nov 2004 12:25:57 -0000 1.5.2.2 +--- glibc-20060301T0647/localedata/locales/zh_TW 31 Oct 2004 23:42:28 -0000 1.7 ++++ glibc-20060301T0647-fedora/localedata/locales/zh_TW 2 Nov 2004 12:25:57 -0000 1.5.2.2 @@ -1,7 +1,7 @@ comment_char % escape_char / @@ -1011,8 +952,8 @@ revision "0.2" date "2000-08-02" % ---- glibc-20060217T1609/malloc/mcheck.c 8 Sep 2004 20:36:02 -0000 1.18 -+++ glibc-20060217T1609-fedora/malloc/mcheck.c 20 Dec 2005 10:59:21 -0000 1.18.2.1 +--- glibc-20060301T0647/malloc/mcheck.c 8 Sep 2004 20:36:02 -0000 1.18 ++++ glibc-20060301T0647-fedora/malloc/mcheck.c 20 Dec 2005 10:59:21 -0000 1.18.2.1 @@ -24,9 +24,25 @@ # include # include @@ -1088,8 +1029,8 @@ old_free_hook = __free_hook; __free_hook = freehook; ---- glibc-20060217T1609/malloc/mtrace.c 14 Sep 2004 04:24:46 -0000 1.41 -+++ glibc-20060217T1609-fedora/malloc/mtrace.c 20 Dec 2005 10:59:21 -0000 1.41.2.1 +--- glibc-20060301T0647/malloc/mtrace.c 14 Sep 2004 04:24:46 -0000 1.41 ++++ glibc-20060301T0647-fedora/malloc/mtrace.c 20 Dec 2005 10:59:21 -0000 1.41.2.1 @@ -40,6 +40,18 @@ # include # define setvbuf(s, b, f, l) INTUSE(_IO_setvbuf) (s, b, f, l) @@ -1145,36 +1086,21 @@ __memalign_hook = tr_memalignhook; __malloc_hook = tr_mallochook; ---- glibc-20060217T1609/manual/filesys.texi 31 Dec 2005 13:11:27 -0000 1.99 -+++ glibc-20060217T1609-fedora/manual/filesys.texi 3 Feb 2006 09:43:54 -0000 1.96.2.4 -@@ -2806,7 +2806,7 @@ function. - - @comment sys/time.h - @comment BSD --@deftypefun int futimes (int *@var{fd}, struct timeval @var{tvp}@t{[2]}) -+@deftypefun int futimes (int @var{fd}, struct timeval @var{tvp}@t{[2]}) - This function is like @code{utimes}, except that it takes an open file - descriptor as an argument instead of a file name. @xref{Low-Level - I/O}. This function comes from FreeBSD, and is not available on all ---- glibc-20060217T1609/nptl/ChangeLog 17 Feb 2006 15:37:51 -0000 1.864 -+++ glibc-20060217T1609-fedora/nptl/ChangeLog 17 Feb 2006 16:18:19 -0000 1.706.2.79 -@@ -1,3 +1,15 @@ -+2006-02-17 Jakub Jelinek +--- glibc-20060301T0647/nptl/ChangeLog 1 Mar 2006 03:37:59 -0000 1.874 ++++ glibc-20060301T0647-fedora/nptl/ChangeLog 1 Mar 2006 07:44:56 -0000 1.706.2.81 +@@ -1,3 +1,11 @@ ++2006-03-01 Jakub Jelinek + -+ * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (lll_robust_mutex_dead, ++ * sysdeps/unix/sysv/linux/sparc/lowlevellock.h (lll_robust_mutex_dead, + lll_robust_mutex_trylock, lll_robust_mutex_lock, + lll_robust_mutex_cond_lock, lll_robust_mutex_timedlock, -+ lll_robust_mutex_unlock): New macros. ++ lll_robust_mutex_unlock): Define. + (__lll_robust_lock_wait, __lll_robust_timedlock_wait): New prototypes. -+ * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise. -+ * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise. -+ * sysdeps/unix/sysv/linux/ia64/lowlevellock.h: Likewise. -+ * sysdeps/unix/sysv/linux/lowlevelrobustlock.c: New file. + - 2006-02-17 Kaz Kojima + 2006-02-28 H.J. Lu - * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Add lll_robust_mutex_* -@@ -582,6 +594,15 @@ + * sysdeps/unix/sysv/linux/ia64/clone2.S: Include +@@ -690,6 +698,15 @@ Use __sigfillset. Document that sigfillset does the right thing wrt to SIGSETXID. @@ -1190,7 +1116,7 @@ 2005-07-11 Jakub Jelinek [BZ #1102] -@@ -1318,6 +1339,11 @@ +@@ -1426,6 +1443,11 @@ Move definition inside libpthread, libc, librt check. Provide definition for rtld. @@ -1202,7 +1128,7 @@ 2004-09-02 Ulrich Drepper * sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp. -@@ -3392,6 +3418,11 @@ +@@ -3500,6 +3522,11 @@ * Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules). @@ -1214,9 +1140,9 @@ 2003-07-25 Jakub Jelinek * tst-cancel17.c (do_test): Check if aio_cancel failed. ---- glibc-20060217T1609/nptl/Makefile 15 Feb 2006 16:52:28 -0000 1.177 -+++ glibc-20060217T1609-fedora/nptl/Makefile 17 Feb 2006 16:15:52 -0000 1.157.2.18 -@@ -514,15 +514,19 @@ $(addprefix $(objpfx), \ +--- glibc-20060301T0647/nptl/Makefile 28 Feb 2006 09:36:05 -0000 1.179 ++++ glibc-20060301T0647-fedora/nptl/Makefile 1 Mar 2006 06:55:40 -0000 1.157.2.19 +@@ -519,15 +519,19 @@ $(addprefix $(objpfx), \ $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ $(objpfx)libpthread_nonshared.a $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so @@ -1238,8 +1164,8 @@ else $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a endif ---- glibc-20060217T1609/nptl/tst-stackguard1.c 26 Jun 2005 17:44:14 -0000 1.1 -+++ glibc-20060217T1609-fedora/nptl/tst-stackguard1.c 8 Aug 2005 21:24:28 -0000 1.1.2.3 +--- glibc-20060301T0647/nptl/tst-stackguard1.c 26 Jun 2005 17:44:14 -0000 1.1 ++++ glibc-20060301T0647-fedora/nptl/tst-stackguard1.c 8 Aug 2005 21:24:28 -0000 1.1.2.3 @@ -190,17 +190,21 @@ do_test (void) the 16 runs, something is very wrong. */ int ndifferences = 0; @@ -1264,8 +1190,8 @@ { puts ("stack guard canaries are not randomized enough"); puts ("nor equal to the default canary value"); ---- glibc-20060217T1609/nptl/sysdeps/unix/sysv/linux/kernel-features.h 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/nptl/sysdeps/unix/sysv/linux/kernel-features.h 22 Sep 2004 21:21:02 -0000 1.1.2.1 +--- glibc-20060301T0647/nptl/sysdeps/unix/sysv/linux/kernel-features.h 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/nptl/sysdeps/unix/sysv/linux/kernel-features.h 22 Sep 2004 21:21:02 -0000 1.1.2.1 @@ -0,0 +1,6 @@ +#include_next + @@ -1273,114 +1199,10 @@ +#ifndef __ASSUME_CLONE_THREAD_FLAGS +# define __ASSUME_CLONE_THREAD_FLAGS 1 +#endif ---- glibc-20060217T1609/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/nptl/sysdeps/unix/sysv/linux/lowlevelrobustlock.c 17 Feb 2006 16:18:19 -0000 1.1.2.1 -@@ -0,0 +1,95 @@ -+/* Copyright (C) 2006 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ Contributed by Jakub Jelinek , 2006. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+ -+int -+__lll_robust_lock_wait (int *futex) -+{ -+ int oldval = *futex; -+ int tid = THREAD_GETMEM (THREAD_SELF, tid); -+ -+ do -+ { -+ if (__builtin_expect (oldval & FUTEX_OWNER_DIED, 0)) -+ return oldval; -+ -+ int newval = oldval | FUTEX_WAITERS; -+ if (oldval != newval -+ && atomic_compare_and_exchange_bool_acq (futex, newval, oldval)) -+ continue; -+ -+ lll_futex_wait (futex, newval); -+ } -+ while ((oldval = atomic_compare_and_exchange_val_acq (futex, tid, 0)) != 0); -+ return 0; -+} -+ -+ -+int -+__lll_robust_timedlock_wait (int *futex, const struct timespec *abstime) -+{ -+ /* Reject invalid timeouts. */ -+ if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000) -+ return EINVAL; -+ -+ int tid = THREAD_GETMEM (THREAD_SELF, tid); -+ -+ do -+ { -+ struct timeval tv; -+ struct timespec rt; -+ -+ /* Get the current time. */ -+ (void) __gettimeofday (&tv, NULL); -+ -+ /* Compute relative timeout. */ -+ rt.tv_sec = abstime->tv_sec - tv.tv_sec; -+ rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000; -+ if (rt.tv_nsec < 0) -+ { -+ rt.tv_nsec += 1000000000; -+ --rt.tv_sec; -+ } -+ -+ /* Already timed out? */ -+ if (rt.tv_sec < 0) -+ return ETIMEDOUT; -+ -+ /* Wait. */ -+ int oldval = *futex; -+ if (__builtin_expect (oldval & FUTEX_OWNER_DIED, 0)) -+ return oldval; -+ -+ int newval = oldval | FUTEX_WAITERS; -+ if (oldval != newval -+ && atomic_compare_and_exchange_bool_acq (futex, newval, oldval)) -+ continue; -+ -+ lll_futex_timed_wait (futex, newval, &rt); -+ } -+ while (atomic_compare_and_exchange_bool_acq (futex, tid, 0)); -+ -+ return 0; -+} ---- glibc-20060217T1609/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h 8 Sep 2005 17:39:04 -0000 1.6 -+++ glibc-20060217T1609-fedora/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h 17 Feb 2006 16:18:19 -0000 1.5.2.2 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. -+/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -64,6 +64,15 @@ - INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret; \ +--- glibc-20060301T0647/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h 3 Jan 2006 23:42:57 -0000 1.6 ++++ glibc-20060301T0647-fedora/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h 1 Mar 2006 07:44:57 -0000 1.4.2.3 +@@ -78,6 +78,15 @@ + INTERNAL_SYSCALL_ERROR_P (__ret, __err); \ }) +#define lll_robust_mutex_dead(futexv) \ @@ -1393,30 +1215,34 @@ + while (0) + /* Returns non-zero if error happened, zero if success. */ - #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val) \ - ({ \ -@@ -106,7 +115,16 @@ __lll_mutex_cond_trylock(int *futex) - #define lll_mutex_cond_trylock(lock) __lll_mutex_cond_trylock (&(lock)) + #ifdef __sparc32_atomic_do_lock + /* Avoid FUTEX_WAKE_OP if supporting pre-v9 CPUs. */ +@@ -112,9 +121,18 @@ __lll_mutex_cond_trylock (int *futex) + } + #define lll_mutex_cond_trylock(futex) __lll_mutex_cond_trylock (&(futex)) - -+static inline int __attribute__((always_inline)) -+__lll_robust_mutex_trylock(int *futex, int id) ++static inline int ++__attribute__ ((always_inline)) ++__lll_robust_mutex_trylock (int *futex, int id) +{ + return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0; +} -+#define lll_robust_mutex_trylock(lock, id) \ -+ __lll_robust_mutex_trylock (&(lock), id) ++#define lll_robust_mutex_trylock(futex, id) \ ++ __lll_robust_mutex_trylock (&(futex), id) + + extern void __lll_lock_wait (int *futex) attribute_hidden; +- +extern int __lll_robust_lock_wait (int *futex) attribute_hidden; - static inline void __attribute__((always_inline)) - __lll_mutex_lock(int *futex) -@@ -117,6 +135,18 @@ __lll_mutex_lock(int *futex) + static inline void + __attribute__ ((always_inline)) +@@ -127,6 +145,17 @@ __lll_mutex_lock (int *futex) + } #define lll_mutex_lock(futex) __lll_mutex_lock (&(futex)) - -+static inline int __attribute__ ((always_inline)) ++static inline int ++__attribute__ ((always_inline)) +__lll_robust_mutex_lock (int *futex, int id) +{ + int result = 0; @@ -1426,424 +1252,26 @@ +} +#define lll_robust_mutex_lock(futex, id) \ + __lll_robust_mutex_lock (&(futex), id) -+ -+ - static inline void __attribute__ ((always_inline)) - __lll_mutex_cond_lock (int *futex) - { -@@ -126,8 +156,14 @@ __lll_mutex_cond_lock (int *futex) - #define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex)) + static inline void + __attribute__ ((always_inline)) +@@ -139,10 +168,14 @@ __lll_mutex_cond_lock (int *futex) + } + #define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex)) +#define lll_robust_mutex_cond_lock(futex, id) \ + __lll_robust_mutex_lock (&(futex), (id) | FUTEX_WAITERS) + -+ - extern int __lll_timedlock_wait (int *futex, const struct timespec *) - attribute_hidden; -+extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *) -+ attribute_hidden; - static inline int __attribute__ ((always_inline)) - __lll_mutex_timedlock (int *futex, const struct timespec *abstime) -@@ -141,6 +177,19 @@ __lll_mutex_timedlock (int *futex, const - __lll_mutex_timedlock (&(futex), abstime) - - -+static inline int __attribute__ ((always_inline)) -+__lll_robust_mutex_timedlock (int *futex, const struct timespec *abstime, -+ int id) -+{ -+ int result = 0; -+ if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0) -+ result = __lll_robust_timedlock_wait (futex, abstime); -+ return result; -+} -+#define lll_robust_mutex_timedlock(futex, abstime, id) \ -+ __lll_robust_mutex_timedlock (&(futex), abstime, id) -+ -+ - static inline void __attribute__ ((always_inline)) - __lll_mutex_unlock (int *futex) - { -@@ -152,6 +201,17 @@ __lll_mutex_unlock (int *futex) - - - static inline void __attribute__ ((always_inline)) -+__lll_robust_mutex_unlock (int *futex, int mask) -+{ -+ int val = atomic_exchange_rel (futex, 0); -+ if (__builtin_expect (val & mask, 0)) -+ lll_futex_wake (futex, 1); -+} -+#define lll_robust_mutex_unlock(futex) \ -+ __lll_robust_mutex_unlock(&(futex), FUTEX_WAITERS) -+ -+ -+static inline void __attribute__ ((always_inline)) - __lll_mutex_unlock_force (int *futex) - { - (void) atomic_exchange_rel (futex, 0); ---- glibc-20060217T1609/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h 8 Sep 2005 17:39:05 -0000 1.18 -+++ glibc-20060217T1609-fedora/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h 17 Feb 2006 16:18:19 -0000 1.17.2.2 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. -+/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Jakub Jelinek , 2003. - -@@ -55,6 +55,15 @@ - _r10 == -1 ? -_retval : _retval; \ - }) - -+#define lll_robust_mutex_dead(futexv) \ -+do \ -+ { \ -+ int *__futexp = &(futexv); \ -+ atomic_or (__futexp, FUTEX_OWNER_DIED); \ -+ DO_INLINE_SYSCALL(futex, 3, (long) __futexp, FUTEX_WAKE, 1); \ -+ } \ -+while (0) -+ - /* Returns non-zero if error happened, zero if success. */ - #define lll_futex_requeue(ftx, nr_wake, nr_move, mutex, val) \ - ({ \ -@@ -79,12 +88,19 @@ - #define lll_mutex_trylock(futex) __lll_mutex_trylock (&(futex)) - - -+#define __lll_robust_mutex_trylock(futex, id) \ -+ (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0) -+#define lll_robust_mutex_trylock(futex, id) \ -+ __lll_robust_mutex_trylock (&(futex), id) -+ -+ - #define __lll_mutex_cond_trylock(futex) \ - (atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0) - #define lll_mutex_cond_trylock(futex) __lll_mutex_cond_trylock (&(futex)) - - - extern void __lll_lock_wait (int *futex) attribute_hidden; -+extern int __lll_robust_lock_wait (int *futex) attribute_hidden; - - - #define __lll_mutex_lock(futex) \ -@@ -96,6 +112,18 @@ extern void __lll_lock_wait (int *futex) - #define lll_mutex_lock(futex) __lll_mutex_lock (&(futex)) - - -+#define __lll_robust_mutex_lock(futex, id) \ -+ ({ \ -+ int *__futex = (futex); \ -+ int __val = 0; \ -+ \ -+ if (atomic_compare_and_exchange_bool_acq (__futex, id, 0) != 0) \ -+ __val = __lll_robust_lock_wait (__futex); \ -+ __val; \ -+ }) -+#define lll_robust_mutex_lock(futex, id) __lll_robust_mutex_lock (&(futex), id) -+ -+ - #define __lll_mutex_cond_lock(futex) \ - ((void) ({ \ - int *__futex = (futex); \ -@@ -105,8 +133,24 @@ extern void __lll_lock_wait (int *futex) - #define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex)) - - -+#define __lll_robust_mutex_cond_lock(futex, id) \ -+ ({ \ -+ int *__futex = (futex); \ -+ int __val = 0; \ -+ int __id = (id) | FUTEX_WAITERS; \ -+ \ -+ if (atomic_compare_and_exchange_bool_acq (__futex, __id, 0) != 0) \ -+ __val = __lll_robust_lock_wait (__futex); \ -+ __val; \ -+ }) -+#define lll_robust_mutex_cond_lock(futex, id) \ -+ __lll_robust_mutex_cond_lock (&(futex), id) -+ -+ extern int __lll_timedlock_wait (int *futex, const struct timespec *) attribute_hidden; +- +extern int __lll_robust_timedlock_wait (int *futex, const struct timespec *) + attribute_hidden; - - #define __lll_mutex_timedlock(futex, abstime) \ -@@ -122,6 +166,19 @@ extern int __lll_timedlock_wait (int *fu - __lll_mutex_timedlock (&(futex), abstime) - - -+#define __lll_robust_mutex_timedlock(futex, abstime, id) \ -+ ({ \ -+ int *__futex = (futex); \ -+ int __val = 0; \ -+ \ -+ if (atomic_compare_and_exchange_bool_acq (__futex, id, 0) != 0) \ -+ __val = __lll_robust_timedlock_wait (__futex, abstime); \ -+ __val; \ -+ }) -+#define lll_robust_mutex_timedlock(futex, abstime, id) \ -+ __lll_robust_mutex_timedlock (&(futex), abstime, id) -+ -+ - #define __lll_mutex_unlock(futex) \ - ((void) ({ \ - int *__futex = (futex); \ -@@ -134,6 +191,18 @@ extern int __lll_timedlock_wait (int *fu - __lll_mutex_unlock(&(futex)) - - -+#define __lll_robust_mutex_unlock(futex) \ -+ ((void) ({ \ -+ int *__futex = (futex); \ -+ int __val = atomic_exchange_rel (__futex, 0); \ -+ \ -+ if (__builtin_expect (__val & FUTEX_WAITERS, 0)) \ -+ lll_futex_wake (__futex, 1); \ -+ })) -+#define lll_robust_mutex_unlock(futex) \ -+ __lll_robust_mutex_unlock(&(futex)) -+ -+ - #define __lll_mutex_unlock_force(futex) \ - ((void) ({ \ - int *__futex = (futex); \ ---- glibc-20060217T1609/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 8 Sep 2005 17:39:06 -0000 1.20 -+++ glibc-20060217T1609-fedora/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 17 Feb 2006 16:18:19 -0000 1.18.2.3 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. -+/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Paul Mackerras , 2003. - -@@ -69,6 +69,17 @@ - INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret; \ - }) - -+#define lll_robust_mutex_dead(futexv) \ -+ do \ -+ { \ -+ INTERNAL_SYSCALL_DECL (__err); \ -+ int *__futexp = &(futexv); \ -+ \ -+ atomic_or (__futexp, FUTEX_OWNER_DIED); \ -+ INTERNAL_SYSCALL (futex, __err, 4, __futexp, FUTEX_WAKE, 1, 0); \ -+ } \ -+ while (0) -+ - /* Returns non-zero if error happened, zero if success. */ - #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val) \ - ({ \ -@@ -102,8 +113,8 @@ - # define __lll_rel_instr "sync" - #endif - --/* Set *futex to 1 if it is 0, atomically. Returns the old value */ --#define __lll_trylock(futex) \ -+/* Set *futex to ID if it is 0, atomically. Returns the old value */ -+#define __lll_robust_trylock(futex, id) \ - ({ int __val; \ - __asm __volatile ("1: lwarx %0,0,%2\n" \ - " cmpwi 0,%0,0\n" \ -@@ -112,31 +123,26 @@ - " bne- 1b\n" \ - "2: " __lll_acq_instr \ - : "=&r" (__val), "=m" (*futex) \ -- : "r" (futex), "r" (1), "m" (*futex) \ -+ : "r" (futex), "r" (id), "m" (*futex) \ - : "cr0", "memory"); \ - __val; \ - }) - -+#define lll_robust_mutex_trylock(lock, id) __lll_robust_trylock (&(lock), id) -+ -+/* Set *futex to 1 if it is 0, atomically. Returns the old value */ -+#define __lll_trylock(futex) __lll_robust_trylock (futex, 1) -+ - #define lll_mutex_trylock(lock) __lll_trylock (&(lock)) - - /* Set *futex to 2 if it is 0, atomically. Returns the old value */ --#define __lll_cond_trylock(futex) \ -- ({ int __val; \ -- __asm __volatile ("1: lwarx %0,0,%2\n" \ -- " cmpwi 0,%0,0\n" \ -- " bne 2f\n" \ -- " stwcx. %3,0,%2\n" \ -- " bne- 1b\n" \ -- "2: " __lll_acq_instr \ -- : "=&r" (__val), "=m" (*futex) \ -- : "r" (futex), "r" (2), "m" (*futex) \ -- : "cr0", "memory"); \ -- __val; \ -- }) -+#define __lll_cond_trylock(futex) __lll_robust_trylock (futex, 2) -+ - #define lll_mutex_cond_trylock(lock) __lll_cond_trylock (&(lock)) - - - extern void __lll_lock_wait (int *futex) attribute_hidden; -+extern int __lll_robust_lock_wait (int *futex) attribute_hidden; - - #define lll_mutex_lock(lock) \ - (void) ({ \ -@@ -146,6 +152,16 @@ extern void __lll_lock_wait (int *futex) - __lll_lock_wait (__futex); \ - }) - -+#define lll_robust_mutex_lock(lock, id) \ -+ ({ \ -+ int *__futex = &(lock); \ -+ int __val = 0; \ -+ if (__builtin_expect (atomic_compare_and_exchange_bool_acq (__futex, id, \ -+ 0), 0)) \ -+ __val = __lll_robust_lock_wait (__futex); \ -+ __val; \ -+ }) -+ - #define lll_mutex_cond_lock(lock) \ - (void) ({ \ - int *__futex = &(lock); \ -@@ -154,8 +170,22 @@ extern void __lll_lock_wait (int *futex) - __lll_lock_wait (__futex); \ - }) - -+#define lll_robust_mutex_cond_lock(lock, id) \ -+ ({ \ -+ int *__futex = &(lock); \ -+ int __val = 0; \ -+ int __id = id | FUTEX_WAITERS; \ -+ if (__builtin_expect (atomic_compare_and_exchange_bool_acq (__futex, __id,\ -+ 0), 0)) \ -+ __val = __lll_robust_lock_wait (__futex); \ -+ __val; \ -+ }) -+ -+ - extern int __lll_timedlock_wait - (int *futex, const struct timespec *) attribute_hidden; -+extern int __lll_robust_timedlock_wait -+ (int *futex, const struct timespec *) attribute_hidden; - - #define lll_mutex_timedlock(lock, abstime) \ - ({ \ -@@ -167,6 +197,16 @@ extern int __lll_timedlock_wait - __val; \ - }) - -+#define lll_robust_mutex_timedlock(lock, abstime, id) \ -+ ({ \ -+ int *__futex = &(lock); \ -+ int __val = 0; \ -+ if (__builtin_expect (atomic_compare_and_exchange_bool_acq (__futex, id, \ -+ 0), 0)) \ -+ __val = __lll_robust_timedlock_wait (__futex, abstime); \ -+ __val; \ -+ }) -+ - #define lll_mutex_unlock(lock) \ - ((void) ({ \ - int *__futex = &(lock); \ -@@ -175,6 +215,14 @@ extern int __lll_timedlock_wait - lll_futex_wake (__futex, 1); \ - })) - -+#define lll_robust_mutex_unlock(lock) \ -+ ((void) ({ \ -+ int *__futex = &(lock); \ -+ int __val = atomic_exchange_rel (__futex, 0); \ -+ if (__builtin_expect (__val & FUTEX_WAITERS, 0)) \ -+ lll_futex_wake (__futex, 1); \ -+ })) -+ - #define lll_mutex_unlock_force(lock) \ - ((void) ({ \ - int *__futex = &(lock); \ ---- glibc-20060217T1609/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h 8 Sep 2005 17:39:06 -0000 1.13 -+++ glibc-20060217T1609-fedora/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h 17 Feb 2006 16:18:21 -0000 1.12.2.2 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2003, 2004 Free Software Foundation, Inc. -+/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Martin Schwidefsky , 2003. - -@@ -85,6 +85,17 @@ - }) - - -+#define lll_robust_mutex_dead(futexv) \ -+ do \ -+ { \ -+ int *__futexp = &(futexv); \ -+ \ -+ atomic_or (__futexp, FUTEX_OWNER_DIED); \ -+ lll_futex_wake (__futexp, 1); \ -+ } \ -+ while (0) -+ -+ - /* Returns non-zero if error happened, zero if success. */ - #define lll_futex_requeue(futex, nr_wake, nr_move, mutex, val) \ - ({ \ -@@ -167,7 +178,23 @@ __lll_mutex_cond_trylock (int *futex) - #define lll_mutex_cond_trylock(futex) __lll_mutex_cond_trylock (&(futex)) - - -+static inline int -+__attribute__ ((always_inline)) -+__lll_robust_mutex_trylock (int *futex, int id) -+{ -+ unsigned int old; -+ -+ __asm __volatile ("cs %0,%3,%1" -+ : "=d" (old), "=Q" (*futex) -+ : "0" (0), "d" (id), "m" (*futex) : "cc", "memory" ); -+ return old != 0; -+} -+#define lll_robust_mutex_trylock(futex, id) \ -+ __lll_robust_mutex_trylock (&(futex), id) -+ -+ - extern void __lll_lock_wait (int *futex) attribute_hidden; -+extern int __lll_robust_lock_wait (int *futex) attribute_hidden; - - static inline void - __attribute__ ((always_inline)) -@@ -178,6 +205,17 @@ __lll_mutex_lock (int *futex) - } - #define lll_mutex_lock(futex) __lll_mutex_lock (&(futex)) - -+static inline int -+__attribute__ ((always_inline)) -+__lll_robust_mutex_lock (int *futex, int id) -+{ -+ int result = 0; -+ if (atomic_compare_and_exchange_bool_acq (futex, id, 0) != 0) -+ result = __lll_robust_lock_wait (futex); -+ return result; -+} -+#define lll_robust_mutex_lock(futex, id) __lll_robust_mutex_lock (&(futex), id) -+ - static inline void - __attribute__ ((always_inline)) - __lll_mutex_cond_lock (int *futex) -@@ -187,8 +225,13 @@ __lll_mutex_cond_lock (int *futex) - } - #define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex)) - -+#define lll_robust_mutex_cond_lock(futex, id) \ -+ __lll_robust_mutex_lock (&(futex), (id) | FUTEX_WAITERS) -+ - extern int __lll_timedlock_wait - (int *futex, const struct timespec *) attribute_hidden; -+extern int __lll_robust_timedlock_wait -+ (int *futex, const struct timespec *) attribute_hidden; - static inline int __attribute__ ((always_inline)) -@@ -202,6 +245,19 @@ __lll_mutex_timedlock (int *futex, const +@@ -158,6 +191,19 @@ __lll_mutex_timedlock (int *futex, const #define lll_mutex_timedlock(futex, abstime) \ __lll_mutex_timedlock (&(futex), abstime) @@ -1860,33 +1288,26 @@ +#define lll_robust_mutex_timedlock(futex, abstime, id) \ + __lll_robust_mutex_timedlock (&(futex), abstime, id) + + #define lll_mutex_unlock(lock) \ + ((void) ({ \ + int *__futex = &(lock); \ +@@ -166,6 +212,14 @@ __lll_mutex_timedlock (int *futex, const + lll_futex_wake (__futex, 1); \ + })) - static inline void - __attribute__ ((always_inline)) -@@ -220,6 +276,21 @@ __lll_mutex_unlock (int *futex) - - static inline void - __attribute__ ((always_inline)) -+__lll_robust_mutex_unlock (int *futex, int mask) -+{ -+ int oldval; -+ int newval = 0; ++#define lll_robust_mutex_unlock(lock) \ ++ ((void) ({ \ ++ int *__futex = &(lock); \ ++ int __val = atomic_exchange_rel (__futex, 0); \ ++ if (__builtin_expect (__val & FUTEX_WAITERS, 0)) \ ++ lll_futex_wake (__futex, 1); \ ++ })) + -+ lll_compare_and_swap (futex, oldval, newval, "slr %2,%2"); -+ if (oldval & mask) -+ lll_futex_wake (futex, 1); -+} -+#define lll_robust_mutex_unlock(futex) \ -+ __lll_robust_mutex_unlock(&(futex), FUTEX_WAITERS) -+ -+ -+static inline void -+__attribute__ ((always_inline)) - __lll_mutex_unlock_force (int *futex) - { - *futex = 0; ---- glibc-20060217T1609/nscd/connections.c 3 Jan 2006 21:26:28 -0000 1.82 -+++ glibc-20060217T1609-fedora/nscd/connections.c 4 Jan 2006 07:58:21 -0000 1.55.2.19 + #define lll_mutex_unlock_force(lock) \ + ((void) ({ \ + int *__futex = &(lock); \ +--- glibc-20060301T0647/nscd/connections.c 3 Jan 2006 21:26:28 -0000 1.82 ++++ glibc-20060301T0647-fedora/nscd/connections.c 4 Jan 2006 07:58:21 -0000 1.55.2.19 @@ -1873,3 +1873,18 @@ finish_drop_privileges (void) exit (4); } @@ -1906,8 +1327,8 @@ + prune_cache (&dbs[hstdb], LONG_MAX); +} + ---- glibc-20060217T1609/nscd/nscd.c 1 Jan 2006 19:15:56 -0000 1.51 -+++ glibc-20060217T1609-fedora/nscd/nscd.c 2 Jan 2006 10:52:53 -0000 1.38.2.11 +--- glibc-20060301T0647/nscd/nscd.c 1 Jan 2006 19:15:56 -0000 1.51 ++++ glibc-20060301T0647-fedora/nscd/nscd.c 2 Jan 2006 10:52:53 -0000 1.38.2.11 @@ -119,6 +119,9 @@ static struct argp argp = options, parse_opt, NULL, doc, }; @@ -1926,8 +1347,8 @@ signal (SIGPIPE, SIG_IGN); /* Cleanup files created by a previous 'bind'. */ ---- glibc-20060217T1609/nscd/nscd.conf 23 Aug 2005 23:17:32 -0000 1.11 -+++ glibc-20060217T1609-fedora/nscd/nscd.conf 24 Aug 2005 07:23:30 -0000 1.8.2.3 +--- glibc-20060301T0647/nscd/nscd.conf 23 Aug 2005 23:17:32 -0000 1.11 ++++ glibc-20060301T0647-fedora/nscd/nscd.conf 24 Aug 2005 07:23:30 -0000 1.8.2.3 @@ -32,8 +32,8 @@ # logfile /var/log/nscd.log # threads 6 @@ -1939,8 +1360,8 @@ debug-level 0 # reload-count 5 paranoia no ---- glibc-20060217T1609/nscd/nscd.init 20 Jun 2005 15:47:52 -0000 1.9 -+++ glibc-20060217T1609-fedora/nscd/nscd.init 12 Sep 2005 12:53:20 -0000 1.6.2.4 +--- glibc-20060301T0647/nscd/nscd.init 20 Jun 2005 15:47:52 -0000 1.9 ++++ glibc-20060301T0647-fedora/nscd/nscd.init 12 Sep 2005 12:53:20 -0000 1.6.2.4 @@ -9,6 +9,7 @@ # slow naming services like NIS, NIS+, LDAP, or hesiod. # processname: /usr/sbin/nscd @@ -1981,19 +1402,8 @@ RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nscd ---- glibc-20060217T1609/nscd/selinux.c 29 Dec 2005 00:44:09 -0000 1.6 -+++ glibc-20060217T1609-fedora/nscd/selinux.c 2 Jan 2006 10:52:53 -0000 1.1.2.6 -@@ -147,7 +147,7 @@ audit_init (void) - if (audit_fd < 0 - /* If kernel doesn't support audit, bail out */ - && errno != EINVAL && errno != EPROTONOSUPPORT && errno != EAFNOSUPPORT) -- dbg_log (_("Failed opening connection to the audit subsystem")); -+ dbg_log (_("Failed opening connection to the audit subsystem: %m")); - } - #endif /* HAVE_LIBAUDIT */ - ---- glibc-20060217T1609/posix/Makefile 8 Jan 2006 09:39:15 -0000 1.188 -+++ glibc-20060217T1609-fedora/posix/Makefile 9 Jan 2006 21:55:00 -0000 1.171.2.16 +--- glibc-20060301T0647/posix/Makefile 8 Jan 2006 09:39:15 -0000 1.188 ++++ glibc-20060301T0647-fedora/posix/Makefile 9 Jan 2006 21:55:00 -0000 1.171.2.16 @@ -107,7 +107,8 @@ generated := $(addprefix wordexp-test-re bug-regex21-mem bug-regex21.mtrace \ tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \ @@ -2027,8 +1437,8 @@ + | sed -n -e '/START_OF_STRINGS/,$${/POSIX_V6_/{s/^[^"]*"//;s/".*$$//;p}}' \ + > $@.new + mv -f $@.new $@ ---- glibc-20060217T1609/posix/getconf.speclist.h 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/posix/getconf.speclist.h 13 Dec 2004 23:32:37 -0000 1.1.2.2 +--- glibc-20060301T0647/posix/getconf.speclist.h 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/posix/getconf.speclist.h 13 Dec 2004 23:32:37 -0000 1.1.2.2 @@ -0,0 +1,15 @@ +#include +const char *START_OF_STRINGS = @@ -2045,8 +1455,8 @@ +"POSIX_V6_LPBIG_OFFBIG" +#endif +""; ---- glibc-20060217T1609/sysdeps/generic/dl-cache.h 25 Jun 2003 08:01:22 -0000 1.13 -+++ glibc-20060217T1609-fedora/sysdeps/generic/dl-cache.h 22 Sep 2004 21:21:07 -0000 1.13.2.1 +--- glibc-20060301T0647/sysdeps/generic/dl-cache.h 25 Jun 2003 08:01:22 -0000 1.13 ++++ glibc-20060301T0647-fedora/sysdeps/generic/dl-cache.h 22 Sep 2004 21:21:07 -0000 1.13.2.1 @@ -36,6 +36,14 @@ # define add_system_dir(dir) add_dir (dir) #endif @@ -2062,8 +1472,8 @@ #define CACHEMAGIC "ld.so-1.7.0" /* libc5 and glibc 2.0/2.1 use the same format. For glibc 2.2 another ---- glibc-20060217T1609/sysdeps/ia64/Makefile 16 Aug 2004 06:46:14 -0000 1.10 -+++ glibc-20060217T1609-fedora/sysdeps/ia64/Makefile 22 Sep 2004 21:21:07 -0000 1.10.2.1 +--- glibc-20060301T0647/sysdeps/ia64/Makefile 16 Aug 2004 06:46:14 -0000 1.10 ++++ glibc-20060301T0647-fedora/sysdeps/ia64/Makefile 22 Sep 2004 21:21:07 -0000 1.10.2.1 @@ -12,8 +12,8 @@ elide-routines.os += hp-timing ifeq (yes,$(build-shared)) @@ -2075,8 +1485,8 @@ endif endif ---- glibc-20060217T1609/sysdeps/ia64/ia64libgcc.S 11 May 2002 05:12:35 -0000 1.2 -+++ glibc-20060217T1609-fedora/sysdeps/ia64/ia64libgcc.S 22 Sep 2004 21:21:07 -0000 1.2.2.1 +--- glibc-20060301T0647/sysdeps/ia64/ia64libgcc.S 11 May 2002 05:12:35 -0000 1.2 ++++ glibc-20060301T0647-fedora/sysdeps/ia64/ia64libgcc.S 22 Sep 2004 21:21:07 -0000 1.2.2.1 @@ -1,350 +0,0 @@ -/* From the Intel IA-64 Optimization Guide, choose the minimum latency - alternative. */ @@ -2428,8 +1838,8 @@ - .symver ___multi3, __multi3@GLIBC_2.2 - -#endif ---- glibc-20060217T1609/sysdeps/ia64/libgcc-compat.c 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/sysdeps/ia64/libgcc-compat.c 22 Sep 2004 21:21:08 -0000 1.1.2.1 +--- glibc-20060301T0647/sysdeps/ia64/libgcc-compat.c 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/sysdeps/ia64/libgcc-compat.c 22 Sep 2004 21:21:08 -0000 1.1.2.1 @@ -0,0 +1,84 @@ +/* pre-.hidden libgcc compatibility + Copyright (C) 2002 Free Software Foundation, Inc. @@ -2515,8 +1925,8 @@ +symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2); + +#endif ---- glibc-20060217T1609/sysdeps/unix/nice.c 28 Sep 2002 19:13:13 -0000 1.6 -+++ glibc-20060217T1609-fedora/sysdeps/unix/nice.c 22 Sep 2004 21:21:08 -0000 1.6.2.1 +--- glibc-20060301T0647/sysdeps/unix/nice.c 28 Sep 2002 19:13:13 -0000 1.6 ++++ glibc-20060301T0647-fedora/sysdeps/unix/nice.c 22 Sep 2004 21:21:08 -0000 1.6.2.1 @@ -41,7 +41,12 @@ nice (int incr) __set_errno (save); } @@ -2531,8 +1941,8 @@ if (result != -1) return getpriority (PRIO_PROCESS, 0); else ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/dl-osinfo.h 8 Jan 2006 08:21:15 -0000 1.22 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/dl-osinfo.h 9 Jan 2006 21:55:08 -0000 1.14.2.8 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/dl-osinfo.h 8 Jan 2006 08:21:15 -0000 1.22 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/dl-osinfo.h 9 Jan 2006 21:55:08 -0000 1.14.2.8 @@ -18,12 +18,15 @@ 02111-1307 USA. */ @@ -2581,8 +1991,8 @@ + ret ^= stk; return ret; } ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/futimesat.c 3 Feb 2006 05:26:34 -0000 1.6 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/futimesat.c 3 Feb 2006 09:43:55 -0000 1.1.2.7 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/futimesat.c 3 Feb 2006 05:26:34 -0000 1.6 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/futimesat.c 3 Feb 2006 09:43:55 -0000 1.1.2.7 @@ -37,14 +37,14 @@ futimesat (fd, file, tvp) { int result; @@ -2625,8 +2035,8 @@ { size_t filelen = strlen (file); static const char procfd[] = "/proc/self/fd/%d/%s"; ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/paths.h 15 Nov 2000 23:06:47 -0000 1.11 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/paths.h 22 Sep 2004 21:21:08 -0000 1.11.4.1 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/paths.h 15 Nov 2000 23:06:47 -0000 1.11 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/paths.h 22 Sep 2004 21:21:08 -0000 1.11.4.1 @@ -61,7 +61,7 @@ #define _PATH_TTY "/dev/tty" #define _PATH_UNIX "/boot/vmlinux" @@ -2636,8 +2046,8 @@ #define _PATH_WTMP "/var/log/wtmp" /* Provide trailing slash, since mostly used for building pathnames. */ ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/tcsetattr.c 10 Sep 2003 19:16:07 -0000 1.16 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/tcsetattr.c 22 Sep 2004 21:21:08 -0000 1.16.2.1 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/tcsetattr.c 10 Sep 2003 19:16:07 -0000 1.16 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/tcsetattr.c 22 Sep 2004 21:21:08 -0000 1.16.2.1 @@ -49,6 +49,7 @@ tcsetattr (fd, optional_actions, termios { struct __kernel_termios k_termios; @@ -2683,8 +2093,8 @@ + return retval; } libc_hidden_def (tcsetattr) ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/i386/dl-cache.h 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/i386/dl-cache.h 22 Sep 2004 21:21:08 -0000 1.1.2.1 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/i386/dl-cache.h 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/i386/dl-cache.h 22 Sep 2004 21:21:08 -0000 1.1.2.1 @@ -0,0 +1,59 @@ +/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. + Copyright (C) 2004 Free Software Foundation, Inc. @@ -2745,8 +2155,8 @@ + } while (0) + +#include_next ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/ia64/dl-cache.h 6 Jul 2001 04:56:17 -0000 1.2 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/ia64/dl-cache.h 22 Sep 2004 21:21:09 -0000 1.2.4.1 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/ia64/dl-cache.h 6 Jul 2001 04:56:17 -0000 1.2 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/ia64/dl-cache.h 22 Sep 2004 21:21:09 -0000 1.2.4.1 @@ -22,4 +22,31 @@ #define _dl_cache_check_flags(flags) \ ((flags) == _DL_CACHE_DEFAULT_ID) @@ -2779,24 +2189,24 @@ + } while (0) + #include_next ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 22 Sep 2004 21:21:09 -0000 1.1.2.1 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 22 Sep 2004 21:21:09 -0000 1.1.2.1 @@ -0,0 +1,5 @@ +#ifdef IS_IN_ldconfig +#include +#else +#include +#endif ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 1 Jan 1970 00:00:00 -0000 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 22 Sep 2004 21:21:09 -0000 1.1.2.1 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 1 Jan 1970 00:00:00 -0000 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 22 Sep 2004 21:21:09 -0000 1.1.2.1 @@ -0,0 +1,5 @@ +#ifdef IS_IN_ldconfig +#include +#else +#include +#endif ---- glibc-20060217T1609/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed 17 Jan 2002 06:49:28 -0000 1.2 -+++ glibc-20060217T1609-fedora/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed 22 Sep 2004 21:21:09 -0000 1.2.2.1 +--- glibc-20060301T0647/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed 17 Jan 2002 06:49:28 -0000 1.2 ++++ glibc-20060301T0647-fedora/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed 22 Sep 2004 21:21:09 -0000 1.2.2.1 @@ -1 +1 @@ -s_^\(RTLDLIST=\)\([^ ]*\)-ia64\(\.so\.[0-9.]*\)[ ]*$_\1"\2-ia64\3 \2\3"_ +s_^\(RTLDLIST=\)\([^ ]*\)-ia64\(\.so\.[0-9.]*\)[ ]*$_\1"\2-ia64\3 /emul/ia32-linux\2\3"_ diff --git a/glibc.spec b/glibc.spec index 204d4c7..1a0d89c 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,9 +1,9 @@ -%define glibcdate 20060217T1609 +%define glibcdate 20060301T0647 %define glibcname glibc -%define glibcsrcdir glibc-20060217T1609 +%define glibcsrcdir glibc-20060301T0647 %define glibc_release_tarballs 0 %define glibcversion 2.3.90 -%define glibcrelease 38 +%define glibcrelease 39 %define auxarches i586 i686 athlon sparcv9 alphaev6 %define prelinkarches noarch %define xenarches i686 athlon @@ -631,10 +631,6 @@ cat > override_headers/asm/unistd.h < override_headers/asm/errno.h < 2.3.90-39 +- update from CVS + * Fri Feb 17 2006 Jakub Jelinek 2.3.90-38 - update from CVS - robust mutexes rewrite diff --git a/sources b/sources index bf8c313..99a8bcf 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -febd796b074b3b97004e3714f8ea27db glibc-20060217T1609.tar.bz2 -57911b3ed8d1af371b288d2cf55be3db glibc-fedora-20060217T1609.tar.bz2 +661cdfb8abebd6f892a18c3280f1add1 glibc-20060301T0647.tar.bz2 +7c4abda7310c1672d4a075c027670766 glibc-fedora-20060301T0647.tar.bz2