a9a5615
--- glibc-20050405T2114/ChangeLog	4 Apr 2005 22:37:38 -0000	1.9310
a9a5615
+++ glibc-20050405T2114-fedora/ChangeLog	5 Apr 2005 21:39:42 -0000	1.8782.2.92
a9a5615
@@ -266,17 +266,6 @@
4465bbc
 
4465bbc
 2005-03-28  Roland McGrath  <roland@redhat.com>
4465bbc
 
4465bbc
-	* sysdeps/generic/w_exp2.c [NO_LONG_DOUBLE]: Fix typos in alias names.
4465bbc
-	Reported by Mark Mitchell <mark@codesourcery.com>.
4465bbc
-	* Versions.def (libm): Define GLIBC_2.4 set.
4465bbc
-	* math/Versions (libm: GLIBC_2.4): Add this set, with exp2l.
4465bbc
-	* sysdeps/i386/Versions (libm: GLIBC_2.1): Add this set, with exp2l.
4465bbc
-	* sysdeps/ia64/Versions: Likewise.
4465bbc
-	* sysdeps/m68k/Versions: Likewise.
4465bbc
-	* sysdeps/sparc/sparc64/Versions: Likewise.
4465bbc
-	* sysdeps/x86_64/Versions: New file.
4465bbc
-	* sysdeps/mips/mips64/Versions: New file.
4465bbc
-
4465bbc
 	* locale/langinfo.h (_NL_LOCALE_NAME): New macro.
4465bbc
 	[__USE_GNU] (NL_LOCALE_NAME): New macro.
4465bbc
 	* locale/nl_langinfo.c: Grok special item value for _NL_LOCALE_NAME,
a9a5615
@@ -1335,6 +1324,18 @@
271728a
 
271728a
 	* scripts/soversions.awk: Fix default version set handling.
271728a
 
b691459
+2005-02-09  Jakub Jelinek  <jakub@redhat.com>
b691459
+
b691459
+	* sysdeps/unix/sysv/linux/bits/termios.h (CMSPAR): Define.
b691459
+	* sysdeps/unix/sysv/linux/alpha/bits/termios.h: Add __USE_MISC
b691459
+	and __USE_XOPEN guards to match linux/bits/termios.h.
b691459
+	(CMSPAR): Define.
b691459
+	* sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Add __USE_MISC
b691459
+	and __USE_XOPEN guards to match linux/bits/termios.h.
b691459
+	(CMSPAR): Define.
b691459
+	* sysdeps/unix/sysv/linux/sparc/bits/termios.h: Add __USE_MISC
b691459
+	and __USE_XOPEN guards to match linux/bits/termios.h.
b691459
+
b691459
 2005-02-10  Roland McGrath  <roland@redhat.com>
b691459
 
