about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-03-24 08:19:18 +0000
committerJakub Jelinek <jakub@redhat.com>2005-03-24 08:19:18 +0000
commit55a24b753a4f6e03ed23e16b2be847bd5c5642a7 (patch)
treec72d70578f8305f1cfedc9a24507d12c45a5ff1c
parentdfaef65dcfc165ef88957b7b4633499cbf612299 (diff)
downloadglibc-55a24b753a4f6e03ed23e16b2be847bd5c5642a7.tar.gz
glibc-55a24b753a4f6e03ed23e16b2be847bd5c5642a7.tar.xz
glibc-55a24b753a4f6e03ed23e16b2be847bd5c5642a7.zip
Updated to fedora-glibc-20050324T0715 cvs/fedora-glibc-2_3_4-17
-rw-r--r--ChangeLog72
-rw-r--r--NEWS5
-rw-r--r--Versions.def2
-rw-r--r--elf/Makefile11
-rw-r--r--elf/dl-open.c2
-rw-r--r--elf/elf.h4
-rw-r--r--elf/rtld.c3
-rw-r--r--elf/tst-tls15.c32
-rw-r--r--elf/tst-tlsmod15a.c6
-rw-r--r--elf/tst-tlsmod15b.c17
-rw-r--r--fedora/branch.mk4
-rw-r--r--fedora/glibc.spec.in11
-rw-r--r--linuxthreads/ChangeLog10
-rw-r--r--linuxthreads/sysdeps/m68k/Makefile7
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c2
-rw-r--r--locale/iso-4217.def1
-rw-r--r--locale/setlocale.c2
-rw-r--r--localedata/ChangeLog11
-rw-r--r--localedata/SUPPORTED2
-rw-r--r--localedata/charmaps/WINDOWS-31J2
-rw-r--r--localedata/locales/sr_CS349
-rw-r--r--malloc/malloc.c6
-rw-r--r--nis/ypclnt.c10
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/pthread_create.c20
-rw-r--r--scripts/versions.awk22
-rw-r--r--sunrpc/xdr_stdio.c12
-rw-r--r--sysdeps/generic/dl-tls.c38
-rw-r--r--sysdeps/ia64/_mcount.S7
-rw-r--r--sysdeps/ia64/elf/initfini.c4
30 files changed, 608 insertions, 71 deletions
diff --git a/ChangeLog b/ChangeLog
index 07a887f5e4..6b6cbd103b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,57 @@
+2005-03-23  Jakub Jelinek  <jakub@redhat.com>
+
+	* nis/ypclnt.c (yp_2_yperr): Revert 2004-11-30 patch.
+	(ypprot_err): Use yp_2_yperr table also for YP_NODOM .. YP_NOMORE.
+
+2005-03-22  Roland McGrath  <roland@redhat.com>
+
+	* locale/setlocale.c: Comment typo.
+
+	* scripts/versions.awk: No errors for GLIBC_PRIVATE.
+
+	* Versions.def (libdl, librt): Add GLIBC_2.3.4 version.
+
+	* scripts/versions.awk: Print all errors and die at the end.
+	Use library name in versions array keys.
+
+2005-03-22  Daniel Jacobowitz  <dan@codesourcery.com>
+
+	* elf/elf.h (PT_ARM_EXIDX): New macro.
+
+2005-03-21  Thorsten Kukuk  <kukuk@suse.de>
+
+	* sunrpc/xdr_stdio.c (xdrstdio_getlong, xdrstdio_putlong):
+	Convert correctly between long/int on 64bit big-endian.
+
+2005-03-21  David Mosberger  <davidm@hpl.hp.com>
+
+	* sysdeps/ia64/_mcount.S: Newer kernels don't like register-frames
+	with more than 8 output registers.  Fix this by passing original
+	ar.pfs to _mcount_ret_helper via r3.
+
+2005-03-15  Jakub Jelinek  <jakub@redhat.com>
+
+	[BZ #786]
+	* sysdeps/generic/dl-tls.c (_dl_next_tls_modid): Handle
+	GL(dl_tls_static_nelem) == GL(dl_tls_max_dtv_idx).
+	* elf/Makefile: Add rules to build and run tst-tls15.
+	* elf/tst-tls15.c: New test.
+	* elf/tst-tlsmod15a.c: New file.
+	* elf/tst-tlsmod15b.c: New file.
+
+2005-03-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* elf/rtld.c (dl_main): Always call init_tls if we have audit modules.
+
+2005-03-20  Alfred M. Szmidt  <ams@gnu.org>
+
+	* elf/dl-open.c (dl_open_worker): Fix typo.
+
+2005-03-20  Ulrich Drepper  <drepper@redhat.com>
+
+	* malloc/malloc.c (public_cALLOc): We cannot skip the memory
+	clearing if perturb_byte != 0.
+
 2005-03-20  Jakub Jelinek  <jakub@redhat.com>
 
 	* posix/bits/unistd.h (pread) [__USE_FILE_OFFSET64]: Use __off64_t
@@ -7,6 +61,24 @@
 	* debug/tst-lfschk2.c: New test.
 	* debug/tst-lfschk3.c: New test.
 
+2005-02-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/unix/sysv/linux/bits/termios.h (CMSPAR): Define.
+	* sysdeps/unix/sysv/linux/sparc/bits/termios.h: Add __USE_MISC
+	and __USE_XOPEN guards to match linux/bits/termios.h.
+	* sysdeps/unix/sysv/linux/alpha/bits/termios.h: Likewise.
+	(CMSPAR): Define.
+	* sysdeps/unix/sysv/linux/powerpc/bits/termios.h: Likewise.
+
+2005-02-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sysdeps/ia64/elf/initfini.c: Add local _init and _fini labels.
+
+2005-02-27  Denis Barbier  <barbier@debian.org>
+
+	[BZ #38]
+	* locale/iso-4217.def: Add CSD currency.
+
 2005-03-19  Ulrich Drepper  <drepper@redhat.com>
 
 	* inet/test-ifaddrs.c: Use test-skeleton.
diff --git a/NEWS b/NEWS
index cd975c998b..2601cd5dde 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes.  2005-2-21
+GNU C Library NEWS -- history of user-visible changes.  2005-3-19
 Copyright (C) 1992-2004, 2005 Free Software Foundation, Inc.
 See the end for copying conditions.
 
@@ -11,6 +11,9 @@ Version 2.4
 
 * New iconv converters for IBM1025, IBM1122, IBM1137, IBM1153,
   IBM1154, IBM1155, IBM1156, IBM1157, and IBM1158 contributed by Jiro Sekiba.
+
+* It is now possible to install audit libraries for the dynamic linker using
+  LD_AUDIT.  Implemented by Ulrich Drepper.
 
 Version 2.3.4
 
diff --git a/Versions.def b/Versions.def
index 33409f1143..923f5eb31e 100644
--- a/Versions.def
+++ b/Versions.def
@@ -35,6 +35,7 @@ libdl {
   GLIBC_2.0
   GLIBC_2.1
   GLIBC_2.3.3
+  GLIBC_2.3.4
 }
 libm {
   GLIBC_2.0
@@ -90,6 +91,7 @@ librt {
   GLIBC_2.2
   GLIBC_2.3
   GLIBC_2.3.3
+  GLIBC_2.3.4
 }
 libutil {
   GLIBC_2.0
diff --git a/elf/Makefile b/elf/Makefile
index 80a3f6cb19..c034b2ba6e 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -159,7 +159,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
 	 neededtest3 neededtest4 unload2 lateglobal initfirst global \
 	 restest2 next dblload dblunload reldep5 reldep6 reldep7 reldep8 \
 	 circleload1 tst-tls3 tst-tls4 tst-tls5 tst-tls6 tst-tls7 tst-tls8 \
-	 tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-align \
+	 tst-tls10 tst-tls11 tst-tls12 tst-tls13 tst-tls14 tst-tls15 tst-align \
 	 tst-align2 $(tests-execstack-$(have-z-execstack)) tst-dlmodcount \
 	 tst-dlopenrpath tst-deep1 tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
 	 unload3 unload4 unload5 tst-audit1 tst-global1 order2
@@ -190,6 +190,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
 		tst-tlsmod5 tst-tlsmod6 tst-tlsmod7 tst-tlsmod8 \
 		tst-tlsmod9 tst-tlsmod10 tst-tlsmod11 tst-tlsmod12 \
 		tst-tlsmod13 tst-tlsmod13a tst-tlsmod14a tst-tlsmod14b \
+		tst-tlsmod15a tst-tlsmod15b \
 		circlemod1 circlemod1a circlemod2 circlemod2a \
 		circlemod3 circlemod3a \
 		reldep8mod1 reldep8mod2 reldep8mod3 \
@@ -471,6 +472,7 @@ tst-tlsmod10.so-no-z-defs = yes
 tst-tlsmod12.so-no-z-defs = yes
 tst-tlsmod14a.so-no-z-defs = yes
 tst-tlsmod14b.so-no-z-defs = yes
+tst-tlsmod15a.so-no-z-defs = yes
 circlemod2.so-no-z-defs = yes
 circlemod3.so-no-z-defs = yes
 circlemod3a.so-no-z-defs = yes
@@ -683,8 +685,11 @@ $(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so
 $(objpfx)tst-tls13: $(libdl)
 $(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so
 
-$(objpfx)tst-tls14:  $(objpfx)tst-tlsmod14a.so $(libdl)
-$(objpfx)tst-tls14.out:$(objpfx)tst-tlsmod14b.so
+$(objpfx)tst-tls14: $(objpfx)tst-tlsmod14a.so $(libdl)
+$(objpfx)tst-tls14.out: $(objpfx)tst-tlsmod14b.so
+
+$(objpfx)tst-tls15: $(libdl)
+$(objpfx)tst-tls15.out: $(objpfx)tst-tlsmod15a.so $(objpfx)tst-tlsmod15b.so
 
 CFLAGS-tst-align.c = $(stack-align-test-flags)
 CFLAGS-tst-align2.c = $(stack-align-test-flags)
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 7433d99ff9..a65690e5a3 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -462,8 +462,10 @@ dl_open_worker (void *a)
 	  /* We have to bump the generation counter.  */
 	  any_tls = true;
 	}
+#endif
     }
 
+#if USE_TLS
   /* Bump the generation number if necessary.  */
   if (any_tls && __builtin_expect (++GL(dl_tls_generation) == 0, 0))
     _dl_fatal_printf (N_("\
diff --git a/elf/elf.h b/elf/elf.h
index b84cc0e3ad..8a9f7fd482 100644
--- a/elf/elf.h
+++ b/elf/elf.h
@@ -2138,7 +2138,11 @@ typedef Elf32_Addr Elf32_Conflict;
 #define PF_ARM_SB          0x10000000   /* Segment contains the location
 					   addressed by the static base */
 
+/* Processor specific values for the Phdr p_type field.  */
+#define PT_ARM_EXIDX	0x70000001	/* .ARM.exidx segment */
+
 /* ARM relocs.  */
+
 #define R_ARM_NONE		0	/* No reloc */
 #define R_ARM_PC24		1	/* PC relative 26 bit branch */
 #define R_ARM_ABS32		2	/* Direct 32 bit  */
diff --git a/elf/rtld.c b/elf/rtld.c
index 720029dfc9..b2122bb9d6 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -1353,8 +1353,7 @@ ld.so does not support TLS, but program uses it!\n");
 
 	  /* Since we start using the auditing DSOs right away we need to
 	     initialize the data structures now.  */
-	  if (!TLS_INIT_TP_EXPENSIVE)
-	    tcbp = init_tls ();
+	  tcbp = init_tls ();
 #endif
 	  struct dlmopen_args dlmargs;
 	  dlmargs.fname = al->name;
diff --git a/elf/tst-tls15.c b/elf/tst-tls15.c
new file mode 100644
index 0000000000..7ac963aa2d
--- /dev/null
+++ b/elf/tst-tls15.c
@@ -0,0 +1,32 @@
+#include <dlfcn.h>
+#include <stdio.h>
+
+static int
+do_test (void)
+{
+  void *h = dlopen ("tst-tlsmod15a.so", RTLD_NOW);
+  if (h != NULL)
+    {
+      puts ("unexpectedly succeeded to open tst-tlsmod15a.so");
+      exit (1);
+    }
+
+  h = dlopen ("tst-tlsmod15b.so", RTLD_NOW);
+  if (h == NULL)
+    {
+      puts ("failed to open tst-tlsmod15b.so");
+      exit (1);
+    }
+
+  int (*fp) (void) = (int (*) (void)) dlsym (h, "in_dso");
+  if (fp == NULL)
+    {
+      puts ("cannot find in_dso");
+      exit (1);
+    }
+
+  return fp ();
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/elf/tst-tlsmod15a.c b/elf/tst-tlsmod15a.c
new file mode 100644
index 0000000000..66c707129a
--- /dev/null
+++ b/elf/tst-tlsmod15a.c
@@ -0,0 +1,6 @@
+extern int nonexistent_dummy_var;
+int *
+foo (void)
+{
+  return &nonexistent_dummy_var;
+}
diff --git a/elf/tst-tlsmod15b.c b/elf/tst-tlsmod15b.c
new file mode 100644
index 0000000000..4f63eab144
--- /dev/null
+++ b/elf/tst-tlsmod15b.c
@@ -0,0 +1,17 @@
+#include "tst-tls10.h"
+
+#ifdef USE_TLS__THREAD
+__thread int mod15b_var __attribute__((tls_model("initial-exec")));
+
+int
+in_dso (void)
+{
+  return mod15b_var;
+}
+#else
+int
+in_dso (void)
+{
+  return 0;
+}
+#endif
diff --git a/fedora/branch.mk b/fedora/branch.mk
index 059c5a0d5c..57f20c3c67 100644
--- a/fedora/branch.mk
+++ b/fedora/branch.mk
@@ -1,5 +1,5 @@
 # This file is updated automatically by Makefile.
 glibc-branch := fedora
 glibc-base := HEAD
-fedora-sync-date := 2005-03-19 19:07 UTC
-fedora-sync-tag := fedora-glibc-20050319T1907
+fedora-sync-date := 2005-03-24 07:15 UTC
+fedora-sync-tag := fedora-glibc-20050324T0715
diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in
index d6fcab7080..8bb904b278 100644
--- a/fedora/glibc.spec.in
+++ b/fedora/glibc.spec.in
@@ -1,4 +1,4 @@
-%define glibcrelease 16
+%define glibcrelease 17
 %define auxarches i586 i686 athlon sparcv9 alphaev6
 %define prelinkarches noarch
 %define nptlarches i386 i686 athlon x86_64 ia64 s390 s390x sparcv9 ppc ppc64
@@ -1275,6 +1275,15 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Thu Mar 24 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-17
+- update from CVS
+  - fix LD_AUDIT in LinuxThreads ld.so
+  - fix calloc with M_PERTURB
+  - fix error handling in pthread_create with PTHREAD_EXPLICIT_SCHED
+    on ppc*/ia64/alpha/mips (BZ#801)
+  - fix a typo in WINDOWS-31J charmap (#151739)
+  - fix NIS ypprot_err (#151469)
+
 * Sun Mar 20 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-16
 - fix pread with -D_FILE_OFFSET_BITS=64 (#151573)
 
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 8699564b4c..ce3bcb3e18 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,13 @@
+2005-03-21  GOTO Masanori  <gotom@debian.or.jp>
+
+	* linuxthreads/sysdeps/m68k/Makefile: Remove to delete
+	unneeded o-iterator thing.
+
+2005-02-21  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Add local _init
+	and _fini labels.
+
 2005-03-05  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/i386/Makefile (CFLAGS-pt-initfini.s): Unconditionally
diff --git a/linuxthreads/sysdeps/m68k/Makefile b/linuxthreads/sysdeps/m68k/Makefile
deleted file mode 100644
index 1cd27d44ca..0000000000
--- a/linuxthreads/sysdeps/m68k/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-ifeq ($(subdir), linuxthreads)
-object-suffixes-left := $(libpthread-nonshared)
-define o-iterator-doit
-$(objpfx)$o.os: pic-ccflag = -fPIC
-endef
-include $(o-iterator)
-endif
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c b/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c
index 85fd33f4a8..af8a63c163 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c
+++ b/linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c
@@ -87,6 +87,7 @@ _init:\n\
 /*@_init_EPILOG_BEGINS*/\n\
 	.section .init\n\
 	.proc _init#\n\
+_init:\n\
 	.prologue\n\
 	.save ar.pfs, r34\n\
 	.vframe r32\n\
@@ -122,6 +123,7 @@ _fini:\n\
 /*@_fini_EPILOG_BEGINS*/\n\
 	.section .fini\n\
 	.proc _fini#\n\
+_fini:\n\
 	.prologue\n\
 	.save ar.pfs, r34\n\
 	.vframe r32\n\
diff --git a/locale/iso-4217.def b/locale/iso-4217.def
index 01a69950dc..b7c05a351d 100644
--- a/locale/iso-4217.def
+++ b/locale/iso-4217.def
@@ -43,6 +43,7 @@ DEFINE_INT_CURR("CLP")		/* Chilean Peso  */
 DEFINE_INT_CURR("CNY")		/* China Yuan Renminbi  */
 DEFINE_INT_CURR("COP")		/* Colombian Peso  */
 DEFINE_INT_CURR("CRC")		/* Costa Rican Colon  */
+DEFINE_INT_CURR("CSD")		/* Serbian Dinar  */
 DEFINE_INT_CURR("CUP")		/* Cuban Peso  */
 DEFINE_INT_CURR("CVE")		/* Cape Verde Escudo  */
 DEFINE_INT_CURR("CYP")		/* Cypriot Pound  */
diff --git a/locale/setlocale.c b/locale/setlocale.c
index e6db70d4c7..50bf8e772f 100644
--- a/locale/setlocale.c
+++ b/locale/setlocale.c
@@ -372,7 +372,7 @@ setlocale (int category, const char *locale)
       /* Critical section left.  */
       __libc_lock_unlock (__libc_setlocale_lock);
 
-      /* Free the resources (the locale path variable.  */
+      /* Free the resources (the locale path variable).  */
       free (locale_path);
 
       return composite;
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 548dc7890c..e454cd0cfc 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,14 @@
+2005-03-21  Jakub Jelinek  <jakub@redhat.com>
+
+	* charmaps/WINDOWS-31J: Add % before alias keyword.
+
+2005-02-27  Denis Barbier  <barbier@debian.org>
+
+	[BZ #38]
+	* locales/sr_CS: New file.
+	Contributed by Danilo Segan <dsegan@gmx.net>
+	* SUPPORTED: Add sr_CS/ISO-8859-5 and sr_CS.UTF-8/UTF-8.
+
 2005-03-18  Andreas Schwab  <schwab@suse.de>
 
 	* locales/pa_IN (am_pm): Fix character names.
diff --git a/localedata/SUPPORTED b/localedata/SUPPORTED
index 6dafc49f4d..b079c4ca79 100644
--- a/localedata/SUPPORTED
+++ b/localedata/SUPPORTED
@@ -279,6 +279,8 @@ so_KE/ISO-8859-1 \
 so_SO/ISO-8859-1 \
 sq_AL.UTF-8/UTF-8 \
 sq_AL/ISO-8859-1 \
+sr_CS.UTF-8/UTF-8 \
+sr_CS/ISO-8859-5 \
 st_ZA.UTF-8/UTF-8 \
 st_ZA/ISO-8859-1 \
 sv_FI.UTF-8/UTF-8 \
diff --git a/localedata/charmaps/WINDOWS-31J b/localedata/charmaps/WINDOWS-31J
index 76316c5761..d5ab12abef 100644
--- a/localedata/charmaps/WINDOWS-31J
+++ b/localedata/charmaps/WINDOWS-31J
@@ -8,7 +8,7 @@
 % MORIYAMA Masayuki <msyk@mtg.biglobe.ne.jp>, 2003.
 % Last changed: 2003-07-18
 
-alias CP932
+% alias CP932
 
 CHARMAP
 <U0000>     /x00         NULL
diff --git a/localedata/locales/sr_CS b/localedata/locales/sr_CS
new file mode 100644
index 0000000000..1a01f2f101
--- /dev/null
+++ b/localedata/locales/sr_CS
@@ -0,0 +1,349 @@
+comment_char %
+escape_char  /
+%
+% Serbian Language Locale for Serbia and Montenegro
+% Source: sr_YU locale
+% Address:
+%
+% Contact: Danilo Segan
+% Email: dsegan@gmx.net
+% Tel: +381 63 8626082
+% Fax: none
+% Language: sr
+% Territory: CS
+% Revision: 1.2
+% Date: 2004-08-09
+% Application: general
+% Users: general
+% Charset: UTF-8, ISO-8859-5
+% Distribution and use is free, also
+% for commercial purposes.
+%
+% TODO:
+% -- fix LC_COLLATE to work correctly for latin alphabet too
+%
+
+LC_IDENTIFICATION
+title      "Serbian locale for Serbia and Montenegro"
+source     "sr_YU locale"
+address    ""
+contact    "Danilo Segan"
+email      "bug-glibc-locales@gnu.org"
+tel        ""
+fax        ""
+language   "Serbian"
+territory  "Serbia and Montenegro"
+revision   "1.2"
+date       "2004-08-09"
+audience   "general"
+application   "GNU locale"
+abbreviation  ""
+%
+category  "i18n:1997";LC_IDENTIFICATION
+category  "i18n:1997";LC_CTYPE
+category  "i18n:1997";LC_COLLATE
+category  "i18n:1997";LC_MONETARY
+category  "i18n:1997";LC_NUMERIC
+category  "i18n:1997";LC_TIME
+category  "i18n:1997";LC_MESSAGES
+category  "i18n:1997";LC_PAPER
+category  "i18n:1997";LC_NAME
+category  "i18n:1997";LC_ADDRESS
+category  "i18n:1997";LC_TELEPHONE
+category  "i18n:1997";LC_MEASUREMENT
+END LC_IDENTIFICATION
+
+LC_CTYPE
+copy "i18n"
+translit_start
+include "translit_combining";""
+
+% cyrillic -> latin
+<U0452> "<U0111>";"<U0064><U006A>" % d-
+<U0453> "<U0067><U006A>" % gj
+<U0455> "<U0064><U007A>" % dz
+<U0458> "<U006A>" % j
+<U0459> "<U006C><U006A>" % lj
+<U045A> "<U006E><U006A>" % nj
+<U045B> "<U0107>";"<U0063>" % c'
+<U045C> "<U006B><U006A>" % kj
+<U045F> "<U0064><U017E>";"<U0064><U007A>" % dz<
+
+<U0402> "<U0110>";"<U0044><U006A>" % D-
+<U0403> "<U0047><U006A>" % Gj
+<U0405> "<U0044><U007A>" % Dz
+<U0408> "<U004A>" % J
+<U0409> "<U004C><U006A>" % Lj
+<U040A> "<U004E><U006A>" % Nj
+<U040B> "<U0106>";"<U0043>" % C'
+<U040C> "<U004B><U006A>" % Kj
+<U040F> "<U0044><U017E>";"<U0064><U007A>" % Dz<
+
+<U0430> "<U0061>"
+<U0431> "<U0062>"
+<U0446> "<U0063>"
+<U0434> "<U0064>"
+<U0435> "<U0065>"
+<U0444> "<U0066>"
+<U0433> "<U0067>"
+<U0445> "<U0068>"
+<U0438> "<U0069>"
+<U043A> "<U006B>"
+<U043B> "<U006C>"
+<U043C> "<U006D>"
+<U043D> "<U006E>"
+<U043E> "<U006F>"
+<U043F> "<U0070>"
+<U0440> "<U0072>"
+<U0441> "<U0073>"
+<U0442> "<U0074>"
+<U0443> "<U0075>"
+<U0432> "<U0076>"
+<U0437> "<U007A>"
+<U0436> "<U017E>";"<U007A>" % z<
+<U0448> "<U0161>";"<U0073>" % s<
+<U0447> "<U010D>";"<U0063>" % c<
+
+<U0410> "<U0041>"
+<U0411> "<U0042>"
+<U0426> "<U0043>"
+<U0414> "<U0044>"
+<U0415> "<U0045>"
+<U0424> "<U0046>"
+<U0413> "<U0047>"
+<U0425> "<U0048>"
+<U0418> "<U0049>"
+<U041A> "<U004B>"
+<U041B> "<U004C>"
+<U041C> "<U004D>"
+<U041D> "<U004E>"
+<U041E> "<U004F>"
+<U041F> "<U0050>"
+<U0420> "<U0052>"
+<U0421> "<U0053>"
+<U0422> "<U0054>"
+<U0423> "<U0055>"
+<U0412> "<U0056>"
+<U0417> "<U005A>"
+<U0416> "<U017D>";"<U005A>" % z<
+<U0428> "<U0160>";"<U0053>" % s<
+<U0427> "<U010C>";"<U0063>" % c<
+
+translit_end
+END LC_CTYPE
+
+
+LC_COLLATE
+
+copy "iso14651_t1"
+
+collating-symbol  <d-z-sh>
+collating-symbol  <l-j-sh>
+collating-symbol  <n-j-sh>
+
+collating-symbol <cacute>
+collating-symbol <ccaron>
+collating-symbol <d//>
+collating-symbol <scaron>
+collating-symbol <zcaron>
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <c>
+<cacute>
+<ccaron>
+<d>
+<d-z-sh>
+<d//>
+reorder-after <l>
+<l-j-sh>
+reorder-after <n>
+<n-j-sh>
+reorder-after <s>
+<scaron>
+reorder-after <z>
+<zcaron>
+
+reorder-after <U0063>
+<U0107>	<cacute>;<PCT>;<MIN>;IGNORE
+<U010D>	<ccaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U0043>
+<U0106>	<cacute>;<PCT>;<CAP>;IGNORE
+<U010C>	<ccaron>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U0064>
+<d-z<>	<d-z-sh>;<PCT>;<MIN>;IGNORE
+<dz<>	<d-z-sh>;<PCT>;<MIN>;IGNORE
+<d-Z<>	<d-z-sh>;<PCT>;<MIN-CAP>;IGNORE
+<U0111>	<d//>;<PCT>;<MIN>;IGNORE
+reorder-after <U0044>
+<D-Z<>	<d-z-sh>;<PCT>;<CAP>;IGNORE
+<DZ<>	<d-z-sh>;<PCT>;<CAP>;IGNORE
+<D-z<>	<d-z-sh>;<PCT>;<CAP-MIN>;IGNORE
+<Dz<>	<d-z-sh>;<PCT>;<CAP-MIN>;IGNORE
+<U0110>	<d//>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U006C>
+<l-j>	<l-j-sh>;<PCT>;<MIN>;IGNORE
+<lj>	<l-j-sh>;<PCT>;<MIN>;IGNORE
+<l-J>	<l-j-sh>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004C>
+<L-J>	<l-j-sh>;<PCT>;<CAP>;IGNORE
+<LJ>	<l-j-sh>;<PCT>;<CAP>;IGNORE
+<L-j>	<l-j-sh>;<PCT>;<CAP-MIN>;IGNORE
+<Lj>	<l-j-sh>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U006E>
+<n-j>	<n-j-sh>;<PCT>;<MIN>;IGNORE
+<nj>	<n-j-sh>;<PCT>;<MIN>;IGNORE
+<n-J>	<n-j-sh>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004E>
+<N-J>	<n-j-sh>;<PCT>;<CAP>;IGNORE
+<NJ>	<n-j-sh>;<PCT>;<CAP>;IGNORE
+<N-j>	<n-j-sh>;<PCT>;<CAP-MIN>;IGNORE
+<Nj>	<n-j-sh>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0073>
+<U0161>	<scaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U0053>
+<U0160>	<scaron>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U007A>
+<U017E>	<zcaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U005A>
+<U017D>	<zcaron>;<PCT>;<CAP>;IGNORE
+
+reorder-end
+
+END LC_COLLATE
+
+LC_MONETARY
+int_curr_symbol           "<U0043><U0053><U0044><U0020>"
+currency_symbol           "<U0434><U0438><U043D>"
+mon_decimal_point         "<U002C>"
+mon_thousands_sep         "<U002E>"
+mon_grouping              3;3
+positive_sign             ""
+negative_sign             "<U002D>"
+int_frac_digits           2
+frac_digits               2
+p_cs_precedes             0
+p_sep_by_space            1
+n_cs_precedes             0
+n_sep_by_space            1
+p_sign_posn               1
+n_sign_posn               1
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point             "<U002C>"
+thousands_sep             ""
+grouping                  0;0
+END LC_NUMERIC
+
+LC_TIME
+
+abday   "<U043D><U0435><U0434>";"<U043F><U043E><U043D>";/
+        "<U0443><U0442><U043E>";"<U0441><U0440><U0435>";/
+        "<U0447><U0435><U0442>";"<U043F><U0435><U0442>";/
+        "<U0441><U0443><U0431>"
+day     "<U043D><U0435><U0434><U0435><U0459><U0430>";/
+        "<U043F><U043E><U043D><U0435><U0434><U0435><U0459><U0430><U043A>";/
+        "<U0443><U0442><U043E><U0440><U0430><U043A>";/
+        "<U0441><U0440><U0435><U0434><U0430>";/
+        "<U0447><U0435><U0442><U0432><U0440><U0442><U0430><U043A>";/
+        "<U043F><U0435><U0442><U0430><U043A>";/
+        "<U0441><U0443><U0431><U043E><U0442><U0430>"
+abmon   "<U0458><U0430><U043D>";"<U0444><U0435><U0431>";/
+        "<U043C><U0430><U0440>";"<U0430><U043F><U0440>";/
+        "<U043C><U0430><U0458>";"<U0458><U0443><U043D>";/
+        "<U0458><U0443><U043B>";"<U0430><U0432><U0433>";/
+        "<U0441><U0435><U043F>";"<U043E><U043A><U0442>";/
+        "<U043D><U043E><U0432>";"<U0434><U0435><U0446>"
+mon     "<U0458><U0430><U043D><U0443><U0430><U0440>";/
+        "<U0444><U0435><U0431><U0440><U0443><U0430><U0440>";/
+        "<U043C><U0430><U0440><U0442>";/
+        "<U0430><U043F><U0440><U0438><U043B>";/
+        "<U043C><U0430><U0458>";/
+        "<U0458><U0443><U043D>";/
+        "<U0458><U0443><U043B>";/
+        "<U0430><U0432><U0433><U0443><U0441><U0442>";/
+        "<U0441><U0435><U043F><U0442><U0435><U043C><U0431><U0430><U0440>";/
+        "<U043E><U043A><U0442><U043E><U0431><U0430><U0440>";/
+        "<U043D><U043E><U0432><U0435><U043C><U0431><U0430><U0440>";/
+        "<U0434><U0435><U0446><U0435><U043C><U0431><U0430><U0440>"
+
+d_t_fmt "<U0025><U0041><U002C><U0020><U0025><U0064><U002E><U0020>/
+<U0025><U0042><U0020><U0025><U0059><U002E><U0020><U0025><U0054>/
+<U0020><U0025><U005A>"
+d_fmt   "<U0025><U0064><U002E><U0025><U006D><U002E><U0025><U0059><U002E>"
+t_fmt   "<U0025><U0054>"
+am_pm   "";""
+t_fmt_ampm "<U0025><U0054>"
+date_fmt  "<U0025><U0061><U002C><U0020><U0025><U0065><U002E><U0020>/
+<U0025><U0062><U0020><U0025><U0059><U002E><U0020><U0020><U0025><U0048>/
+<U003A><U0025><U004D><U003A><U0025><U0053><U0020><U0025><U005A><U000A>"
+week    7;19971201;4
+first_weekday 2
+first_workday 2
+END LC_TIME
+
+LC_MESSAGES
+yesexpr "<U005E><U005B><U0414><U0434><U0044><U0064><U0059><U0079><U005D>"
+noexpr  "<U005E><U005B><U041D><U043D><U004E><U006E><U005D>"
+END LC_MESSAGES
+
+LC_PAPER
+height   297
+width    210
+END LC_PAPER
+
+LC_NAME
+name_fmt    "<U0025><U0064><U0025><U0074><U0025><U0067><U0025><U0074>/
+<U0025><U006D><U0025><U0074><U0025><U0066>"
+name_gen    ""
+name_mr     "<U0433><U002D><U0434><U0438><U043D>"
+name_mrs    "<U0433><U002D><U0452><U0430>"
+name_miss   "<U0433><U002D><U0452><U0438><U0446><U0430>"
+name_ms     "<U0433><U002D><U0452><U0430>"
+END LC_NAME
+
+LC_ADDRESS
+postal_fmt    "<U0025><U0066><U0025><U004E><U0025><U0061><U0025><U004E>/
+<U0025><U0064><U0025><U004E><U0025><U0062><U0025><U004E><U0025><U0073>/
+<U0020><U0025><U0068><U0020><U0025><U0065><U0020><U0025><U0072><U0025>/
+<U004E><U0025><U0025><U007A><U0020><U0025><U0054><U0025>/
+<U004E><U0025><U0063><U0025><U004E>"
+country_ab2   "<U0043><U0053>"
+country_ab3   "<U0053><U0043><U0047>"
+% FIXME: country_post is probably incorrect
+country_post  "<U0053><U0043><U0047>"
+country_name  "<U0421><U0440><U0431><U0438><U0458><U0430><U0020><U0438>/
+<U0020><U0426><U0440><U043D><U0430><U0020><U0413><U043E><U0440><U0430>"
+country_num   891
+country_car   "<U0053><U0043><U0047>"
+% FIXME: ISBN code is what? "86" that preceedes all the numbers?
+country_isbn  "<U0038><U0036>"
+lang_name     "<U0441><U0440><U043F><U0441><U043A><U0438>"
+lang_term     "<U0073><U0072><U0070>"
+lang_lib      "<U0073><U0063><U0063>"
+lang_ab	      "<U0073><U0072>"
+END LC_ADDRESS
+
+LC_TELEPHONE
+tel_int_fmt    "<U002B><U0025><U0063><U0020><U0025><U0061><U0020><U0025>/
+<U006C>"
+tel_dom_fmt    "<U0025><U0041><U0020><U0025><U006C>"
+int_prefix     "<U0033><U0038><U0031>"
+int_select     "<U0039><U0039>"
+END LC_TELEPHONE
+
+LC_MEASUREMENT
+measurement    1
+END LC_MEASUREMENT
diff --git a/malloc/malloc.c b/malloc/malloc.c
index 44831bbb1d..65be277097 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
@@ -1,4 +1,4 @@
-  /* Malloc implementation for multiple threads without lock contention.
+/* Malloc implementation for multiple threads without lock contention.
    Copyright (C) 1996-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Wolfram Gloger <wg@malloc.de>
@@ -3691,14 +3691,14 @@ public_cALLOc(size_t n, size_t elem_size)
 
   /* Two optional cases in which clearing not necessary */
 #if HAVE_MMAP
-  if (chunk_is_mmapped(p))
+  if (perturb_byte == 0 && chunk_is_mmapped(p))
     return mem;
 #endif
 
   csz = chunksize(p);
 
 #if MORECORE_CLEARS
-  if (p == oldtop && csz > oldtopsize) {
+  if (perturb_byte == 0 && (p == oldtop && csz > oldtopsize)) {
     /* clear only the bytes from non-freshly-sbrked memory */
     csz = oldtopsize;
   }
diff --git a/nis/ypclnt.c b/nis/ypclnt.c
index 85292b62d9..6230cb84dc 100644
--- a/nis/ypclnt.c
+++ b/nis/ypclnt.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 1996-2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2001, 2002, 2003, 2004, 2005
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Thorsten Kukuk <kukuk@suse.de>, 1996.
 
@@ -829,6 +830,11 @@ yperr_string (const int error)
 static const int8_t yp_2_yperr[] =
   {
 #define YP2YPERR(yp, yperr)  [YP_##yp - YP_VERS] = YPERR_##yperr
+    YP2YPERR (TRUE, SUCCESS),
+    YP2YPERR (NOMORE, NOMORE),
+    YP2YPERR (FALSE, YPERR),
+    YP2YPERR (NOMAP, MAP),
+    YP2YPERR (NODOM, DOMAIN),
     YP2YPERR (NOKEY, KEY),
     YP2YPERR (BADOP, YPERR),
     YP2YPERR (BADDB, BADDB),
@@ -839,7 +845,7 @@ static const int8_t yp_2_yperr[] =
 int
 ypprot_err (const int code)
 {
-  if (code < YP_VERS || code > YP_NOKEY)
+  if (code < YP_VERS || code > YP_NOMORE)
     return YPERR_YPERR;
   return yp_2_yperr[code - YP_VERS];
 }
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 6e0b5e31a1..6ded83e181 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,8 @@
+2005-03-23  Ulrich Drepper  <drepper@redhat.com>
+
+	* pthread_create.c (__pthread_create_2_1): Rename syscall error
+	variable to scerr.
+
 2005-03-10  Jakub Jelinek  <jakub@redhat.com>
 
 	* tst-getpid1.c (do_test): Align stack passed to clone{2,}.
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index bf41e9fcc9..18f1c034c7 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -347,17 +347,15 @@ __pthread_create_2_1 (newthread, attr, start_routine, arg)
      void *arg;
 {
   STACK_VARIABLES;
-  const struct pthread_attr *iattr;
-  struct pthread *pd;
-  int err;
 
-  iattr = (struct pthread_attr *) attr;
+  const struct pthread_attr *iattr = (struct pthread_attr *) attr;
   if (iattr == NULL)
     /* Is this the best idea?  On NUMA machines this could mean
        accessing far-away memory.  */
     iattr = &default_attr;
 
-  err = ALLOCATE_STACK (iattr, &pd);
+  struct pthread *pd;
+  int err = ALLOCATE_STACK (iattr, &pd);
   if (__builtin_expect (err != 0, 0))
     /* Something went wrong.  Maybe a parameter of the attributes is
        invalid or we could not allocate memory.  */
@@ -406,14 +404,14 @@ __pthread_create_2_1 (newthread, attr, start_routine, arg)
       && __builtin_expect ((iattr->flags & ATTR_FLAG_NOTINHERITSCHED) != 0, 0)
       && (iattr->flags & (ATTR_FLAG_SCHED_SET | ATTR_FLAG_POLICY_SET)) != 0)
     {
-      INTERNAL_SYSCALL_DECL (err);
+      INTERNAL_SYSCALL_DECL (scerr);
 
       /* Use the scheduling parameters the user provided.  */
       if (iattr->flags & ATTR_FLAG_POLICY_SET)
 	pd->schedpolicy = iattr->schedpolicy;
       else if ((pd->flags & ATTR_FLAG_POLICY_SET) == 0)
 	{
-	  pd->schedpolicy = INTERNAL_SYSCALL (sched_getscheduler, err, 1, 0);
+	  pd->schedpolicy = INTERNAL_SYSCALL (sched_getscheduler, scerr, 1, 0);
 	  pd->flags |= ATTR_FLAG_POLICY_SET;
 	}
 
@@ -422,14 +420,14 @@ __pthread_create_2_1 (newthread, attr, start_routine, arg)
 		sizeof (struct sched_param));
       else if ((pd->flags & ATTR_FLAG_SCHED_SET) == 0)
 	{
-	  INTERNAL_SYSCALL (sched_getparam, err, 2, 0, &pd->schedparam);
+	  INTERNAL_SYSCALL (sched_getparam, scerr, 2, 0, &pd->schedparam);
 	  pd->flags |= ATTR_FLAG_SCHED_SET;
 	}
 
       /* Check for valid priorities.  */
-      int minprio = INTERNAL_SYSCALL (sched_get_priority_min, err, 1,
+      int minprio = INTERNAL_SYSCALL (sched_get_priority_min, scerr, 1,
 				      iattr->schedpolicy);
-      int maxprio = INTERNAL_SYSCALL (sched_get_priority_max, err, 1,
+      int maxprio = INTERNAL_SYSCALL (sched_get_priority_max, scerr, 1,
 				      iattr->schedpolicy);
       if (pd->schedparam.sched_priority < minprio
 	  || pd->schedparam.sched_priority > maxprio)
diff --git a/scripts/versions.awk b/scripts/versions.awk
index 7e33387d41..e642b3d16e 100644
--- a/scripts/versions.awk
+++ b/scripts/versions.awk
@@ -1,5 +1,5 @@
 # Combine version map fragments into version scripts for our shared objects.
-# Copyright (C) 1998,99,2000,02 Free Software Foundation, Inc.
+# Copyright (C) 1998,99,2000,2002,2005 Free Software Foundation, Inc.
 # Written by Ulrich Drepper <drepper@cygnus.com>, 1998.
 
 # This script expects the following variables to be defined:
@@ -9,17 +9,19 @@
 
 # Read definitions for the versions.
 BEGIN {
+  lossage = 0;
+
   nlibs=0;
   while (getline < defsfile) {
     if (/^[a-zA-Z0-9_.]+ \{/) {
       libs[$1] = 1;
       curlib = $1;
       while (getline < defsfile && ! /^}/) {
-      if ($2 == "=") {
+	if ($2 == "=") {
 	  renamed[curlib "::" $1] = $3;
-      }
+	}
 	else
-	  versions[$1] = 1;
+	  versions[curlib "::" $1] = 1;
       }
     }
   }
@@ -42,7 +44,7 @@ BEGIN {
   actlib = $1;
   if (!libs[$1]) {
     printf("no versions defined for %s\n", $1) > "/dev/stderr";
-    exit 1;
+    ++lossage;
   }
   next;
 }
@@ -51,9 +53,9 @@ BEGIN {
 /^  [A-Za-z_]/ {
   if (renamed[actlib "::" $1])
     actver = renamed[actlib "::" $1];
-  else if (!versions[$1]) {
+  else if (!versions[actlib "::" $1] && $1 != "GLIBC_PRIVATE") {
     printf("version %s not defined for %s\n", $1, actlib) > "/dev/stderr";
-    exit 1;
+    ++lossage;
   }
   else
     actver = $1;
@@ -93,6 +95,12 @@ function close_and_move(name, real_name) {
 # Now print the accumulated information.
 END {
   close(sort);
+
+  if (lossage) {
+    system("rm -f " tmpfile);
+    exit 1;
+  }
+
   oldlib = "";
   oldver = "";
   printf("version-maps =");
diff --git a/sunrpc/xdr_stdio.c b/sunrpc/xdr_stdio.c
index 4daa062c82..e73c5a5202 100644
--- a/sunrpc/xdr_stdio.c
+++ b/sunrpc/xdr_stdio.c
@@ -108,20 +108,20 @@ xdrstdio_destroy (XDR *xdrs)
 static bool_t
 xdrstdio_getlong (XDR *xdrs, long *lp)
 {
-  int32_t mycopy;
+  u_int32_t mycopy;
 
-  if (fread ((caddr_t) & mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
+  if (fread ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
     return FALSE;
-  *lp = (int32_t) ntohl (mycopy);
+  *lp = (long) ntohl (mycopy);
   return TRUE;
 }
 
 static bool_t
 xdrstdio_putlong (XDR *xdrs, const long *lp)
 {
-  long mycopy = htonl (*lp);
-  lp = &mycopy;
-  if (fwrite ((caddr_t) lp, 4, 1, (FILE *) xdrs->x_private) != 1)
+  int32_t mycopy = htonl ((u_int32_t) *lp);
+
+  if (fwrite ((caddr_t) &mycopy, 4, 1, (FILE *) xdrs->x_private) != 1)
     return FALSE;
   return TRUE;
 }
diff --git a/sysdeps/generic/dl-tls.c b/sysdeps/generic/dl-tls.c
index fdd569b587..4fed570d5c 100644
--- a/sysdeps/generic/dl-tls.c
+++ b/sysdeps/generic/dl-tls.c
@@ -71,26 +71,24 @@ _dl_next_tls_modid (void)
 	 NB: the offset +1 is due to the fact that DTV[0] is used
 	 for something else.  */
       result = GL(dl_tls_static_nelem) + 1;
-      /* If the following would not be true we mustn't have assumed
-	 there is a gap.  */
-      assert (result <= GL(dl_tls_max_dtv_idx));
-      do
-	{
-	  while (result - disp < runp->len)
-	    {
-	      if (runp->slotinfo[result - disp].map == NULL)
-		break;
-
-	      ++result;
-	      assert (result <= GL(dl_tls_max_dtv_idx) + 1);
-	    }
-
-	  if (result - disp < runp->len)
-	    break;
-
-	  disp += runp->len;
-	}
-      while ((runp = runp->next) != NULL);
+      if (result <= GL(dl_tls_max_dtv_idx))
+	do
+	  {
+	    while (result - disp < runp->len)
+	      {
+		if (runp->slotinfo[result - disp].map == NULL)
+		  break;
+
+		++result;
+		assert (result <= GL(dl_tls_max_dtv_idx) + 1);
+	      }
+
+	    if (result - disp < runp->len)
+	      break;
+
+	    disp += runp->len;
+	  }
+	while ((runp = runp->next) != NULL);
 
       if (result > GL(dl_tls_max_dtv_idx))
 	{
diff --git a/sysdeps/ia64/_mcount.S b/sysdeps/ia64/_mcount.S
index aa91cb5d42..8720a9c104 100644
--- a/sysdeps/ia64/_mcount.S
+++ b/sysdeps/ia64/_mcount.S
@@ -72,6 +72,7 @@ LEAF(_mcount)
 	mov b7 = loc0
 	mov rp = in2
 	;;
+	mov r3 = in0
 	mov r8 = loc2
 	mov r15 = loc3
 	mov b6 = r2
@@ -81,10 +82,10 @@ END(_mcount)
 LOCAL_LEAF(_mcount_ret_helper)
 	.prologue
 	.altrp b7
-	.save ar.pfs, r40
+	.save ar.pfs, r3
 	.body
-	alloc r2 = ar.pfs, 0, 0, 9, 0
-	mov ar.pfs = r40
+	alloc r2 = ar.pfs, 0, 0, 8, 0
+	mov ar.pfs = r3
 	br b7
 END(_mcount_ret_helper)
 
diff --git a/sysdeps/ia64/elf/initfini.c b/sysdeps/ia64/elf/initfini.c
index 59674fe6f2..3aa44de8f1 100644
--- a/sysdeps/ia64/elf/initfini.c
+++ b/sysdeps/ia64/elf/initfini.c
@@ -116,13 +116,14 @@ __asm__ (".section .init\n"
 "/*@_init_PROLOG_ENDS*/\n"
 "\n"
 "/*@_init_EPILOG_BEGINS*/\n"
+"	.section .init\n"
 "	.proc _init#\n"
+"_init:\n"
 "	.prologue\n"
 "	.save ar.pfs, r34\n"
 "	.vframe r32\n"
 "	.save rp, r33\n"
 "	.body\n"
-"	.section .init\n"
 "	.regstk 0,2,0,0\n"
 "	mov r12 = r32\n"
 "	mov ar.pfs = r34\n"
@@ -155,6 +156,7 @@ __asm__ (".section .init\n"
 "/*@_fini_EPILOG_BEGINS*/\n"
 "	.section .fini\n"
 "	.proc _fini#\n"
+"_fini:\n"
 "	.prologue\n"
 "	.save ar.pfs, r34\n"
 "	.vframe r32\n"