b691459
 	[BZ #157]
a9a5615
--- glibc-20050405T2114/ChangeLog.11	10 Nov 2000 03:31:36 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/ChangeLog.11	22 Sep 2004 21:20:47 -0000	1.1.4.1
c7aa529
@@ -1352,6 +1352,11 @@
c7aa529
 	* sysdeps/unix/sysv/linux/mips/sys/tas.h: Add missing .mips0 at the
c7aa529
 	end of inline assembler code.
c7aa529
 
c7aa529
+2000-10-02  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
+	* sunrpc/svc_udp.c (svcudp_recv): Set msg_controllen to all
c7aa529
+	remaining xp_pad space.
c7aa529
+
c7aa529
 2000-10-02  Ulrich Drepper  <drepper@redhat.com>
c7aa529
 
c7aa529
 	* include/features.h [__USE_FILE_OFFSET && !__REDIRECT]: Define
c7aa529
@@ -9280,6 +9285,12 @@
c7aa529
 	syscall.
c7aa529
 	* sysdeps/unix/sysv/linux/mips/truncate64.c: Likewise.
c7aa529
 
c7aa529
+2000-05-30  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
+	* resolv/res_query.c (res_nsearch): Remove unused variable
c7aa529
+	root_on_list. If dots >= statp->ndots and as is querydomain
c7aa529
+	fails, keep searching.
c7aa529
+
c7aa529
 2000-05-30  Ulrich Drepper  <drepper@redhat.com>
c7aa529
 
c7aa529
 	* sysdeps/unix/sysv/linux/alpha/oldglob.c (__old_glob): Loose __P.
c7aa529
@@ -9480,6 +9491,11 @@
c7aa529
 	* sysdeps/i386/fpu/bits/mathinline.h: Define expm1 inline only if
c7aa529
 	__FAST_MATH__ is defined.
c7aa529
 
c7aa529
+2000-05-22  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
+	* sysdeps/i386/fpu/bits/mathinline.h (__expm1_code): Avoid using ?:
c7aa529
+	with omitted middle operand.
c7aa529
+
c7aa529
 2000-05-22  Andreas Jaeger  <aj@suse.de>
c7aa529
 
c7aa529
 	* math/Makefile: Add -D__FAST_MATH__ to CFLAGS-test-ifloat.c,
c7aa529
@@ -9720,6 +9736,11 @@
c7aa529
 
c7aa529
 2000-05-17  Jakub Jelinek  <jakub@redhat.com>
c7aa529
 
c7aa529
+	* inet/rcmd.c (rcmd_af): If *ahost cannot be resolved, include
c7aa529
+	unresolved hostname in the message.
c7aa529
+
c7aa529
+2000-05-17  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
 	* sysdeps/arm/bits/huge_val.h (HUGE_VAL, HUGE_VALF): Add
c7aa529
 	__extension__ to hexadecimal floating constant notation.
c7aa529
 	* sysdeps/i386/bits/huge_val.h (HUGE_VAL, HUGE_VALF, HUGE_VALL):
a9a5615
--- glibc-20050405T2114/ChangeLog.12	16 Aug 2001 05:24:54 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/ChangeLog.12	22 Sep 2004 21:20:47 -0000	1.1.4.1
c7aa529
@@ -7729,6 +7729,13 @@
c7aa529
 
c7aa529
 	* Versions.def [ld]: Add GLIBC_2.2.1.
c7aa529
 
c7aa529
+2001-01-10  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
+	* malloc/memusage.c (me): If not SUID/SGID, allow creating new
c7aa529
+	$MEMUSAGE_OUTPUT file.
c7aa529
+	* sysdeps/generic/segfault.c (segfault.c): If not SUID/SGID, allow
c7aa529
+	creating new $SEGFAULT_OUTPUT_NAME file.
c7aa529
+
c7aa529
 2001-01-10  H.J. Lu  <hjl@gnu.org>
c7aa529
 
c7aa529
 	* elf/dl-libc.c (do_dlopen): Call DL_STATIC_INIT for static binaries.
c7aa529
@@ -8130,6 +8137,11 @@
c7aa529
 	* sysdeps/powerpc/soft-fp/Versions: Likewise.
c7aa529
 	* sysdeps/sparc/sparc64/soft-fp/Versions: Likewise.
c7aa529
 
c7aa529
+2001-01-02  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
+	* locale/setlocale.c (setlocale): Don't allocate/free category name
c7aa529
+	unnecessarily.
c7aa529
+
c7aa529
 2001-01-02  Franz Sirl	<Franz.Sirl-kernel@lauterbach.com>
c7aa529
 
c7aa529
 	* sysdeps/powerpc/dl-machine.c (__process_machine_rela): Fix typo.
a9a5615
--- glibc-20050405T2114/ChangeLog.15	16 Feb 2005 07:34:17 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/ChangeLog.15	3 Mar 2005 17:29:57 -0000	1.1.6.2
aa68137
@@ -477,6 +477,14 @@
aa68137
 
aa68137
 2004-11-26  Jakub Jelinek  <jakub@redhat.com>
aa68137
 
aa68137
+	* posix/Makefile (generated: Add getconf.speclist.
aa68137
+	($(inst_libexecdir)/getconf): Use getconf.speclist instead of
aa68137
+	getconf output.
aa68137
+	($(objpfx)getconf.speclist): New rule.
aa68137
+	* posix/getconf.speclist.h: New file.
aa68137
+
aa68137
+2004-11-26  Jakub Jelinek  <jakub@redhat.com>
aa68137
+
aa68137
 	* sysdeps/generic/unsecvars.h (UNSECURE_ENVVARS): Add GETCONF_DIR.
aa68137
 
aa68137
 2004-11-26  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
aa68137
@@ -1103,6 +1111,16 @@
aa68137
 	* sysdeps/generic/tempname.c (__path_search): Add missing argument
aa68137
 	TRY_TMPDIR.
aa68137
 
aa68137
+2004-11-02  Jakub Jelinek  <jakub@redhat.com>
aa68137
+
aa68137
+	* include/features.h (__USE_FORTIFY_LEVEL): Also set for Red Hat
aa68137
+	GCC 3.4.x-RH >= 3.4.2-8.
aa68137
+	* libio/bits/features.h (printf, fprintf, vprintf, vfprintf): For
aa68137
+	GCC 3.4.x-RH use __builtin___{,v}{,f}printf_chk instead of
aa68137
+	__{,v}{,f}printf_chk.
aa68137
+	* debug/tst-chk1.c (do_test): Deal with GCC 3.4.x-RH not
aa68137
+	being able to recognize subobjects.
aa68137
+
aa68137
 2004-10-31  Mariusz Mazur <mmazur@kernel.pl>
aa68137
 
aa68137
 	* sysdeps/unix/sysv/linux/alpha/setregid.c: New file.
aa68137
@@ -1398,6 +1416,11 @@
aa68137
 	* posix/execvp.c (execvp): Also ignore ENODEV and ETIMEDOUT errno
aa68137
 	values.
aa68137
 
aa68137
+2004-10-20  Jakub Jelinek  <jakub@redhat.com>
aa68137
+
aa68137
+	* sysdeps/unix/sysv/linux/readonly-area.c (__readonly_area): If /proc
aa68137
+	is not mounted, return 1.
aa68137
+
aa68137
 2004-10-20  Roland McGrath  <roland@redhat.com>
aa68137
 
aa68137
 	* Makeconfig ($(common-objpfx)shlib-versions.v.i): Check also
aa68137
@@ -1443,6 +1466,11 @@
aa68137
 	* sysdeps/generic/readonly-area.c (__readonly_str): Renamed to ...
aa68137
 	(__readonly_area): ... this.
aa68137
 
aa68137
+2004-10-19  Jakub Jelinek  <jakub@redhat.com>
aa68137
+
aa68137
+	* include/features.h (__USE_FORTIFY_LEVEL): Enable even with
aa68137
+	Red Hat gcc4 4.0.0 and above.
aa68137
+
aa68137
 2004-10-18  Jakub Jelinek  <jakub@redhat.com>
aa68137
 
aa68137
 	* sysdeps/generic/strcpy_chk.c (__strcpy_chk): Speed up by checking
aa68137
@@ -3182,6 +3210,23 @@
aa68137
 	before return type.
aa68137
 	* locale/localename.c (__current_locale_name): Likewise.
aa68137
 
aa68137
+2004-08-31  Jakub Jelinek  <jakub@redhat.com>
aa68137
+
aa68137
+	* elf/ldconfig.c (parse_conf): Add prefix argument, prepend it
aa68137
+	before arguments to add_dir and pass to parse_conf_include.
aa68137
+	(parse_conf_include): Add prefix argument, pass it down to
aa68137
+	parse_conf.
aa68137
+	(main): Call arch_startup.  Adjust parse_conf caller.
aa68137
+	Call add_arch_dirs.
aa68137
+	* sysdeps/generic/dl-cache.h (arch_startup, add_arch_dirs): Define.
aa68137
+	* sysdeps/unix/sysv/linux/i386/dl-cache.h: New file.
aa68137
+	* sysdeps/unix/sysv/linux/ia64/dl-cache.h (EMUL_HACK, arch_startup,
aa68137
+	add_arch_dirs): Define.
aa68137
+	* sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed: Prepend
aa68137
+	/emul/ia32-linux before the 32-bit ld.so pathname.
aa68137
+	* sysdeps/unix/sysv/linux/ia64/dl-procinfo.c: New file.
aa68137
+	* sysdeps/unix/sysv/linux/ia64/dl-procinfo.h: New file.
aa68137
+
aa68137
 2004-08-30  Roland McGrath  <roland@frob.com>
aa68137
 
aa68137
 	* scripts/extract-abilist.awk: If `lastversion' variable defined, omit
a9a5615
--- glibc-20050405T2114/Versions.def	28 Mar 2005 20:42:44 -0000	1.61
a9a5615
+++ glibc-20050405T2114-fedora/Versions.def	24 Mar 2005 08:18:51 -0000	1.58.2.3
aa68137
@@ -20,7 +20,6 @@ libc {
aa68137
   GLIBC_2.3.2
aa68137
   GLIBC_2.3.3
aa68137
   GLIBC_2.3.4
aa68137
-  GLIBC_2.4
aa68137
 %ifdef USE_IN_LIBIO
aa68137
   HURD_CTHREADS_0.3
aa68137
 %endif
4465bbc
@@ -44,7 +43,6 @@ libm {
4465bbc
   GLIBC_2.2
4465bbc
   GLIBC_2.2.3
4465bbc
   GLIBC_2.3.4
4465bbc
-  GLIBC_2.4
4465bbc
 }
4465bbc
 libnsl {
4465bbc
   GLIBC_2.0
a9a5615
--- glibc-20050405T2114/version.h	20 Dec 2004 23:37:41 -0000	1.67
a9a5615
+++ glibc-20050405T2114-fedora/version.h	6 Jan 2005 15:21:51 -0000	1.65.2.3
5b49637
@@ -1,4 +1,4 @@
5b49637
 /* This file just defines the current version number of libc.  */
5b49637
 
5b49637
 #define RELEASE "development"
5b49637
-#define VERSION "2.3.90"
5b49637
+#define VERSION "2.3.4"
a9a5615
--- glibc-20050405T2114/csu/elf-init.c	14 Feb 2005 21:21:36 -0000	1.5
a9a5615
+++ glibc-20050405T2114-fedora/csu/elf-init.c	3 Mar 2005 13:33:53 -0000	1.3.2.3
c7aa529
@@ -44,6 +44,24 @@ extern void (*__init_array_start []) (vo
c7aa529
 extern void (*__init_array_end []) (void) attribute_hidden;
c7aa529
 extern void (*__fini_array_start []) (void) attribute_hidden;
c7aa529
 extern void (*__fini_array_end []) (void) attribute_hidden;
c7aa529
+
c7aa529
+# if defined HAVE_VISIBILITY_ATTRIBUTE \
c7aa529
+     && (defined SHARED || defined LIBC_NONSHARED)
c7aa529
+#  define hidden_undef_2(x) #x
c7aa529
+#  define hidden_undef_1(x) hidden_undef_2 (x)
c7aa529
+#  define hidden_undef(x) \
c7aa529
+  __asm (hidden_undef_1 (ASM_GLOBAL_DIRECTIVE) " " #x); \
c7aa529
+  __asm (".hidden " #x);
c7aa529
+# else
c7aa529
+#  define hidden_undef(x)
c7aa529
+# endif
c7aa529
+
c7aa529
+hidden_undef (__preinit_array_start)
c7aa529
+hidden_undef (__preinit_array_end)
c7aa529
+hidden_undef (__init_array_start)
c7aa529
+hidden_undef (__init_array_end)
c7aa529
+hidden_undef (__fini_array_start)
c7aa529
+hidden_undef (__fini_array_end)
c7aa529
 #endif
c7aa529
 
c7aa529
 /* These function symbols are provided for the .init/.fini section entry
a9a5615
--- glibc-20050405T2114/debug/Versions	1 Mar 2005 00:12:31 -0000	1.6
a9a5615
+++ glibc-20050405T2114-fedora/debug/Versions	3 Mar 2005 16:52:26 -0000	1.3.4.3
aa68137
@@ -18,10 +18,4 @@ libc {
aa68137
     __printf_chk; __fprintf_chk; __vprintf_chk; __vfprintf_chk;
aa68137
     __gets_chk;
aa68137
   }
aa68137
-  GLIBC_2.4 {
aa68137
-    __fgets_chk; __fgets_unlocked_chk;
aa68137
-    __read_chk; __pread_chk; __pread64_chk;
aa68137
-    __readlink_chk; __getcwd_chk; __getwd_chk;
aa68137
-    __recv_chk; __recvfrom_chk;
aa68137
-  }
aa68137
 }
a9a5615
--- glibc-20050405T2114/debug/fgets_chk.c	21 Feb 2005 22:53:35 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/debug/fgets_chk.c	3 Mar 2005 16:52:26 -0000	1.1.2.2
aa68137
@@ -30,6 +30,7 @@
aa68137
 #include <stdio.h>
aa68137
 #include <sys/param.h>
aa68137
 
aa68137
+#if 0
aa68137
 char *
aa68137
 __fgets_chk (buf, size, n, fp)
aa68137
      char *buf;
aa68137
@@ -65,3 +66,4 @@ __fgets_chk (buf, size, n, fp)
aa68137
   _IO_release_lock (fp);
aa68137
   return result;
aa68137
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/fgets_u_chk.c	21 Feb 2005 22:53:35 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/debug/fgets_u_chk.c	3 Mar 2005 16:52:26 -0000	1.1.2.2
aa68137
@@ -30,6 +30,7 @@
aa68137
 #include <stdio.h>
aa68137
 #include <sys/param.h>
aa68137
 
aa68137
+#if 0
aa68137
 char *
aa68137
 __fgets_unlocked_chk (buf, size, n, fp)
aa68137
      char *buf;
aa68137
@@ -63,3 +64,4 @@ __fgets_unlocked_chk (buf, size, n, fp)
aa68137
   fp->_IO_file_flags |= old_error;
aa68137
   return result;
aa68137
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/getcwd_chk.c	1 Mar 2005 00:42:41 -0000	1.2
a9a5615
+++ glibc-20050405T2114-fedora/debug/getcwd_chk.c	3 Mar 2005 16:52:26 -0000	1.2.2.2
aa68137
@@ -20,7 +20,7 @@
aa68137
 #include <unistd.h>
aa68137
 #include <sys/param.h>
aa68137
 
aa68137
-
aa68137
+#if 0
aa68137
 char *
aa68137
 __getcwd_chk (char *buf, size_t size, size_t buflen)
e023db3
 {
aa68137
@@ -29,3 +29,4 @@ __getcwd_chk (char *buf, size_t size, si
aa68137
 
aa68137
   return __getcwd (buf, size);
e023db3
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/getwd_chk.c	21 Feb 2005 22:53:35 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/debug/getwd_chk.c	3 Mar 2005 16:52:26 -0000	1.1.2.2
aa68137
@@ -20,7 +20,7 @@
aa68137
 #include <unistd.h>
aa68137
 #include <sys/param.h>
aa68137
 
aa68137
-
aa68137
+#if 0
aa68137
 char *
aa68137
 __getwd_chk (char *buf, size_t buflen)
aa68137
 {
aa68137
@@ -32,3 +32,4 @@ __getwd_chk (char *buf, size_t buflen)
aa68137
 
aa68137
 link_warning (getwd,
aa68137
 	      "the `getwd' function is dangerous and should not be used.")
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/pread64_chk.c	19 Mar 2005 00:08:11 -0000	1.4
a9a5615
+++ glibc-20050405T2114-fedora/debug/pread64_chk.c	19 Mar 2005 20:18:00 -0000	1.3.2.3
aa68137
@@ -19,7 +19,7 @@
aa68137
 #include <unistd.h>
aa68137
 #include <sys/param.h>
aa68137
 
aa68137
-
aa68137
+#if 0
aa68137
 ssize_t
aa68137
 __pread64_chk (int fd, void *buf, size_t nbytes, off64_t offset, size_t buflen)
aa68137
 {
aa68137
@@ -28,3 +28,4 @@ __pread64_chk (int fd, void *buf, size_t
aa68137
 
8d6dc3b
   return __pread64 (fd, buf, nbytes, offset);
aa68137
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/pread_chk.c	19 Mar 2005 00:07:31 -0000	1.4
a9a5615
+++ glibc-20050405T2114-fedora/debug/pread_chk.c	19 Mar 2005 20:18:00 -0000	1.3.2.3
aa68137
@@ -19,7 +19,7 @@
aa68137
 #include <unistd.h>
aa68137
 #include <sys/param.h>
aa68137
 
aa68137
-
aa68137
+#if 0
aa68137
 ssize_t
aa68137
 __pread_chk (int fd, void *buf, size_t nbytes, off_t offset, size_t buflen)
aa68137
 {
aa68137
@@ -28,3 +28,4 @@ __pread_chk (int fd, void *buf, size_t n
aa68137
 
8d6dc3b
   return __pread (fd, buf, nbytes, offset);
aa68137
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/read_chk.c	1 Mar 2005 00:35:58 -0000	1.4
a9a5615
+++ glibc-20050405T2114-fedora/debug/read_chk.c	3 Mar 2005 16:52:26 -0000	1.4.2.2
aa68137
@@ -23,7 +23,7 @@
aa68137
 # include <sysdep.h>
aa68137
 #endif
aa68137
 
aa68137
-
aa68137
+#if 0
aa68137
 ssize_t
aa68137
 __read_chk (int fd, void *buf, size_t nbytes, size_t buflen)
aa68137
 {
aa68137
@@ -36,3 +36,4 @@ __read_chk (int fd, void *buf, size_t nb
aa68137
   return __read (fd, buf, nbytes);
aa68137
 #endif
aa68137
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/readlink_chk.c	1 Mar 2005 00:41:15 -0000	1.3
a9a5615
+++ glibc-20050405T2114-fedora/debug/readlink_chk.c	3 Mar 2005 16:52:26 -0000	1.3.2.2
aa68137
@@ -23,7 +23,7 @@
aa68137
 # include <sysdep.h>
aa68137
 #endif
aa68137
 
aa68137
-
aa68137
+#if 0
aa68137
 ssize_t
aa68137
 __readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
aa68137
 {
aa68137
@@ -36,3 +36,4 @@ __readlink_chk (const char *path, void *
aa68137
   return __readlink (path, buf, len);
aa68137
 #endif
aa68137
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/recv_chk.c	6 Mar 2005 21:24:42 -0000	1.2
a9a5615
+++ glibc-20050405T2114-fedora/debug/recv_chk.c	19 Mar 2005 20:18:00 -0000	1.1.2.3
aa68137
@@ -19,7 +19,7 @@
aa68137
 #include <sys/param.h>
aa68137
 #include <sys/socket.h>
aa68137
 
aa68137
-
aa68137
+#if 0
aa68137
 ssize_t
aa68137
 __recv_chk (int fd, void *buf, size_t n, size_t buflen, int flags)
aa68137
 {
8d6dc3b
@@ -28,3 +28,4 @@ __recv_chk (int fd, void *buf, size_t n,
8d6dc3b
 
8d6dc3b
   return __recv (fd, buf, n, flags);
aa68137
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/recvfrom_chk.c	6 Mar 2005 21:24:16 -0000	1.2
a9a5615
+++ glibc-20050405T2114-fedora/debug/recvfrom_chk.c	19 Mar 2005 20:18:00 -0000	1.1.2.3
aa68137
@@ -19,7 +19,7 @@
aa68137
 #include <sys/param.h>
aa68137
 #include <sys/socket.h>
aa68137
 
aa68137
-
aa68137
+#if 0
aa68137
 ssize_t
aa68137
 __recvfrom_chk (int fd, void *buf, size_t n, size_t buflen, int flags,
aa68137
 		__SOCKADDR_ARG addr, socklen_t *addr_len)
8d6dc3b
@@ -29,3 +29,4 @@ __recvfrom_chk (int fd, void *buf, size_
8d6dc3b
 
8d6dc3b
   return __recvfrom (fd, buf, n, flags, addr, addr_len);
aa68137
 }
aa68137
+#endif
a9a5615
--- glibc-20050405T2114/debug/tst-chk1.c	19 Mar 2005 00:09:08 -0000	1.7
a9a5615
+++ glibc-20050405T2114-fedora/debug/tst-chk1.c	19 Mar 2005 21:04:10 -0000	1.1.2.10
8d6dc3b
@@ -17,6 +17,9 @@
8d6dc3b
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
8d6dc3b
    02111-1307 USA.  */
8d6dc3b
 
8d6dc3b
+/* Hack: make sure GCC doesn't know __chk_fail () will not return.  */
8d6dc3b
+#define __noreturn__
8d6dc3b
+
8d6dc3b
 #include <fcntl.h>
8d6dc3b
 #include <paths.h>
8d6dc3b
 #include <setjmp.h>
8d6dc3b
@@ -215,7 +218,7 @@ do_test (void)
45fdec0
   if (memcmp (a.buf1, "aabcdabcjj", 10))
45fdec0
     FAIL ();
45fdec0
 
45fdec0
-#if __USE_FORTIFY_LEVEL < 2
45fdec0
+#if __USE_FORTIFY_LEVEL < 2 || !__GNUC_PREREQ (4, 0)
45fdec0
   /* The following tests are supposed to crash with -D_FORTIFY_SOURCE=2
45fdec0
      and sufficient GCC support, as the string operations overflow
45fdec0
      from a.buf1 into a.buf2.  */
8d6dc3b
@@ -314,7 +317,7 @@ do_test (void)
45fdec0
   memset (a.buf1 + 9, 'j', l0 + 2);
45fdec0
   CHK_FAIL_END
45fdec0
 
45fdec0
-#if __USE_FORTIFY_LEVEL >= 2
45fdec0
+#if __USE_FORTIFY_LEVEL >= 2 && __GNUC_PREREQ (4, 0)
45fdec0
 # define O 0
45fdec0
 #else
45fdec0
 # define O 1
8d6dc3b
@@ -768,7 +771,7 @@ do_test (void)
8d6dc3b
 	      || strcmp (getcwdbuf + 1, fname) != 0)
8d6dc3b
 	    FAIL ();
8d6dc3b
 
8d6dc3b
-#if __USE_FORTIFY_LEVEL >= 1
8d6dc3b
+#if 0 && __USE_FORTIFY_LEVEL >= 1
8d6dc3b
 	  CHK_FAIL_START
8d6dc3b
 	  if (getwd (getcwdbuf + 2) != getcwdbuf + 2)
8d6dc3b
 	    FAIL ();
a9a5615
--- glibc-20050405T2114/elf/dl-support.c	6 Nov 2004 00:24:49 -0000	1.87
a9a5615
+++ glibc-20050405T2114-fedora/elf/dl-support.c	10 Nov 2004 09:02:46 -0000	1.84.2.4
217261e
@@ -281,6 +281,11 @@ _dl_non_dynamic_init (void)
c7aa529
   if (_dl_platform != NULL)
c7aa529
     _dl_platformlen = strlen (_dl_platform);
c7aa529
 
c7aa529
+#if defined (__i386__) && !defined (USE_TLS)
c7aa529
+  /* Load libs not using TLS.  */
c7aa529
+  _dl_osversion = 0x20205;
c7aa529
+#endif
c7aa529
+
c7aa529
   /* Scan for a program header telling us the stack is nonexecutable.  */
c7aa529
   if (_dl_phdr != NULL)
c7aa529
     for (uint_fast16_t i = 0; i < _dl_phnum; ++i)
a9a5615
--- glibc-20050405T2114/elf/ldconfig.c	12 Jan 2005 23:39:52 -0000	1.48
a9a5615
+++ glibc-20050405T2114-fedora/elf/ldconfig.c	8 Feb 2005 10:04:03 -0000	1.47.2.2
c7aa529
@@ -944,17 +944,19 @@ search_dirs (void)
c7aa529
 
c7aa529
 
c7aa529
 static void parse_conf_include (const char *config_file, unsigned int lineno,
c7aa529
-				bool do_chroot, const char *pattern);
c7aa529
+				const char *prefix, bool do_chroot,
c7aa529
+				const char *pattern);
c7aa529
 
c7aa529
 /* Parse configuration file.  */
c7aa529
 static void
c7aa529
-parse_conf (const char *filename, bool do_chroot)
c7aa529
+parse_conf (const char *filename, const char *prefix, bool do_chroot)
c7aa529
 {
c7aa529
   FILE *file = NULL;
c7aa529
   char *line = NULL;
c7aa529
   const char *canon;
c7aa529
   size_t len = 0;
c7aa529
   unsigned int lineno;
c7aa529
+  size_t prefix_len = prefix ? strlen (prefix) : 0;
c7aa529
 
c7aa529
   if (do_chroot && opt_chroot)
c7aa529
     {
c7aa529
@@ -1015,7 +1017,14 @@ parse_conf (const char *filename, bool d
c7aa529
 	  cp += 8;
c7aa529
 	  while ((dir = strsep (&cp, " \t")) != NULL)
c7aa529
 	    if (dir[0] != '\0')
c7aa529
-	      parse_conf_include (filename, lineno, do_chroot, dir);
c7aa529
+	      parse_conf_include (filename, lineno, prefix, do_chroot, dir);
c7aa529
+	}
c7aa529
+      else if (prefix != NULL)
c7aa529
+	{
c7aa529
+	  size_t cp_len = strlen (cp);
c7aa529
+	  char new_cp [prefix_len + cp_len + 1];
c7aa529
+	  memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1);
c7aa529
+	  add_dir (new_cp);
c7aa529
 	}
c7aa529
       else
c7aa529
 	add_dir (cp);
c7aa529
@@ -1031,7 +1040,7 @@ parse_conf (const char *filename, bool d
c7aa529
    config files to read.  */
c7aa529
 static void
c7aa529
 parse_conf_include (const char *config_file, unsigned int lineno,
c7aa529
-		    bool do_chroot, const char *pattern)
c7aa529
+		    const char *prefix, bool do_chroot, const char *pattern)
c7aa529
 {
c7aa529
   if (opt_chroot && pattern[0] != '/')
c7aa529
     error (EXIT_FAILURE, 0,
c7aa529
@@ -1061,7 +1070,7 @@ parse_conf_include (const char *config_f
c7aa529
     {
c7aa529
     case 0:
c7aa529
       for (size_t i = 0; i < gl.gl_pathc; ++i)
c7aa529
-	parse_conf (gl.gl_pathv[i], false);
c7aa529
+	parse_conf (gl.gl_pathv[i], prefix, false);
c7aa529
       globfree64 (&gl);
c7aa529
       break;
c7aa529
 
c7aa529
@@ -1101,6 +1110,8 @@ main (int argc, char **argv)
c7aa529
 {
c7aa529
   int remaining;
c7aa529
 
c7aa529
+  arch_startup (argc, argv);
c7aa529
+
c7aa529
   /* Parse and process arguments.  */
c7aa529
   argp_parse (&argp, argc, argv, 0, &remaining, NULL);
c7aa529
 
c7aa529
@@ -1209,12 +1220,14 @@ main (int argc, char **argv)
c7aa529
 
c7aa529
   if (!opt_only_cline)
c7aa529
     {
c7aa529
-      parse_conf (config_file, true);
c7aa529
+      parse_conf (config_file, NULL, true);
c7aa529
 
c7aa529
       /* Always add the standard search paths.  */
c7aa529
       add_system_dir (SLIBDIR);
c7aa529
       if (strcmp (SLIBDIR, LIBDIR))
c7aa529
 	add_system_dir (LIBDIR);
c7aa529
+
c7aa529
+      add_arch_dirs (config_file);
c7aa529
     }
c7aa529
 
c7aa529
   search_dirs ();
a9a5615
--- glibc-20050405T2114/elf/rtld.c	20 Mar 2005 22:08:09 -0000	1.350
a9a5615
+++ glibc-20050405T2114-fedora/elf/rtld.c	24 Mar 2005 08:18:54 -0000	1.330.2.16
8d6dc3b
@@ -1252,6 +1252,53 @@ ld.so does not support TLS, but program 
b709c7e
   ++GL(dl_ns)[LM_ID_BASE]._ns_nloaded;
c7aa529
   ++GL(dl_load_adds);
c7aa529
 
c7aa529
+#if defined(__i386__)
c7aa529
+  /* Force non-TLS libraries for glibc 2.0 binaries
c7aa529
+     or if a buggy binary references non-TLS errno or h_errno.  */
b488809
+  if (__builtin_expect (main_map->l_info[DT_NUM + DT_THISPROCNUM
b488809
+                                         + DT_VERSIONTAGIDX (DT_VERNEED)]
b488809
+                        == NULL, 0)
b488809
+      && main_map->l_info[DT_DEBUG])
c7aa529
+    GLRO(dl_osversion) = 0x20205;
c7aa529
+  else if ((__builtin_expect (mode, normal) != normal
b488809
+	    || main_map->l_info[ADDRIDX (DT_GNU_LIBLIST)] == NULL)
c7aa529
+	      /* Only binaries have DT_DEBUG dynamic tags...  */
b488809
+	   && main_map->l_info[DT_DEBUG])
c7aa529
+    {
c7aa529
+      /* Workaround for buggy binaries.  This doesn't handle buggy
c7aa529
+	 libraries.  */
c7aa529
+      bool buggy = false;
b488809
+      const ElfW(Sym) *symtab = (const void *) D_PTR (main_map,
b488809
+                                                      l_info[DT_SYMTAB]);
b488809
+      const char *strtab = (const void *) D_PTR (main_map,
b488809
+                                                 l_info[DT_STRTAB]);
c7aa529
+      Elf_Symndx symidx;
b488809
+      for (symidx = main_map->l_buckets[0x6c994f % main_map->l_nbuckets];
c7aa529
+	   symidx != STN_UNDEF;
b488809
+	   symidx = main_map->l_chain[symidx])
c7aa529
+	{
c7aa529
+	  if (__builtin_expect (strcmp (strtab + symtab[symidx].st_name,
c7aa529
+					"errno") == 0, 0)
c7aa529
+	      && ELFW(ST_TYPE) (symtab[symidx].st_info) != STT_TLS)
c7aa529
+	    buggy = true;
c7aa529
+	}
b488809
+      for (symidx = main_map->l_buckets[0xe5c992f % main_map->l_nbuckets];
c7aa529
+	   symidx != STN_UNDEF;
b488809
+	   symidx = main_map->l_chain[symidx])
c7aa529
+	{
c7aa529
+	  if (__builtin_expect (strcmp (strtab + symtab[symidx].st_name,
c7aa529
+					"h_errno") == 0, 0)
c7aa529
+	      && ELFW(ST_TYPE) (symtab[symidx].st_info) != STT_TLS)
c7aa529
+	    buggy = true;
c7aa529
+	}
c7aa529
+      if (__builtin_expect (buggy, false) && GLRO(dl_osversion) > 0x20401)
c7aa529
+	{
c7aa529
+	  GLRO(dl_osversion) = 0x20401;
c7aa529
+	  _dl_error_printf ("Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.\n");
c7aa529
+	}
c7aa529
+    }
c7aa529
+#endif
c7aa529
+
c7aa529
   /* If LD_USE_LOAD_BIAS env variable has not been seen, default
c7aa529
      to not using bias for non-prelinked PIEs and libraries
c7aa529
      and using it for executables or prelinked PIEs or libraries.  */
d04ad27
@@ -1589,6 +1636,57 @@ ERROR: ld.so: object '%s' cannot be load
c7aa529
 	}
c7aa529
     }
c7aa529
 
c7aa529
+#if defined(__i386__) || defined(__alpha__) || (defined(__sparc__) && !defined(__arch64__))
c7aa529
+  /*
c7aa529
+   * Modifications by Red Hat Software
c7aa529
+   *
c7aa529
+   * Deal with the broken binaries from the non-versioned ages of glibc.
c7aa529
+   * If a binary does not have version information enabled, we assume that
c7aa529
+   * it is a glibc 2.0 binary and we load a compatibility library to try to
c7aa529
+   * overcome binary incompatibilities.
c7aa529
+   *			Blame: gafton@redhat.com
c7aa529
+   */
c7aa529
+#define LIB_NOVERSION "/lib/libNoVersion.so.1"
c7aa529
+
b488809
+  if (__builtin_expect (main_map->l_info[DT_NUM + DT_THISPROCNUM
b488809
+                                         + DT_VERSIONTAGIDX (DT_VERNEED)]
b488809
+                        == NULL, 0)
b488809
+      && (main_map->l_info[DT_DEBUG]
b488809
+          || !(GLRO(dl_debug_mask) & DL_DEBUG_PRELINK)))
c7aa529
+    {
c7aa529
+      struct stat test_st;
c7aa529
+      int test_fd;
c7aa529
+      int can_load;
c7aa529
+      
c7aa529
+      HP_TIMING_NOW (start);
c7aa529
+	   
c7aa529
+/*       _dl_sysdep_message("Loading compatibility library... ", NULL); */
c7aa529
+
c7aa529
+      can_load = 1;
c7aa529
+      test_fd = __open (LIB_NOVERSION, O_RDONLY);
c7aa529
+      if (test_fd < 0) {
c7aa529
+	  can_load = 0;
c7aa529
+/* 	  _dl_sysdep_message(" Can't find " LIB_NOVERSION "\n",  NULL); */
c7aa529
+      } else {
c7aa529
+	  if (__fxstat (_STAT_VER, test_fd, &test_st) < 0 || test_st.st_size == 0) {
c7aa529
+	      can_load = 0;
c7aa529
+/* 	      _dl_sysdep_message(" Can't stat " LIB_NOVERSION "\n",  NULL); */
c7aa529
+	  }
c7aa529
+      }
c7aa529
+      
c7aa529
+      if (test_fd >= 0) /* open did no fail.. */
c7aa529
+	  __close(test_fd); /* avoid fd leaks */
c7aa529
+
8d6dc3b
+      if (can_load != 0)
8d6dc3b
+	npreloads += do_preload (LIB_NOVERSION, main_map,
8d6dc3b
+				 "nonversioned binary");
8d6dc3b
+
c7aa529
+      HP_TIMING_NOW (stop);
c7aa529
+      HP_TIMING_DIFF (diff, start, stop);
c7aa529
+      HP_TIMING_ACCUM_NT (load_time, diff);
c7aa529
+    }
c7aa529
+#endif
c7aa529
+
8d6dc3b
   if (__builtin_expect (GL(dl_rtld_map).l_next != NULL, 0))
c7aa529
     {
c7aa529
       /* Set up PRELOADS with a vector of the preloaded libraries.  */
a9a5615
--- glibc-20050405T2114/elf/tst-tls10.h	17 Apr 2003 19:19:01 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/elf/tst-tls10.h	22 Sep 2004 21:20:48 -0000	1.1.2.1
c7aa529
@@ -1,8 +1,8 @@
c7aa529
 #include <tls.h>
c7aa529
 #include <stdlib.h>
c7aa529
 
c7aa529
-#if defined USE_TLS && defined HAVE___THREAD \
c7aa529
-    && defined HAVE_TLS_MODEL_ATTRIBUTE
c7aa529
+#if defined USE_TLS \
c7aa529
+    && (0 || (defined HAVE___THREAD && defined HAVE_TLS_MODEL_ATTRIBUTE))
c7aa529
 # define USE_TLS__THREAD
c7aa529
 
c7aa529
 struct A
a9a5615
--- glibc-20050405T2114/iconv/iconvconfig.c	3 Mar 2005 08:28:02 -0000	1.23
a9a5615
+++ glibc-20050405T2114-fedora/iconv/iconvconfig.c	3 Mar 2005 14:03:15 -0000	1.19.2.4
cae8344
@@ -1013,6 +1013,34 @@ next_prime (uint32_t seed)
c7aa529
                               module name offset
c7aa529
                          (following last entry with step count 0)
c7aa529
 */
c7aa529
+
c7aa529
+static struct hash_entry *hash_table;
c7aa529
+static size_t hash_size;
c7aa529
+
c7aa529
+/* Function to insert the names.  */
c7aa529
+static void name_insert (const void *nodep, VISIT value, int level)
c7aa529
+{
c7aa529
+  struct name *name;
c7aa529
+  unsigned int idx;
c7aa529
+  unsigned int hval2;
c7aa529
+
c7aa529
+  if (value != leaf && value != postorder)
c7aa529
+    return;
c7aa529
+
c7aa529
+  name = *(struct name **) nodep;
c7aa529
+  idx = name->hashval % hash_size;
c7aa529
+  hval2 = 1 + name->hashval % (hash_size - 2);
c7aa529
+
c7aa529
+  while (hash_table[idx].string_offset != 0)
c7aa529
+    if ((idx += hval2) >= hash_size)
c7aa529
+      idx -= hash_size;
c7aa529
+
c7aa529
+  hash_table[idx].string_offset = strtaboffset (name->strent);
c7aa529
+
c7aa529
+  assert (name->module_idx != -1);
c7aa529
+  hash_table[idx].module_idx = name->module_idx;
c7aa529
+}
c7aa529
+
c7aa529
 static int
c7aa529
 write_output (void)
c7aa529
 {
cae8344
@@ -1020,8 +1048,6 @@ write_output (void)
c7aa529
   char *string_table;
c7aa529
   size_t string_table_size;
c7aa529
   struct gconvcache_header header;
c7aa529
-  struct hash_entry *hash_table;
c7aa529
-  size_t hash_size;
c7aa529
   struct module_entry *module_table;
c7aa529
   char *extra_table;
c7aa529
   char *cur_extra_table;
cae8344
@@ -1034,31 +1060,6 @@ write_output (void)
cae8344
   char tmpfname[(output_file == NULL ? sizeof finalname : output_file_len + 1)
c7aa529
 		+ strlen (".XXXXXX")];
c7aa529
 
c7aa529
-  /* Function to insert the names.  */
c7aa529
-  auto void
c7aa529
-  name_insert (const void *nodep, VISIT value, int level)
c7aa529
-    {
c7aa529
-      struct name *name;
c7aa529
-      unsigned int idx;
c7aa529
-      unsigned int hval2;
c7aa529
-
c7aa529
-      if (value != leaf && value != postorder)
c7aa529
-	return;
c7aa529
-
c7aa529
-      name = *(struct name **) nodep;
c7aa529
-      idx = name->hashval % hash_size;
c7aa529
-      hval2 = 1 + name->hashval % (hash_size - 2);
c7aa529
-
c7aa529
-      while (hash_table[idx].string_offset != 0)
c7aa529
-	if ((idx += hval2) >= hash_size)
c7aa529
-	  idx -= hash_size;
c7aa529
-
c7aa529
-      hash_table[idx].string_offset = strtaboffset (name->strent);
c7aa529
-
c7aa529
-      assert (name->module_idx != -1);
c7aa529
-      hash_table[idx].module_idx = name->module_idx;
c7aa529
-    }
c7aa529
-
c7aa529
   /* Open the output file.  */
cae8344
   if (output_file == NULL)
cae8344
     {
a9a5615
--- glibc-20050405T2114/include/features.h	17 Feb 2005 01:10:58 -0000	1.38
a9a5615
+++ glibc-20050405T2114-fedora/include/features.h	3 Mar 2005 14:03:16 -0000	1.35.2.7
67c2a6a
@@ -262,7 +262,13 @@
cfeb07d
 # define __USE_REENTRANT	1
cfeb07d
 #endif
cfeb07d
 
cfeb07d
-#if _FORTIFY_SOURCE > 0 && __GNUC_PREREQ (4, 1) && __OPTIMIZE__ > 0
cfeb07d
+#if _FORTIFY_SOURCE > 0 && __OPTIMIZE__ > 0 \
cfeb07d
+    && (__GNUC_PREREQ (4, 1) \
67c2a6a
+        || (defined __GNUC_RH_RELEASE__ && __GNUC_PREREQ (4, 0)) \
67c2a6a
+        || (defined __GNUC_RH_RELEASE__ && __GNUC_PREREQ (3, 4) \
67c2a6a
+            && __GNUC_MINOR__ == 4 \
67c2a6a
+            && (__GNUC_PATCHLEVEL__ > 2 \
67c2a6a
+                || (__GNUC_PATCHLEVEL__ == 2 && __GNUC_RH_RELEASE__ >= 8))))
cfeb07d
 # if _FORTIFY_SOURCE == 1
cfeb07d
 #  define __USE_FORTIFY_LEVEL 1
cfeb07d
 # elif _FORTIFY_SOURCE > 1
aa68137
@@ -289,7 +295,7 @@
aa68137
 /* Major and minor version number of the GNU C library package.  Use
aa68137
    these macros to test for features in specific releases.  */
aa68137
 #define	__GLIBC__	2
aa68137
-#define	__GLIBC_MINOR__	4
aa68137
+#define	__GLIBC_MINOR__	3
aa68137
 
aa68137
 #define __GLIBC_PREREQ(maj, min) \
aa68137
 	((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
a9a5615
--- glibc-20050405T2114/intl/locale.alias	4 Dec 2003 07:57:47 -0000	1.23
a9a5615
+++ glibc-20050405T2114-fedora/intl/locale.alias	22 Sep 2004 21:20:53 -0000	1.23.2.1
c7aa529
@@ -58,8 +58,6 @@ korean		ko_KR.eucKR
c7aa529
 korean.euc 	ko_KR.eucKR
c7aa529
 ko_KR		ko_KR.eucKR
c7aa529
 lithuanian      lt_LT.ISO-8859-13
c7aa529
-no_NO		nb_NO.ISO-8859-1
c7aa529
-no_NO.ISO-8859-1 nb_NO.ISO-8859-1
c7aa529
 norwegian       nb_NO.ISO-8859-1
c7aa529
 nynorsk		nn_NO.ISO-8859-1
c7aa529
 polish          pl_PL.ISO-8859-2
a9a5615
--- glibc-20050405T2114/libio/stdio.h	7 Jan 2005 19:30:00 -0000	1.81
a9a5615
+++ glibc-20050405T2114-fedora/libio/stdio.h	8 Feb 2005 10:04:09 -0000	1.78.2.4
c7aa529
@@ -142,10 +142,12 @@ typedef _G_fpos64_t fpos64_t;
c7aa529
 extern struct _IO_FILE *stdin;		/* Standard input stream.  */
c7aa529
 extern struct _IO_FILE *stdout;		/* Standard output stream.  */
c7aa529
 extern struct _IO_FILE *stderr;		/* Standard error output stream.  */
c7aa529
+#ifdef __STDC__
c7aa529
 /* C89/C99 say they're macros.  Make them happy.  */
c7aa529
 #define stdin stdin
c7aa529
 #define stdout stdout
c7aa529
 #define stderr stderr
c7aa529
+#endif
c7aa529
 
c7aa529
 __BEGIN_NAMESPACE_STD
c7aa529
 /* Remove file FILENAME.  */
a9a5615
--- glibc-20050405T2114/libio/bits/stdio2.h	19 Mar 2005 00:14:58 -0000	1.4
a9a5615
+++ glibc-20050405T2114-fedora/libio/bits/stdio2.h	19 Mar 2005 20:18:03 -0000	1.1.2.5
67c2a6a
@@ -61,14 +61,25 @@ extern int __vfprintf_chk (FILE *__restr
67c2a6a
 extern int __vprintf_chk (int __flag, __const char *__restrict __format,
67c2a6a
 			  _G_va_list __ap);
67c2a6a
 
67c2a6a
-# define printf(...) \
67c2a6a
+# if __GNUC_PREREQ (4, 0)
67c2a6a
+#  define printf(...) \
67c2a6a
   __printf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
67c2a6a
-# define fprintf(stream, ...) \
67c2a6a
+#  define fprintf(stream, ...) \
67c2a6a
   __fprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
67c2a6a
-# define vprintf(format, ap) \
67c2a6a
+#  define vprintf(format, ap) \
67c2a6a
   __vprintf_chk (__USE_FORTIFY_LEVEL - 1, format, ap)
67c2a6a
-# define vfprintf(stream, format, ap) \
67c2a6a
+#  define vfprintf(stream, format, ap) \
67c2a6a
   __vfprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, format, ap)
67c2a6a
+# else
67c2a6a
+#  define printf(...) \
67c2a6a
+  __builtin___printf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
67c2a6a
+#  define fprintf(stream, ...) \
67c2a6a
+  __builtin___fprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
67c2a6a
+#  define vprintf(format, ap) \
67c2a6a
+  __builtin___vprintf_chk (__USE_FORTIFY_LEVEL - 1, format, ap)
67c2a6a
+#  define vfprintf(stream, format, ap) \
67c2a6a
+  __builtin___vfprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, format, ap)
67c2a6a
+# endif
67c2a6a
 
67c2a6a
 #endif
67c2a6a
 
8d6dc3b
@@ -83,8 +94,7 @@ gets (char *__str)
8d6dc3b
   return __gets_alias (__str);
8d6dc3b
 }
8d6dc3b
 
8d6dc3b
-extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
8d6dc3b
-			  FILE *__restrict __stream) __wur;
8d6dc3b
+extern void __chk_fail (void) __attribute__((__noreturn__));
8d6dc3b
 extern char *__REDIRECT (__fgets_alias,
8d6dc3b
 			 (char *__restrict __s, int __n,
8d6dc3b
 			  FILE *__restrict __stream), fgets) __wur;
8d6dc3b
@@ -92,15 +102,12 @@ extern char *__REDIRECT (__fgets_alias,
8d6dc3b
 extern __always_inline __wur char *
8d6dc3b
 fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
8d6dc3b
 {
8d6dc3b
-  if (__bos (__s) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__n) || (size_t) __n > __bos (__s)))
8d6dc3b
-    return __fgets_chk (__s, __bos (__s), __n, __stream);
8d6dc3b
+  if (__bos (__s) != (size_t) -1 && (size_t) __n > __bos (__s))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __fgets_alias (__s, __n, __stream);
8d6dc3b
 }
8d6dc3b
 
8d6dc3b
 #ifdef __USE_GNU
8d6dc3b
-extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
8d6dc3b
-				   int __n, FILE *__restrict __stream) __wur;
8d6dc3b
 extern char *__REDIRECT (__fgets_unlocked_alias,
8d6dc3b
 			 (char *__restrict __s, int __n,
8d6dc3b
 			  FILE *__restrict __stream), fgets_unlocked) __wur;
8d6dc3b
@@ -108,9 +115,8 @@ extern char *__REDIRECT (__fgets_unlocke
8d6dc3b
 extern __always_inline __wur char *
8d6dc3b
 fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
8d6dc3b
 {
8d6dc3b
-  if (__bos (__s) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__n) || (size_t) __n > __bos (__s)))
8d6dc3b
-    return __fgets_unlocked_chk (__s, __bos (__s), __n, __stream);
8d6dc3b
+  if (__bos (__s) != (size_t) -1 && (size_t) __n > __bos (__s))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __fgets_unlocked_alias (__s, __n, __stream);
8d6dc3b
 }
8d6dc3b
 #endif
a9a5615
--- glibc-20050405T2114/linuxthreads/ChangeLog	31 Mar 2005 10:02:53 -0000	1.844
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/ChangeLog	1 Apr 2005 15:13:15 -0000	1.817.2.21
4465bbc
@@ -801,6 +801,12 @@
c7aa529
 	(pthread_barrierattr_setpshared): Return EINVAL if pshared
c7aa529
 	is neither PTHREAD_PROCESS_PRIVATE nor PTHREAD_PROCESS_SHARED.
c7aa529
 
c7aa529
+2003-09-02  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
+	* sysdeps/sparc/tls.h (TLS_TCB_SIZE): If in ld.so and NPTL struct
c7aa529
+	pthread is bigger than struct _pthread_descr_struct, use NPTL struct
c7aa529
+	pthread size.
c7aa529
+
c7aa529
 2003-09-02  Ulrich Drepper  <drepper@redhat.com>
c7aa529
 
c7aa529
 	* sysdeps/unix/sysv/linux/i386/dl-sysdep.h
4465bbc
@@ -933,6 +939,34 @@
c7aa529
 
c7aa529
 2003-07-22  Jakub Jelinek  <jakub@redhat.com>
c7aa529
 
c7aa529
+	* sysdeps/alpha/tls.h (TLS_INIT_TCB_SIZE, TLS_TCB_SIZE): Change to 0.
c7aa529
+	(TLS_INIT_TCB_ALIGN, TLS_TCB_ALIGN): Alignment of struct
c7aa529
+	_pthread_descr_struct.
c7aa529
+	(TLS_PRE_TCB_SIZE): Add sizeof (tcbhead_t) and pad to align.
c7aa529
+	If in ld.so and NPTL struct pthread is bigger than struct
c7aa529
+	_pthread_descr_struct, use NPTL struct pthread size.
c7aa529
+	(TLS_TCB_OFFSET): Define.
c7aa529
+	(INSTALL_DTV, INSTALL_NEW_DTV, GET_DTV, TLS_INIT_TP, THREAD_DTV,
c7aa529
+	THREAD_SELF, INIT_THREAD_SELF): Changed to match NPTL tls.h
c7aa529
+	definitions.
c7aa529
+	* sysdeps/i386/tls.h (TLS_TCB_SIZE): If in ld.so and NPTL struct
c7aa529
+	pthread is bigger than struct _pthread_descr_struct, use NPTL struct
c7aa529
+	pthread size.
c7aa529
+	* sysdeps/ia64/tls.h (TLS_PRE_TCB_SIZE): Likewise.
c7aa529
+	* sysdeps/powerpc/tls.h (TLS_PRE_TCB_SIZE): Likewise.
c7aa529
+	* sysdeps/s390/tls.h (TLS_TCB_SIZE): Likewise.
c7aa529
+	* sysdeps/sh/tls.h (TLS_PRE_TCB_SIZE): Likewise.
c7aa529
+	* sysdeps/x86_64/tls.h (TLS_TCB_SIZE): Likewise.
c7aa529
+	* sysdeps/pthread/Makefile (gen-as-const-headers): Add
c7aa529
+	nptl-struct-pthread.sym if nptl tree is present.
c7aa529
+	(before-compile): Add $(common-objpfx)nptl-struct-pthread.h
c7aa529
+	if nptl tree is not present.
c7aa529
+	(common-generated): Add nptl-struct-pthread.h.
c7aa529
+	($(common-objpfx)nptl-struct-pthread.h): New rule.
c7aa529
+	* sysdeps/pthread/nptl-struct-pthread.sym: New file.
c7aa529
+
c7aa529
+2003-07-22  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
 	* descr.h (struct _pthread_descr_struct): Provide p_res member
c7aa529
 	even if USE_TLS && HAVE___THREAD.
c7aa529
 	* sysdeps/pthread/res-state.c (__res_state): Return __resp
a9a5615
--- glibc-20050405T2114/linuxthreads/Makefile	7 Feb 2005 19:30:03 -0000	1.98
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/Makefile	8 Feb 2005 10:04:10 -0000	1.94.2.5
99d596a
@@ -245,15 +245,18 @@ $(addprefix $(objpfx), \
c7aa529
   $(filter-out $(tests-static) $(tests-reverse) unload, \
c7aa529
     $(tests) $(test-srcs))): $(objpfx)libpthread.so \
c7aa529
 			     $(objpfx)libpthread_nonshared.a
c7aa529
-# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so,
c7aa529
+# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so,
c7aa529
 # since otherwise libpthread.so comes before libc.so when linking.
c7aa529
 $(addprefix $(objpfx), $(tests-reverse)): \
c7aa529
-  $(objpfx)../libc.so $(objpfx)libpthread.so \
c7aa529
+  $(objpfx)linklibc.so $(objpfx)libpthread.so \
c7aa529
   $(objpfx)libpthread_nonshared.a
c7aa529
 $(objpfx)../libc.so: $(common-objpfx)libc.so ;
c7aa529
 $(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.so
c7aa529
 $(objpfx)unload: $(common-objpfx)dlfcn/libdl.so
c7aa529
 $(objpfx)unload.out: $(objpfx)libpthread.so $(objpfx)libpthread_nonshared.a
c7aa529
+$(objpfx)linklibc.so: $(common-objpfx)libc.so
c7aa529
+	ln -s ../libc.so $@
c7aa529
+generated += libclink.so
c7aa529
 else
c7aa529
 $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a
c7aa529
 $(addprefix $(objpfx),$(librt-tests)): $(common-objpfx)rt/librt.a
a9a5615
--- glibc-20050405T2114/linuxthreads/cancel.c	22 Feb 2003 00:55:21 -0000	1.23
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/cancel.c	22 Sep 2004 21:20:55 -0000	1.23.2.1
c7aa529
@@ -230,5 +230,6 @@ void __pthread_perform_cleanup(char *cur
c7aa529
     }
c7aa529
 
c7aa529
   /* And the TSD which needs special help.  */
c7aa529
+  THREAD_SETMEM (self, p_cancelstate, PTHREAD_CANCEL_DISABLE);
c7aa529
   __libc_thread_freeres ();
c7aa529
 }
a9a5615
--- glibc-20050405T2114/linuxthreads/lockfile.c	18 Dec 2002 01:16:46 -0000	1.10
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/lockfile.c	22 Sep 2004 21:20:55 -0000	1.10.2.1
c7aa529
@@ -74,7 +74,11 @@ __fresetlockfiles (void)
c7aa529
   __pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE_NP);
c7aa529
 
c7aa529
   for (i = _IO_iter_begin(); i != _IO_iter_end(); i = _IO_iter_next(i))
c7aa529
-    __pthread_mutex_init (_IO_iter_file(i)->_lock, &attr);
c7aa529
+    {
c7aa529
+      _IO_lock_t *_lock = _IO_iter_file(i)->_lock;
c7aa529
+      if (_lock)
c7aa529
+	__pthread_mutex_init (_lock, &attr);
c7aa529
+    }
c7aa529
 
c7aa529
   __pthread_mutexattr_destroy (&attr);
c7aa529
 
a9a5615
--- glibc-20050405T2114/linuxthreads/semaphore.h	17 Apr 2004 23:01:39 -0000	1.13
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/semaphore.h	22 Sep 2004 21:20:55 -0000	1.13.2.1
c7aa529
@@ -21,6 +21,7 @@
c7aa529
 # define __need_timespec
c7aa529
 # include <time.h>
c7aa529
 #endif
c7aa529
+#include <bits/pthreadtypes.h>
c7aa529
 
c7aa529
 #ifndef _PTHREAD_DESCR_DEFINED
c7aa529
 /* Thread descriptors.  Needed for `sem_t' definition.  */
a9a5615
--- glibc-20050405T2114/linuxthreads/tst-tls1.h	2 Sep 2003 00:29:30 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/tst-tls1.h	22 Sep 2004 21:20:55 -0000	1.1.2.1
c7aa529
@@ -2,7 +2,7 @@
c7aa529
 #include <stdlib.h>
c7aa529
 #include <tls.h>
c7aa529
 
c7aa529
-#if USE_TLS && HAVE___THREAD
c7aa529
+#if USE_TLS && (0 || HAVE___THREAD)
c7aa529
 
c7aa529
 struct tls_obj
c7aa529
 {
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/alpha/tls.h	9 Jan 2005 20:01:12 -0000	1.6
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/alpha/tls.h	8 Feb 2005 10:04:11 -0000	1.5.2.2
cc43692
@@ -58,54 +58,76 @@ typedef struct
c7aa529
 #  include <sysdep.h>
c7aa529
 
c7aa529
 /* This is the size of the initial TCB.  */
c7aa529
-#  define TLS_INIT_TCB_SIZE	sizeof (tcbhead_t)
c7aa529
+#  define TLS_INIT_TCB_SIZE	0
c7aa529
 
c7aa529
 /* Alignment requirements for the initial TCB.  */
c7aa529
-#  define TLS_INIT_TCB_ALIGN	__alignof__ (tcbhead_t)
c7aa529
+#  define TLS_INIT_TCB_ALIGN	__alignof__ (struct _pthread_descr_struct)
c7aa529
 
c7aa529
 /* This is the size of the TCB.  */
c7aa529
-#  define TLS_TCB_SIZE		sizeof (tcbhead_t)
c7aa529
+#  define TLS_TCB_SIZE		0
c7aa529
 
c7aa529
 /* Alignment requirements for the TCB.  */
c7aa529
-#  define TLS_TCB_ALIGN		__alignof__ (tcbhead_t)
c7aa529
+#  define TLS_TCB_ALIGN		__alignof__ (struct _pthread_descr_struct)
c7aa529
 
c7aa529
 /* This is the size we need before TCB.  */
c7aa529
-#  define TLS_PRE_TCB_SIZE	sizeof (struct _pthread_descr_struct)
c7aa529
+#  ifndef IS_IN_rtld
c7aa529
+#   define TLS_PRE_TCB_SIZE \
c7aa529
+  (sizeof (struct _pthread_descr_struct)				\
c7aa529
+   + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
c7aa529
+#  else
c7aa529
+#   include <nptl-struct-pthread.h>
c7aa529
+#   define TLS_PRE_TCB_SIZE \
c7aa529
+  ((sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE	\
c7aa529
+    ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE)	\
c7aa529
+   + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
c7aa529
+#  endif
c7aa529
 
c7aa529
 /* The DTV is allocated at the TP; the TCB is placed elsewhere.  */
c7aa529
 #  define TLS_DTV_AT_TP 1
c7aa529
 
c7aa529
+/* The following assumes that TP (R2 or R13) points to the end of the
c7aa529
+   TCB + 0x7000 (per the ABI).  This implies that TCB address is
c7aa529
+   TP - 0x7000.  As we define TLS_DTV_AT_TP we can
c7aa529
+   assume that the pthread struct is allocated immediately ahead of the
c7aa529
+   TCB.  This implies that the pthread_descr address is
c7aa529
+   TP - (TLS_PRE_TCB_SIZE + 0x7000).  */
c7aa529
+/* ??? PPC uses offset 0x7000; seems like a good idea for alpha too,
c7aa529
+   but binutils not yet changed to match.  */
c7aa529
+#  define TLS_TCB_OFFSET 0
c7aa529
+
c7aa529
 /* Install the dtv pointer.  The pointer passed is to the element with
c7aa529
    index -1 which contain the length.  */
c7aa529
 #  define INSTALL_DTV(TCBP, DTVP) \
c7aa529
-  (((tcbhead_t *) (TCBP))->dtv = (DTVP) + 1)
c7aa529
+  (((tcbhead_t *) (TCBP))[-1].dtv = (DTVP) + 1)
c7aa529
 
c7aa529
 /* Install new dtv for current thread.  */
c7aa529
 #  define INSTALL_NEW_DTV(DTV) \
c7aa529
-  (((tcbhead_t *)__builtin_thread_pointer ())->dtv = (DTV))
c7aa529
+  (THREAD_DTV() = (DTV))
c7aa529
 
c7aa529
 /* Return dtv of given thread descriptor.  */
c7aa529
 #  define GET_DTV(TCBP) \
c7aa529
-  (((tcbhead_t *) (TCBP))->dtv)
c7aa529
+  (((tcbhead_t *) (TCBP))[-1].dtv)
c7aa529
 
c7aa529
 /* Code to initially initialize the thread pointer.  This might need
c7aa529
    special attention since 'errno' is not yet available and if the
c7aa529
    operation can cause a failure 'errno' must not be touched.  */
c7aa529
 # define TLS_INIT_TP(TCBP, SECONDCALL) \
c7aa529
-  (__builtin_set_thread_pointer (TCBP), 0)
c7aa529
+  (__builtin_set_thread_pointer ((void *) (TCBP) + TLS_TCB_OFFSET), NULL)
c7aa529
 
c7aa529
 /* Return the address of the dtv for the current thread.  */
c7aa529
 #  define THREAD_DTV() \
c7aa529
-  (((tcbhead_t *)__builtin_thread_pointer ())->dtv)
c7aa529
+  (((tcbhead_t *) (__builtin_thread_pointer () - TLS_TCB_OFFSET))[-1].dtv)
c7aa529
 
c7aa529
 /* Return the thread descriptor for the current thread.  */
c7aa529
 #  undef THREAD_SELF
c7aa529
 #  define THREAD_SELF \
c7aa529
-  ((pthread_descr)__builtin_thread_pointer () - 1)
c7aa529
+  ((pthread_descr) (__builtin_thread_pointer () \
c7aa529
+		    - TLS_TCB_OFFSET - TLS_PRE_TCB_SIZE))
c7aa529
 
c7aa529
 #  undef INIT_THREAD_SELF
c7aa529
 #  define INIT_THREAD_SELF(DESCR, NR) \
c7aa529
-  __builtin_set_thread_pointer ((struct _pthread_descr_struct *)(DESCR) + 1)
c7aa529
+  __builtin_set_thread_pointer ((char *)(DESCR) \
c7aa529
+				+ TLS_TCB_OFFSET + TLS_PRE_TCB_SIZE)
c7aa529
 
c7aa529
 /* Get the thread descriptor definition.  */
c7aa529
 #  include <linuxthreads/descr.h>
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/i386/tls.h	9 Jan 2005 20:01:13 -0000	1.38
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/i386/tls.h	8 Feb 2005 10:04:12 -0000	1.35.2.5
cc43692
@@ -86,7 +86,14 @@ typedef struct
c7aa529
 #  define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
c7aa529
 
c7aa529
 /* This is the size of the TCB.  */
c7aa529
-#  define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  ifndef IS_IN_rtld
c7aa529
+#   define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  else
c7aa529
+#   include <nptl-struct-pthread.h>
c7aa529
+#   define TLS_TCB_SIZE \
c7aa529
+  (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE	\
c7aa529
+   ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE)
c7aa529
+#  endif
c7aa529
 
c7aa529
 /* Alignment requirements for the TCB.  */
c7aa529
 #  define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/ia64/tls.h	9 Jan 2005 20:01:13 -0000	1.10
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/ia64/tls.h	8 Feb 2005 10:04:14 -0000	1.9.2.2
cc43692
@@ -65,7 +65,14 @@ typedef struct
c7aa529
 #  define TLS_TCB_SIZE sizeof (tcbhead_t)
c7aa529
 
c7aa529
 /* This is the size we need before TCB.  */
c7aa529
-#  define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  ifndef IS_IN_rtld
c7aa529
+#   define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  else
c7aa529
+#   include <nptl-struct-pthread.h>
c7aa529
+#   define TLS_PRE_TCB_SIZE \
c7aa529
+  (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE	\
c7aa529
+   ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE)
c7aa529
+#  endif
c7aa529
 
c7aa529
 /* Alignment requirements for the TCB.  */
c7aa529
 #  define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/powerpc/tls.h	9 Jan 2005 20:01:14 -0000	1.9
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/powerpc/tls.h	8 Feb 2005 10:04:14 -0000	1.8.2.2
cc43692
@@ -69,11 +69,19 @@ typedef struct
c7aa529
 #  define TLS_TCB_ALIGN		__alignof__ (struct _pthread_descr_struct)
c7aa529
 
c7aa529
 /* This is the size we need before TCB.  */
c7aa529
-#  define TLS_PRE_TCB_SIZE \
c7aa529
+#  ifndef IS_IN_rtld
c7aa529
+#   define TLS_PRE_TCB_SIZE \
c7aa529
   (sizeof (struct _pthread_descr_struct)				      \
c7aa529
    + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
c7aa529
+#  else
c7aa529
+#   include <nptl-struct-pthread.h>
c7aa529
+#   define TLS_PRE_TCB_SIZE \
c7aa529
+  ((sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE	      \
c7aa529
+    ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE)	      \
c7aa529
+   + ((sizeof (tcbhead_t) + TLS_TCB_ALIGN - 1) & ~(TLS_TCB_ALIGN - 1)))
c7aa529
+#  endif
c7aa529
 
c7aa529
-/* The following assumes that TP (R2 or R13) is points to the end of the
c7aa529
+/* The following assumes that TP (R2 or R13) points to the end of the
c7aa529
    TCB + 0x7000 (per the ABI).  This implies that TCB address is
c7aa529
    TP - 0x7000.  As we define TLS_DTV_AT_TP we can
c7aa529
    assume that the pthread_descr is allocated immediately ahead of the
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/pthread/Makefile	14 Aug 2003 00:14:22 -0000	1.7
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/pthread/Makefile	22 Sep 2004 21:20:56 -0000	1.7.2.1
c7aa529
@@ -12,3 +12,15 @@ endif
c7aa529
 ifeq ($(subdir),posix)
c7aa529
 CFLAGS-confstr.c += -DLIBPTHREAD_VERSION="\"$(shell sed 's/\(.*\) by .*/\1/' ../linuxthreads/Banner)\""
c7aa529
 endif
c7aa529
+
c7aa529
+ifeq ($(subdir),csu)
c7aa529
+# Find out the size of NPTL struct pthread
c7aa529
+ifneq (,$(wildcard $(..)nptl/descr.h))
c7aa529
+gen-as-const-headers += nptl-struct-pthread.sym
c7aa529
+else
c7aa529
+before-compile += $(common-objpfx)nptl-struct-pthread.h
c7aa529
+common-generated += nptl-struct-pthread.h
c7aa529
+$(common-objpfx)nptl-struct-pthread.h:
c7aa529
+	@echo '#define NPTL_STRUCT_PTHREAD_SIZE 0' > $@
c7aa529
+endif
c7aa529
+endif
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/pthread/nptl-struct-pthread.sym 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/pthread/nptl-struct-pthread.sym	22 Sep 2004 21:20:56 -0000	1.1.2.1
c7aa529
@@ -0,0 +1,13 @@
c7aa529
+#ifdef HAVE_TLS_SUPPORT
c7aa529
+# ifndef HAVE_FORCED_UNWIND
c7aa529
+#  define HAVE_FORCED_UNWIND 1
c7aa529
+# endif
c7aa529
+# define __need_struct_pthread_size
c7aa529
+# include <nptl/descr.h>
c7aa529
+#endif
c7aa529
+
c7aa529
+--
c7aa529
+
c7aa529
+#ifdef HAVE_TLS_SUPPORT
c7aa529
+NPTL_STRUCT_PTHREAD_SIZE	sizeof (struct pthread)
c7aa529
+#endif
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/s390/tls.h	9 Jan 2005 20:01:14 -0000	1.4
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/s390/tls.h	8 Feb 2005 10:04:15 -0000	1.3.2.2
cc43692
@@ -77,7 +77,14 @@ typedef struct
c7aa529
 #  define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
c7aa529
 
c7aa529
 /* This is the size of the TCB.  */
c7aa529
-#  define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  ifndef IS_IN_rtld
c7aa529
+#   define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  else
c7aa529
+#   include <nptl-struct-pthread.h>
c7aa529
+#   define TLS_TCB_SIZE \
c7aa529
+  (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE	\
c7aa529
+   ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE)
c7aa529
+#  endif
c7aa529
 
c7aa529
 /* Alignment requirements for the TCB.  */
c7aa529
 #  define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/sh/tls.h	9 Jan 2005 20:01:15 -0000	1.10
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/sh/tls.h	8 Feb 2005 10:04:15 -0000	1.9.2.2
cc43692
@@ -69,7 +69,14 @@ typedef struct
c7aa529
 #  define TLS_TCB_SIZE sizeof (tcbhead_t)
c7aa529
 
c7aa529
 /* This is the size we need before TCB.  */
c7aa529
-#  define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  ifndef IS_IN_rtld
c7aa529
+#   define TLS_PRE_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  else
c7aa529
+#   include <nptl-struct-pthread.h>
c7aa529
+#   define TLS_PRE_TCB_SIZE \
c7aa529
+  (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE	\
c7aa529
+   ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE)
c7aa529
+#  endif
c7aa529
 
c7aa529
 /* Alignment requirements for the TCB.  */
c7aa529
 #  define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/sparc/tls.h	9 Jan 2005 20:01:15 -0000	1.4
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/sparc/tls.h	8 Feb 2005 10:04:16 -0000	1.3.2.2
cc43692
@@ -69,7 +69,14 @@ typedef struct
c7aa529
 #  define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
c7aa529
 
c7aa529
 /* This is the size of the TCB.  */
c7aa529
-#  define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  ifndef IS_IN_rtld
c7aa529
+#   define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  else
c7aa529
+#   include <nptl-struct-pthread.h>
c7aa529
+#   define TLS_TCB_SIZE \
c7aa529
+  (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE	\
c7aa529
+   ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE)
c7aa529
+#  endif
c7aa529
 
c7aa529
 /* Alignment requirements for the TCB.  */
c7aa529
 #  define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
a9a5615
--- glibc-20050405T2114/linuxthreads/sysdeps/x86_64/tls.h	9 Jan 2005 20:01:15 -0000	1.7
a9a5615
+++ glibc-20050405T2114-fedora/linuxthreads/sysdeps/x86_64/tls.h	8 Feb 2005 10:04:16 -0000	1.6.2.2
cc43692
@@ -71,7 +71,14 @@ typedef struct
c7aa529
 #  define TLS_INIT_TCB_ALIGN __alignof__ (tcbhead_t)
c7aa529
 
c7aa529
 /* This is the size of the TCB.  */
c7aa529
-#  define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  ifndef IS_IN_rtld
c7aa529
+#   define TLS_TCB_SIZE sizeof (struct _pthread_descr_struct)
c7aa529
+#  else
c7aa529
+#   include <nptl-struct-pthread.h>
c7aa529
+#   define TLS_TCB_SIZE \
c7aa529
+  (sizeof (struct _pthread_descr_struct) > NPTL_STRUCT_PTHREAD_SIZE	\
c7aa529
+   ? sizeof (struct _pthread_descr_struct) : NPTL_STRUCT_PTHREAD_SIZE)
c7aa529
+#  endif
c7aa529
 
c7aa529
 /* Alignment requirements for the TCB.  */
c7aa529
 #  define TLS_TCB_ALIGN __alignof__ (struct _pthread_descr_struct)
a9a5615
--- glibc-20050405T2114/locale/iso-4217.def	20 Mar 2005 04:14:36 -0000	1.16
a9a5615
+++ glibc-20050405T2114-fedora/locale/iso-4217.def	24 Mar 2005 08:19:03 -0000	1.15.2.2
c7aa529
@@ -8,6 +8,7 @@
c7aa529
  *
c7aa529
  * !!! The list has to be sorted !!!
c7aa529
  */
c7aa529
+DEFINE_INT_CURR("ADP")		/* Andorran Peseta -> EUR  */
c7aa529
 DEFINE_INT_CURR("AED")		/* United Arab Emirates Dirham  */
c7aa529
 DEFINE_INT_CURR("AFA")		/* Afghanistan Afgani  */
c7aa529
 DEFINE_INT_CURR("ALL")		/* Albanian Lek  */
c7aa529
@@ -15,12 +16,14 @@ DEFINE_INT_CURR("AMD")		/* Armenia Dram 
c7aa529
 DEFINE_INT_CURR("ANG")		/* Netherlands Antilles  */
c7aa529
 DEFINE_INT_CURR("AOA")		/* Angolan Kwanza  */
c7aa529
 DEFINE_INT_CURR("ARS")		/* Argentine Peso  */
c7aa529
+DEFINE_INT_CURR("ATS")		/* Austrian Schilling -> EUR  */
c7aa529
 DEFINE_INT_CURR("AUD")		/* Australian Dollar  */
c7aa529
 DEFINE_INT_CURR("AWG")		/* Aruba Guilder  */
c7aa529
 DEFINE_INT_CURR("AZM")		/* Azerbaijan Manat  */
c7aa529
 DEFINE_INT_CURR("BAK")		/* Bosnian and Herzegovina Convertible Mark  */
c7aa529
 DEFINE_INT_CURR("BBD")		/* Barbados Dollar  */
c7aa529
 DEFINE_INT_CURR("BDT")		/* Bangladesh Taka  */
c7aa529
+DEFINE_INT_CURR("BEF")		/* Belgian Franc -> EUR  */
c7aa529
 DEFINE_INT_CURR("BGL")		/* Bulgarian Lev  */
c7aa529
 DEFINE_INT_CURR("BHD")		/* Bahraini Dinar  */
c7aa529
 DEFINE_INT_CURR("BIF")		/* Burundi Franc  */
d04ad27
@@ -45,6 +48,7 @@ DEFINE_INT_CURR("CUP")		/* Cuban Peso  *
c7aa529
 DEFINE_INT_CURR("CVE")		/* Cape Verde Escudo  */
c7aa529
 DEFINE_INT_CURR("CYP")		/* Cypriot Pound  */
c7aa529
 DEFINE_INT_CURR("CZK")		/* Czech Koruna  */
c7aa529
+DEFINE_INT_CURR("DEM")		/* German Mark -> EUR  */
c7aa529
 DEFINE_INT_CURR("DJF")		/* Djibouti Franc  */
c7aa529
 DEFINE_INT_CURR("DKK")		/* Danish Krone (Faroe Islands, Greenland)  */
c7aa529
 DEFINE_INT_CURR("DOP")		/* Dominican Republic  */
d04ad27
@@ -52,16 +56,20 @@ DEFINE_INT_CURR("DZD")		/* Algerian Dina
c7aa529
 DEFINE_INT_CURR("EEK")		/* Estonian Kroon  */
c7aa529
 DEFINE_INT_CURR("EGP")		/* Egyptian Pound  */
c7aa529
 DEFINE_INT_CURR("ERN")		/* Eritrean Nakfa  */
c7aa529
+DEFINE_INT_CURR("ESP")		/* Spanish Peseta -> EUR  */
c7aa529
 DEFINE_INT_CURR("ETB")		/* Ethiopian Birr  */
c7aa529
 DEFINE_INT_CURR("EUR")		/* European Union Euro  */
c7aa529
+DEFINE_INT_CURR("FIM")		/* Finnish Markka -> EUR  */
c7aa529
 DEFINE_INT_CURR("FJD")		/* Fiji Dollar  */
c7aa529
 DEFINE_INT_CURR("FKP")		/* Falkland Islands Pound (Malvinas)  */
c7aa529
+DEFINE_INT_CURR("FRF")		/* French Franc -> EUR  */
c7aa529
 DEFINE_INT_CURR("GBP")		/* British Pound  */
c7aa529
 DEFINE_INT_CURR("GEL")		/* Georgia Lari  */
c7aa529
 DEFINE_INT_CURR("GHC")		/* Ghana Cedi  */
c7aa529
 DEFINE_INT_CURR("GIP")		/* Gibraltar Pound  */
c7aa529
 DEFINE_INT_CURR("GMD")		/* Gambian Dalasi  */
c7aa529
 DEFINE_INT_CURR("GNF")		/* Guinea Franc  */
c7aa529
+DEFINE_INT_CURR("GRD")		/* Greek Drachma -> EUR  */
c7aa529
 DEFINE_INT_CURR("GTQ")		/* Guatemala Quetzal  */
c7aa529
 DEFINE_INT_CURR("GYD")		/* Guyana Dollar  */
c7aa529
 DEFINE_INT_CURR("HKD")		/* Hong Kong Dollar  */
d04ad27
@@ -70,12 +78,14 @@ DEFINE_INT_CURR("HRK")		/* Croatia Kuna 
c7aa529
 DEFINE_INT_CURR("HTG")		/* Haiti Gourde  */
c7aa529
 DEFINE_INT_CURR("HUF")		/* Hungarian Forint  */
c7aa529
 DEFINE_INT_CURR("IDR")		/* Indonesia Rupiah  */
c7aa529
+DEFINE_INT_CURR("IEP")		/* Irish Pound -> EUR  */
c7aa529
 DEFINE_INT_CURR("ILS")		/* Israeli Shekel  */
c7aa529
 DEFINE_INT_CURR("IMP")		/* Isle of Man Pounds  */
c7aa529
 DEFINE_INT_CURR("INR")		/* Indian Rupee (Bhutan)  */
c7aa529
 DEFINE_INT_CURR("IQD")		/* Iraqi Dinar  */
c7aa529
 DEFINE_INT_CURR("IRR")		/* Iranian Rial  */
c7aa529
 DEFINE_INT_CURR("ISK")		/* Iceland Krona  */
c7aa529
+DEFINE_INT_CURR("ITL")		/* Italian Lira -> EUR  */
c7aa529
 DEFINE_INT_CURR("JMD")		/* Jamaican Dollar  */
c7aa529
 DEFINE_INT_CURR("JOD")		/* Jordanian Dinar  */
c7aa529
 DEFINE_INT_CURR("JPY")		/* Japanese Yen  */
d04ad27
@@ -94,6 +104,7 @@ DEFINE_INT_CURR("LKR")		/* Sri Lankan Ru
c7aa529
 DEFINE_INT_CURR("LRD")		/* Liberian Dollar  */
c7aa529
 DEFINE_INT_CURR("LSL")		/* Lesotho Maloti  */
c7aa529
 DEFINE_INT_CURR("LTL")		/* Lithuanian Litas  */
c7aa529
+DEFINE_INT_CURR("LUF")		/* Luxembourg Franc -> EUR  */
c7aa529
 DEFINE_INT_CURR("LVL")		/* Latvia Lat  */
c7aa529
 DEFINE_INT_CURR("LYD")		/* Libyan Arab Jamahiriya Dinar  */
c7aa529
 DEFINE_INT_CURR("MAD")		/* Moroccan Dirham  */
d04ad27
@@ -114,6 +125,7 @@ DEFINE_INT_CURR("MZM")		/* Mozambique Me
c7aa529
 DEFINE_INT_CURR("NAD")		/* Namibia Dollar  */
c7aa529
 DEFINE_INT_CURR("NGN")		/* Nigeria Naira  */
c7aa529
 DEFINE_INT_CURR("NIO")		/* Nicaragua Cordoba Oro  */
c7aa529
+DEFINE_INT_CURR("NLG")		/* Netherlands Guilder -> EUR  */
c7aa529
 DEFINE_INT_CURR("NOK")		/* Norwegian Krone  */
c7aa529
 DEFINE_INT_CURR("NPR")		/* Nepalese Rupee  */
c7aa529
 DEFINE_INT_CURR("NZD")		/* New Zealand Dollar  */
d04ad27
@@ -124,6 +136,7 @@ DEFINE_INT_CURR("PGK")		/* Papau New Gui
c7aa529
 DEFINE_INT_CURR("PHP")		/* Philippines Peso  */
c7aa529
 DEFINE_INT_CURR("PKR")		/* Pakistan Rupee  */
c7aa529
 DEFINE_INT_CURR("PLN")		/* Polish Zloty  */
c7aa529
+DEFINE_INT_CURR("PTE")		/* Portugese Escudo -> EUR  */
c7aa529
 DEFINE_INT_CURR("PYG")		/* Paraguay Guarani  */
c7aa529
 DEFINE_INT_CURR("QAR")		/* Qatar Rial  */
c7aa529
 DEFINE_INT_CURR("ROL")		/* Romanian Leu  */
a9a5615
--- glibc-20050405T2114/locale/programs/3level.h	13 Jun 2003 20:45:38 -0000	1.5
a9a5615
+++ glibc-20050405T2114-fedora/locale/programs/3level.h	22 Sep 2004 21:20:58 -0000	1.5.2.1
c7aa529
@@ -204,6 +204,42 @@ CONCAT(TABLE,_iterate) (struct TABLE *t,
c7aa529
 	}
c7aa529
     }
c7aa529
 }
c7aa529
+
c7aa529
+/* GCC ATM seems to do a poor job with pointers to nested functions passed
c7aa529
+   to inlined functions.  Help it a little bit with this hack.  */
c7aa529
+#define wchead_table_iterate(tp, fn) \
c7aa529
+do									      \
c7aa529
+  {									      \
c7aa529
+    struct wchead_table *t = (tp);					      \
c7aa529
+    uint32_t index1;							      \
c7aa529
+    for (index1 = 0; index1 < t->level1_size; index1++)			      \
c7aa529
+      {									      \
c7aa529
+	uint32_t lookup1 = t->level1[index1];				      \
c7aa529
+	if (lookup1 != ((uint32_t) ~0))					      \
c7aa529
+	  {								      \
c7aa529
+	    uint32_t lookup1_shifted = lookup1 << t->q;			      \
c7aa529
+	    uint32_t index2;						      \
c7aa529
+	    for (index2 = 0; index2 < (1 << t->q); index2++)		      \
c7aa529
+	      {								      \
c7aa529
+		uint32_t lookup2 = t->level2[index2 + lookup1_shifted];	      \
c7aa529
+		if (lookup2 != ((uint32_t) ~0))				      \
c7aa529
+		  {							      \
c7aa529
+		    uint32_t lookup2_shifted = lookup2 << t->p;		      \
c7aa529
+		    uint32_t index3;					      \
c7aa529
+		    for (index3 = 0; index3 < (1 << t->p); index3++)	      \
c7aa529
+		      {							      \
c7aa529
+			struct element_t *lookup3			      \
c7aa529
+			  = t->level3[index3 + lookup2_shifted];	      \
c7aa529
+			if (lookup3 != NULL)				      \
c7aa529
+			  fn ((((index1 << t->q) + index2) << t->p) + index3, \
c7aa529
+			      lookup3);					      \
c7aa529
+		      }							      \
c7aa529
+		  }							      \
c7aa529
+	      }								      \
c7aa529
+	  }								      \
c7aa529
+      }									      \
c7aa529
+  } while (0)
c7aa529
+
c7aa529
 #endif
c7aa529
 
c7aa529
 #ifndef NO_FINALIZE
a9a5615
--- glibc-20050405T2114/localedata/Makefile	7 Aug 2004 23:38:13 -0000	1.101
a9a5615
+++ glibc-20050405T2114-fedora/localedata/Makefile	22 Sep 2004 21:20:58 -0000	1.101.2.1
c7aa529
@@ -222,6 +222,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo
c7aa529
 	echo -n '...'; \
c7aa529
 	input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \
c7aa529
 	$(LOCALEDEF) --alias-file=../intl/locale.alias \
c7aa529
+		     --no-archive \
c7aa529
 		     -i locales/$$input -c -f charmaps/$$charset \
c7aa529
 		     $(addprefix --prefix=,$(install_root)) $$locale; \
c7aa529
 	echo ' done'; \
a9a5615
--- glibc-20050405T2114/localedata/SUPPORTED	20 Mar 2005 04:16:36 -0000	1.74
a9a5615
+++ glibc-20050405T2114-fedora/localedata/SUPPORTED	24 Mar 2005 08:19:04 -0000	1.71.2.4
8d6dc3b
@@ -64,6 +64,7 @@ cy_GB.UTF-8/UTF-8 \
c7aa529
 cy_GB/ISO-8859-14 \
c7aa529
 da_DK.UTF-8/UTF-8 \
c7aa529
 da_DK/ISO-8859-1 \
c7aa529
+da_DK.ISO-8859-15/ISO-8859-15 \
c7aa529
 de_AT.UTF-8/UTF-8 \
c7aa529
 de_AT/ISO-8859-1 \
c7aa529
 de_AT@euro/ISO-8859-15 \
8d6dc3b
@@ -90,6 +91,7 @@ en_DK.UTF-8/UTF-8 \
c7aa529
 en_DK/ISO-8859-1 \
c7aa529
 en_GB.UTF-8/UTF-8 \
c7aa529
 en_GB/ISO-8859-1 \
c7aa529
+en_GB.ISO-8859-15/ISO-8859-15 \
c7aa529
 en_HK.UTF-8/UTF-8 \
c7aa529
 en_HK/ISO-8859-1 \
c7aa529
 en_IE.UTF-8/UTF-8 \
8d6dc3b
@@ -104,6 +106,7 @@ en_SG.UTF-8/UTF-8 \
c7aa529
 en_SG/ISO-8859-1 \
c7aa529
 en_US.UTF-8/UTF-8 \
c7aa529
 en_US/ISO-8859-1 \
c7aa529
+en_US.ISO-8859-15/ISO-8859-15 \
c7aa529
 en_ZA.UTF-8/UTF-8 \
c7aa529
 en_ZA/ISO-8859-1 \
c7aa529
 en_ZW.UTF-8/UTF-8 \
8d6dc3b
@@ -244,6 +247,8 @@ nl_NL/ISO-8859-1 \
c7aa529
 nl_NL@euro/ISO-8859-15 \
c7aa529
 nn_NO.UTF-8/UTF-8 \
c7aa529
 nn_NO/ISO-8859-1 \
c7aa529
+no_NO.UTF-8/UTF-8 \
c7aa529
+no_NO/ISO-8859-1 \
c7aa529
 oc_FR/ISO-8859-1 \
c7aa529
 om_ET/UTF-8 \
c7aa529
 om_KE/ISO-8859-1 \
d04ad27
@@ -283,6 +288,7 @@ sv_FI/ISO-8859-1 \
c7aa529
 sv_FI@euro/ISO-8859-15 \
c7aa529
 sv_SE.UTF-8/UTF-8 \
c7aa529
 sv_SE/ISO-8859-1 \
c7aa529
+sv_SE.ISO-8859-15/ISO-8859-15 \
c7aa529
 ta_IN/UTF-8 \
c7aa529
 te_IN/UTF-8 \
c7aa529
 tg_TJ/KOI8-T \
a9a5615
--- glibc-20050405T2114/localedata/locales/cy_GB	28 Sep 2004 04:37:33 -0000	1.4
a9a5615
+++ glibc-20050405T2114-fedora/localedata/locales/cy_GB	29 Sep 2004 08:48:23 -0000	1.3.2.2
c7aa529
@@ -248,8 +248,11 @@ mon         "<U0049><U006F><U006E>
f3926e3
 d_t_fmt     "<U0044><U0079><U0064><U0064><U0020><U0025><U0041><U0020><U0025><U0064><U0020><U006d><U0069><U0073><U0020><U0025><U0042><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
c7aa529
 d_fmt       "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0079>"
c7aa529
 t_fmt       "<U0025><U0054>"
c7aa529
-am_pm       "";""
c7aa529
-t_fmt_ampm  ""
c7aa529
+am_pm       "<U0041><U004D>";"<U0050><U004D>"
c7aa529
+t_fmt_ampm  "<U0025><U006C><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0050><U0020><U0025><U005A>"
c7aa529
+date_fmt    "<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
c7aa529
+<U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
c7aa529
+<U0025><U005A><U0020><U0025><U0059>"
c7aa529
 END LC_TIME
c7aa529
 
c7aa529
 LC_MESSAGES
a9a5615
--- glibc-20050405T2114/localedata/locales/en_GB	31 Oct 2004 23:42:26 -0000	1.12
a9a5615
+++ glibc-20050405T2114-fedora/localedata/locales/en_GB	2 Nov 2004 12:25:47 -0000	1.10.2.2
c7aa529
@@ -112,8 +112,8 @@ mon         "<U004A><U0061><U006E>
c7aa529
 d_t_fmt     "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
c7aa529
 d_fmt       "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0079>"
c7aa529
 t_fmt       "<U0025><U0054>"
c7aa529
-am_pm       "";""
c7aa529
-t_fmt_ampm  ""
c7aa529
+am_pm       "<U0041><U004D>";"<U0050><U004D>"
c7aa529
+t_fmt_ampm  "<U0025><U006C><U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U0050><U0020><U0025><U005A>"
c7aa529
 date_fmt	"<U0025><U0061><U0020><U0025><U0062><U0020><U0025><U0065>/
c7aa529
 <U0020><U0025><U0048><U003A><U0025><U004D><U003A><U0025><U0053><U0020>/
c7aa529
 <U0025><U005A><U0020><U0025><U0059>"
a9a5615
--- glibc-20050405T2114/localedata/locales/en_US	31 Oct 2004 23:42:26 -0000	1.9
a9a5615
+++ glibc-20050405T2114-fedora/localedata/locales/en_US	2 Nov 2004 12:25:47 -0000	1.7.2.2
c7aa529
@@ -100,7 +100,6 @@ mon	"<U004A><U0061><U006E><U0075><U0061>
c7aa529
 	"<U004F><U0063><U0074><U006F><U0062><U0065><U0072>";/
c7aa529
 	"<U004E><U006F><U0076><U0065><U006D><U0062><U0065><U0072>";/
c7aa529
 	"<U0044><U0065><U0063><U0065><U006D><U0062><U0065><U0072>"
c7aa529
-am_pm   "";""
c7aa529
 % Appropriate date and time representation (%c)
c7aa529
 %	"%a %d %b %Y %r %Z"
c7aa529
 d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0072><U0020><U0025><U005A>"
a9a5615
--- glibc-20050405T2114/localedata/locales/no_NO 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/localedata/locales/no_NO	22 Sep 2004 21:21:01 -0000	1.11.2.1
c7aa529
@@ -0,0 +1,69 @@
c7aa529
+escape_char	/
c7aa529
+comment_char    %
c7aa529
+
c7aa529
+% Norwegian language locale for Norway
c7aa529
+% Source: Norsk Standardiseringsforbund
c7aa529
+% Address: University Library,
c7aa529
+%   Drammensveien 41, N-9242 Oslo, Norge
c7aa529
+% Contact: Kolbjoern Aamboe
c7aa529
+% Tel: +47 - 22859109
c7aa529
+% Fax: +47 - 22434497
c7aa529
+% Email: kolbjorn.aambo@usit.uio.no
c7aa529
+% Language: no
c7aa529
+% Territory: NO
c7aa529
+% Revision: 4.3
c7aa529
+% Date: 1996-10-15
c7aa529
+% Application: general
c7aa529
+% Users: general
c7aa529
+% Repertoiremap: mnemonic.ds
c7aa529
+% Charset: ISO-8859-1
c7aa529
+% Distribution and use is free, also
c7aa529
+% for commercial purposes.
c7aa529
+
c7aa529
+LC_IDENTIFICATION
c7aa529
+copy "nb_NO"
c7aa529
+END LC_IDENTIFICATION
c7aa529
+
c7aa529
+LC_COLLATE
c7aa529
+copy "nb_NO"
c7aa529
+END LC_COLLATE
c7aa529
+
c7aa529
+LC_CTYPE
c7aa529
+copy "nb_NO"
c7aa529
+END LC_CTYPE
c7aa529
+
c7aa529
+LC_MONETARY
c7aa529
+copy "nb_NO"
c7aa529
+END LC_MONETARY
c7aa529
+
c7aa529
+LC_NUMERIC
c7aa529
+copy "nb_NO"
c7aa529
+END LC_NUMERIC
c7aa529
+
c7aa529
+LC_TIME
c7aa529
+copy "nb_NO"
c7aa529
+END LC_TIME
c7aa529
+
c7aa529
+LC_MESSAGES
c7aa529
+copy "nb_NO"
c7aa529
+END LC_MESSAGES
c7aa529
+
c7aa529
+LC_PAPER
c7aa529
+copy "nb_NO"
c7aa529
+END LC_PAPER
c7aa529
+
c7aa529
+LC_TELEPHONE
c7aa529
+copy "nb_NO"
c7aa529
+END LC_TELEPHONE
c7aa529
+
c7aa529
+LC_MEASUREMENT
c7aa529
+copy "nb_NO"
c7aa529
+END LC_MEASUREMENT
c7aa529
+
c7aa529
+LC_NAME
c7aa529
+copy "nb_NO"
c7aa529
+END LC_NAME
c7aa529
+
c7aa529
+LC_ADDRESS
c7aa529
+copy "nb_NO"
c7aa529
+END LC_ADDRESS
a9a5615
--- glibc-20050405T2114/localedata/locales/zh_TW	31 Oct 2004 23:42:28 -0000	1.7
a9a5615
+++ glibc-20050405T2114-fedora/localedata/locales/zh_TW	2 Nov 2004 12:25:57 -0000	1.5.2.2
c7aa529
@@ -1,7 +1,7 @@
c7aa529
 comment_char %
c7aa529
 escape_char /
c7aa529
 %
c7aa529
-% Chinese language locale for Taiwan R.O.C.
c7aa529
+% Chinese language locale for Taiwan
c7aa529
 % charmap: BIG5-CP950
c7aa529
 %
c7aa529
 % Original Author:
c7aa529
@@ -17,7 +17,7 @@ escape_char /
c7aa529
 % Reference:	http://wwwold.dkuug.dk/JTC1/SC22/WG20/docs/n690.pdf
c7aa529
 
c7aa529
 LC_IDENTIFICATION
c7aa529
-title      "Chinese locale for Taiwan R.O.C."
c7aa529
+title      "Chinese locale for Taiwan"
c7aa529
 source     ""
c7aa529
 address    ""
c7aa529
 contact    ""
67c2a6a
@@ -25,7 +25,7 @@ email      "bug-glibc-locales@gnu.org"
c7aa529
 tel        ""
c7aa529
 fax        ""
c7aa529
 language   "Chinese"
c7aa529
-territory  "Taiwan R.O.C."
c7aa529
+territory  "Taiwan"
c7aa529
 revision   "0.2"
c7aa529
 date       "2000-08-02"
c7aa529
 %
a9a5615
--- glibc-20050405T2114/math/Versions	28 Mar 2005 20:42:43 -0000	1.9
a9a5615
+++ glibc-20050405T2114-fedora/math/Versions	26 Feb 2000 01:04:00 -0000	1.8
4465bbc
@@ -94,7 +94,7 @@ libm {
4465bbc
   }
4465bbc
   GLIBC_2.1 {
4465bbc
     # mathematical functions
4465bbc
-    exp2; exp2f; # exp2l; -- bug omitted this until GLIBC_2.4 (below)
4465bbc
+    exp2; exp2f; exp2l;
4465bbc
     exp10; exp10f; exp10l;
4465bbc
     fdim; fdimf; fdiml;
4465bbc
     fma; fmaf; fmal;
4465bbc
@@ -161,11 +161,4 @@ libm {
4465bbc
     # fp environment function
4465bbc
     feenableexcept; fedisableexcept; fegetexcept;
4465bbc
   }
4465bbc
-  GLIBC_2.4 {
4465bbc
-    # A bug in sysdeps/generic/w_exp2.c kept this from appearing
4465bbc
-    # in GLIBC_2.1 as it should have on platforms using that
4465bbc
-    # implementation file.  On others, sysdeps/CPU/Versions now
4465bbc
-    # puts exp2l in GLIBC_2.1, which will override this entry.
4465bbc
-    exp2l;
4465bbc
-  }
4465bbc
 }
a9a5615
--- glibc-20050405T2114/nptl/ChangeLog	31 Mar 2005 10:01:49 -0000	1.769
a9a5615
+++ glibc-20050405T2114-fedora/nptl/ChangeLog	5 Apr 2005 21:26:39 -0000	1.706.2.40
a9a5615
@@ -1,3 +1,9 @@
a9a5615
+2005-04-05  Jakub Jelinek  <jakub@redhat.com>
a9a5615
+
a9a5615
+	* sysdeps/pthread/pthread.h (__pthread_cleanup_routine): Use
a9a5615
+	__inline instead of inline.
a9a5615
+	* sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_routine): Likewise.
a9a5615
+
a9a5615
 2005-03-31  Jakub Jelinek  <jakub@redhat.com>
a9a5615
 
a9a5615
 	* sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_unlock.S: Use
a9a5615
@@ -581,6 +587,11 @@
c7aa529
 	Move definition inside libpthread, libc, librt check.  Provide
c7aa529
 	definition for rtld.
c7aa529
 
c7aa529
+2004-09-02  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
+	* pthread_cond_destroy.c (__pthread_cond_destroy): If there are
c7aa529
+	waiters, awake all waiters on the associated mutex.
c7aa529
+
c7aa529
 2004-09-02  Ulrich Drepper  <drepper@redhat.com>
c7aa529
 
c7aa529
 	* sysdeps/alpha/jmpbuf-unwind.h: Define __libc_unwind_longjmp.
a9a5615
@@ -2655,6 +2666,11 @@
c7aa529
 
c7aa529
 	* Makefile [$(build-shared) = yes] (tests): Depend on $(test-modules).
c7aa529
 
c7aa529
+2003-07-22  Jakub Jelinek  <jakub@redhat.com>
c7aa529
+
c7aa529
+	* descr.h: Don't include lowlevellock.h, pthreaddef.h and dl-sysdep.h
c7aa529
+	if __need_struct_pthread_size, instead define lll_lock_t.
c7aa529
+
c7aa529
 2003-07-25  Jakub Jelinek  <jakub@redhat.com>
c7aa529
 
c7aa529
 	* tst-cancel17.c (do_test): Check if aio_cancel failed.
a9a5615
--- glibc-20050405T2114/nptl/Makefile	22 Dec 2004 20:07:09 -0000	1.166
a9a5615
+++ glibc-20050405T2114-fedora/nptl/Makefile	6 Jan 2005 14:57:04 -0000	1.157.2.9
ef031de
@@ -499,15 +499,19 @@ $(addprefix $(objpfx), \
716ff1c
     $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \
716ff1c
 				       $(objpfx)libpthread_nonshared.a
c7aa529
 $(objpfx)tst-unload: $(common-objpfx)dlfcn/libdl.so
c7aa529
-# $(objpfx)../libc.so is used instead of $(common-objpfx)libc.so,
c7aa529
+# $(objpfx)linklibc.so is used instead of $(common-objpfx)libc.so,
c7aa529
 # since otherwise libpthread.so comes before libc.so when linking.
c7aa529
 $(addprefix $(objpfx), $(tests-reverse)): \
c7aa529
-  $(objpfx)../libc.so $(objpfx)libpthread.so \
c7aa529
+  $(objpfx)linklibc.so $(objpfx)libpthread.so \
c7aa529
   $(objpfx)libpthread_nonshared.a
c7aa529
 $(objpfx)../libc.so: $(common-objpfx)libc.so ;
716ff1c
 $(addprefix $(objpfx),$(tests-static) $(xtests-static)): $(objpfx)libpthread.a
c7aa529
 
c7aa529
 $(objpfx)tst-atfork2.out: $(objpfx)tst-atfork2mod.so
c7aa529
+
c7aa529
+$(objpfx)linklibc.so: $(common-objpfx)libc.so
c7aa529
+	ln -s ../libc.so $@
c7aa529
+generated += libclink.so
c7aa529
 else
c7aa529
 $(addprefix $(objpfx),$(tests) $(test-srcs)): $(objpfx)libpthread.a
c7aa529
 endif
a9a5615
--- glibc-20050405T2114/nptl/descr.h	12 Nov 2004 01:24:24 -0000	1.25
a9a5615
+++ glibc-20050405T2114-fedora/nptl/descr.h	12 Nov 2004 16:56:12 -0000	1.23.2.3
c7aa529
@@ -27,9 +27,13 @@
c7aa529
 #include <sys/types.h>
c7aa529
 #include <hp-timing.h>
c7aa529
 #include <list.h>
c7aa529
+#ifdef __need_struct_pthread_size
c7aa529
+#define lll_lock_t int
c7aa529
+#else
c7aa529
 #include <lowlevellock.h>
c7aa529
 #include <pthreaddef.h>
c7aa529
 #include <dl-sysdep.h>
c7aa529
+#endif
c7aa529
 #include "../nptl_db/thread_db.h"
c7aa529
 #include <tls.h>
c7aa529
 #ifdef HAVE_FORCED_UNWIND
a9a5615
--- glibc-20050405T2114/nptl/pthread_cond_destroy.c	2 Sep 2004 18:45:37 -0000	1.5
a9a5615
+++ glibc-20050405T2114-fedora/nptl/pthread_cond_destroy.c	22 Sep 2004 21:21:01 -0000	1.5.2.1
c7aa529
@@ -44,15 +44,35 @@ __pthread_cond_destroy (cond)
c7aa529
      broadcasted, but still are using the pthread_cond_t structure,
c7aa529
      pthread_cond_destroy needs to wait for them.  */
c7aa529
   unsigned int nwaiters = cond->__data.__nwaiters;
c7aa529
-  while (nwaiters >= (1 << COND_CLOCK_BITS))
c7aa529
+
c7aa529
+  if (nwaiters >= (1 << COND_CLOCK_BITS))
c7aa529
     {
c7aa529
-      lll_mutex_unlock (cond->__data.__lock);
c7aa529
+      /* Wake everybody on the associated mutex in case there are
c7aa529
+         threads that have been requeued to it.
c7aa529
+         Without this, pthread_cond_destroy could block potentially
c7aa529
+         for a long time or forever, as it would depend on other
c7aa529
+         thread's using the mutex.
c7aa529
+         When all threads waiting on the mutex are woken up, pthread_cond_wait
c7aa529
+         only waits for threads to acquire and release the internal
c7aa529
+         condvar lock.  */
c7aa529
+      if (cond->__data.__mutex != NULL
c7aa529
+	  && cond->__data.__mutex != (void *) ~0l)
c7aa529
+	{
c7aa529
+	  pthread_mutex_t *mut = (pthread_mutex_t *) cond->__data.__mutex;
c7aa529
+	  lll_futex_wake (&mut->__data.__lock, INT_MAX);
c7aa529
+	}
c7aa529
+
c7aa529
+      do
c7aa529
+	{
c7aa529
+	  lll_mutex_unlock (cond->__data.__lock);
c7aa529
 
c7aa529
-      lll_futex_wait (&cond->__data.__nwaiters, nwaiters);
c7aa529
+	  lll_futex_wait (&cond->__data.__nwaiters, nwaiters);
c7aa529
 
c7aa529
-      lll_mutex_lock (cond->__data.__lock);
c7aa529
+	  lll_mutex_lock (cond->__data.__lock);
c7aa529
 
c7aa529
-      nwaiters = cond->__data.__nwaiters;
c7aa529
+	  nwaiters = cond->__data.__nwaiters;
c7aa529
+	}
c7aa529
+      while (nwaiters >= (1 << COND_CLOCK_BITS));
c7aa529
     }
c7aa529
 
c7aa529
   return 0;
a9a5615
--- glibc-20050405T2114/nptl/sysdeps/pthread/pthread.h	8 Feb 2005 08:59:03 -0000	1.31
a9a5615
+++ glibc-20050405T2114-fedora/nptl/sysdeps/pthread/pthread.h	5 Apr 2005 21:26:41 -0000	1.29.2.3
a9a5615
@@ -527,7 +527,7 @@ class __pthread_cleanup_class
a9a5615
    function the compiler is free to decide inlining the change when
a9a5615
    needed or fall back on the copy which must exist somewhere
a9a5615
    else.  */
a9a5615
-extern inline void
a9a5615
+extern __inline void
a9a5615
 __pthread_cleanup_routine (struct __pthread_cleanup_frame *__frame)
a9a5615
 {
a9a5615
   if (__frame->__do_it)
a9a5615
--- glibc-20050405T2114/nptl/sysdeps/pthread/bits/libc-lock.h	26 Feb 2005 01:33:56 -0000	1.18
a9a5615
+++ glibc-20050405T2114-fedora/nptl/sysdeps/pthread/bits/libc-lock.h	5 Apr 2005 21:26:42 -0000	1.17.2.2
a9a5615
@@ -1,5 +1,5 @@
a9a5615
 /* libc-internal interface for mutex locks.  NPTL version.
a9a5615
-   Copyright (C) 1996-2001, 2002, 2003 Free Software Foundation, Inc.
a9a5615
+   Copyright (C) 1996-2001, 2002, 2003, 2005 Free Software Foundation, Inc.
a9a5615
    This file is part of the GNU C Library.
a9a5615
 
a9a5615
    The GNU C Library is free software; you can redistribute it and/or
a9a5615
@@ -408,7 +408,7 @@ extern void _pthread_cleanup_pop_restore
a9a5615
 
a9a5615
 
a9a5615
 /* Normal cleanup handling, based on C cleanup attribute.  */
a9a5615
-extern inline void
a9a5615
+extern __inline void
a9a5615
 __libc_cleanup_routine (struct __pthread_cleanup_frame *f)
a9a5615
 {
a9a5615
   if (f->__do_it)
a9a5615
--- glibc-20050405T2114/nptl/sysdeps/unix/sysv/linux/kernel-features.h 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/nptl/sysdeps/unix/sysv/linux/kernel-features.h	22 Sep 2004 21:21:02 -0000	1.1.2.1
c7aa529
@@ -0,0 +1,6 @@
c7aa529
+#include_next <kernel-features.h>
c7aa529
+
c7aa529
+/* NPTL can always assume all clone thread flags work.  */
c7aa529
+#ifndef __ASSUME_CLONE_THREAD_FLAGS
c7aa529
+# define __ASSUME_CLONE_THREAD_FLAGS	1
c7aa529
+#endif
a9a5615
--- glibc-20050405T2114/nscd/connections.c	22 Feb 2005 22:52:32 -0000	1.66
a9a5615
+++ glibc-20050405T2114-fedora/nscd/connections.c	3 Mar 2005 13:34:09 -0000	1.55.2.7
78a67cf
@@ -21,6 +21,7 @@
78a67cf
 #include <alloca.h>
78a67cf
 #include <assert.h>
78a67cf
 #include <atomic.h>
78a67cf
+#include <dlfcn.h>
78a67cf
 #include <error.h>
78a67cf
 #include <errno.h>
78a67cf
 #include <fcntl.h>
78a67cf
@@ -42,6 +43,7 @@
78a67cf
 #include <sys/socket.h>
78a67cf
 #include <sys/stat.h>
78a67cf
 #include <sys/un.h>
78a67cf
+#include <gnu/lib-names.h>
78a67cf
 
78a67cf
 #include "nscd.h"
78a67cf
 #include "dbg_log.h"
aa68137
@@ -1472,19 +1474,39 @@ start_threads (void)
78a67cf
   pthread_condattr_t condattr;
78a67cf
   pthread_condattr_init (&condattr);
78a67cf
 
78a67cf
-#if defined _POSIX_CLOCK_SELECTION && _POSIX_CLOCK_SELECTION >= 0 \
78a67cf
-    && defined _POSIX_MONOTONIC_CLOCK && _POSIX_MONOTONIC_CLOCK >= 0
78a67cf
+#if defined _POSIX_MONOTONIC_CLOCK && _POSIX_MONOTONIC_CLOCK >= 0
78a67cf
   /* Determine whether the monotonous clock is available.  */
78a67cf
   struct timespec dummy;
78a67cf
 # if _POSIX_MONOTONIC_CLOCK == 0
78a67cf
   if (sysconf (_SC_MONOTONIC_CLOCK) > 0)
78a67cf
 # endif
78a67cf
-# if _POSIX_CLOCK_SELECTION == 0
78a67cf
-    if (sysconf (_SC_CLOCK_SELECTION) > 0)
78a67cf
+    {
78a67cf
+# if defined _POSIX_CLOCK_SELECTION && _POSIX_CLOCK_SELECTION >= 0
78a67cf
+#  if _POSIX_CLOCK_SELECTION == 0
78a67cf
+      if (sysconf (_SC_CLOCK_SELECTION) > 0)
78a67cf
+#  endif
78a67cf
+        if (clock_getres (CLOCK_MONOTONIC, &dummy) == 0
78a67cf
+            && pthread_condattr_setclock (&condattr, CLOCK_MONOTONIC) == 0)
78a67cf
+          timeout_clock = CLOCK_MONOTONIC;
78a67cf
+# elif _POSIX_THREADS > 0
78a67cf
+      if (sysconf (_SC_CLOCK_SELECTION) > 0)
78a67cf
+        {
78a67cf
+          void *h = __libc_dlopen (LIBPTHREAD_SO);
78a67cf
+          int (*condattr_setclock) (pthread_condattr_t *, __clockid_t) = NULL;
78a67cf
+
78a67cf
+          if (h != NULL)
78a67cf
+            condattr_setclock = __libc_dlsym (h, "pthread_condattr_setclock");
78a67cf
+
78a67cf
+          if (condattr_setclock
78a67cf
+              && clock_getres (CLOCK_MONOTONIC, &dummy) == 0
78a67cf
+              && condattr_setclock (&condattr, CLOCK_MONOTONIC) == 0)
78a67cf
+            timeout_clock = CLOCK_MONOTONIC;
78a67cf
+
78a67cf
+          if (h != NULL)
78a67cf
+            __libc_dlclose (h);
78a67cf
+        }
78a67cf
 # endif
78a67cf
-      if (clock_getres (CLOCK_MONOTONIC, &dummy) == 0
78a67cf
-	  && pthread_condattr_setclock (&condattr, CLOCK_MONOTONIC) == 0)
78a67cf
-	timeout_clock = CLOCK_MONOTONIC;
78a67cf
+    }
78a67cf
 #endif
78a67cf
 
78a67cf
   pthread_cond_init (&readylist_cond, &condattr);
aa68137
@@ -1549,7 +1571,6 @@ start_threads (void)
3b26136
   main_loop_poll ();
c7aa529
 }
c7aa529
 
c7aa529
-
c7aa529
 /* Look up the uid, gid, and supplementary groups to run nscd as. When
c7aa529
    this function is called, we are not listening on the nscd socket yet so
c7aa529
    we can just use the ordinary lookup functions without causing a lockup  */
aa68137
@@ -1618,3 +1639,18 @@ finish_drop_privileges (void)
c7aa529
       exit (1);
c7aa529
     }
c7aa529
 }
c7aa529
+
c7aa529
+/* Handle the HUP signal which will force a dump of the cache */
c7aa529
+void
c7aa529
+sighup_handler (int signum)
c7aa529
+{
c7aa529
+    /* Prune the password database */
c7aa529
+    prune_cache (&dbs[pwddb], LONG_MAX);
c7aa529
+    
c7aa529
+    /* Prune the group database */
c7aa529
+    prune_cache (&dbs[grpdb], LONG_MAX);
c7aa529
+
c7aa529
+    /* Prune the host database */
c7aa529
+    prune_cache (&dbs[hstdb], LONG_MAX);
c7aa529
+}
c7aa529
+
a9a5615
--- glibc-20050405T2114/nscd/nscd.c	7 Feb 2005 22:51:22 -0000	1.44
a9a5615
+++ glibc-20050405T2114-fedora/nscd/nscd.c	8 Feb 2005 10:04:34 -0000	1.38.2.5
3b26136
@@ -122,9 +122,16 @@ static struct argp argp =
c7aa529
   options, parse_opt, NULL, doc,
c7aa529
 };
c7aa529
 
c7aa529
+/* The SIGHUP handler is extern to this file */
c7aa529
+extern void sighup_handler(int signum);
c7aa529
+
c7aa529
 /* True if only statistics are requested.  */
c7aa529
 static bool get_stats;
c7aa529
 
c7aa529
+#ifdef atomic_init_nscd
c7aa529
+atomic_init_nscd
c7aa529
+#endif
c7aa529
+
c7aa529
 int
c7aa529
 main (int argc, char **argv)
c7aa529
 {
3b26136
@@ -266,6 +273,7 @@ main (int argc, char **argv)
c7aa529
   signal (SIGINT, termination_handler);
c7aa529
   signal (SIGQUIT, termination_handler);
c7aa529
   signal (SIGTERM, termination_handler);
c7aa529
+  signal (SIGHUP, sighup_handler);
c7aa529
   signal (SIGPIPE, SIG_IGN);
c7aa529
 
c7aa529
   /* Cleanup files created by a previous 'bind'.  */
a9a5615
--- glibc-20050405T2114/nscd/nscd.conf	3 Oct 2004 21:09:23 -0000	1.10
a9a5615
+++ glibc-20050405T2114-fedora/nscd/nscd.conf	4 Oct 2004 08:56:17 -0000	1.8.2.2
3b26136
@@ -31,8 +31,8 @@
c7aa529
 #	logfile			/var/log/nscd.log
c7aa529
 #	threads			6
3b26136
 #	max-threads		128
c7aa529
-#	server-user		nobody
c7aa529
-#	stat-user		somebody
c7aa529
+	server-user		nscd
c7aa529
+#	stat-user		nocpulse
c7aa529
 	debug-level		0
c7aa529
 #	reload-count		5
3b26136
 	paranoia		no
a9a5615
--- glibc-20050405T2114/nscd/nscd_conf.c	3 Oct 2004 21:10:35 -0000	1.16
a9a5615
+++ glibc-20050405T2114-fedora/nscd/nscd_conf.c	4 Oct 2004 08:56:17 -0000	1.14.2.2
3b26136
@@ -230,7 +230,10 @@ nscd_parse_file (const char *fname, stru
c7aa529
 		if (strcmp (arg2, "no") == 0)
c7aa529
 		  dbs[cnt].shared = 0;
c7aa529
 		else if (strcmp (arg2, "yes") == 0)
c7aa529
-		  dbs[cnt].shared = 1;
c7aa529
+#ifndef atomic_supports_shared
c7aa529
+#define atomic_supports_shared 1
c7aa529
+#endif
c7aa529
+		  dbs[cnt].shared = atomic_supports_shared;
c7aa529
 		break;
c7aa529
 	      }
c7aa529
 	  if (cnt == lastdb)
a9a5615
--- glibc-20050405T2114/posix/Makefile	23 Feb 2005 02:45:27 -0000	1.183
a9a5615
+++ glibc-20050405T2114-fedora/posix/Makefile	3 Mar 2005 13:34:10 -0000	1.171.2.11
aa68137
@@ -105,7 +105,8 @@ generated := $(addprefix wordexp-test-re
38c8be0
 	     bug-regex21-mem bug-regex21.mtrace \
38c8be0
 	     tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \
38c8be0
 	     tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \
38c8be0
-	     bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem
38c8be0
+	     bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \
38c8be0
+	     getconf.speclist
38c8be0
 
38c8be0
 include ../Rules
38c8be0
 
aa68137
@@ -277,12 +278,16 @@ bug-glob2-ENV = MALLOC_TRACE=$(objpfx)bu
38c8be0
 $(objpfx)bug-glob2-mem: $(objpfx)bug-glob2.out
38c8be0
 	$(common-objpfx)malloc/mtrace $(objpfx)bug-glob2.mtrace > $@
38c8be0
 
38c8be0
-$(inst_libexecdir)/getconf: $(objpfx)getconf FORCE
38c8be0
+$(inst_libexecdir)/getconf: $(objpfx)getconf $(objpfx)getconf.speclist FORCE
38c8be0
 	$(addprefix $(..)./scripts/mkinstalldirs ,\
38c8be0
 		    $(filter-out $(wildcard $@),$@))
38c8be0
-	for spec in `LC_ALL=C GETCONF_DIR=/dev/null \
38c8be0
-		     $(run-program-prefix) $< \
38c8be0
-		     _POSIX_V6_WIDTH_RESTRICTED_ENVS`; do \
38c8be0
-		$(INSTALL_PROGRAM) $< $@/$$spec.new; \
38c8be0
-		mv -f $@/$$spec.new $@/$$spec; \
38c8be0
+	for spec in `cat $(objpfx)getconf.speclist`; do \
38c8be0
+	  $(INSTALL_PROGRAM) $< $@/$$spec.new; \
38c8be0
+	  mv -f $@/$$spec.new $@/$$spec; \
38c8be0
 	done
38c8be0
+
38c8be0
+$(objpfx)getconf.speclist: getconf.speclist.h
38c8be0
+	$(CC) -E $(CFLAGS) $(CPPFLAGS) $< \
9634333
+	  | sed -n -e '/START_OF_STRINGS/,$${/POSIX_V6_/{s/^[^"]*"//;s/".*$$//;p}}' \
38c8be0
+	  > $@.new
38c8be0
+	mv -f $@.new $@
a9a5615
--- glibc-20050405T2114/posix/getconf.speclist.h 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/posix/getconf.speclist.h	13 Dec 2004 23:32:37 -0000	1.1.2.2
38c8be0
@@ -0,0 +1,15 @@
38c8be0
+#include <unistd.h>
38c8be0
+const char *START_OF_STRINGS =
38c8be0
+#if _POSIX_V6_ILP32_OFF32 == 1
08ffd2e
+"POSIX_V6_ILP32_OFF32"
38c8be0
+#endif
38c8be0
+#if _POSIX_V6_ILP32_OFFBIG == 1
08ffd2e
+"POSIX_V6_ILP32_OFFBIG"
38c8be0
+#endif
38c8be0
+#if _POSIX_V6_LP64_OFF64 == 1
08ffd2e
+"POSIX_V6_LP64_OFF64"
38c8be0
+#endif
38c8be0
+#if _POSIX_V6_LPBIG_OFFBIG == 1
08ffd2e
+"POSIX_V6_LPBIG_OFFBIG"
38c8be0
+#endif
38c8be0
+"";
a9a5615
--- glibc-20050405T2114/posix/bits/unistd.h	20 Mar 2005 16:48:41 -0000	1.8
a9a5615
+++ glibc-20050405T2114-fedora/posix/bits/unistd.h	20 Mar 2005 18:12:27 -0000	1.3.2.4
8d6dc3b
@@ -21,25 +21,19 @@
aa68137
 # error "Never include <bits/unistd.h> directly; use <unistd.h> instead."
468791b
 #endif
468791b
 
aa68137
-extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
aa68137
-			   size_t __buflen) __wur;
8d6dc3b
+extern void __chk_fail (void) __attribute__((__noreturn__));
8d6dc3b
 extern ssize_t __REDIRECT (__read_alias, (int __fd, void *__buf,
8d6dc3b
 					  size_t __nbytes), read) __wur;
8d6dc3b
 
8d6dc3b
 extern __always_inline __wur ssize_t
8d6dc3b
 read (int __fd, void *__buf, size_t __nbytes)
8d6dc3b
 {
8d6dc3b
-  if (__bos0 (__buf) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__nbytes) || __nbytes > __bos0 (__buf)))
8d6dc3b
-    return __read_chk (__fd, __buf, __nbytes, __bos0 (__buf));
8d6dc3b
+  if (__bos0 (__buf) != (size_t) -1 && __nbytes > __bos0 (__buf))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __read_alias (__fd, __buf, __nbytes);
8d6dc3b
 }
aa68137
 
aa68137
 #ifdef __USE_UNIX98
aa68137
-extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
aa68137
-			    __off_t __offset, size_t __bufsize) __wur;
aa68137
-extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,
aa68137
-			      __off64_t __offset, size_t __bufsize) __wur;
8d6dc3b
 extern ssize_t __REDIRECT (__pread_alias,
8d6dc3b
 			   (int __fd, void *__buf, size_t __nbytes,
8d6dc3b
 			    __off_t __offset), pread) __wur;
8d6dc3b
@@ -51,18 +45,16 @@ extern ssize_t __REDIRECT (__pread64_ali
8d6dc3b
 extern __always_inline __wur ssize_t
8d6dc3b
 pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
8d6dc3b
 {
8d6dc3b
-  if (__bos0 (__buf) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__nbytes) || __nbytes > __bos0 (__buf)))
8d6dc3b
-    return __pread_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
8d6dc3b
+  if (__bos0 (__buf) != (size_t) -1 && __nbytes > __bos0 (__buf))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __pread_alias (__fd, __buf, __nbytes, __offset);
8d6dc3b
 }
8d6dc3b
 # else
8d6dc3b
 extern __always_inline __wur ssize_t
d04ad27
 pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
8d6dc3b
 {
8d6dc3b
-  if (__bos0 (__buf) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__nbytes) || __nbytes > __bos0 (__buf)))
8d6dc3b
-    return __pread64_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
8d6dc3b
+  if (__bos0 (__buf) != (size_t) -1 && __nbytes > __bos0 (__buf))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __pread64_alias (__fd, __buf, __nbytes, __offset);
8d6dc3b
 }
8d6dc3b
 # endif
8d6dc3b
@@ -71,19 +63,14 @@ pread (int __fd, void *__buf, size_t __n
8d6dc3b
 extern __always_inline __wur ssize_t
8d6dc3b
 pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
8d6dc3b
 {
8d6dc3b
-  if (__bos0 (__buf) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__nbytes) || __nbytes > __bos0 (__buf)))
8d6dc3b
-    return __pread64_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
8d6dc3b
+  if (__bos0 (__buf) != (size_t) -1 && __nbytes > __bos0 (__buf))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __pread64_alias (__fd, __buf, __nbytes, __offset);
8d6dc3b
 }
aa68137
 # endif
468791b
 #endif
468791b
 
aa68137
 #if defined __USE_BSD || defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K
aa68137
-extern int __readlink_chk (__const char *__restrict __path,
aa68137
-			   char *__restrict __buf, size_t __len,
aa68137
-			   size_t __buflen)
aa68137
-     __THROW __nonnull ((1, 2)) __wur;
8d6dc3b
 extern int __REDIRECT_NTH (__readlink_alias,
8d6dc3b
 			   (__const char *__restrict __path,
8d6dc3b
 			    char *__restrict __buf, size_t __len), readlink)
8d6dc3b
@@ -93,38 +80,19 @@ extern __always_inline __nonnull ((1, 2)
8d6dc3b
 __NTH (readlink (__const char *__restrict __path, char *__restrict __buf,
8d6dc3b
 		 size_t __len))
8d6dc3b
 {
8d6dc3b
-  if (__bos (__buf) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__len) || __len > __bos (__buf)))
8d6dc3b
-    return __readlink_chk (__path, __buf, __len, __bos (__buf));
8d6dc3b
+  if (__bos (__buf) != (size_t) -1 && __len > __bos (__buf))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __readlink_alias (__path, __buf, __len);
8d6dc3b
 }
468791b
 #endif
468791b
 
aa68137
-extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
aa68137
-     __THROW __wur;
8d6dc3b
 extern char *__REDIRECT_NTH (__getcwd_alias,
8d6dc3b
 			     (char *__buf, size_t __size), getcwd) __wur;
8d6dc3b
 
8d6dc3b
 extern __always_inline __wur char *
8d6dc3b
 __NTH (getcwd (char *__buf, size_t __size))
8d6dc3b
 {
8d6dc3b
-  if (__bos (__buf) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__size) || __size > __bos (__buf)))
8d6dc3b
-    return __getcwd_chk (__buf, __size, __bos (__buf));
8d6dc3b
+  if (__bos (__buf) != (size_t) -1 && __size > __bos (__buf))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __getcwd_alias (__buf, __size);
8d6dc3b
 }
aa68137
-
aa68137
-#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
aa68137
-extern char *__getwd_chk (char *__buf, size_t buflen)
8d6dc3b
-     __THROW __nonnull ((1)) __wur;
8d6dc3b
-extern char *__REDIRECT_NTH (__getwd_alias, (char *__buf), getwd)
8d6dc3b
-     __nonnull ((1)) __wur;
8d6dc3b
-
8d6dc3b
-extern __always_inline __nonnull ((1)) __attribute_deprecated__ __wur char *
8d6dc3b
-__NTH (getwd (char *__buf))
8d6dc3b
-{
8d6dc3b
-  if (__bos (__buf) != (size_t) -1)
8d6dc3b
-    return __getwd_chk (__buf, __bos (__buf));
8d6dc3b
-  return __getwd_alias (__buf);
8d6dc3b
-}
aa68137
-#endif
a9a5615
--- glibc-20050405T2114/socket/bits/socket2.h	19 Mar 2005 00:13:57 -0000	1.5
a9a5615
+++ glibc-20050405T2114-fedora/socket/bits/socket2.h	19 Mar 2005 20:18:08 -0000	1.2.2.5
8d6dc3b
@@ -21,24 +21,18 @@
aa68137
 # error "Never include <bits/socket2.h> directly; use <sys/socket.h> instead."
468791b
 #endif
468791b
 
aa68137
-extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen,
aa68137
-			   int __flags);
8d6dc3b
+extern void __chk_fail (void) __attribute__((__noreturn__));
8d6dc3b
 extern ssize_t __REDIRECT (__recv_alias, (int __fd, void *__buf, size_t __n,
8d6dc3b
 					  int __flags), recv);
8d6dc3b
 
8d6dc3b
 extern __always_inline ssize_t
8d6dc3b
 recv (int __fd, void *__buf, size_t __n, int __flags)
8d6dc3b
 {
8d6dc3b
-  if (__bos0 (__buf) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__n) || __n > __bos0 (__buf)))
8d6dc3b
-    return __recv_chk (__fd, __buf, __n, __bos0 (__buf), __flags);
8d6dc3b
+  if (__bos0 (__buf) != (size_t) -1 && __n > __bos0 (__buf))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __recv_alias (__fd, __buf, __n, __flags);
8d6dc3b
 }
aa68137
 
aa68137
-extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n,
aa68137
-			       size_t __buflen, int __flags,
aa68137
-			       __SOCKADDR_ARG __addr,
aa68137
-			       socklen_t *__restrict __addr_len);
8d6dc3b
 extern ssize_t __REDIRECT (__recvfrom_alias,
8d6dc3b
 			   (int __fd, void *__restrict __buf, size_t __n,
8d6dc3b
 			    int __flags, __SOCKADDR_ARG __addr,
8d6dc3b
@@ -48,9 +42,7 @@ extern __always_inline ssize_t
8d6dc3b
 recvfrom (int __fd, void *__buf, size_t __n, int __flags,
8d6dc3b
 	  __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len)
8d6dc3b
 {
8d6dc3b
-  if (__bos0 (__buf) != (size_t) -1
8d6dc3b
-      && (!__builtin_constant_p (__n) || __n > __bos0 (__buf)))
8d6dc3b
-    return __recvfrom_chk (__fd, __buf, __n, __bos0 (__buf), __flags,
8d6dc3b
-			   __addr, __addr_len);
8d6dc3b
+  if (__bos0 (__buf) != (size_t) -1 && __n > __bos0 (__buf))
8d6dc3b
+    __chk_fail ();
8d6dc3b
   return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len);
8d6dc3b
 }
a9a5615
--- glibc-20050405T2114/sysdeps/generic/dl-cache.h	25 Jun 2003 08:01:22 -0000	1.13
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/generic/dl-cache.h	22 Sep 2004 21:21:07 -0000	1.13.2.1
c7aa529
@@ -36,6 +36,14 @@
c7aa529
 # define add_system_dir(dir) add_dir (dir)
c7aa529
 #endif
c7aa529
 
c7aa529
+#ifndef arch_startup
c7aa529
+# define arch_startup(argc, argv) do { } while (0)
c7aa529
+#endif
c7aa529
+
c7aa529
+#ifndef add_arch_dirs
c7aa529
+# define add_arch_dirs(config_file) do { } while (0)
c7aa529
+#endif
c7aa529
+
c7aa529
 #define CACHEMAGIC "ld.so-1.7.0"
c7aa529
 
c7aa529
 /* libc5 and glibc 2.0/2.1 use the same format.  For glibc 2.2 another
a9a5615
--- glibc-20050405T2114/sysdeps/generic/w_exp2.c	28 Mar 2005 20:42:42 -0000	1.3
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/generic/w_exp2.c	6 Jun 2001 12:40:16 -0000	1.2
4465bbc
@@ -31,6 +31,6 @@ __exp2 (double x)		/* wrapper exp2 */
4465bbc
 }
4465bbc
 weak_alias (__exp2, exp2)
4465bbc
 #ifdef NO_LONG_DOUBLE
4465bbc
-strong_alias (__exp2, __exp2l)
4465bbc
-weak_alias (__exp2, exp2l)
4465bbc
+strong_alias (__exp2, __expl2)
4465bbc
+weak_alias (__exp2, expl2)
4465bbc
 #endif
a9a5615
--- glibc-20050405T2114/sysdeps/i386/Versions	28 Mar 2005 20:42:43 -0000	1.5
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/i386/Versions	29 Apr 2003 22:47:20 -0000	1.4
4465bbc
@@ -20,10 +20,3 @@ libc {
4465bbc
     __strspn_cg; __strspn_g; __strstr_cg; __strstr_g;
4465bbc
   }
4465bbc
 }
4465bbc
-libm {
4465bbc
-  GLIBC_2.1 {
4465bbc
-    # A generic bug got this omitted from other configurations' version
4465bbc
-    # sets, but we always had it.
4465bbc
-    exp2l;
4465bbc
-  }
4465bbc
-}
a9a5615
--- glibc-20050405T2114/sysdeps/i386/bits/atomic.h 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/i386/bits/atomic.h	5 Oct 2004 12:09:44 -0000	1.1.2.3
7e89ca4
@@ -0,0 +1,410 @@
c7aa529
+/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
c7aa529
+   This file is part of the GNU C Library.
c7aa529
+   Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
c7aa529
+
c7aa529
+   The GNU C Library is free software; you can redistribute it and/or
c7aa529
+   modify it under the terms of the GNU Lesser General Public
c7aa529
+   License as published by the Free Software Foundation; either
c7aa529
+   version 2.1 of the License, or (at your option) any later version.
c7aa529
+
c7aa529
+   The GNU C Library is distributed in the hope that it will be useful,
c7aa529
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
c7aa529
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
c7aa529
+   Lesser General Public License for more details.
c7aa529
+
c7aa529
+   You should have received a copy of the GNU Lesser General Public
c7aa529
+   License along with the GNU C Library; if not, write to the Free
c7aa529
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
c7aa529
+   02111-1307 USA.  */
c7aa529
+
c7aa529
+#include <stdint.h>
c7aa529
+
c7aa529
+
c7aa529
+typedef int8_t atomic8_t;
c7aa529
+typedef uint8_t uatomic8_t;
c7aa529
+typedef int_fast8_t atomic_fast8_t;
c7aa529
+typedef uint_fast8_t uatomic_fast8_t;
c7aa529
+
c7aa529
+typedef int16_t atomic16_t;
c7aa529
+typedef uint16_t uatomic16_t;
c7aa529
+typedef int_fast16_t atomic_fast16_t;
c7aa529
+typedef uint_fast16_t uatomic_fast16_t;
c7aa529
+
c7aa529
+typedef int32_t atomic32_t;
c7aa529
+typedef uint32_t uatomic32_t;
c7aa529
+typedef int_fast32_t atomic_fast32_t;
c7aa529
+typedef uint_fast32_t uatomic_fast32_t;
c7aa529
+
c7aa529
+typedef int64_t atomic64_t;
c7aa529
+typedef uint64_t uatomic64_t;
c7aa529
+typedef int_fast64_t atomic_fast64_t;
c7aa529
+typedef uint_fast64_t uatomic_fast64_t;
c7aa529
+
c7aa529
+typedef intptr_t atomicptr_t;
c7aa529
+typedef uintptr_t uatomicptr_t;
c7aa529
+typedef intmax_t atomic_max_t;
c7aa529
+typedef uintmax_t uatomic_max_t;
c7aa529
+
c7aa529
+
c7aa529
+#ifndef LOCK_PREFIX
c7aa529
+# ifdef UP
c7aa529
+#  define LOCK_PREFIX	/* nothing */
c7aa529
+# else
c7aa529
+#  define LOCK_PREFIX "lock;"
c7aa529
+# endif
c7aa529
+#endif
c7aa529
+
c7aa529
+/* i386 doesn't have cmpxchg* and xadd*.  Instead of being completely
c7aa529
+   non-atomic, atomic_* macros that are using solely i386 instructions
c7aa529
+   are using those atomic instructions and the remaining ones are
c7aa529
+   non-atomic.  When in nscd, use i486+ instructions if on i486+.  */
c7aa529
+
c7aa529
+#ifdef IS_IN_nscd
c7aa529
+
c7aa529
+extern int has_cmpxchg attribute_hidden;
c7aa529
+
c7aa529
+#define atomic_supports_shared has_cmpxchg
c7aa529
+
c7aa529
+#define atomic_init_nscd \
c7aa529
+int has_cmpxchg attribute_hidden;					      \
c7aa529
+static void __attribute__((constructor))				      \
c7aa529
+init_has_cmpxchg (void)							      \
c7aa529
+{									      \
c7aa529
+  int fl1, fl2;								      \
c7aa529
+  __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;"		      \
c7aa529
+	   "pushl %0; popfl; pushfl; popl %0; popfl"			      \
c7aa529
+	   : "=&r" (fl1), "=&r" (fl2) : "i" (0x00040000));		      \
c7aa529
+  if ((fl1 ^ fl2) & 0x00040000)						      \
c7aa529
+    has_cmpxchg = 1;							      \
c7aa529
+}
c7aa529
+
c7aa529
+# define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval) \
c7aa529
+  ({ __typeof (*mem) ret;						      \
c7aa529
+     if (__builtin_expect (has_cmpxchg, 1))				      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "cmpxchgb %b2, %1"			      \
c7aa529
+			 : "=a" (ret), "=m" (*mem)			      \
c7aa529
+			 : "q" (newval), "m" (*mem), "0" (oldval));	      \
c7aa529
+     else								      \
c7aa529
+       {								      \
c7aa529
+	 ret = *mem;							      \
c7aa529
+	 if (ret == oldval)						      \
c7aa529
+	   *mem = (newval);						      \
c7aa529
+       }								      \
c7aa529
+     ret; })
c7aa529
+
c7aa529
+# define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval) \
c7aa529
+  ({ __typeof (*mem) ret;						      \
c7aa529
+     if (__builtin_expect (has_cmpxchg, 1))				      \
78a67cf
+       __asm __volatile (LOCK_PREFIX "cmpxchgw %w2, %1"			      \
78a67cf
+			 : "=a" (ret), "=m" (*mem)			      \
78a67cf
+			 : "r" (newval), "m" (*mem), "0" (oldval));	      \
78a67cf
+     else								      \
78a67cf
+       {								      \
78a67cf
+	 ret = *mem;							      \
78a67cf
+	 if (ret == oldval)						      \
78a67cf
+	   *mem = (newval);						      \
78a67cf
+       }								      \
c7aa529
+     ret; })
c7aa529
+
c7aa529
+# define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval) \
c7aa529
+  ({ __typeof (*mem) ret;						      \
c7aa529
+     if (__builtin_expect (has_cmpxchg, 1))				      \
78a67cf
+       __asm __volatile (LOCK_PREFIX "cmpxchgl %2, %1"			      \
78a67cf
+			 : "=a" (ret), "=m" (*mem)			      \
78a67cf
+			 : "r" (newval), "m" (*mem), "0" (oldval));	      \
78a67cf
+     else								      \
78a67cf
+       {								      \
78a67cf
+	 ret = *mem;							      \
78a67cf
+	 if (ret == oldval)						      \
78a67cf
+	   *mem = (newval);						      \
78a67cf
+       }								      \
c7aa529
+     ret; })
c7aa529
+
c7aa529
+/* XXX We do not really need 64-bit compare-and-exchange.  At least
c7aa529
+   not in the moment.  */
c7aa529
+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
c7aa529
+  ({ __typeof (*mem) ret = *(mem); abort (); ret = (newval); ret = (oldval); })
c7aa529
+
c7aa529
+
c7aa529
+# define atomic_exchange_and_add(mem, value) \
c7aa529
+  ({ __typeof (*mem) __result;						      \
c7aa529
+     __typeof (value) __addval = (value);				      \
c7aa529
+     if (__builtin_expect (! has_cmpxchg, 0))				      \
c7aa529
+       {								      \
c7aa529
+	 __typeof (mem) __memp = (mem);					      \
c7aa529
+	 __result = *__memp;						      \
c7aa529
+	 *__memp += __addval;						      \
c7aa529
+       }								      \
c7aa529
+     else if (sizeof (*mem) == 1)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "xaddb %b0, %1"			      \
c7aa529
+			 : "=r" (__result), "=m" (*mem)			      \
c7aa529
+			 : "0" (__addval), "m" (*mem));			      \
c7aa529
+     else if (sizeof (*mem) == 2)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "xaddw %w0, %1"			      \
c7aa529
+			 : "=r" (__result), "=m" (*mem)			      \
c7aa529
+			 : "0" (__addval), "m" (*mem));			      \
c7aa529
+     else if (sizeof (*mem) == 4)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "xaddl %0, %1"			      \
c7aa529
+			 : "=r" (__result), "=m" (*mem)			      \
c7aa529
+			 : "0" (__addval), "m" (*mem));			      \
c7aa529
+     else								      \
c7aa529
+       {								      \
c7aa529
+	 __typeof (mem) __memp = (mem);					      \
c7aa529
+	 __typeof (*mem) __tmpval;					      \
c7aa529
+	 __result = *__memp;						      \
c7aa529
+	 do								      \
c7aa529
+	   __tmpval = __result;						      \
c7aa529
+	 while ((__result = __arch_compare_and_exchange_val_64_acq	      \
c7aa529
+		 (__memp, __result + __addval, __result)) == __tmpval);	      \
c7aa529
+       }								      \
c7aa529
+     __result; })
c7aa529
+
c7aa529
+#else
c7aa529
+
c7aa529
+/* We have by default no support for atomic operations.  So define
c7aa529
+   them non-atomic.  If this is a problem somebody will have to come
c7aa529
+   up with real definitions.  */
c7aa529
+
c7aa529
+/* The only basic operation needed is compare and exchange.  */
c7aa529
+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
c7aa529
+  ({ __typeof (mem) __gmemp = (mem);					      \
c7aa529
+     __typeof (*mem) __gret = *__gmemp;					      \
c7aa529
+     __typeof (*mem) __gnewval = (newval);				      \
c7aa529
+									      \
c7aa529
+     if (__gret == (oldval))						      \
c7aa529
+       *__gmemp = __gnewval;						      \
c7aa529
+     __gret; })
c7aa529
+
c7aa529
+#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
c7aa529
+  ({ __typeof (mem) __gmemp = (mem);					      \
c7aa529
+     __typeof (*mem) __gnewval = (newval);				      \
c7aa529
+									      \
c7aa529
+     *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; })
c7aa529
+
7e89ca4
+/* XXX We do not really need 64-bit compare-and-exchange.  At least
7e89ca4
+   not in the moment.  */
7e89ca4
+# define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval) \
7e89ca4
+  ({ __typeof (*mem) ret = *(mem); abort (); ret = (newval); ret = (oldval); })
7e89ca4
+
c7aa529
+#endif
c7aa529
+
c7aa529
+/* Note that we need no lock prefix.  */
c7aa529
+#define atomic_exchange_acq(mem, newvalue) \
c7aa529
+  ({ __typeof (*mem) result;						      \
c7aa529
+     if (sizeof (*mem) == 1)						      \
c7aa529
+       __asm __volatile ("xchgb %b0, %1"				      \
c7aa529
+			 : "=r" (result), "=m" (*mem)			      \
c7aa529
+			 : "0" (newvalue), "m" (*mem));			      \
c7aa529
+     else if (sizeof (*mem) == 2)					      \
c7aa529
+       __asm __volatile ("xchgw %w0, %1"				      \
c7aa529
+			 : "=r" (result), "=m" (*mem)			      \
c7aa529
+			 : "0" (newvalue), "m" (*mem));			      \
c7aa529
+     else if (sizeof (*mem) == 4)					      \
c7aa529
+       __asm __volatile ("xchgl %0, %1"					      \
c7aa529
+			 : "=r" (result), "=m" (*mem)			      \
c7aa529
+			 : "0" (newvalue), "m" (*mem));			      \
c7aa529
+     else								      \
c7aa529
+       {								      \
c7aa529
+	 result = 0;							      \
c7aa529
+	 abort ();							      \
c7aa529
+       }								      \
c7aa529
+     result; })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_add(mem, value) \
c7aa529
+  (void) ({ if (__builtin_constant_p (value) && (value) == 1)		      \
c7aa529
+	      atomic_increment (mem);					      \
c7aa529
+	    else if (__builtin_constant_p (value) && (value) == -1)	      \
c7aa529
+	      atomic_decrement (mem);					      \
c7aa529
+	    else if (sizeof (*mem) == 1)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "addb %b1, %0"		      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "ir" (value), "m" (*mem));		      \
c7aa529
+	    else if (sizeof (*mem) == 2)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "addw %w1, %0"		      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "ir" (value), "m" (*mem));		      \
c7aa529
+	    else if (sizeof (*mem) == 4)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "addl %1, %0"		      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "ir" (value), "m" (*mem));		      \
c7aa529
+	    else							      \
c7aa529
+	      {								      \
c7aa529
+		__typeof (value) __addval = (value);			      \
c7aa529
+		__typeof (mem) __memp = (mem);				      \
c7aa529
+		__typeof (*mem) __oldval = *__memp;			      \
c7aa529
+		__typeof (*mem) __tmpval;				      \
c7aa529
+		do							      \
c7aa529
+		  __tmpval = __oldval;					      \
c7aa529
+		while ((__oldval = __arch_compare_and_exchange_val_64_acq     \
c7aa529
+		       (__memp, __oldval + __addval, __oldval)) == __tmpval); \
c7aa529
+	      }								      \
c7aa529
+	    })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_add_negative(mem, value) \
c7aa529
+  ({ unsigned char __result;						      \
c7aa529
+     if (sizeof (*mem) == 1)						      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "addb %b2, %0; sets %1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "iq" (value), "m" (*mem));			      \
c7aa529
+     else if (sizeof (*mem) == 2)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "addw %w2, %0; sets %1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "ir" (value), "m" (*mem));			      \
c7aa529
+     else if (sizeof (*mem) == 4)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "addl %2, %0; sets %1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "ir" (value), "m" (*mem));			      \
c7aa529
+     else								      \
c7aa529
+       abort ();							      \
c7aa529
+     __result; })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_add_zero(mem, value) \
c7aa529
+  ({ unsigned char __result;						      \
c7aa529
+     if (sizeof (*mem) == 1)						      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "addb %b2, %0; setz %1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "ir" (value), "m" (*mem));			      \
c7aa529
+     else if (sizeof (*mem) == 2)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "addw %w2, %0; setz %1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "ir" (value), "m" (*mem));			      \
c7aa529
+     else if (sizeof (*mem) == 4)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "addl %2, %0; setz %1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "ir" (value), "m" (*mem));			      \
c7aa529
+     else								      \
c7aa529
+       abort ();							      \
c7aa529
+     __result; })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_increment(mem) \
c7aa529
+  (void) ({ if (sizeof (*mem) == 1)					      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "incb %b0"			      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem));				      \
c7aa529
+	    else if (sizeof (*mem) == 2)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "incw %w0"			      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem));				      \
c7aa529
+	    else if (sizeof (*mem) == 4)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "incl %0"			      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem));				      \
c7aa529
+	    else							      \
c7aa529
+	      {								      \
c7aa529
+		__typeof (mem) __memp = (mem);				      \
c7aa529
+		__typeof (*mem) __oldval = *__memp;			      \
c7aa529
+		__typeof (*mem) __tmpval;				      \
c7aa529
+		do							      \
c7aa529
+		  __tmpval = __oldval;					      \
c7aa529
+		while ((__oldval = __arch_compare_and_exchange_val_64_acq     \
c7aa529
+		       (__memp, __oldval + 1, __oldval)) == __tmpval);	      \
c7aa529
+	      }								      \
c7aa529
+	    })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_increment_and_test(mem) \
c7aa529
+  ({ unsigned char __result;						      \
c7aa529
+     if (sizeof (*mem) == 1)						      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "incb %0; sete %b1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "m" (*mem));					      \
c7aa529
+     else if (sizeof (*mem) == 2)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "incw %0; sete %w1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "m" (*mem));					      \
c7aa529
+     else if (sizeof (*mem) == 4)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "incl %0; sete %1"			      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "m" (*mem));					      \
c7aa529
+     else								      \
c7aa529
+       abort ();							      \
c7aa529
+     __result; })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_decrement(mem) \
c7aa529
+  (void) ({ if (sizeof (*mem) == 1)					      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "decb %b0"			      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem));				      \
c7aa529
+	    else if (sizeof (*mem) == 2)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "decw %w0"			      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem));				      \
c7aa529
+	    else if (sizeof (*mem) == 4)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "decl %0"			      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem));				      \
c7aa529
+	    else							      \
c7aa529
+	      {								      \
c7aa529
+		__typeof (mem) __memp = (mem);				      \
c7aa529
+		__typeof (*mem) __oldval = *__memp;			      \
c7aa529
+		__typeof (*mem) __tmpval;				      \
c7aa529
+		do							      \
c7aa529
+		  __tmpval = __oldval;					      \
c7aa529
+		while ((__oldval = __arch_compare_and_exchange_val_64_acq     \
c7aa529
+		       (__memp, __oldval - 1, __oldval)) == __tmpval); 	      \
c7aa529
+	      }								      \
c7aa529
+	    })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_decrement_and_test(mem) \
c7aa529
+  ({ unsigned char __result;						      \
c7aa529
+     if (sizeof (*mem) == 1)						      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "decb %b0; sete %1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "m" (*mem));					      \
c7aa529
+     else if (sizeof (*mem) == 2)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "decw %w0; sete %1"		      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "m" (*mem));					      \
c7aa529
+     else if (sizeof (*mem) == 4)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "decl %0; sete %1"			      \
c7aa529
+			 : "=m" (*mem), "=qm" (__result)		      \
c7aa529
+			 : "m" (*mem));					      \
c7aa529
+     else								      \
c7aa529
+       abort ();							      \
c7aa529
+     __result; })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_bit_set(mem, bit) \
c7aa529
+  (void) ({ if (sizeof (*mem) == 1)					      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "orb %b2, %0"		      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem), "ir" (1 << (bit)));	      \
c7aa529
+	    else if (sizeof (*mem) == 2)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "orw %w2, %0"		      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem), "ir" (1 << (bit)));	      \
c7aa529
+	    else if (sizeof (*mem) == 4)				      \
c7aa529
+	      __asm __volatile (LOCK_PREFIX "orl %2, %0"		      \
c7aa529
+				: "=m" (*mem)				      \
c7aa529
+				: "m" (*mem), "ir" (1 << (bit)));	      \
c7aa529
+	    else							      \
c7aa529
+	      abort ();							      \
c7aa529
+	    })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_bit_test_set(mem, bit) \
c7aa529
+  ({ unsigned char __result;						      \
c7aa529
+     if (sizeof (*mem) == 1)						      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "btsb %3, %1; setc %0"		      \
c7aa529
+			 : "=q" (__result), "=m" (*mem)			      \
c7aa529
+			 : "m" (*mem), "ir" (bit));			      \
c7aa529
+     else if (sizeof (*mem) == 2)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "btsw %3, %1; setc %0"		      \
c7aa529
+			 : "=q" (__result), "=m" (*mem)			      \
c7aa529
+			 : "m" (*mem), "ir" (bit));			      \
c7aa529
+     else if (sizeof (*mem) == 4)					      \
c7aa529
+       __asm __volatile (LOCK_PREFIX "btsl %3, %1; setc %0"		      \
c7aa529
+			 : "=q" (__result), "=m" (*mem)			      \
c7aa529
+			 : "m" (*mem), "ir" (bit));			      \
c7aa529
+     else							      	      \
c7aa529
+       abort ();							      \
c7aa529
+     __result; })
c7aa529
+
c7aa529
+
c7aa529
+#define atomic_delay() asm ("rep; nop")
a9a5615
--- glibc-20050405T2114/sysdeps/ia64/Makefile	16 Aug 2004 06:46:14 -0000	1.10
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/ia64/Makefile	22 Sep 2004 21:21:07 -0000	1.10.2.1
c7aa529
@@ -12,8 +12,8 @@ elide-routines.os += hp-timing
c7aa529
 
c7aa529
 ifeq (yes,$(build-shared))
c7aa529
 # Compatibility
c7aa529
-sysdep_routines += ia64libgcc
c7aa529
-shared-only-routines += ia64libgcc
c7aa529
+sysdep_routines += libgcc-compat
c7aa529
+shared-only-routines += libgcc-compat
c7aa529
 endif
c7aa529
 endif
c7aa529
 
a9a5615
--- glibc-20050405T2114/sysdeps/ia64/Versions	28 Mar 2005 20:42:43 -0000	1.10
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/ia64/Versions	3 May 2002 07:10:31 -0000	1.9
4465bbc
@@ -12,10 +12,3 @@ libc {
4465bbc
     __multi3;
4465bbc
   }
4465bbc
 }
4465bbc
-libm {
4465bbc
-  GLIBC_2.1 {
4465bbc
-    # A generic bug got this omitted from other configurations' version
4465bbc
-    # sets, but we always had it.
4465bbc
-    exp2l;
4465bbc
-  }
4465bbc
-}
a9a5615
--- glibc-20050405T2114/sysdeps/ia64/ia64libgcc.S	11 May 2002 05:12:35 -0000	1.2
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/ia64/ia64libgcc.S	22 Sep 2004 21:21:07 -0000	1.2.2.1
c7aa529
@@ -1,350 +0,0 @@
c7aa529
-/* From the Intel IA-64 Optimization Guide, choose the minimum latency
c7aa529
-   alternative.  */
c7aa529
-
c7aa529
-#include <sysdep.h>
c7aa529
-#undef ret
c7aa529
-
c7aa529
-#include <shlib-compat.h>
c7aa529
-
c7aa529
-#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6)
c7aa529
-
c7aa529
-/* __divtf3
c7aa529
-   Compute a 80-bit IEEE double-extended quotient.
c7aa529
-   farg0 holds the dividend.  farg1 holds the divisor.  */
c7aa529
-
c7aa529
-ENTRY(___divtf3)
c7aa529
-	cmp.eq p7, p0 = r0, r0
c7aa529
-	frcpa.s0 f10, p6 = farg0, farg1
c7aa529
-	;;
c7aa529
-(p6)	cmp.ne p7, p0 = r0, r0
c7aa529
-	.pred.rel.mutex p6, p7
c7aa529
-(p6)	fnma.s1 f11 = farg1, f10, f1
c7aa529
-(p6)	fma.s1 f12 = farg0, f10, f0
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f13 = f11, f11, f0
c7aa529
-(p6)	fma.s1 f14 = f11, f11, f11
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f11 = f13, f13, f11
c7aa529
-(p6)	fma.s1 f13 = f14, f10, f10
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f13, f11, f10
c7aa529
-(p6)	fnma.s1 f11 = farg1, f12, farg0
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f11 = f11, f10, f12
c7aa529
-(p6)	fnma.s1 f12 = farg1, f10, f1
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f12, f10, f10
c7aa529
-(p6)	fnma.s1 f12 = farg1, f11, farg0
c7aa529
-	;;
c7aa529
-(p6)	fma.s0 fret0 = f12, f10, f11
c7aa529
-(p7)	mov fret0 = f10
c7aa529
-	br.ret.sptk rp
c7aa529
-END(___divtf3)
c7aa529
-	.symver ___divtf3, __divtf3@GLIBC_2.2
c7aa529
-
c7aa529
-/* __divdf3
c7aa529
-   Compute a 64-bit IEEE double quotient.
c7aa529
-   farg0 holds the dividend.  farg1 holds the divisor.  */
c7aa529
-
c7aa529
-ENTRY(___divdf3)
c7aa529
-	cmp.eq p7, p0 = r0, r0
c7aa529
-	frcpa.s0 f10, p6 = farg0, farg1
c7aa529
-	;;
c7aa529
-(p6)	cmp.ne p7, p0 = r0, r0
c7aa529
-	.pred.rel.mutex p6, p7
c7aa529
-(p6)	fmpy.s1 f11 = farg0, f10
c7aa529
-(p6)	fnma.s1 f12 = farg1, f10, f1
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f11 = f12, f11, f11
c7aa529
-(p6)	fmpy.s1 f13 = f12, f12
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f12, f10, f10
c7aa529
-(p6)	fma.s1 f11 = f13, f11, f11
c7aa529
-	;;
c7aa529
-(p6)	fmpy.s1 f12 = f13, f13
c7aa529
-(p6)	fma.s1 f10 = f13, f10, f10
c7aa529
-	;;
c7aa529
-(p6)	fma.d.s1 f11 = f12, f11, f11
c7aa529
-(p6)	fma.s1 f10 = f12, f10, f10
c7aa529
-	;;
c7aa529
-(p6)	fnma.d.s1 f8 = farg1, f11, farg0
c7aa529
-	;;
c7aa529
-(p6)	fma.d fret0 = f8, f10, f11
c7aa529
-(p7)	mov fret0 = f10
c7aa529
-	br.ret.sptk rp
c7aa529
-	;;
c7aa529
-END(___divdf3)
c7aa529
-	.symver	___divdf3, __divdf3@GLIBC_2.2
c7aa529
-
c7aa529
-/* __divsf3
c7aa529
-   Compute a 32-bit IEEE float quotient.
c7aa529
-   farg0 holds the dividend.  farg1 holds the divisor.  */
c7aa529
-
c7aa529
-ENTRY(___divsf3)
c7aa529
-	cmp.eq p7, p0 = r0, r0
c7aa529
-	frcpa.s0 f10, p6 = farg0, farg1
c7aa529
-	;;
c7aa529
-(p6)	cmp.ne p7, p0 = r0, r0
c7aa529
-	.pred.rel.mutex p6, p7
c7aa529
-(p6)	fmpy.s1 f8 = farg0, f10
c7aa529
-(p6)	fnma.s1 f9 = farg1, f10, f1
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f8 = f9, f8, f8
c7aa529
-(p6)	fmpy.s1 f9 = f9, f9
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f8 = f9, f8, f8
c7aa529
-(p6)	fmpy.s1 f9 = f9, f9
c7aa529
-	;;
c7aa529
-(p6)	fma.d.s1 f10 = f9, f8, f8
c7aa529
-	;;
c7aa529
-(p6)	fnorm.s.s0 fret0 = f10
c7aa529
-(p7)	mov fret0 = f10
c7aa529
-	br.ret.sptk rp
c7aa529
-	;;
c7aa529
-END(___divsf3)
c7aa529
-	.symver	___divsf3, __divsf3@GLIBC_2.2
c7aa529
-
c7aa529
-/* __divdi3
c7aa529
-   Compute a 64-bit integer quotient.
c7aa529
-   in0 holds the dividend.  in1 holds the divisor.  */
c7aa529
-
c7aa529
-ENTRY(___divdi3)
c7aa529
-	.regstk 2,0,0,0
c7aa529
-	/* Transfer inputs to FP registers.  */
c7aa529
-	setf.sig f8 = in0
c7aa529
-	setf.sig f9 = in1
c7aa529
-	;;
c7aa529
-	/* Convert the inputs to FP, so that they won't be treated as
c7aa529
-	   unsigned.  */
c7aa529
-	fcvt.xf f8 = f8
c7aa529
-	fcvt.xf f9 = f9
c7aa529
-	;;
c7aa529
-	/* Compute the reciprocal approximation.  */
c7aa529
-	frcpa.s1 f10, p6 = f8, f9
c7aa529
-	;;
c7aa529
-	/* 3 Newton-Raphson iterations.  */
c7aa529
-(p6)	fnma.s1 f11 = f9, f10, f1
c7aa529
-(p6)	fmpy.s1 f12 = f8, f10
c7aa529
-	;;
c7aa529
-(p6)	fmpy.s1 f13 = f11, f11
c7aa529
-(p6)	fma.s1 f12 = f11, f12, f12
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f11, f10, f10
c7aa529
-(p6)	fma.s1 f11 = f13, f12, f12
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f13, f10, f10
c7aa529
-(p6)	fnma.s1 f12 = f9, f11, f8
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f12, f10, f11
c7aa529
-	;;
c7aa529
-	/* Round quotient to an integer.  */
c7aa529
-	fcvt.fx.trunc.s1 f10 = f10
c7aa529
-	;;
c7aa529
-	/* Transfer result to GP registers.  */
c7aa529
-	getf.sig ret0 = f10
c7aa529
-	br.ret.sptk rp
c7aa529
-	;;
c7aa529
-END(___divdi3)
c7aa529
-	.symver	___divdi3, __divdi3@GLIBC_2.2
c7aa529
-
c7aa529
-/* __moddi3
c7aa529
-   Compute a 64-bit integer modulus.
c7aa529
-   in0 holds the dividend (a).  in1 holds the divisor (b).  */
c7aa529
-
c7aa529
-ENTRY(___moddi3)
c7aa529
-	.regstk 2,0,0,0
c7aa529
-	/* Transfer inputs to FP registers.  */
c7aa529
-	setf.sig f14 = in0
c7aa529
-	setf.sig f9 = in1
c7aa529
-	;;
c7aa529
-	/* Convert the inputs to FP, so that they won't be treated as
c7aa529
-	   unsigned.  */
c7aa529
-	fcvt.xf f8 = f14
c7aa529
-	fcvt.xf f9 = f9
c7aa529
-	;;
c7aa529
-	/* Compute the reciprocal approximation.  */
c7aa529
-	frcpa.s1 f10, p6 = f8, f9
c7aa529
-	;;
c7aa529
-	/* 3 Newton-Raphson iterations.  */
c7aa529
-(p6)	fmpy.s1 f12 = f8, f10
c7aa529
-(p6)	fnma.s1 f11 = f9, f10, f1
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f12 = f11, f12, f12
c7aa529
-(p6)	fmpy.s1 f13 = f11, f11
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f11, f10, f10
c7aa529
-(p6)	fma.s1 f11 = f13, f12, f12
c7aa529
-	;;
c7aa529
-	sub in1 = r0, in1
c7aa529
-(p6)	fma.s1 f10 = f13, f10, f10
c7aa529
-(p6)	fnma.s1 f12 = f9, f11, f8
c7aa529
-	;;
c7aa529
-	setf.sig f9 = in1
c7aa529
-(p6)	fma.s1 f10 = f12, f10, f11
c7aa529
-	;;
c7aa529
-	fcvt.fx.trunc.s1 f10 = f10
c7aa529
-	;;
c7aa529
-	/* r = q * (-b) + a  */
c7aa529
-	xma.l f10 = f10, f9, f14
c7aa529
-	;;
c7aa529
-	/* Transfer result to GP registers.  */
c7aa529
-	getf.sig ret0 = f10
c7aa529
-	br.ret.sptk rp
c7aa529
-	;;
c7aa529
-END(___moddi3)
c7aa529
-	.symver ___moddi3, __moddi3@GLIBC_2.2
c7aa529
-
c7aa529
-/* __udivdi3
c7aa529
-   Compute a 64-bit unsigned integer quotient.
c7aa529
-   in0 holds the dividend.  in1 holds the divisor.  */
c7aa529
-
c7aa529
-ENTRY(___udivdi3)
c7aa529
-	.regstk 2,0,0,0
c7aa529
-	/* Transfer inputs to FP registers.  */
c7aa529
-	setf.sig f8 = in0
c7aa529
-	setf.sig f9 = in1
c7aa529
-	;;
c7aa529
-	/* Convert the inputs to FP, to avoid FP software-assist faults.  */
c7aa529
-	fcvt.xuf.s1 f8 = f8
c7aa529
-	fcvt.xuf.s1 f9 = f9
c7aa529
-	;;
c7aa529
-	/* Compute the reciprocal approximation.  */
c7aa529
-	frcpa.s1 f10, p6 = f8, f9
c7aa529
-	;;
c7aa529
-	/* 3 Newton-Raphson iterations.  */
c7aa529
-(p6)	fnma.s1 f11 = f9, f10, f1
c7aa529
-(p6)	fmpy.s1 f12 = f8, f10
c7aa529
-	;;
c7aa529
-(p6)	fmpy.s1 f13 = f11, f11
c7aa529
-(p6)	fma.s1 f12 = f11, f12, f12
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f11, f10, f10
c7aa529
-(p6)	fma.s1 f11 = f13, f12, f12
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f13, f10, f10
c7aa529
-(p6)	fnma.s1 f12 = f9, f11, f8
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f12, f10, f11
c7aa529
-	;;
c7aa529
-	/* Round quotient to an unsigned integer.  */
c7aa529
-	fcvt.fxu.trunc.s1 f10 = f10
c7aa529
-	;;
c7aa529
-	/* Transfer result to GP registers.  */
c7aa529
-	getf.sig ret0 = f10
c7aa529
-	br.ret.sptk rp
c7aa529
-	;;
c7aa529
-END(___udivdi3)
c7aa529
-	.symver	___udivdi3, __udivdi3@GLIBC_2.2
c7aa529
-
c7aa529
-/* __umoddi3
c7aa529
-   Compute a 64-bit unsigned integer modulus.
c7aa529
-   in0 holds the dividend (a).  in1 holds the divisor (b).  */
c7aa529
-
c7aa529
-ENTRY(___umoddi3)
c7aa529
-	.regstk 2,0,0,0
c7aa529
-	/* Transfer inputs to FP registers.  */
c7aa529
-	setf.sig f14 = in0
c7aa529
-	setf.sig f9 = in1
c7aa529
-	;;
c7aa529
-	/* Convert the inputs to FP, to avoid FP software assist faults.  */
c7aa529
-	fcvt.xuf.s1 f8 = f14
c7aa529
-	fcvt.xuf.s1 f9 = f9
c7aa529
-	;;
c7aa529
-	/* Compute the reciprocal approximation.  */
c7aa529
-	frcpa.s1 f10, p6 = f8, f9
c7aa529
-	;;
c7aa529
-	/* 3 Newton-Raphson iterations.  */
c7aa529
-(p6)	fmpy.s1 f12 = f8, f10
c7aa529
-(p6)	fnma.s1 f11 = f9, f10, f1
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f12 = f11, f12, f12
c7aa529
-(p6)	fmpy.s1 f13 = f11, f11
c7aa529
-	;;
c7aa529
-(p6)	fma.s1 f10 = f11, f10, f10
c7aa529
-(p6)	fma.s1 f11 = f13, f12, f12
c7aa529
-	;;
c7aa529
-	sub in1 = r0, in1
c7aa529
-(p6)	fma.s1 f10 = f13, f10, f10
c7aa529
-(p6)	fnma.s1 f12 = f9, f11, f8
c7aa529
-	;;
c7aa529
-	setf.sig f9 = in1
c7aa529
-(p6)	fma.s1 f10 = f12, f10, f11
c7aa529
-	;;
c7aa529
-	/* Round quotient to an unsigned integer.  */
c7aa529
-	fcvt.fxu.trunc.s1 f10 = f10
c7aa529
-	;;
c7aa529
-	/* r = q * (-b) + a  */
c7aa529
-	xma.l f10 = f10, f9, f14
c7aa529
-	;;
c7aa529
-	/* Transfer result to GP registers.  */
c7aa529
-	getf.sig ret0 = f10
c7aa529
-	br.ret.sptk rp
c7aa529
-	;;
c7aa529
-END(___umoddi3)
c7aa529
-	.symver	___umoddi3, __umoddi3@GLIBC_2.2
c7aa529
-
c7aa529
-/* __multi3
c7aa529
-   Compute a 128-bit multiply of 128-bit multiplicands.
c7aa529
-   in0/in1 holds one multiplicand (a), in2/in3 holds the other one (b).  */
c7aa529
-
c7aa529
-ENTRY(___multi3)
c7aa529
-	.regstk 4,0,0,0
c7aa529
-	setf.sig f6 = in1
c7aa529
-	movl r19 = 0xffffffff
c7aa529
-	setf.sig f7 = in2
c7aa529
-	;;
c7aa529
-	and r14 = r19, in0
c7aa529
-	;;
c7aa529
-	setf.sig f10 = r14
c7aa529
-	and r14 = r19, in2
c7aa529
-	xmpy.l f9 = f6, f7
c7aa529
-	;;
c7aa529
-	setf.sig f6 = r14
c7aa529
-	shr.u r14 = in0, 32
c7aa529
-	;;
c7aa529
-	setf.sig f7 = r14
c7aa529
-	shr.u r14 = in2, 32
c7aa529
-	;;
c7aa529
-	setf.sig f8 = r14
c7aa529
-	xmpy.l f11 = f10, f6
c7aa529
-	xmpy.l f6 = f7, f6
c7aa529
-	;;
c7aa529
-	getf.sig r16 = f11
c7aa529
-	xmpy.l f7 = f7, f8
c7aa529
-	;;
c7aa529
-	shr.u r14 = r16, 32
c7aa529
-	and r16 = r19, r16
c7aa529
-	getf.sig r17 = f6
c7aa529
-	setf.sig f6 = in0
c7aa529
-	;;
c7aa529
-	setf.sig f11 = r14
c7aa529
-	getf.sig r21 = f7
c7aa529
-	setf.sig f7 = in3
c7aa529
-	;;
c7aa529
-	xma.l f11 = f10, f8, f11
c7aa529
-	xma.l f6 = f6, f7, f9
c7aa529
-	;;
c7aa529
-	getf.sig r18 = f11
c7aa529
-	;;
c7aa529
-	add r18 = r18, r17
c7aa529
-	;;
c7aa529
-	and r15 = r19, r18
c7aa529
-	cmp.ltu p7, p6 = r18, r17
c7aa529
-	;;
c7aa529
-	getf.sig r22 = f6
c7aa529
-(p7)	adds r14 = 1, r19
c7aa529
-	;;
c7aa529
-(p7)	add r21 = r21, r14
c7aa529
-	shr.u r14 = r18, 32
c7aa529
-	shl r15 = r15, 32
c7aa529
-	;;
c7aa529
-	add r20 = r21, r14
c7aa529
-	;;
c7aa529
-	add ret0 = r15, r16
c7aa529
-	add ret1 = r22, r20
c7aa529
-	br.ret.sptk rp
c7aa529
-	;;
c7aa529
-END(___multi3)
c7aa529
-	.symver	___multi3, __multi3@GLIBC_2.2
c7aa529
-
c7aa529
-#endif
a9a5615
--- glibc-20050405T2114/sysdeps/ia64/libgcc-compat.c 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/ia64/libgcc-compat.c	22 Sep 2004 21:21:08 -0000	1.1.2.1
c7aa529
@@ -0,0 +1,84 @@
c7aa529
+/* pre-.hidden libgcc compatibility
c7aa529
+   Copyright (C) 2002 Free Software Foundation, Inc.
c7aa529
+   This file is part of the GNU C Library.
c7aa529
+
c7aa529
+   The GNU C Library is free software; you can redistribute it and/or
c7aa529
+   modify it under the terms of the GNU Lesser General Public
c7aa529
+   License as published by the Free Software Foundation; either
c7aa529
+   version 2.1 of the License, or (at your option) any later version.
c7aa529
+
c7aa529
+   The GNU C Library is distributed in the hope that it will be useful,
c7aa529
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
c7aa529
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
c7aa529
+   Lesser General Public License for more details.
c7aa529
+
c7aa529
+   You should have received a copy of the GNU Lesser General Public
c7aa529
+   License along with the GNU C Library; if not, write to the Free
c7aa529
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
c7aa529
+   02111-1307 USA.  */
c7aa529
+
c7aa529
+
c7aa529
+#include <stdint.h>
c7aa529
+#include <shlib-compat.h>
c7aa529
+
c7aa529
+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_2_6)
c7aa529
+
c7aa529
+typedef int int128_t __attribute__((__mode__(TI)));
c7aa529
+
c7aa529
+extern long double __divtf3 (long double, long double) attribute_hidden;
c7aa529
+long double INTUSE (__divtf3) (long double x, long double y)
c7aa529
+{
c7aa529
+  return __divtf3 (x, y);
c7aa529
+}
c7aa529
+symbol_version (INTUSE (__divtf3), __divtf3, GLIBC_2.2);
c7aa529
+
c7aa529
+extern double __divdf3 (double, double) attribute_hidden;
c7aa529
+double INTUSE (__divdf3) (double x, double y)
c7aa529
+{
c7aa529
+  return __divdf3 (x, y);
c7aa529
+}
c7aa529
+symbol_version (INTUSE (__divdf3), __divdf3, GLIBC_2.2);
c7aa529
+
c7aa529
+extern float __divsf3 (float, float) attribute_hidden;
c7aa529
+float INTUSE (__divsf3) (float x, float y)
c7aa529
+{
c7aa529
+  return __divsf3 (x, y);
c7aa529
+}
c7aa529
+symbol_version (INTUSE (__divsf3), __divsf3, GLIBC_2.2);
c7aa529
+
c7aa529
+extern int64_t __divdi3 (int64_t, int64_t) attribute_hidden;
c7aa529
+int64_t INTUSE (__divdi3) (int64_t x, int64_t y)
c7aa529
+{
c7aa529
+  return __divdi3 (x, y);
c7aa529
+}
c7aa529
+symbol_version (INTUSE (__divdi3), __divdi3, GLIBC_2.2);
c7aa529
+
c7aa529
+extern int64_t __moddi3 (int64_t, int64_t) attribute_hidden;
c7aa529
+int64_t INTUSE (__moddi3) (int64_t x, int64_t y)
c7aa529
+{
c7aa529
+  return __moddi3 (x, y);
c7aa529
+}
c7aa529
+symbol_version (INTUSE (__moddi3), __moddi3, GLIBC_2.2);
c7aa529
+
c7aa529
+extern uint64_t __udivdi3 (uint64_t, uint64_t) attribute_hidden;
c7aa529
+uint64_t INTUSE (__udivdi3) (uint64_t x, uint64_t y)
c7aa529
+{
c7aa529
+  return __udivdi3 (x, y);
c7aa529
+}
c7aa529
+symbol_version (INTUSE (__udivdi3), __udivdi3, GLIBC_2.2);
c7aa529
+
c7aa529
+extern uint64_t __umoddi3 (uint64_t, uint64_t) attribute_hidden;
c7aa529
+uint64_t INTUSE (__umoddi3) (uint64_t x, uint64_t y)
c7aa529
+{
c7aa529
+  return __umoddi3 (x, y);
c7aa529
+}
c7aa529
+symbol_version (INTUSE (__umoddi3), __umoddi3, GLIBC_2.2);
c7aa529
+
c7aa529
+extern int128_t __multi3 (int128_t, int128_t) attribute_hidden;
c7aa529
+int128_t INTUSE (__multi3) (int128_t x, int128_t y)
c7aa529
+{
c7aa529
+  return __multi3 (x, y);
c7aa529
+}
c7aa529
+symbol_version (INTUSE (__multi3), __multi3, GLIBC_2.2);
c7aa529
+
c7aa529
+#endif
a9a5615
--- glibc-20050405T2114/sysdeps/m68k/Versions	28 Mar 2005 20:42:42 -0000	1.2
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/m68k/Versions	29 Jan 1999 09:06:03 -0000	1.1
4465bbc
@@ -4,10 +4,3 @@ libc {
4465bbc
     __divdi3; __moddi3; __udivdi3; __umoddi3;
4465bbc
   }
4465bbc
 }
4465bbc
-libm {
4465bbc
-  GLIBC_2.1 {
4465bbc
-    # A generic bug got this omitted from other configurations' version
4465bbc
-    # sets, but we always had it.
4465bbc
-    exp2l;
4465bbc
-  }
4465bbc
-}
a9a5615
--- glibc-20050405T2114/sysdeps/mips/mips64/Versions	28 Mar 2005 20:42:43 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/mips/mips64/Versions 1 Jan 1970 00:00:00 -0000
4465bbc
@@ -1,7 +0,0 @@
4465bbc
-libm {
4465bbc
-  GLIBC_2.1 {
4465bbc
-    # A generic bug got this omitted from other configurations' version
4465bbc
-    # sets, but we always had it.
4465bbc
-    exp2l;
4465bbc
-  }
4465bbc
-}
a9a5615
--- glibc-20050405T2114/sysdeps/sparc/sparc64/Versions	28 Mar 2005 20:42:42 -0000	1.2
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/sparc/sparc64/Versions	19 May 1999 14:21:36 -0000	1.1
4465bbc
@@ -5,10 +5,3 @@ libc {
4465bbc
     __align_cpy_8; __align_cpy_16;
4465bbc
   }
4465bbc
 }
4465bbc
-libm {
4465bbc
-  GLIBC_2.1 {
4465bbc
-    # A generic bug got this omitted from other configurations' version
4465bbc
-    # sets, but we always had it.
4465bbc
-    exp2l;
4465bbc
-  }
4465bbc
-}
a9a5615
--- glibc-20050405T2114/sysdeps/unix/nice.c	28 Sep 2002 19:13:13 -0000	1.6
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/nice.c	22 Sep 2004 21:21:08 -0000	1.6.2.1
c7aa529
@@ -41,7 +41,12 @@ nice (int incr)
c7aa529
 	__set_errno (save);
c7aa529
     }
c7aa529
 
c7aa529
-  result = setpriority (PRIO_PROCESS, 0, prio + incr);
c7aa529
+  prio += incr;
c7aa529
+  if (prio < PRIO_MIN)
c7aa529
+    prio = PRIO_MIN;
c7aa529
+  else if (prio >= PRIO_MAX)
c7aa529
+    prio = PRIO_MAX - 1;
c7aa529
+  result = setpriority (PRIO_PROCESS, 0, prio);
c7aa529
   if (result != -1)
c7aa529
     return getpriority (PRIO_PROCESS, 0);
c7aa529
   else
a9a5615
--- glibc-20050405T2114/sysdeps/unix/sysv/linux/paths.h	15 Nov 2000 23:06:47 -0000	1.11
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/sysv/linux/paths.h	22 Sep 2004 21:21:08 -0000	1.11.4.1
c7aa529
@@ -61,7 +61,7 @@
c7aa529
 #define	_PATH_TTY	"/dev/tty"
c7aa529
 #define	_PATH_UNIX	"/boot/vmlinux"
c7aa529
 #define _PATH_UTMP	"/var/run/utmp"
c7aa529
-#define	_PATH_VI	"/usr/bin/vi"
c7aa529
+#define	_PATH_VI	"/bin/vi"
c7aa529
 #define _PATH_WTMP	"/var/log/wtmp"
c7aa529
 
c7aa529
 /* Provide trailing slash, since mostly used for building pathnames. */
a9a5615
--- glibc-20050405T2114/sysdeps/unix/sysv/linux/readonly-area.c	18 Oct 2004 04:17:11 -0000	1.1
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/sysv/linux/readonly-area.c	20 Oct 2004 11:04:51 -0000	1.1.2.2
8660b87
@@ -33,7 +33,10 @@ __readonly_area (const char *ptr, size_t
8660b87
 
8660b87
   FILE *fp = fopen ("/proc/self/maps", "rc");
8660b87
   if (fp == NULL)
8660b87
-    return -1;
8660b87
+    /* We don't know.  Returning 1 here means that programs using %n
8660b87
+       and -D_FORTIFY_SOURCE=2 will work even when /proc is not mounted,
8660b87
+       but will allow %n even in writable areas.  */
8660b87
+    return 1;
8660b87
 
8660b87
   /* We need no locking.  */
8660b87
   __fsetlocking (fp, FSETLOCKING_BYCALLER);
a9a5615
--- glibc-20050405T2114/sysdeps/unix/sysv/linux/tcsetattr.c	10 Sep 2003 19:16:07 -0000	1.16
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/sysv/linux/tcsetattr.c	22 Sep 2004 21:21:08 -0000	1.16.2.1
c7aa529
@@ -49,6 +49,7 @@ tcsetattr (fd, optional_actions, termios
c7aa529
 {
c7aa529
   struct __kernel_termios k_termios;
c7aa529
   unsigned long int cmd;
c7aa529
+  int retval;
c7aa529
 
c7aa529
   switch (optional_actions)
c7aa529
     {
c7aa529
@@ -80,6 +81,35 @@ tcsetattr (fd, optional_actions, termios
c7aa529
   memcpy (&k_termios.c_cc[0], &termios_p->c_cc[0],
c7aa529
 	  __KERNEL_NCCS * sizeof (cc_t));
c7aa529
 
c7aa529
-  return INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
c7aa529
+  retval = INLINE_SYSCALL (ioctl, 3, fd, cmd, &k_termios);
c7aa529
+
c7aa529
+  if (retval == 0 && cmd == TCSETS)
c7aa529
+    {
c7aa529
+      /* The Linux kernel has a bug which silently ignore the invalid
c7aa529
+        c_cflag on pty. We have to check it here. */
c7aa529
+      int save = errno;
c7aa529
+      retval = INLINE_SYSCALL (ioctl, 3, fd, TCGETS, &k_termios);
c7aa529
+      if (retval)
c7aa529
+       {
c7aa529
+         /* We cannot verify if the setting is ok. We don't return
c7aa529
+            an error (?). */
c7aa529
+         __set_errno (save);
c7aa529
+         retval = 0;
c7aa529
+       }
c7aa529
+      else if ((termios_p->c_cflag & (PARENB | CREAD))
c7aa529
+              != (k_termios.c_cflag & (PARENB | CREAD))
c7aa529
+              || ((termios_p->c_cflag & CSIZE)
c7aa529
+                  && ((termios_p->c_cflag & CSIZE)
c7aa529
+                      != (k_termios.c_cflag & CSIZE))))
c7aa529
+       {
c7aa529
+         /* It looks like the Linux kernel silently changed the
c7aa529
+            PARENB/CREAD/CSIZE bits in c_cflag. Report it as an
c7aa529
+            error. */
c7aa529
+         __set_errno (EINVAL);
c7aa529
+         retval = -1;
c7aa529
+       }
c7aa529
+    }
c7aa529
+
c7aa529
+  return retval;
c7aa529
 }
c7aa529
 libc_hidden_def (tcsetattr)
a9a5615
--- glibc-20050405T2114/sysdeps/unix/sysv/linux/i386/dl-cache.h 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/sysv/linux/i386/dl-cache.h	22 Sep 2004 21:21:08 -0000	1.1.2.1
c7aa529
@@ -0,0 +1,59 @@
c7aa529
+/* Support for reading /etc/ld.so.cache files written by Linux ldconfig.
c7aa529
+   Copyright (C) 2004 Free Software Foundation, Inc.
c7aa529
+   This file is part of the GNU C Library.
c7aa529
+
c7aa529
+   The GNU C Library is free software; you can redistribute it and/or
c7aa529
+   modify it under the terms of the GNU Lesser General Public
c7aa529
+   License as published by the Free Software Foundation; either
c7aa529
+   version 2.1 of the License, or (at your option) any later version.
c7aa529
+
c7aa529
+   The GNU C Library is distributed in the hope that it will be useful,
c7aa529
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
c7aa529
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
c7aa529
+   Lesser General Public License for more details.
c7aa529
+
c7aa529
+   You should have received a copy of the GNU Lesser General Public
c7aa529
+   License along with the GNU C Library; if not, write to the Free
c7aa529
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
c7aa529
+   02111-1307 USA.  */
c7aa529
+
c7aa529
+static inline int
c7aa529
+is_ia64 (void)
c7aa529
+{
c7aa529
+  unsigned int fl1, fl2;
c7aa529
+
c7aa529
+  /* See if we can use cpuid.  */
c7aa529
+  __asm__ ("pushfl; pushfl; popl %0; movl %0,%1; xorl %2,%0;"
c7aa529
+           "pushl %0; popfl; pushfl; popl %0; popfl"
c7aa529
+           : "=&r" (fl1), "=&r" (fl2)
c7aa529
+           : "i" (0x00200000));
c7aa529
+  if (((fl1 ^ fl2) & 0x00200000) == 0)
c7aa529
+    return 0;
c7aa529
+
c7aa529
+  /* Host supports cpuid.  See if cpuid gives capabilities, try
c7aa529
+     CPUID(0).  Preserve %ebx and %ecx; cpuid insn clobbers these, we
c7aa529
+     don't need their CPUID values here, and %ebx may be the PIC
c7aa529
+     register.  */
c7aa529
+  __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx"
c7aa529
+           : "=a" (fl1) : "0" (0) : "edx", "cc");
c7aa529
+  if (fl1 == 0)
c7aa529
+    return 0;
c7aa529
+
c7aa529
+  /* Invoke CPUID(1), return %edx; caller can examine bits to
c7aa529
+     determine what's supported.  */
c7aa529
+  __asm__ ("pushl %%ecx; pushl %%ebx; cpuid; popl %%ebx; popl %%ecx"
c7aa529
+           : "=d" (fl2), "=a" (fl1) : "1" (1) : "cc");
c7aa529
+  return (fl2 & (1 << 30)) != 0;
c7aa529
+}
c7aa529
+
c7aa529
+#define arch_startup(argc, argv) \
c7aa529
+  do {									\
c7aa529
+    /* On IA-64, try to execute 64-bit ldconfig if possible.		\
c7aa529
+       This is because the badly designed /emul/ia32-linux hack		\
c7aa529
+       will cause 32-bit ldconfig to do all sorts of weird things.  */	\
c7aa529
+    if (is_ia64 ())							\
c7aa529
+      execv ("/emul/ia32-linux/../../sbin/ldconfig",			\
c7aa529
+	     (char *const *) argv);					\
c7aa529
+  } while (0)
c7aa529
+
c7aa529
+#include_next <dl-cache.h>
a9a5615
--- glibc-20050405T2114/sysdeps/unix/sysv/linux/ia64/dl-cache.h	6 Jul 2001 04:56:17 -0000	1.2
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/sysv/linux/ia64/dl-cache.h	22 Sep 2004 21:21:09 -0000	1.2.4.1
c7aa529
@@ -22,4 +22,31 @@
c7aa529
 #define _dl_cache_check_flags(flags) \
c7aa529
   ((flags) == _DL_CACHE_DEFAULT_ID)
c7aa529
 
c7aa529
+#define EMUL_HACK "/emul/ia32-linux"
c7aa529
+
c7aa529
+#define arch_startup(argc, argv) unlink (EMUL_HACK LD_SO_CACHE)
c7aa529
+
c7aa529
+#define add_arch_dirs(config_file) \
c7aa529
+  do {							\
c7aa529
+    int save_verbose = opt_verbose;			\
c7aa529
+    opt_verbose = 0;					\
c7aa529
+							\
c7aa529
+    parse_conf (config_file, EMUL_HACK, true);		\
c7aa529
+							\
c7aa529
+    /* Always add the standard search paths.  */	\
c7aa529
+    add_system_dir (EMUL_HACK SLIBDIR);			\
c7aa529
+    if (strcmp (SLIBDIR, LIBDIR))			\
c7aa529
+      add_system_dir (EMUL_HACK LIBDIR);		\
c7aa529
+							\
c7aa529
+    char emul_config_file[strlen (config_file)		\
c7aa529
+			  + sizeof EMUL_HACK];		\
c7aa529
+    strcpy (mempcpy (emul_config_file, EMUL_HACK,	\
c7aa529
+		     strlen (EMUL_HACK)), config_file);	\
c7aa529
+							\
c7aa529
+    if (! access (emul_config_file, R_OK))		\
c7aa529
+      parse_conf (emul_config_file, EMUL_HACK, true);	\
c7aa529
+							\
c7aa529
+    opt_verbose = save_verbose;				\
c7aa529
+  } while (0)
c7aa529
+
c7aa529
 #include_next <dl-cache.h>
a9a5615
--- glibc-20050405T2114/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/sysv/linux/ia64/dl-procinfo.c	22 Sep 2004 21:21:09 -0000	1.1.2.1
c7aa529
@@ -0,0 +1,5 @@
c7aa529
+#ifdef IS_IN_ldconfig
c7aa529
+#include <sysdeps/i386/dl-procinfo.c>
c7aa529
+#else
c7aa529
+#include <sysdeps/generic/dl-procinfo.c>
c7aa529
+#endif
a9a5615
--- glibc-20050405T2114/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h 1 Jan 1970 00:00:00 -0000
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/sysv/linux/ia64/dl-procinfo.h	22 Sep 2004 21:21:09 -0000	1.1.2.1
c7aa529
@@ -0,0 +1,5 @@
c7aa529
+#ifdef IS_IN_ldconfig
c7aa529
+#include <sysdeps/unix/sysv/linux/i386/dl-procinfo.h>
c7aa529
+#else
c7aa529
+#include <sysdeps/generic/dl-procinfo.h>
c7aa529
+#endif
a9a5615
--- glibc-20050405T2114/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed	17 Jan 2002 06:49:28 -0000	1.2
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/unix/sysv/linux/ia64/ldd-rewrite.sed	22 Sep 2004 21:21:09 -0000	1.2.2.1
c7aa529
@@ -1 +1 @@
c7aa529
-s_^\(RTLDLIST=\)\([^ 	]*\)-ia64\(\.so\.[0-9.]*\)[ 	]*$_\1"\2-ia64\3 \2\3"_
c7aa529
+s_^\(RTLDLIST=\)\([^ 	]*\)-ia64\(\.so\.[0-9.]*\)[ 	]*$_\1"\2-ia64\3 /emul/ia32-linux\2\3"_
a9a5615
--- glibc-20050405T2114/sysdeps/x86_64/Versions	28 Mar 2005 20:42:42 -0000	1.3
a9a5615
+++ glibc-20050405T2114-fedora/sysdeps/x86_64/Versions 1 Jan 1970 00:00:00 -0000
4465bbc
@@ -1,7 +0,0 @@
4465bbc
-libm {
4465bbc
-  GLIBC_2.1 {
4465bbc
-    # A generic bug got this omitted from other configurations' version
4465bbc
-    # sets, but we always had it.
4465bbc
-    exp2l;
4465bbc
-  }
4465bbc
-}