about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog221
-rw-r--r--FAQ16
-rw-r--r--FAQ.in13
-rw-r--r--MakeTAGS9
-rw-r--r--Makefile5
-rw-r--r--NEWS15
-rw-r--r--elf/cache.c4
-rw-r--r--elf/dl-load.c5
-rw-r--r--elf/dl-support.c6
-rw-r--r--elf/ldconfig.c80
-rw-r--r--elf/rtld.c198
-rw-r--r--elf/tls-macros.h68
-rw-r--r--elf/tst-auditmod1.c12
-rw-r--r--fedora/branch.mk4
-rw-r--r--fedora/glibc.spec.in10
-rw-r--r--iconv/gconv_int.h4
-rw-r--r--intl/tst-codeset.sh9
-rw-r--r--intl/tst-gettext3.sh7
-rw-r--r--manual/string.texi2
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h31
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S2
-rw-r--r--nscd/Makefile3
-rw-r--r--po/.cvsignore3
-rw-r--r--po/libc.pot2718
-rw-r--r--posix/Makefile4
-rw-r--r--posix/execvp.c4
-rw-r--r--posix/tst-execvp3.c42
-rwxr-xr-xscripts/config.guess121
-rwxr-xr-xscripts/config.sub82
-rw-r--r--stdlib/random_r.c33
-rw-r--r--string/Makefile4
-rw-r--r--string/tst-strfry.c15
-rw-r--r--sysdeps/generic/dl-sysdep.c92
-rw-r--r--sysdeps/generic/ldsodefs.h32
-rw-r--r--sysdeps/ia64/fpu/e_acosh.S3
-rw-r--r--sysdeps/ia64/fpu/e_acoshl.S4
-rw-r--r--sysdeps/ia64/fpu/e_atanh.S3
-rw-r--r--sysdeps/ia64/fpu/e_cosh.S3
-rw-r--r--sysdeps/ia64/fpu/e_coshf.S3
-rw-r--r--sysdeps/ia64/fpu/e_exp.S3
-rw-r--r--sysdeps/ia64/fpu/e_exp10.S4
-rw-r--r--sysdeps/ia64/fpu/e_exp10f.S4
-rw-r--r--sysdeps/ia64/fpu/e_exp2.S4
-rw-r--r--sysdeps/ia64/fpu/e_exp2f.S4
-rw-r--r--sysdeps/ia64/fpu/e_expf.S3
-rw-r--r--sysdeps/ia64/fpu/e_log.S3
-rw-r--r--sysdeps/ia64/fpu/e_logf.S3
-rw-r--r--sysdeps/ia64/fpu/e_pow.S3
-rw-r--r--sysdeps/ia64/fpu/e_powf.S3
-rw-r--r--sysdeps/ia64/fpu/e_sinh.S3
-rw-r--r--sysdeps/ia64/fpu/e_sinhf.S3
-rw-r--r--sysdeps/ia64/fpu/libm_error.c9
-rw-r--r--sysdeps/ia64/fpu/libm_lgamma.S5
-rw-r--r--sysdeps/ia64/fpu/libm_lgammaf.S3
-rw-r--r--sysdeps/ia64/fpu/libm_lgammal.S3
-rw-r--r--sysdeps/ia64/fpu/libm_sincos.S3
-rw-r--r--sysdeps/ia64/fpu/libm_sincosf.S3
-rw-r--r--sysdeps/ia64/fpu/s_asinh.S3
-rw-r--r--sysdeps/ia64/fpu/s_atanl.S3
-rw-r--r--sysdeps/ia64/fpu/s_cos.S10
-rw-r--r--sysdeps/ia64/fpu/s_cosf.S3
-rw-r--r--sysdeps/ia64/fpu/s_erf.S3
-rw-r--r--sysdeps/ia64/fpu/s_erfc.S3
-rw-r--r--sysdeps/ia64/fpu/s_erfcf.S3
-rw-r--r--sysdeps/ia64/fpu/s_erfcl.S5
-rw-r--r--sysdeps/ia64/fpu/s_erff.S3
-rw-r--r--sysdeps/ia64/fpu/s_expm1.S3
-rw-r--r--sysdeps/ia64/fpu/s_expm1f.S3
-rw-r--r--sysdeps/ia64/fpu/s_log1p.S3
-rw-r--r--sysdeps/ia64/fpu/s_tanf.S3
-rw-r--r--sysdeps/ia64/fpu/s_tanh.S6
-rw-r--r--sysdeps/ia64/fpu/s_tanhf.S4
-rw-r--r--sysdeps/ia64/fpu/w_tgamma.S4
-rw-r--r--sysdeps/ia64/fpu/w_tgammaf.S3
-rw-r--r--sysdeps/ia64/fpu/w_tgammal.S3
-rw-r--r--sysdeps/sh/elf/configure2
-rw-r--r--sysdeps/sparc/bits/link.h100
-rw-r--r--sysdeps/sparc/sparc32/dl-machine.h325
-rw-r--r--sysdeps/sparc/sparc32/dl-trampoline.S155
-rw-r--r--sysdeps/sparc/sparc64/dl-machine.h683
-rw-r--r--sysdeps/sparc/sparc64/dl-trampoline.S280
-rw-r--r--sysdeps/unix/sysv/linux/configure4
-rw-r--r--sysdeps/unix/sysv/linux/configure.in4
-rw-r--r--sysdeps/unix/sysv/linux/dl-osinfo.h39
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/clone.S22
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/clone.S53
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/pause.c48
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h45
-rw-r--r--version.h2
90 files changed, 3590 insertions, 2202 deletions
diff --git a/ChangeLog b/ChangeLog
index 850dd5bec2..2a1358023e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,202 @@
+2005-04-14  Roland McGrath  <roland@redhat.com>
+
+	* MakeTAGS ($P/$(domain).pot): Depend on distinfo file as well.
+	(extract): Filter-out distinfo file name.
+
+	[BZ #253]
+	* MakeTAGS (text-srcs): Match %.bash.in files too.
+
+	[BZ #253]
+	* nscd/Makefile (all-nscd-modules): New variable, include selinux
+	module regardless of configuration.
+	(distribute): Use that instead of $(nscd-modules).
+
+2005-04-13  David S. Miller  <davem@davemloft.net>
+
+	Add sparc64 TLS and NPTL support.
+	* elf/tls-macros.h: Add Sparc64 defines.
+	* sysdeps/sparc/sparc64/dl-machine.h (sparc64_fixup_plt): Mark as
+	always_inline.
+	(elf_machine_fixup_plt): Likewise.
+	(elf_machine_rela): Handle TLS relocations.
+	(elf_machine_type_cleaa): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+	(SYSCALL_ERROR_HANDLER_ENTRY): Use sethi/or for GOT reloc.
+	It does not always fit in R_SPARC_GOT13 when building -fPIC.
+	Also, add TLS handling.
+	* sysdeps/unix/sysv/linux/configure.in (arch_minimum_kernel):
+	Increase it to 2.4.21 for sparc64.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/clone.S: NULL terminate
+	backtrace by zero'ing out %fp.  Store away flags, func_ptr,
+	and func_arg in global registers not local registers.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/clone.S: Handle PTID, TLS,
+	and CTID arguments properly.  Add RESET_PID handling.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/pause.c: Rework so that we
+	do not invoke __sigprocmask().  We can always assume rt signals
+	are present on sparc64, so just do an inline syscall.
+
+2005-04-13  Jakub Jelinek  <jakub@redhat.com>
+
+	* sysdeps/sparc/sparc64/dl-machine.h: Add dl_machine_h multiple
+	inclusion guard for the first half of the header.
+	(elf_machine_type_class, ELF_MACHINE_JMP_SLOT, ELF_MACHINE_NO_REL,
+	ELF_MACHINE_PLTREL_OVERLAP, elf_machine_runtime_setup,
+	elf_machine_relplt, DL_STACK_END, RTLD_START): Move into the
+	#ifndef dl_machine_h guarded part of the header.
+
+2005-04-14  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #851]
+	* posix/execvp.c (execvp): Use file name including path when
+	trying to run it with shell.
+	* posix/Makefile: Add rules to build and run tst-execvp3.
+	* posix/tst-execvp3.c: New file.
+
+2005-04-12  Ulrich Drepper  <drepper@redhat.com>
+
+	* stdlib/random_r.c (__initstate_r): Don't use non-existing state.
+	* string/tst-strfry.c: New file.
+	* string/Makefile (tests): Add tst-strfry.
+
+2005-04-11  James A. Morrison  <ja2morri@uwaterloo.ca>
+
+	* manual/string.texi: Fix typo in wmemcpy decl.
+
+2005-04-10  David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/sparc/sparc32/dl-trampoline.S: Use std not stx.
+
+2005-04-08  Carlos O'Donell <carlos@baldric.uwo.ca>
+
+	* FAQ.in: Explain why `make' might fail running rpcgen.
+	* FAQ: Regenerated.
+
+2005-04-07  Roland McGrath  <roland@redhat.com>
+
+	* po/libc.pot: Regenerated.
+
+2005-04-07  Roland McGrath  <roland@redhat.com>
+
+	* sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_discover_osversion)
+	[(NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO) && SHARED]: Scan
+	GLRO(dl_sysinfo_map) for PT_NOTE giving Linux kernel version,
+	we can skip the uname call if it's there.
+	* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Don't use
+	DL_SYSDEP_OSCHECK here.
+	* elf/rtld.c (dl_main) [DL_SYSDEP_OSCHECK]: Do it here instead.
+
+	* sysdeps/generic/ldsodefs.h (struct rtld_global_ro):
+	Add _dl_sysinfo_map.
+	* elf/rtld.c (dl_main): Don't call _dl_init_paths early in the
+	rtld_is_main case.  Call it unconditionally later.
+	Move GLRO(dl_sysinfo_dso) handling earlier, before _dl_init_paths call.
+	Initialize GLRO(dl_sysinfo_map).
+	* elf/dl-load.c (open_path): Bail out if _dl_init_paths wasn't called.
+	* sysdeps/generic/dl-sysdep.c (_DL_FIRST_EXTRA): New macro.
+	(_dl_important_hwcaps)
+	[(NEED_DL_SYSINFO || NEED_DL_SYSINFO_DSO) && SHARED]: Scan
+	GLRO(dl_sysinfo_map) for PT_NOTE giving synthetic hwcap names
+	and bit values.
+	* elf/ldconfig.c (_DL_FIRST_EXTRA): New macro.
+	(hwcap_extra): New static variable.
+	(is_hwcap_platform): Check hwcap_extra for a matching name.
+	Remove tls special case.
+	(path_hwcap): Likewise.
+	(parse_conf): Parse "hwcap" directive to define synthetic hwcap bits
+	and their names, stored in hwcap_extra.
+	(main) [USE_TLS]: Initialize final synthetic hwcap bit as "tls".
+
+	* sysdeps/generic/ldsodefs.h (struct rtld_global_ro): Use uint64_t for
+	_dl_hwcap and _dl_hwcap_mask.
+	* sysdeps/generic/dl-sysdep.c (_dl_sysdep_start): Cast a_val for
+	AT_HWCAP to unsigned long int.
+	* elf/dl-support.c (_dl_aux_init): Likewise.
+	(_dl_hwcap): Update defn.
+
+	* elf/cache.c (print_entry): Pad hwcap value with 0s in diagnostic.
+	* elf/ldconfig.c (search_dir): Likewise.
+
+2005-04-05  Roland McGrath  <roland@redhat.com>
+
+	* NEWS: Copy 2.3.5 section from 2.3 branch.
+
+	* intl/tst-codeset.sh: Use mkdir -p.  Put msgfmt output in temporary
+	file and mv it into place.
+	* intl/tst-gettext3.sh: Likewise.
+
+	* Makefile (glibc-%.tar rule): Use make -q to ensure configure scripts
+	are up to date in srcdir.  Touch all configure scripts after export.
+
+	* iconv/gconv_int.h: Include <ctype.h> and <string.h>.
+
+2005-04-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+	[BZ #592]
+	* sysdeps/ia64/fpu/e_acosh.S: Update from Intel libm 2005-04-05
+	(comment changes only).
+	* sysdeps/ia64/fpu/e_acoshl.S: Likewise.
+	* sysdeps/ia64/fpu/e_atanh.S: Likewise.
+	* sysdeps/ia64/fpu/e_cosh.S: Likewise.
+	* sysdeps/ia64/fpu/e_coshf.S: Likewise.
+	* sysdeps/ia64/fpu/e_exp.S: Likewise.
+	* sysdeps/ia64/fpu/e_exp10.S: Likewise.
+	* sysdeps/ia64/fpu/e_exp10f.S: Likewise.
+	* sysdeps/ia64/fpu/e_exp2.S: Likewise.
+	* sysdeps/ia64/fpu/e_exp2f.S: Likewise.
+	* sysdeps/ia64/fpu/e_expf.S: Likewise.
+	* sysdeps/ia64/fpu/e_log.S: Likewise.
+	* sysdeps/ia64/fpu/e_logf.S: Likewise.
+	* sysdeps/ia64/fpu/e_pow.S: Likewise.
+	* sysdeps/ia64/fpu/e_powf.S: Likewise.
+	* sysdeps/ia64/fpu/e_sinh.S: Likewise.
+	* sysdeps/ia64/fpu/e_sinhf.S: Likewise.
+	* sysdeps/ia64/fpu/libm_error.c: Likewise.
+	* sysdeps/ia64/fpu/libm_lgamma.S: Likewise.
+	* sysdeps/ia64/fpu/libm_lgammaf.S: Likewise.
+	* sysdeps/ia64/fpu/libm_lgammal.S: Likewise.
+	* sysdeps/ia64/fpu/libm_sincos.S: Likewise.
+	* sysdeps/ia64/fpu/libm_sincosf.S: Likewise.
+	* sysdeps/ia64/fpu/s_asinh.S: Likewise.
+	* sysdeps/ia64/fpu/s_atanl.S: Likewise.
+	* sysdeps/ia64/fpu/s_cos.S: Likewise.
+	* sysdeps/ia64/fpu/s_cosf.S: Likewise.
+	* sysdeps/ia64/fpu/s_erf.S: Likewise.
+	* sysdeps/ia64/fpu/s_erfc.S: Likewise.
+	* sysdeps/ia64/fpu/s_erfcf.S: Likewise.
+	* sysdeps/ia64/fpu/s_erfcl.S: Likewise.
+	* sysdeps/ia64/fpu/s_erff.S: Likewise.
+	* sysdeps/ia64/fpu/s_expm1.S: Likewise.
+	* sysdeps/ia64/fpu/s_expm1f.S: Likewise.
+	* sysdeps/ia64/fpu/s_log1p.S: Likewise.
+	* sysdeps/ia64/fpu/s_tanf.S: Likewise.
+	* sysdeps/ia64/fpu/s_tanh.S: Likewise.
+	* sysdeps/ia64/fpu/s_tanhf.S: Likewise.
+	* sysdeps/ia64/fpu/w_tgamma.S: Likewise.
+	* sysdeps/ia64/fpu/w_tgammaf.S: Likewise.
+	* sysdeps/ia64/fpu/w_tgammal.S: Likewise.
+
+2005-04-05  Roland McGrath  <roland@redhat.com>
+
+	* scripts/config.guess: Update from master, timestamp='2005-03-24'.
+	* scripts/config.sub: Update from master, timestamp='2005-02-10'.
+
+2005-04-04  David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/sparc/sparc32/dl-trampoline.S: New file.
+	* sysdeps/sparc/sparc32/dl-machine.h: Move PLT trampolines there.
+	Use RESOLVE_MAP instead of RESOLVE to protect relocation code.
+	(elf_machine_runtime_setup): Test for dl_profile non-null.
+	* sysdeps/sparc/sparc64/dl-trampoline.S: New file.
+	(ARCH_LA_PLTENTER, ARCH_LA_PLTEXIT): New.
+	* sysdeps/sparc/sparc64/dl-machine.h: Move PLT trampolines there.
+	Use RESOLVE_MAP instead of RESOLVE to protect relocation code.
+	(elf_machine_runtime_setup): Test for dl_profile non-null.
+	* sysdeps/sparc/bits/link.h: New file.
+	* sysdeps/generic/ldsodefs.h (La_sparc32_regs, La_sparc32_retval,
+	La_sparc64_regs, La_sparc64_retval): New.
+	(struct audit_ifaces): Add sparc entries.
+	* elf/tst-auditmod1.c: Add sparc entries.
+
 2005-03-27  Bruno Haible  <bruno@clisp.org>
 
 	* intl/tst-gettext3.c: New file.
@@ -39,11 +238,13 @@
 
 2005-04-04  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #825]
 	* timezone/scheck.c: Update from tzcode2005h.
 	* timezone/tzfile.h: Likewise.
 	* timezone/zdump.c: Likewise.
 	* timezone/zic.c: Likewise.
 
+	[BZ #825]
 	* timezone/antarctica: Update from tzdata2005h.
 	* timezone/asia: Likewise.
 	* timezone/australasia: Likewise.
@@ -56,6 +257,7 @@
 
 2005-03-31  H.J. Lu  <hongjiu.lu@intel.com>
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/libm_cpu_defs.h: Update copyright.
 
 2005-04-01  Ulrich Drepper  <drepper@redhat.com>
@@ -87,6 +289,7 @@
 
 2005-03-30  H.J. Lu  <hongjiu.lu@intel.com>
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/e_acosf.S: Update from Intel libm 2005-03-21.
 	* sysdeps/ia64/fpu/e_acoshf.S: Likewise.
 	* sysdeps/ia64/fpu/e_acoshl.S: Likewise.
@@ -221,9 +424,11 @@
 	* sysdeps/ia64/fpu/w_tgammal.S: Likewise.
 	* sysdeps/ia64/fpu/w_tgamma.S: Likewise.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/libm_cpu_defs.h: New file.
 	* sysdeps/ia64/fpu/libm_error_codes.h: New file.
 
+	[BZ #592]
 	* sysdeps/ia64/fpu/gen_import_file_list: Updated for Intel libm
 	2005-03-21.
 	* sysdeps/ia64/fpu/import_file.awk: Likewise.
@@ -356,6 +561,7 @@
 
 2005-03-23  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #822]
 	* nis/ypclnt.c (yp_2_yperr): Revert 2004-11-30 patch.
 	(ypprot_err): Use yp_2_yperr table also for YP_NODOM .. YP_NOMORE.
 
@@ -440,9 +646,11 @@
 	* inet/test-ifaddrs.c: Use test-skeleton.
 	* inet/test_ifindex.c: Likewise.
 
+	[BZ #821]
 	* elf/dl-lookup.c (add_dependency): Always search l_initfini if
 	the list exists.
 
+	[BZ #821]
 	* elf/Makefile: Add rules to build and run order2.
 	* elf/order2.c: New file.
 	* elf/order2mod1.c: New file.
@@ -452,11 +660,13 @@
 
 2005-03-19  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #821]
 	* elf/dl-open.c (dl_open_worker): Print exact l_direct_opencount value,
 	it has been incremented before.
 
 2005-03-18  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #821]
 	* elf/dl-fini.c (_dl_fini): Split sorting of the maps in separate
 	function _dl_sort_fini.
 	(_dl_sort_fini): New function.
@@ -536,6 +746,7 @@
 
 2005-03-18  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #821]
 	* include/link.h (struct link_map): Remove l_opencount.  Add l_removed.
 	Change type of l_idx to int.
 	* elf/dl-close.c: Basically rewrite.  Do not use l_opencount to
@@ -561,15 +772,16 @@
 	* elf/unload2.c: Likewise.
 	* elf/loadtest.c: Likewise.
 
+	[BZ #821]
 	* elf/rtld.c: Preloading errors are now never fatal.
 
 2005-03-08  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #821]
 	* elf/Makefile: Add rules to build and run unload5 test.
 	* elf/unload5.c: New file.
 
-2005-03-08  Jakub Jelinek  <jakub@redhat.com>
-
+	[BZ #821]
 	* elf/Makefile: Add rules to build and run unload4 test.
 	* elf/unload4.c: New file.
 	* elf/unload4mod1.c: New file.
@@ -761,6 +973,7 @@
 
 	* elf/dl-addr.c (_dl_addr): Add a cast.
 
+	[BZ #821]
 	* elf/unload3mod4.c: Declare foo.
 	* elf/testobj2.c: Include <stdio.h>.
 
@@ -798,6 +1011,7 @@
 
 2005-03-03  Ulrich Drepper  <drepper@redhat.com>
 
+	[BZ #821]
 	* elf/dl-close.c (_dl_close): Don't try to set up new searchpath if the
 	loader is closed.  Fixes unload3.
 	* elf/tst-global1.c: New file.
@@ -806,6 +1020,7 @@
 
 2005-03-03  Jakub Jelinek  <jakub@redhat.com>
 
+	[BZ #821]
 	* elf/Makefile: Add rules to build and run unload3 test.
 	* elf/unload3.c: New test.
 	* elf/unload3mod1.c: New file.
@@ -2253,7 +2468,7 @@
 	* sysdeps/ia64/fpu/w_lgammaf.c: Likewise.
 	* sysdeps/ia64/fpu/w_lgammal.c: Likewise.
 
-2004-12-09  H. J. Lu <hjl@lucon.org>
+2004-12-09  H.J. Lu <hjl@lucon.org>
 
 	[BZ #592]
 	* sysdeps/ia64/fpu/s_nextafterl.c: Remove.
diff --git a/FAQ b/FAQ
index 6d95ef332d..77bd47e3ed 100644
--- a/FAQ
+++ b/FAQ
@@ -48,6 +48,8 @@ please let me know.
 	malloc/libmemprof.so.  How can I fix this?
 1.20.	Which tools should I use for MIPS?
 1.21.	Which compiler should I use for powerpc64?
+1.22.	`make' fails when running rpcgen the first time,
+	what is going on? How do I fix this?
 
 2. Installation and configuration issues
 
@@ -573,6 +575,20 @@ For details check also my page <http://www.suse.de/~aj/glibc-mips.html>.
 {SM} You want to use at least gcc 3.2 (together with the right versions
 of all the other tools, of course).
 
+
+1.22.	`make' fails when running rpcgen the first time,
+	what is going on? How do I fix this?
+
+{CO} The first invocation of rpcgen is also the first use of the recently
+compiled dynamic loader.  If there is any problem with the dynamic loader
+it will more than likely fail to run rpcgen properly. This could be due to
+any number of problems.
+
+The only real solution is to debug the loader and determine the problem
+yourself. Please remember that for each architecture there may be various
+patches required to get glibc HEAD into a runnable state. The best course
+of action is to determine if you have all the required patches.
+
 
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
 
diff --git a/FAQ.in b/FAQ.in
index 4c161cceb6..227132bc08 100644
--- a/FAQ.in
+++ b/FAQ.in
@@ -374,6 +374,19 @@ For details check also my page <http://www.suse.de/~aj/glibc-mips.html>.
 {SM} You want to use at least gcc 3.2 (together with the right versions
 of all the other tools, of course).
 
+??	`make' fails when running rpcgen the first time,
+	what is going on? How do I fix this?
+
+{CO} The first invocation of rpcgen is also the first use of the recently
+compiled dynamic loader.  If there is any problem with the dynamic loader
+it will more than likely fail to run rpcgen properly. This could be due to
+any number of problems.
+
+The only real solution is to debug the loader and determine the problem
+yourself. Please remember that for each architecture there may be various
+patches required to get glibc HEAD into a runnable state. The best course
+of action is to determine if you have all the required patches.
+
 ? Installation and configuration issues
 
 ??	Can I replace the libc on my Linux system with GNU libc?
diff --git a/MakeTAGS b/MakeTAGS
index bee41252ee..fff6851c91 100644
--- a/MakeTAGS
+++ b/MakeTAGS
@@ -1,5 +1,5 @@
 # Make the TAGS files.
-# Copyright (C) 1992,1994,1995,1996,1998,2002,2003
+# Copyright (C) 1992,1994,1995,1996,1998,2002,2003,2005
 #	Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
@@ -146,12 +146,13 @@ endif
 define extract
 @rm -f $@.new
 $(XGETTEXT) --keyword=_ --keyword=N_ --add-comments=TRANS  --sort-by-file \
-	    --omit-header -E -n -d - $(XGETTEXTFLAGS-$(@F)) > $@.new $^
+	    --omit-header -E -n -d - $(XGETTEXTFLAGS-$(@F)) > $@.new \
+	    $(filter-out $(objpfx)distinfo,$^)
 mv -f $@.new $@
 endef
 
-text-srcs := $(filter %.c %.h %.cc %.C,$(tags_sources))
-$P/$(domain).pot: $(text-srcs)
+text-srcs := $(filter %.c %.h %.cc %.C %.bash.in,$(tags_sources))
+$P/$(domain).pot: $(objpfx)distinfo $(text-srcs)
 ifeq (,$(text-srcs))
 	cp /dev/null $@
 else
diff --git a/Makefile b/Makefile
index dc7a6f177a..734687cf3d 100644
--- a/Makefile
+++ b/Makefile
@@ -300,7 +300,12 @@ glibc-%.tar $(dist-separate:%=glibc-%-%.tar): $(files-for-dist) \
 					      $(foreach D,$(dist-separate),\
 							$D/configure)
 	@rm -fr glibc-$*
+	$(MAKE) -q `find sysdeps $(addsuffix /sysdeps,$(add-ons)) \
+			 -name configure`
 	cvs $(CVSOPTS) -Q export -d glibc-$* -r $(tag-of-stem) libc
+# Touch all the configure scripts going into the tarball since cvs export
+# might have delivered configure.in newer than configure.
+	find glibc-$* -name configure -print | xargs touch
 	$(dist-do-separate-dirs)
 	tar cf glibc-$*.tar glibc-$*
 	rm -fr glibc-$*
diff --git a/NEWS b/NEWS
index 2601cd5dde..3ece35565b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,5 @@
-GNU C Library NEWS -- history of user-visible changes.  2005-3-19
-Copyright (C) 1992-2004, 2005 Free Software Foundation, Inc.
+GNU C Library NEWS -- history of user-visible changes.  2005-4-5
+Copyright (C) 1992-2002,2003,2004,2005 Free Software Foundation, Inc.
 See the end for copying conditions.
 
 Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
@@ -15,6 +15,17 @@ Version 2.4
 * It is now possible to install audit libraries for the dynamic linker using
   LD_AUDIT.  Implemented by Ulrich Drepper.
 
+Version 2.3.5
+
+* The following bugs are resolved with this release:
+
+  284, 592, 602, 626, 633, 640, 650, 661, 671, 681, 693, 700, 710, 719,
+  722, 723, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736,
+  737, 738, 739, 740, 741, 742, 743, 744, 745, 765, 767, 768, 769, 776,
+  777, 787, 821, 822, 823, 825
+
+  Visit <http://sources.redhat.com/bugzilla/> for the details of each bug.
+
 Version 2.3.4
 
 * Support for RFC 3678.  Real implementations exist only for Linux so far.
diff --git a/elf/cache.c b/elf/cache.c
index 22ad55c612..9324f3dc6c 100644
--- a/elf/cache.c
+++ b/elf/cache.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001, 2002, 2003
+/* Copyright (C) 1999,2000,2001,2002,2003,2005
 	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 1999.
@@ -99,7 +99,7 @@ print_entry (const char *lib, int flag, unsigned int osversion,
       break;
     }
   if (hwcap != 0)
-    printf (", hwcap: 0x%" PRIx64, hwcap);
+    printf (", hwcap: %#.16" PRIx64, hwcap);
   if (osversion != 0)
     {
       static const char *const abi_tag_os[] =
diff --git a/elf/dl-load.c b/elf/dl-load.c
index 2ca108ef69..d8b3a56d0d 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -1760,6 +1760,11 @@ open_path (const char *name, size_t namelen, int preloaded,
   const char *current_what = NULL;
   int any = 0;
 
+  if (__builtin_expect (dirs == NULL, 0))
+    /* We're called before _dl_init_paths when loading the main executable
+       given on the command line when rtld is run directly.  */
+    return -1;
+
   buf = alloca (max_dirnamelen + max_capstrlen + namelen);
   do
     {
diff --git a/elf/dl-support.c b/elf/dl-support.c
index cfe01babbf..d20e9a4048 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -1,5 +1,5 @@
 /* Support for dynamic linking code in static libc.
-   Copyright (C) 1996-2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1996-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -121,7 +121,7 @@ int _dl_correct_cache_id = _DL_CACHE_DEFAULT_ID;
 
 ElfW(Phdr) *_dl_phdr;
 size_t _dl_phnum;
-unsigned long int _dl_hwcap __attribute__ ((nocommon));
+uint64_t _dl_hwcap __attribute__ ((nocommon));
 
 /* Prevailing state of the stack, PF_X indicating it's executable.  */
 ElfW(Word) _dl_stack_flags = PF_R|PF_W|PF_X;
@@ -179,7 +179,7 @@ _dl_aux_init (ElfW(auxv_t) *av)
 	GL(dl_phnum) = av->a_un.a_val;
 	break;
       case AT_HWCAP:
-	GLRO(dl_hwcap) = av->a_un.a_val;
+	GLRO(dl_hwcap) = (unsigned long int) av->a_un.a_val;
 	break;
 #ifdef NEED_DL_SYSINFO
       case AT_SYSINFO:
diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index 70f3a8f402..d96295cbc1 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -44,6 +44,12 @@
 
 #include "dl-procinfo.h"
 
+#ifdef _DL_FIRST_PLATFORM
+# define _DL_FIRST_EXTRA (_DL_FIRST_PLATFORM + _DL_PLATFORMS_COUNT)
+#else
+# define _DL_FIRST_EXTRA _DL_HWCAP_COUNT
+#endif
+
 #ifndef LD_SO_CONF
 # define LD_SO_CONF SYSCONFDIR "/ld.so.conf"
 #endif
@@ -115,6 +121,9 @@ static const char *config_file;
 /* Mask to use for important hardware capabilities.  */
 static unsigned long int hwcap_mask = HWCAP_IMPORTANT;
 
+/* Configuration-defined capabilities defined in kernel vDSOs.  */
+static const char *hwcap_extra[64 - _DL_FIRST_EXTRA];
+
 /* Name and version of program.  */
 static void print_version (FILE *stream, struct argp_state *state);
 void (*argp_program_version_hook) (FILE *, struct argp_state *)
@@ -165,10 +174,10 @@ is_hwcap_platform (const char *name)
   if (hwcap_idx != -1)
     return 1;
 
-#ifdef USE_TLS
-  if (strcmp (name, "tls") == 0)
-    return 1;
-#endif
+  for (hwcap_idx = _DL_FIRST_EXTRA; hwcap_idx < 64; ++hwcap_idx)
+    if (hwcap_extra[hwcap_idx - _DL_FIRST_EXTRA] != NULL
+	&& !strcmp (name, hwcap_extra[hwcap_idx - _DL_FIRST_EXTRA]))
+      return 1;
 
   return 0;
 }
@@ -203,11 +212,11 @@ path_hwcap (const char *path)
 	  h = _dl_string_platform (ptr + 1);
 	  if (h == (uint64_t) -1)
 	    {
-#ifdef USE_TLS
-	      if (strcmp (ptr + 1, "tls") == 0)
-		h = 63;
-	      else
-#endif
+	      for (h = _DL_FIRST_EXTRA; h < 64; ++h)
+		if (hwcap_extra[h - _DL_FIRST_EXTRA] != NULL
+		    && !strcmp (ptr + 1, hwcap_extra[h - _DL_FIRST_EXTRA]))
+		  break;
+	      if (h == 64)
 		break;
 	    }
 	}
@@ -636,7 +645,7 @@ search_dir (const struct dir_entry *entry)
   if (opt_verbose)
     {
       if (hwcap != 0)
-	printf ("%s: (hwcap: 0x%" PRIx64 ")\n", entry->path, hwcap);
+	printf ("%s: (hwcap: %#.16" PRIx64 ")\n", entry->path, hwcap);
       else
 	printf ("%s:\n", entry->path);
     }
@@ -1026,6 +1035,53 @@ parse_conf (const char *filename, const char *prefix, bool do_chroot)
 	  memcpy (mempcpy (new_cp, prefix, prefix_len), cp, cp_len + 1);
 	  add_dir (new_cp);
 	}
+      else if (!strncasecmp (cp, "hwcap", 5) && isblank (cp[5]))
+	{
+	  cp += 6;
+	  char *p, *name = NULL;
+	  unsigned long int n = strtoul (cp, &cp, 0);
+	  if (cp != NULL && isblank (*cp))
+	    while ((p = strsep (&cp, " \t")) != NULL)
+	      if (p[0] != '\0')
+		{
+		  if (name == NULL)
+		    name = p;
+		  else
+		    {
+		      name = NULL;
+		      break;
+		    }
+		}
+	  if (name == NULL)
+	    {
+	      error (EXIT_FAILURE, 0, _("%s:%u: bad syntax in hwcap line"),
+		     filename, lineno);
+	      break;
+	    }
+	  if (n >= (64 - _DL_FIRST_EXTRA))
+	    error (EXIT_FAILURE, 0,
+		   _("%s:%u: hwcap index %lu above maximum %u"),
+		   filename, lineno, n, 64 - _DL_FIRST_EXTRA - 1);
+	  if (hwcap_extra[n] == NULL)
+	    {
+	      for (unsigned long int h = 0; h < (64 - _DL_FIRST_EXTRA); ++h)
+		if (hwcap_extra[h] != NULL && !strcmp (name, hwcap_extra[h]))
+		  error (EXIT_FAILURE, 0,
+			 _("%s:%u: hwcap index %lu already defined as %s"),
+			 filename, lineno, h, name);
+	      hwcap_extra[n] = xstrdup (name);
+	    }
+	  else
+	    {
+	      if (strcmp (name, hwcap_extra[n]))
+		error (EXIT_FAILURE, 0,
+		       _("%s:%u: hwcap index %lu already defined as %s"),
+		       filename, lineno, n, hwcap_extra[n]);
+	      if (opt_verbose)
+		error (0, 0, _("%s:%u: duplicate hwcap %lu %s"),
+		       filename, lineno, n, name);
+	    }
+	}
       else
 	add_dir (cp);
     }
@@ -1129,6 +1185,10 @@ main (int argc, char **argv)
 	  add_dir (argv[i]);
     }
 
+#ifdef USE_TLS
+  hwcap_extra[63 - _DL_FIRST_EXTRA] = "tls";
+#endif
+
   set_hwcap ();
 
   if (opt_chroot)
diff --git a/elf/rtld.c b/elf/rtld.c
index b2122bb9d6..5d64d5a99e 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -958,11 +958,6 @@ of this helper program; chances are you did not intend to run this program.\n\
       --_dl_argc;
       ++INTUSE(_dl_argv);
 
-      /* Initialize the data structures for the search paths for shared
-	 objects.  */
-      _dl_init_paths (library_path);
-
-
       /* The initialization of _dl_stack_flags done below assumes the
 	 executable's PT_GNU_STACK may have been honored by the kernel, and
 	 so a PT_GNU_STACK with PF_X set means the stack started out with
@@ -1229,10 +1224,98 @@ ld.so does not support TLS, but program uses it!\n");
       _exit (has_interp ? 0 : 2);
     }
 
-  if (! rtld_is_main)
-    /* Initialize the data structures for the search paths for shared
-       objects.  */
-    _dl_init_paths (library_path);
+  struct link_map **first_preload = &GL(dl_rtld_map).l_next;
+#if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO
+  /* Set up the data structures for the system-supplied DSO early,
+     so they can influence _dl_init_paths.  */
+  if (GLRO(dl_sysinfo_dso) != NULL)
+    {
+      /* Do an abridged version of the work _dl_map_object_from_fd would do
+	 to map in the object.  It's already mapped and prelinked (and
+	 better be, since it's read-only and so we couldn't relocate it).
+	 We just want our data structures to describe it as if we had just
+	 mapped and relocated it normally.  */
+      struct link_map *l = _dl_new_object ((char *) "", "", lt_library, NULL,
+					   0, LM_ID_BASE);
+      if (__builtin_expect (l != NULL, 1))
+	{
+	  static ElfW(Dyn) dyn_temp[DL_RO_DYN_TEMP_CNT] attribute_relro;
+
+	  l->l_phdr = ((const void *) GLRO(dl_sysinfo_dso)
+		       + GLRO(dl_sysinfo_dso)->e_phoff);
+	  l->l_phnum = GLRO(dl_sysinfo_dso)->e_phnum;
+	  for (uint_fast16_t i = 0; i < l->l_phnum; ++i)
+	    {
+	      const ElfW(Phdr) *const ph = &l->l_phdr[i];
+	      if (ph->p_type == PT_DYNAMIC)
+		{
+		  l->l_ld = (void *) ph->p_vaddr;
+		  l->l_ldnum = ph->p_memsz / sizeof (ElfW(Dyn));
+		}
+	      else if (ph->p_type == PT_LOAD)
+		{
+		  if (! l->l_addr)
+		    l->l_addr = ph->p_vaddr;
+		  if (ph->p_vaddr + ph->p_memsz >= l->l_map_end)
+		    l->l_map_end = ph->p_vaddr + ph->p_memsz;
+		  if ((ph->p_flags & PF_X)
+			   && ph->p_vaddr + ph->p_memsz >= l->l_text_end)
+		    l->l_text_end = ph->p_vaddr + ph->p_memsz;
+		}
+	      else
+		/* There must be no TLS segment.  */
+		assert (ph->p_type != PT_TLS);
+	    }
+	  l->l_map_start = (ElfW(Addr)) GLRO(dl_sysinfo_dso);
+	  l->l_addr = l->l_map_start - l->l_addr;
+	  l->l_map_end += l->l_addr;
+	  l->l_text_end += l->l_addr;
+	  l->l_ld = (void *) ((ElfW(Addr)) l->l_ld + l->l_addr);
+	  elf_get_dynamic_info (l, dyn_temp);
+	  _dl_setup_hash (l);
+	  l->l_relocated = 1;
+
+	  /* Now that we have the info handy, use the DSO image's soname
+	     so this object can be looked up by name.  Note that we do not
+	     set l_name here.  That field gives the file name of the DSO,
+	     and this DSO is not associated with any file.  */
+	  if (l->l_info[DT_SONAME] != NULL)
+	    {
+	      /* Work around a kernel problem.  The kernel cannot handle
+		 addresses in the vsyscall DSO pages in writev() calls.  */
+	      const char *dsoname = ((char *) D_PTR (l, l_info[DT_STRTAB])
+				     + l->l_info[DT_SONAME]->d_un.d_val);
+	      size_t len = strlen (dsoname);
+	      char *copy = malloc (len);
+	      if (copy == NULL)
+		_dl_fatal_printf ("out of memory\n");
+	      l->l_libname->name = memcpy (copy, dsoname, len);
+	    }
+
+	  /* Rearrange the list so this DSO appears after rtld_map.  */
+	  assert (l->l_next == NULL);
+	  assert (l->l_prev == main_map);
+	  GL(dl_rtld_map).l_next = l;
+	  l->l_prev = &GL(dl_rtld_map);
+	  first_preload = &l->l_next;
+
+	  /* We have a prelinked DSO preloaded by the system.  */
+	  GLRO(dl_sysinfo_map) = l;
+# ifdef NEED_DL_SYSINFO
+	  if (GLRO(dl_sysinfo) == DL_SYSINFO_DEFAULT)
+	    GLRO(dl_sysinfo) = GLRO(dl_sysinfo_dso)->e_entry + l->l_addr;
+# endif
+	}
+    }
+#endif
+
+#ifdef DL_SYSDEP_OSCHECK
+  DL_SYSDEP_OSCHECK (dl_fatal);
+#endif
+
+  /* Initialize the data structures for the search paths for shared
+     objects.  */
+  _dl_init_paths (library_path);
 
   /* Initialize _r_debug.  */
   struct r_debug *r = _dl_debug_initialize (GL(dl_rtld_map).l_addr,
@@ -1524,7 +1607,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
   /* We have two ways to specify objects to preload: via environment
      variable and via the file /etc/ld.so.preload.  The latter can also
      be used when security is enabled.  */
-  assert (GL(dl_rtld_map).l_next == NULL);
+  assert (*first_preload == NULL);
   struct link_map **preloads = NULL;
   unsigned int npreloads = 0;
 
@@ -1657,9 +1740,9 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
       struct stat test_st;
       int test_fd;
       int can_load;
-      
+
       HP_TIMING_NOW (start);
-	   
+
 /*       _dl_sysdep_message("Loading compatibility library... ", NULL); */
 
       can_load = 1;
@@ -1673,7 +1756,7 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
 /* 	      _dl_sysdep_message(" Can't stat " LIB_NOVERSION "\n",  NULL); */
 	  }
       }
-      
+
       if (test_fd >= 0) /* open did no fail.. */
 	  __close(test_fd); /* avoid fd leaks */
 
@@ -1687,12 +1770,11 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
     }
 #endif
 
-  if (__builtin_expect (GL(dl_rtld_map).l_next != NULL, 0))
+  if (__builtin_expect (*first_preload != NULL, 0))
     {
       /* Set up PRELOADS with a vector of the preloaded libraries.  */
-      struct link_map *l;
+      struct link_map *l = *first_preload;
       preloads = __alloca (npreloads * sizeof preloads[0]);
-      l = GL(dl_rtld_map).l_next; /* End of the chain before preloads.  */
       i = 0;
       do
 	{
@@ -1702,82 +1784,6 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
       assert (i == npreloads);
     }
 
-#if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO
-  struct link_map *sysinfo_map = NULL;
-  if (GLRO(dl_sysinfo_dso) != NULL)
-    {
-      /* Do an abridged version of the work _dl_map_object_from_fd would do
-	 to map in the object.  It's already mapped and prelinked (and
-	 better be, since it's read-only and so we couldn't relocate it).
-	 We just want our data structures to describe it as if we had just
-	 mapped and relocated it normally.  */
-      struct link_map *l = _dl_new_object ((char *) "", "", lt_library, NULL,
-					   0, LM_ID_BASE);
-      if (__builtin_expect (l != NULL, 1))
-	{
-	  static ElfW(Dyn) dyn_temp[DL_RO_DYN_TEMP_CNT] attribute_relro;
-
-	  l->l_phdr = ((const void *) GLRO(dl_sysinfo_dso)
-		       + GLRO(dl_sysinfo_dso)->e_phoff);
-	  l->l_phnum = GLRO(dl_sysinfo_dso)->e_phnum;
-	  for (uint_fast16_t i = 0; i < l->l_phnum; ++i)
-	    {
-	      const ElfW(Phdr) *const ph = &l->l_phdr[i];
-	      if (ph->p_type == PT_DYNAMIC)
-		{
-		  l->l_ld = (void *) ph->p_vaddr;
-		  l->l_ldnum = ph->p_memsz / sizeof (ElfW(Dyn));
-		}
-	      else if (ph->p_type == PT_LOAD)
-		{
-		  if (! l->l_addr)
-		    l->l_addr = ph->p_vaddr;
-		  if (ph->p_vaddr + ph->p_memsz >= l->l_map_end)
-		    l->l_map_end = ph->p_vaddr + ph->p_memsz;
-		  if ((ph->p_flags & PF_X)
-			   && ph->p_vaddr + ph->p_memsz >= l->l_text_end)
-		    l->l_text_end = ph->p_vaddr + ph->p_memsz;
-		}
-	      else
-		/* There must be no TLS segment.  */
-		assert (ph->p_type != PT_TLS);
-	    }
-	  l->l_map_start = (ElfW(Addr)) GLRO(dl_sysinfo_dso);
-	  l->l_addr = l->l_map_start - l->l_addr;
-	  l->l_map_end += l->l_addr;
-	  l->l_text_end += l->l_addr;
-	  l->l_ld = (void *) ((ElfW(Addr)) l->l_ld + l->l_addr);
-	  elf_get_dynamic_info (l, dyn_temp);
-	  _dl_setup_hash (l);
-	  l->l_relocated = 1;
-
-	  /* Now that we have the info handy, use the DSO image's soname
-	     so this object can be looked up by name.  Note that we do not
-	     set l_name here.  That field gives the file name of the DSO,
-	     and this DSO is not associated with any file.  */
-	  if (l->l_info[DT_SONAME] != NULL)
-	    {
-	      /* Work around a kernel problem.  The kernel cannot handle
-		 addresses in the vsyscall DSO pages in writev() calls.  */
-	      const char *dsoname = ((char *) D_PTR (l, l_info[DT_STRTAB])
-				     + l->l_info[DT_SONAME]->d_un.d_val);
-	      size_t len = strlen (dsoname);
-	      char *copy = malloc (len);
-	      if (copy == NULL)
-		_dl_fatal_printf ("out of memory\n");
-	      l->l_libname->name = memcpy (copy, dsoname, len);
-	    }
-
-	  /* We have a prelinked DSO preloaded by the system.  */
-	  sysinfo_map = l;
-# ifdef NEED_DL_SYSINFO
-	  if (GLRO(dl_sysinfo) == DL_SYSINFO_DEFAULT)
-	    GLRO(dl_sysinfo) = GLRO(dl_sysinfo_dso)->e_entry + l->l_addr;
-# endif
-	}
-    }
-#endif
-
   /* Load all the libraries specified by DT_NEEDED entries.  If LD_PRELOAD
      specified some libraries to load, these are inserted before the actual
      dependencies in the executable's searchlist for symbol resolution.  */
@@ -1822,10 +1828,10 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
 				    ? main_map->l_searchlist.r_list[i + 1]
 				    : NULL);
 #if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO
-	  if (sysinfo_map != NULL
-	      && GL(dl_rtld_map).l_prev->l_next == sysinfo_map
-	      && GL(dl_rtld_map).l_next != sysinfo_map)
-	    GL(dl_rtld_map).l_prev = sysinfo_map;
+	  if (GLRO(dl_sysinfo_map) != NULL
+	      && GL(dl_rtld_map).l_prev->l_next == GLRO(dl_sysinfo_map)
+	      && GL(dl_rtld_map).l_next != GLRO(dl_sysinfo_map))
+	    GL(dl_rtld_map).l_prev = GLRO(dl_sysinfo_map);
 #endif
 	}
       else
diff --git a/elf/tls-macros.h b/elf/tls-macros.h
index f734417149..0ae9e65dc0 100644
--- a/elf/tls-macros.h
+++ b/elf/tls-macros.h
@@ -441,6 +441,74 @@ register void *__gp __asm__("$29");
 	    "o5", "o7", "cc");						      \
      __o0; })
 
+#elif defined __sparc__ && defined __arch64__
+
+# define TLS_LE(x) \
+  ({ int *__l;								      \
+     asm ("sethi %%tle_hix22(" #x "), %0" : "=r" (__l));		      \
+     asm ("xor %1, %%tle_lox10(" #x "), %0" : "=r" (__l) : "r" (__l));	      \
+     asm ("add %%g7, %1, %0" : "=r" (__l) : "r" (__l));			      \
+     __l; })
+
+# ifdef __PIC__
+#  define TLS_LOAD_PIC \
+  ({ long pc, got;							      \
+     asm ("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t"			      \
+	  "rd %%pc, %0\n\t"						      \
+	  "add %1, %%lo(_GLOBAL_OFFSET_TABLE_+4), %1\n\t"		      \
+	  "add %1, %0, %1\n\t"						      \
+	  : "=r" (pc), "=r" (got));					      \
+     got; })
+# else
+#  define TLS_LOAD_PIC \
+   ({ long got;								      \
+      asm (".hidden _GLOBAL_OFFSET_TABLE_\n\t"				      \
+	   "sethi %%hi(_GLOBAL_OFFSET_TABLE_), %0\n\t"			      \
+	   "or %0, %%lo(_GLOBAL_OFFSET_TABLE_), %0"			      \
+	   : "=r" (got));						      \
+      got; })
+# endif
+
+# define TLS_IE(x) \
+  ({ int *__l;								      \
+     asm ("sethi %%tie_hi22(" #x "), %0" : "=r" (__l));			      \
+     asm ("add %1, %%tie_lo10(" #x "), %0" : "=r" (__l) : "r" (__l));	      \
+     asm ("ldx [%1 + %2], %0, %%tie_ldx(" #x ")"			      \
+	  : "=r" (__l) : "r" (TLS_LOAD_PIC), "r" (__l));		      \
+     asm ("add %%g7, %1, %0, %%tie_add(" #x ")" : "=r" (__l) : "r" (__l));    \
+     __l; })
+
+# define TLS_LD(x) \
+  ({ int *__l; register void *__o0 asm ("%o0");				      \
+     long __o;								      \
+     asm ("sethi %%tldm_hi22(" #x "), %0" : "=r" (__l));		      \
+     asm ("add %1, %%tldm_lo10(" #x "), %0" : "=r" (__l) : "r" (__l));	      \
+     asm ("add %1, %2, %0, %%tldm_add(" #x ")"				      \
+	  : "=r" (__o0) : "r" (TLS_LOAD_PIC), "r" (__l));		      \
+     asm ("call __tls_get_addr, %%tgd_call(" #x ")\n\t"			      \
+	  " nop"							      \
+	  : "=r" (__o0) : "0" (__o0)					      \
+	  : "g1", "g2", "g3", "g4", "g5", "g6", "o1", "o2", "o3", "o4",	      \
+	    "o5", "o7", "cc");						      \
+     asm ("sethi %%tldo_hix22(" #x "), %0" : "=r" (__o));		      \
+     asm ("xor %1, %%tldo_lox10(" #x "), %0" : "=r" (__o) : "r" (__o));	      \
+     asm ("add %1, %2, %0, %%tldo_add(" #x ")" : "=r" (__l)		      \
+	  : "r" (__o0), "r" (__o));					      \
+     __l; })
+
+# define TLS_GD(x) \
+  ({ int *__l; register void *__o0 asm ("%o0");				      \
+     asm ("sethi %%tgd_hi22(" #x "), %0" : "=r" (__l));			      \
+     asm ("add %1, %%tgd_lo10(" #x "), %0" : "=r" (__l) : "r" (__l));	      \
+     asm ("add %1, %2, %0, %%tgd_add(" #x ")"				      \
+	  : "=r" (__o0) : "r" (TLS_LOAD_PIC), "r" (__l));		      \
+     asm ("call __tls_get_addr, %%tgd_call(" #x ")\n\t"			      \
+	  " nop"							      \
+	  : "=r" (__o0) : "0" (__o0)					      \
+	  : "g1", "g2", "g3", "g4", "g5", "g6", "o1", "o2", "o3", "o4",	      \
+	    "o5", "o7", "cc");						      \
+     __o0; })
+
 #elif defined __s390x__
 
 # define TLS_LE(x) \
diff --git a/elf/tst-auditmod1.c b/elf/tst-auditmod1.c
index 3876822429..73d341d72b 100644
--- a/elf/tst-auditmod1.c
+++ b/elf/tst-auditmod1.c
@@ -180,6 +180,18 @@ la_symbind64 (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
 # define La_regs La_mips_64_regs
 # define La_retval La_mips_64_retval
 # define int_retval lrv_v0
+#elif defined __sparc__ && __WORDSIZE == 32
+# define pltenter la_sparc32_gnu_pltenter
+# define pltexit la_sparc32_gnu_pltexit
+# define La_regs La_sparc32_regs
+# define La_retval La_sparc32_retval
+# define int_retval lrv_reg[0]
+#elif defined __sparc__ && __WORDSIZE == 64
+# define pltenter la_sparc64_gnu_pltenter
+# define pltexit la_sparc64_gnu_pltexit
+# define La_regs La_sparc64_regs
+# define La_retval La_sparc64_retval
+# define int_retval lrv_reg[0]
 #else
 # error "architecture specific code needed"
 #endif
diff --git a/fedora/branch.mk b/fedora/branch.mk
index 3403138b76..5b5f55469d 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-04-05 21:14 UTC
-fedora-sync-tag := fedora-glibc-20050405T2114
+fedora-sync-date := 2005-04-15 09:09 UTC
+fedora-sync-tag := fedora-glibc-20050415T0909
diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in
index 5422417101..e0b84fa4bc 100644
--- a/fedora/glibc.spec.in
+++ b/fedora/glibc.spec.in
@@ -1,4 +1,4 @@
-%define glibcrelease 21
+%define glibcrelease 1
 %define auxarches i586 i686 athlon sparcv9 alphaev6
 %define prelinkarches noarch
 %define nptlarches i386 i686 athlon x86_64 ia64 s390 s390x sparcv9 ppc ppc64
@@ -1264,6 +1264,14 @@ rm -f *.filelist*
 %endif
 
 %changelog
+* Fri Apr 15 2005 Roland McGrath <roland@redhat.com> 2.3.5-1
+- update from CVS
+  - fix execvp regression (BZ#851)
+  - ia64 libm updates
+  - sparc updates
+  - grok PT_NOTE in vDSO for kernel version and extra hwcap dirs,
+    support "hwcap" keyword in ld.so.conf files
+
 * Tue Apr  4 2005 Jakub Jelinek <jakub@redhat.com> 2.3.4-21
 - update from CVS
   - fix xdr_rmtcall_args on 64-bit arches (#151686)
diff --git a/iconv/gconv_int.h b/iconv/gconv_int.h
index 36d4ae2d44..768ebf0a97 100644
--- a/iconv/gconv_int.h
+++ b/iconv/gconv_int.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
 
@@ -22,6 +22,8 @@
 
 #include "gconv.h"
 #include <stdlib.h>		/* For alloca used in macro below.  */
+#include <ctype.h>		/* For __toupper_l used in macro below.  */
+#include <string.h>		/* For strlen et al used in macro below.  */
 #include <bits/libc-lock.h>
 
 __BEGIN_DECLS
diff --git a/intl/tst-codeset.sh b/intl/tst-codeset.sh
index 3d9b9559b7..8b052168b2 100644
--- a/intl/tst-codeset.sh
+++ b/intl/tst-codeset.sh
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Test of bind_textdomain_codeset.
-# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 #
 
@@ -26,12 +26,11 @@ LC_ALL=C
 export LC_ALL
 
 # Generate the test data.
-test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir
+msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit
 # Create the domain directories.
-test -d ${objpfx}domaindir/de_DE || mkdir ${objpfx}domaindir/de_DE
-test -d ${objpfx}domaindir/de_DE/LC_MESSAGES || mkdir ${objpfx}domaindir/de_DE/LC_MESSAGES
+mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
 # Populate them.
-msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po
+mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo
 
 GCONV_PATH=${common_objpfx}iconvdata
 export GCONV_PATH
diff --git a/intl/tst-gettext3.sh b/intl/tst-gettext3.sh
index 7bd977cf2d..185576886e 100644
--- a/intl/tst-gettext3.sh
+++ b/intl/tst-gettext3.sh
@@ -27,12 +27,11 @@ LC_ALL=C
 export LC_ALL
 
 # Generate the test data.
-test -d ${objpfx}domaindir || mkdir ${objpfx}domaindir
+msgfmt -o ${objpfx}codeset.mo.$$ tstcodeset.po || exit
 # Create the domain directories.
-test -d ${objpfx}domaindir/de_DE || mkdir ${objpfx}domaindir/de_DE
-test -d ${objpfx}domaindir/de_DE/LC_MESSAGES || mkdir ${objpfx}domaindir/de_DE/LC_MESSAGES
+mkdir -p ${objpfx}domaindir/de_DE/LC_MESSAGES
 # Populate them.
-msgfmt -o ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo tstcodeset.po
+mv -f ${objpfx}codeset.mo.$$ ${objpfx}domaindir/de_DE/LC_MESSAGES/codeset.mo
 
 GCONV_PATH=${common_objpfx}iconvdata
 export GCONV_PATH
diff --git a/manual/string.texi b/manual/string.texi
index d9de12996e..2717699213 100644
--- a/manual/string.texi
+++ b/manual/string.texi
@@ -386,7 +386,7 @@ memcpy (new, old, arraysize * sizeof (struct foo));
 
 @comment wchar.h
 @comment ISO
-@deftypefun {wchar_t *} wmemcpy (wchar_t *restrict @var{wto}, const wchar_t *restruct @var{wfrom}, size_t @var{size})
+@deftypefun {wchar_t *} wmemcpy (wchar_t *restrict @var{wto}, const wchar_t *restrict @var{wfrom}, size_t @var{size})
 The @code{wmemcpy} function copies @var{size} wide characters from the object
 beginning at @var{wfrom} into the object beginning at @var{wto}.  The
 behavior of this function is undefined if the two arrays @var{wto} and
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index d07ee78064..e608d136ce 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,8 @@
+2005-04-13  David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/sparc/sparc64/jmpbuf-unwind.h: New file.
+	* sysdeps/sparc/sparc64/clone.S: New file.
+
 2005-04-05  Jakub Jelinek  <jakub@redhat.com>
 
 	* sysdeps/pthread/pthread.h (__pthread_cleanup_routine): Use
@@ -79,6 +84,7 @@
 
 2005-02-07  Richard Henderson  <rth@redhat.com>
 
+	[BZ #787]
 	* sysdeps/pthread/pthread.h (__sigsetjmp): Use pointer as first
 	argument.
 
diff --git a/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h b/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h
new file mode 100644
index 0000000000..77321aad3f
--- /dev/null
+++ b/nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h
@@ -0,0 +1,31 @@
+/* Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David S. Miller <davem@davemloft.net>, 2005.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <setjmp.h>
+#include <stdint.h>
+#include <unwind.h>
+
+#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
+  _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
+
+#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
+  ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf)[0].uc_mcontext.mc_fp - (_adj))
+
+/* We use the normal lobngjmp for unwinding.  */
+#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
new file mode 100644
index 0000000000..410f32017a
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
@@ -0,0 +1,2 @@
+#define RESET_PID
+#include <sysdeps/unix/sysv/linux/sparc/sparc64/clone.S>
diff --git a/nscd/Makefile b/nscd/Makefile
index 9c32c68681..75a9d434f4 100644
--- a/nscd/Makefile
+++ b/nscd/Makefile
@@ -51,6 +51,7 @@ otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \
 	     $(resolvobjdir)/libresolv.a
 endif
 
+all-nscd-modules := $(nscd-modules) selinux
 ifeq (yes,$(have-selinux))
 nscd-modules += selinux
 selinux-LIBS := -lselinux
@@ -59,7 +60,7 @@ endif
 LDLIBS-nscd = $(selinux-LIBS)
 
 distribute := nscd.h nscd-client.h dbg_log.h \
-	      $(addsuffix .c, $(filter-out xmalloc, $(nscd-modules))) \
+	      $(addsuffix .c, $(filter-out xmalloc,$(all-nscd-modules))) \
 	      nscd_nischeck.c nscd.conf nscd.init nscd_proto.h \
 	      nscd-types.h
 
diff --git a/po/.cvsignore b/po/.cvsignore
index f3acb7df82..02da896169 100644
--- a/po/.cvsignore
+++ b/po/.cvsignore
@@ -41,6 +41,9 @@ crypt.pot
 argp.pot
 linuxthreads_db.pot
 linuxthreads.pot
+nptl_db.pot
+nptl.pot
+libidn.pot
 soft-fp.pot
 resolv.pot
 nss.pot
diff --git a/po/libc.pot b/po/libc.pot
index cd4f561738..fa5a221435 100644
--- a/po/libc.pot
+++ b/po/libc.pot
@@ -5,8 +5,8 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: libc 2.3.2\n"
-"POT-Creation-Date: 2003-02-22 15:34-0800\n"
+"Project-Id-Version: libc 2.3.90\n"
+"POT-Creation-Date: 2005-04-07 21:55-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -59,9 +59,8 @@ msgstr ""
 #. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
 #. TRANS or blocked.  Thus, your program will never actually see @code{EPIPE}
 #. TRANS unless it has handled or blocked @code{SIGPIPE}.
-#: sysdeps/generic/siglist.h:39 stdio-common/../sysdeps/gnu/errlist.c:351
+#: sysdeps/generic/siglist.h:39 stdio-common/../sysdeps/gnu/errlist.c:359
 #: stdio-common/../sysdeps/unix/siglist.c:39
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62
 msgid "Broken pipe"
 msgstr ""
 
@@ -178,12 +177,12 @@ msgstr ""
 msgid "cannot read header from `%s'"
 msgstr ""
 
-#: iconv/iconv_charmap.c:159 iconv/iconv_prog.c:293 catgets/gencat.c:288
+#: iconv/iconv_charmap.c:159 iconv/iconv_prog.c:299 catgets/gencat.c:289
 #, c-format
 msgid "cannot open input file `%s'"
 msgstr ""
 
-#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:311
+#: iconv/iconv_charmap.c:177 iconv/iconv_prog.c:317
 #, c-format
 msgid "error while closing input `%s'"
 msgstr ""
@@ -193,16 +192,16 @@ msgstr ""
 msgid "illegal input sequence at position %Zd"
 msgstr ""
 
-#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:503
+#: iconv/iconv_charmap.c:462 iconv/iconv_prog.c:527
 msgid "incomplete character or shift sequence at end of buffer"
 msgstr ""
 
-#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:543 iconv/iconv_prog.c:546
-#: iconv/iconv_prog.c:582
+#: iconv/iconv_charmap.c:507 iconv/iconv_charmap.c:543 iconv/iconv_prog.c:570
+#: iconv/iconv_prog.c:606
 msgid "error while reading the input"
 msgstr ""
 
-#: iconv/iconv_charmap.c:525 iconv/iconv_prog.c:564
+#: iconv/iconv_charmap.c:525 iconv/iconv_prog.c:588
 msgid "unable to allocate buffer for input"
 msgstr ""
 
@@ -254,48 +253,50 @@ msgstr ""
 msgid "[FILE...]"
 msgstr ""
 
-#: iconv/iconv_prog.c:199
+#: iconv/iconv_prog.c:201
 msgid "cannot open output file"
 msgstr ""
 
-#: iconv/iconv_prog.c:241
+#: iconv/iconv_prog.c:243
 #, c-format
 msgid "conversion from `%s' and to `%s' are not supported"
 msgstr ""
 
-#: iconv/iconv_prog.c:246
+#: iconv/iconv_prog.c:248
 #, c-format
 msgid "conversion from `%s' is not supported"
 msgstr ""
 
-#: iconv/iconv_prog.c:253
+#: iconv/iconv_prog.c:255
 #, c-format
 msgid "conversion to `%s' is not supported"
 msgstr ""
 
-#: iconv/iconv_prog.c:257
+#: iconv/iconv_prog.c:259
 #, c-format
 msgid "conversion from `%s' to `%s' is not supported"
 msgstr ""
 
-#: iconv/iconv_prog.c:263
+#: iconv/iconv_prog.c:269
 msgid "failed to start conversion processing"
 msgstr ""
 
-#: iconv/iconv_prog.c:358
+#: iconv/iconv_prog.c:363
 msgid "error while closing output file"
 msgstr ""
 
-#: iconv/iconv_prog.c:407 iconv/iconvconfig.c:357 locale/programs/locale.c:274
+#: iconv/iconv_prog.c:412 iconv/iconvconfig.c:381
 #: locale/programs/localedef.c:372 catgets/gencat.c:233
-#: malloc/memusagestat.c:602 debug/pcprofiledump.c:199
-msgid "Report bugs using the `glibcbug' script to <bugs@gnu.org>.\n"
+#: malloc/memusagestat.c:524 nss/getent.c:787 debug/pcprofiledump.c:199
+msgid ""
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
 msgstr ""
 
-#: iconv/iconv_prog.c:421 iconv/iconvconfig.c:371 locale/programs/locale.c:287
-#: locale/programs/localedef.c:386 catgets/gencat.c:246 posix/getconf.c:910
-#: nss/getent.c:74 nscd/nscd.c:330 nscd/nscd_nischeck.c:90 elf/ldconfig.c:271
-#: elf/sprof.c:349
+#: iconv/iconv_prog.c:427 iconv/iconvconfig.c:396 locale/programs/locale.c:276
+#: locale/programs/localedef.c:388 catgets/gencat.c:247 posix/getconf.c:963
+#: nss/getent.c:82 nscd/nscd.c:394 nscd/nscd_nischeck.c:90 elf/ldconfig.c:287
+#: elf/sprof.c:355
 #, c-format
 msgid ""
 "Copyright (C) %s Free Software Foundation, Inc.\n"
@@ -303,33 +304,33 @@ msgid ""
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
 
-#: iconv/iconv_prog.c:426 iconv/iconvconfig.c:376 locale/programs/locale.c:292
-#: locale/programs/localedef.c:391 catgets/gencat.c:251 posix/getconf.c:915
-#: nss/getent.c:79 nscd/nscd.c:335 nscd/nscd_nischeck.c:95 elf/ldconfig.c:276
-#: elf/sprof.c:355
+#: iconv/iconv_prog.c:432 iconv/iconvconfig.c:401 locale/programs/locale.c:281
+#: locale/programs/localedef.c:393 catgets/gencat.c:252 posix/getconf.c:968
+#: nss/getent.c:87 nscd/nscd.c:399 nscd/nscd_nischeck.c:95 elf/ldconfig.c:292
+#: elf/sprof.c:361
 #, c-format
 msgid "Written by %s.\n"
 msgstr ""
 
-#: iconv/iconv_prog.c:456 iconv/iconv_prog.c:482
+#: iconv/iconv_prog.c:472 iconv/iconv_prog.c:498
 msgid "conversion stopped due to problem in writing the output"
 msgstr ""
 
-#: iconv/iconv_prog.c:499
+#: iconv/iconv_prog.c:523
 #, c-format
 msgid "illegal input sequence at position %ld"
 msgstr ""
 
-#: iconv/iconv_prog.c:507
+#: iconv/iconv_prog.c:531
 msgid "internal error (illegal descriptor)"
 msgstr ""
 
-#: iconv/iconv_prog.c:510
+#: iconv/iconv_prog.c:534
 #, c-format
 msgid "unknown iconv() error %d"
 msgstr ""
 
-#: iconv/iconv_prog.c:753
+#: iconv/iconv_prog.c:780
 msgid ""
 "The following list contain all the coded character sets known.  This does\n"
 "not necessarily mean that all combinations of these names can be used for\n"
@@ -339,27 +340,41 @@ msgid ""
 "  "
 msgstr ""
 
-#: iconv/iconvconfig.c:110
+#: iconv/iconvconfig.c:111
 msgid "Create fastloading iconv module configuration file."
 msgstr ""
 
-#: iconv/iconvconfig.c:114
+#: iconv/iconvconfig.c:115
 msgid "[DIR...]"
 msgstr ""
 
-#: iconv/iconvconfig.c:126
+#: iconv/iconvconfig.c:128
 msgid "Prefix used for all file accesses"
 msgstr ""
 
-#: iconv/iconvconfig.c:327 locale/programs/localedef.c:292
+#: iconv/iconvconfig.c:129
+msgid ""
+"Put output in FILE instead of installed location (--prefix does not apply to "
+"FILE)"
+msgstr ""
+
+#: iconv/iconvconfig.c:133
+msgid "Do not search standard directories, only those on the command line"
+msgstr ""
+
+#: iconv/iconvconfig.c:302
+msgid "Directory arguments required when using --nostdlib"
+msgstr ""
+
+#: iconv/iconvconfig.c:344 locale/programs/localedef.c:292
 msgid "no output file produced because warning were issued"
 msgstr ""
 
-#: iconv/iconvconfig.c:405
+#: iconv/iconvconfig.c:430
 msgid "while inserting in search tree"
 msgstr ""
 
-#: iconv/iconvconfig.c:1204
+#: iconv/iconvconfig.c:1238
 msgid "cannot generate output file"
 msgstr ""
 
@@ -368,165 +383,165 @@ msgstr ""
 msgid "cannot read character map directory `%s'"
 msgstr ""
 
-#: locale/programs/charmap.c:135
+#: locale/programs/charmap.c:139
 #, c-format
 msgid "character map file `%s' not found"
 msgstr ""
 
-#: locale/programs/charmap.c:193
+#: locale/programs/charmap.c:197
 #, c-format
 msgid "default character map file `%s' not found"
 msgstr ""
 
-#: locale/programs/charmap.c:255
+#: locale/programs/charmap.c:260
 #, c-format
 msgid ""
 "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
 msgstr ""
 
-#: locale/programs/charmap.c:332
+#: locale/programs/charmap.c:339
 #, c-format
 msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
 msgstr ""
 
-#: locale/programs/charmap.c:352 locale/programs/charmap.c:369
-#: locale/programs/repertoire.c:175
+#: locale/programs/charmap.c:359 locale/programs/charmap.c:376
+#: locale/programs/repertoire.c:176
 #, c-format
 msgid "syntax error in prolog: %s"
 msgstr ""
 
-#: locale/programs/charmap.c:353
+#: locale/programs/charmap.c:360
 msgid "invalid definition"
 msgstr ""
 
-#: locale/programs/charmap.c:370 locale/programs/locfile.c:126
-#: locale/programs/locfile.c:153 locale/programs/repertoire.c:176
+#: locale/programs/charmap.c:377 locale/programs/locfile.c:127
+#: locale/programs/locfile.c:154 locale/programs/repertoire.c:177
 msgid "bad argument"
 msgstr ""
 
-#: locale/programs/charmap.c:398
+#: locale/programs/charmap.c:405
 #, c-format
 msgid "duplicate definition of <%s>"
 msgstr ""
 
-#: locale/programs/charmap.c:405
+#: locale/programs/charmap.c:412
 #, c-format
 msgid "value for <%s> must be 1 or greater"
 msgstr ""
 
-#: locale/programs/charmap.c:417
+#: locale/programs/charmap.c:424
 #, c-format
 msgid "value of <%s> must be greater or equal than the value of <%s>"
 msgstr ""
 
-#: locale/programs/charmap.c:440 locale/programs/repertoire.c:184
+#: locale/programs/charmap.c:447 locale/programs/repertoire.c:185
 #, c-format
 msgid "argument to <%s> must be a single character"
 msgstr ""
 
-#: locale/programs/charmap.c:466
+#: locale/programs/charmap.c:473
 msgid "character sets with locking states are not supported"
 msgstr ""
 
-#: locale/programs/charmap.c:493 locale/programs/charmap.c:547
-#: locale/programs/charmap.c:579 locale/programs/charmap.c:673
-#: locale/programs/charmap.c:728 locale/programs/charmap.c:769
-#: locale/programs/charmap.c:810
+#: locale/programs/charmap.c:500 locale/programs/charmap.c:554
+#: locale/programs/charmap.c:586 locale/programs/charmap.c:680
+#: locale/programs/charmap.c:735 locale/programs/charmap.c:776
+#: locale/programs/charmap.c:817
 #, c-format
 msgid "syntax error in %s definition: %s"
 msgstr ""
 
-#: locale/programs/charmap.c:494 locale/programs/charmap.c:674
-#: locale/programs/charmap.c:770 locale/programs/repertoire.c:231
+#: locale/programs/charmap.c:501 locale/programs/charmap.c:681
+#: locale/programs/charmap.c:777 locale/programs/repertoire.c:232
 msgid "no symbolic name given"
 msgstr ""
 
-#: locale/programs/charmap.c:548
+#: locale/programs/charmap.c:555
 msgid "invalid encoding given"
 msgstr ""
 
-#: locale/programs/charmap.c:557
+#: locale/programs/charmap.c:564
 msgid "too few bytes in character encoding"
 msgstr ""
 
-#: locale/programs/charmap.c:559
+#: locale/programs/charmap.c:566
 msgid "too many bytes in character encoding"
 msgstr ""
 
-#: locale/programs/charmap.c:581 locale/programs/charmap.c:729
-#: locale/programs/charmap.c:812 locale/programs/repertoire.c:297
+#: locale/programs/charmap.c:588 locale/programs/charmap.c:736
+#: locale/programs/charmap.c:819 locale/programs/repertoire.c:298
 msgid "no symbolic name given for end of range"
 msgstr ""
 
-#: locale/programs/charmap.c:605 locale/programs/locfile.h:96
-#: locale/programs/repertoire.c:314
+#: locale/programs/charmap.c:612 locale/programs/locfile.c:819
+#: locale/programs/repertoire.c:315
 #, c-format
 msgid "`%1$s' definition does not end with `END %1$s'"
 msgstr ""
 
-#: locale/programs/charmap.c:638
+#: locale/programs/charmap.c:645
 msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
 msgstr ""
 
-#: locale/programs/charmap.c:646 locale/programs/charmap.c:709
+#: locale/programs/charmap.c:653 locale/programs/charmap.c:716
 #, c-format
 msgid "value for %s must be an integer"
 msgstr ""
 
-#: locale/programs/charmap.c:837
+#: locale/programs/charmap.c:844
 #, c-format
 msgid "%s: error in state machine"
 msgstr ""
 
-#: locale/programs/charmap.c:845 locale/programs/ld-address.c:605
-#: locale/programs/ld-collate.c:2635 locale/programs/ld-collate.c:3793
-#: locale/programs/ld-ctype.c:2216 locale/programs/ld-ctype.c:2977
+#: locale/programs/charmap.c:852 locale/programs/ld-address.c:605
+#: locale/programs/ld-collate.c:2650 locale/programs/ld-collate.c:3818
+#: locale/programs/ld-ctype.c:2226 locale/programs/ld-ctype.c:2995
 #: locale/programs/ld-identification.c:469
 #: locale/programs/ld-measurement.c:255 locale/programs/ld-messages.c:349
-#: locale/programs/ld-monetary.c:952 locale/programs/ld-name.c:324
+#: locale/programs/ld-monetary.c:958 locale/programs/ld-name.c:324
 #: locale/programs/ld-numeric.c:392 locale/programs/ld-paper.c:258
-#: locale/programs/ld-telephone.c:330 locale/programs/ld-time.c:1217
-#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325
+#: locale/programs/ld-telephone.c:330 locale/programs/ld-time.c:1220
+#: locale/programs/locfile.c:826 locale/programs/repertoire.c:326
 #, c-format
 msgid "%s: premature end of file"
 msgstr ""
 
-#: locale/programs/charmap.c:864 locale/programs/charmap.c:875
+#: locale/programs/charmap.c:871 locale/programs/charmap.c:882
 #, c-format
 msgid "unknown character `%s'"
 msgstr ""
 
-#: locale/programs/charmap.c:883
+#: locale/programs/charmap.c:890
 #, c-format
 msgid ""
 "number of bytes for byte sequence of beginning and end of range not the "
 "same: %d vs %d"
 msgstr ""
 
-#: locale/programs/charmap.c:987 locale/programs/ld-collate.c:2915
-#: locale/programs/repertoire.c:420
+#: locale/programs/charmap.c:995 locale/programs/ld-collate.c:2930
+#: locale/programs/repertoire.c:421
 msgid "invalid names for character range"
 msgstr ""
 
-#: locale/programs/charmap.c:999 locale/programs/repertoire.c:432
+#: locale/programs/charmap.c:1007 locale/programs/repertoire.c:433
 msgid "hexadecimal range format should use only capital characters"
 msgstr ""
 
-#: locale/programs/charmap.c:1017
+#: locale/programs/charmap.c:1025
 #, c-format
 msgid "<%s> and <%s> are illegal names for range"
 msgstr ""
 
-#: locale/programs/charmap.c:1023
+#: locale/programs/charmap.c:1031
 msgid "upper limit in range is not higher then lower limit"
 msgstr ""
 
-#: locale/programs/charmap.c:1081
+#: locale/programs/charmap.c:1089
 msgid "resulting bytes for range not representable."
 msgstr ""
 
-#: locale/programs/ld-address.c:134 locale/programs/ld-collate.c:1519
-#: locale/programs/ld-ctype.c:416 locale/programs/ld-identification.c:134
+#: locale/programs/ld-address.c:134 locale/programs/ld-collate.c:1534
+#: locale/programs/ld-ctype.c:421 locale/programs/ld-identification.c:134
 #: locale/programs/ld-measurement.c:95 locale/programs/ld-messages.c:98
 #: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:95
 #: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:92
@@ -540,8 +555,8 @@ msgstr ""
 #: locale/programs/ld-address.c:290 locale/programs/ld-address.c:309
 #: locale/programs/ld-address.c:322 locale/programs/ld-identification.c:147
 #: locale/programs/ld-measurement.c:106 locale/programs/ld-monetary.c:206
-#: locale/programs/ld-monetary.c:244 locale/programs/ld-monetary.c:260
-#: locale/programs/ld-monetary.c:272 locale/programs/ld-name.c:106
+#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
+#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:106
 #: locale/programs/ld-name.c:143 locale/programs/ld-numeric.c:113
 #: locale/programs/ld-numeric.c:127 locale/programs/ld-paper.c:103
 #: locale/programs/ld-paper.c:112 locale/programs/ld-telephone.c:106
@@ -585,522 +600,522 @@ msgid "%s: numeric country code `%d' not valid"
 msgstr ""
 
 #: locale/programs/ld-address.c:497 locale/programs/ld-address.c:534
-#: locale/programs/ld-address.c:572 locale/programs/ld-ctype.c:2592
+#: locale/programs/ld-address.c:572 locale/programs/ld-ctype.c:2602
 #: locale/programs/ld-identification.c:365
 #: locale/programs/ld-measurement.c:222 locale/programs/ld-messages.c:302
-#: locale/programs/ld-monetary.c:694 locale/programs/ld-monetary.c:729
-#: locale/programs/ld-monetary.c:770 locale/programs/ld-name.c:281
+#: locale/programs/ld-monetary.c:700 locale/programs/ld-monetary.c:735
+#: locale/programs/ld-monetary.c:776 locale/programs/ld-name.c:281
 #: locale/programs/ld-numeric.c:264 locale/programs/ld-paper.c:225
-#: locale/programs/ld-telephone.c:289 locale/programs/ld-time.c:1106
-#: locale/programs/ld-time.c:1148
+#: locale/programs/ld-telephone.c:289 locale/programs/ld-time.c:1109
+#: locale/programs/ld-time.c:1151
 #, c-format
 msgid "%s: field `%s' declared more than once"
 msgstr ""
 
 #: locale/programs/ld-address.c:501 locale/programs/ld-address.c:539
 #: locale/programs/ld-identification.c:369 locale/programs/ld-messages.c:312
-#: locale/programs/ld-monetary.c:698 locale/programs/ld-monetary.c:733
+#: locale/programs/ld-monetary.c:704 locale/programs/ld-monetary.c:739
 #: locale/programs/ld-name.c:285 locale/programs/ld-numeric.c:268
-#: locale/programs/ld-telephone.c:293 locale/programs/ld-time.c:1000
-#: locale/programs/ld-time.c:1069 locale/programs/ld-time.c:1111
+#: locale/programs/ld-telephone.c:293 locale/programs/ld-time.c:1003
+#: locale/programs/ld-time.c:1072 locale/programs/ld-time.c:1114
 #, c-format
 msgid "%s: unknown character in field `%s'"
 msgstr ""
 
-#: locale/programs/ld-address.c:586 locale/programs/ld-collate.c:3775
-#: locale/programs/ld-ctype.c:2957 locale/programs/ld-identification.c:450
+#: locale/programs/ld-address.c:586 locale/programs/ld-collate.c:3800
+#: locale/programs/ld-ctype.c:2975 locale/programs/ld-identification.c:450
 #: locale/programs/ld-measurement.c:236 locale/programs/ld-messages.c:331
-#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:306
+#: locale/programs/ld-monetary.c:940 locale/programs/ld-name.c:306
 #: locale/programs/ld-numeric.c:374 locale/programs/ld-paper.c:240
-#: locale/programs/ld-telephone.c:312 locale/programs/ld-time.c:1199
+#: locale/programs/ld-telephone.c:312 locale/programs/ld-time.c:1202
 #, c-format
 msgid "%s: incomplete `END' line"
 msgstr ""
 
-#: locale/programs/ld-address.c:589 locale/programs/ld-collate.c:2638
-#: locale/programs/ld-collate.c:3777 locale/programs/ld-ctype.c:2219
-#: locale/programs/ld-ctype.c:2960 locale/programs/ld-identification.c:453
+#: locale/programs/ld-address.c:589 locale/programs/ld-collate.c:2653
+#: locale/programs/ld-collate.c:3802 locale/programs/ld-ctype.c:2229
+#: locale/programs/ld-ctype.c:2978 locale/programs/ld-identification.c:453
 #: locale/programs/ld-measurement.c:239 locale/programs/ld-messages.c:333
-#: locale/programs/ld-monetary.c:936 locale/programs/ld-name.c:308
+#: locale/programs/ld-monetary.c:942 locale/programs/ld-name.c:308
 #: locale/programs/ld-numeric.c:376 locale/programs/ld-paper.c:242
-#: locale/programs/ld-telephone.c:314 locale/programs/ld-time.c:1201
+#: locale/programs/ld-telephone.c:314 locale/programs/ld-time.c:1204
 #, c-format
 msgid "%1$s: definition does not end with `END %1$s'"
 msgstr ""
 
-#: locale/programs/ld-address.c:596 locale/programs/ld-collate.c:520
-#: locale/programs/ld-collate.c:572 locale/programs/ld-collate.c:869
-#: locale/programs/ld-collate.c:882 locale/programs/ld-collate.c:2625
-#: locale/programs/ld-collate.c:3784 locale/programs/ld-ctype.c:1947
-#: locale/programs/ld-ctype.c:2206 locale/programs/ld-ctype.c:2782
-#: locale/programs/ld-ctype.c:2968 locale/programs/ld-identification.c:460
+#: locale/programs/ld-address.c:596 locale/programs/ld-collate.c:523
+#: locale/programs/ld-collate.c:575 locale/programs/ld-collate.c:871
+#: locale/programs/ld-collate.c:884 locale/programs/ld-collate.c:2640
+#: locale/programs/ld-collate.c:3809 locale/programs/ld-ctype.c:1957
+#: locale/programs/ld-ctype.c:2216 locale/programs/ld-ctype.c:2800
+#: locale/programs/ld-ctype.c:2986 locale/programs/ld-identification.c:460
 #: locale/programs/ld-measurement.c:246 locale/programs/ld-messages.c:340
-#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:315
+#: locale/programs/ld-monetary.c:949 locale/programs/ld-name.c:315
 #: locale/programs/ld-numeric.c:383 locale/programs/ld-paper.c:249
-#: locale/programs/ld-telephone.c:321 locale/programs/ld-time.c:1208
+#: locale/programs/ld-telephone.c:321 locale/programs/ld-time.c:1211
 #, c-format
 msgid "%s: syntax error"
 msgstr ""
 
-#: locale/programs/ld-collate.c:395
+#: locale/programs/ld-collate.c:398
 #, c-format
 msgid "`%.*s' already defined in charmap"
 msgstr ""
 
-#: locale/programs/ld-collate.c:404
+#: locale/programs/ld-collate.c:407
 #, c-format
 msgid "`%.*s' already defined in repertoire"
 msgstr ""
 
-#: locale/programs/ld-collate.c:411
+#: locale/programs/ld-collate.c:414
 #, c-format
 msgid "`%.*s' already defined as collating symbol"
 msgstr ""
 
-#: locale/programs/ld-collate.c:418
+#: locale/programs/ld-collate.c:421
 #, c-format
 msgid "`%.*s' already defined as collating element"
 msgstr ""
 
-#: locale/programs/ld-collate.c:449 locale/programs/ld-collate.c:475
+#: locale/programs/ld-collate.c:452 locale/programs/ld-collate.c:478
 #, c-format
 msgid "%s: `forward' and `backward' are mutually excluding each other"
 msgstr ""
 
-#: locale/programs/ld-collate.c:459 locale/programs/ld-collate.c:485
-#: locale/programs/ld-collate.c:501
+#: locale/programs/ld-collate.c:462 locale/programs/ld-collate.c:488
+#: locale/programs/ld-collate.c:504
 #, c-format
 msgid "%s: `%s' mentioned more than once in definition of weight %d"
 msgstr ""
 
-#: locale/programs/ld-collate.c:557
+#: locale/programs/ld-collate.c:560
 #, c-format
 msgid "%s: too many rules; first entry only had %d"
 msgstr ""
 
-#: locale/programs/ld-collate.c:593
+#: locale/programs/ld-collate.c:596
 #, c-format
 msgid "%s: not enough sorting rules"
 msgstr ""
 
-#: locale/programs/ld-collate.c:759
+#: locale/programs/ld-collate.c:761
 #, c-format
 msgid "%s: empty weight string not allowed"
 msgstr ""
 
-#: locale/programs/ld-collate.c:854
+#: locale/programs/ld-collate.c:856
 #, c-format
 msgid "%s: weights must use the same ellipsis symbol as the name"
 msgstr ""
 
-#: locale/programs/ld-collate.c:910
+#: locale/programs/ld-collate.c:912
 #, c-format
 msgid "%s: too many values"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1023 locale/programs/ld-collate.c:1194
+#: locale/programs/ld-collate.c:1031 locale/programs/ld-collate.c:1206
 #, c-format
 msgid "order for `%.*s' already defined at %s:%Zu"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1073
+#: locale/programs/ld-collate.c:1081
 #, c-format
 msgid "%s: the start and the end symbol of a range must stand for characters"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1100
+#: locale/programs/ld-collate.c:1108
 #, c-format
 msgid ""
 "%s: byte sequences of first and last character must have the same length"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1142
+#: locale/programs/ld-collate.c:1150
 #, c-format
 msgid ""
 "%s: byte sequence of first character of sequence is not lower than that of "
 "the last character"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1263
+#: locale/programs/ld-collate.c:1275
 #, c-format
 msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1267
+#: locale/programs/ld-collate.c:1279
 #, c-format
 msgid ""
 "%s: symbolic range ellipsis must not be directly followed by `order_end'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1287 locale/programs/ld-ctype.c:1467
+#: locale/programs/ld-collate.c:1299 locale/programs/ld-ctype.c:1477
 #, c-format
 msgid "`%s' and `%.*s' are no valid names for symbolic range"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1333 locale/programs/ld-collate.c:3712
+#: locale/programs/ld-collate.c:1348 locale/programs/ld-collate.c:3737
 #, c-format
 msgid "%s: order for `%.*s' already defined at %s:%Zu"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1342
+#: locale/programs/ld-collate.c:1357
 #, c-format
 msgid "%s: `%s' must be a character"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1535
+#: locale/programs/ld-collate.c:1550
 #, c-format
 msgid ""
 "%s: `position' must be used for a specific level in all sections or none"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1560
+#: locale/programs/ld-collate.c:1575
 #, c-format
 msgid "symbol `%s' not defined"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1636 locale/programs/ld-collate.c:1742
+#: locale/programs/ld-collate.c:1651 locale/programs/ld-collate.c:1757
 #, c-format
 msgid "symbol `%s' has the same encoding as"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1640 locale/programs/ld-collate.c:1746
+#: locale/programs/ld-collate.c:1655 locale/programs/ld-collate.c:1761
 #, c-format
 msgid "symbol `%s'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1788
+#: locale/programs/ld-collate.c:1803
 msgid "no definition of `UNDEFINED'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:1817
+#: locale/programs/ld-collate.c:1832
 msgid "too many errors; giving up"
 msgstr ""
 
-#: locale/programs/ld-collate.c:2720
+#: locale/programs/ld-collate.c:2735
 #, c-format
 msgid "%s: duplicate definition of `%s'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:2756
+#: locale/programs/ld-collate.c:2771
 #, c-format
 msgid "%s: duplicate declaration of section `%s'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:2895
+#: locale/programs/ld-collate.c:2910
 #, c-format
 msgid "%s: unknown character in collating symbol name"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3027
+#: locale/programs/ld-collate.c:3042
 #, c-format
 msgid "%s: unknown character in equivalent definition name"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3040
+#: locale/programs/ld-collate.c:3055
 #, c-format
 msgid "%s: unknown character in equivalent definition value"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3050
+#: locale/programs/ld-collate.c:3065
 #, c-format
 msgid "%s: unknown symbol `%s' in equivalent definition"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3059
+#: locale/programs/ld-collate.c:3074
 msgid "error while adding equivalent collating symbol"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3089
+#: locale/programs/ld-collate.c:3104
 #, c-format
 msgid "duplicate definition of script `%s'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3137
+#: locale/programs/ld-collate.c:3152
 #, c-format
 msgid "%s: unknown section name `%s'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3165
+#: locale/programs/ld-collate.c:3180
 #, c-format
 msgid "%s: multiple order definitions for section `%s'"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3190
+#: locale/programs/ld-collate.c:3205
 #, c-format
 msgid "%s: invalid number of sorting rules"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3217
+#: locale/programs/ld-collate.c:3232
 #, c-format
 msgid "%s: multiple order definitions for unnamed section"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3271 locale/programs/ld-collate.c:3394
-#: locale/programs/ld-collate.c:3753
+#: locale/programs/ld-collate.c:3286 locale/programs/ld-collate.c:3414
+#: locale/programs/ld-collate.c:3778
 #, c-format
 msgid "%s: missing `order_end' keyword"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3329
+#: locale/programs/ld-collate.c:3347
 #, c-format
 msgid "%s: order for collating symbol %.*s not yet defined"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3345
+#: locale/programs/ld-collate.c:3365
 #, c-format
 msgid "%s: order for collating element %.*s not yet defined"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3356
+#: locale/programs/ld-collate.c:3376
 #, c-format
 msgid "%s: cannot reorder after %.*s: symbol not known"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3408 locale/programs/ld-collate.c:3765
+#: locale/programs/ld-collate.c:3428 locale/programs/ld-collate.c:3790
 #, c-format
 msgid "%s: missing `reorder-end' keyword"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3442 locale/programs/ld-collate.c:3637
+#: locale/programs/ld-collate.c:3462 locale/programs/ld-collate.c:3662
 #, c-format
 msgid "%s: section `%.*s' not known"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3507
+#: locale/programs/ld-collate.c:3527
 #, c-format
 msgid "%s: bad symbol <%.*s>"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3700
+#: locale/programs/ld-collate.c:3725
 #, c-format
 msgid "%s: cannot have `%s' as end of ellipsis range"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3749
+#: locale/programs/ld-collate.c:3774
 #, c-format
 msgid "%s: empty category description not allowed"
 msgstr ""
 
-#: locale/programs/ld-collate.c:3768
+#: locale/programs/ld-collate.c:3793
 #, c-format
 msgid "%s: missing `reorder-sections-end' keyword"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:435
+#: locale/programs/ld-ctype.c:440
 msgid "No character set name specified in charmap"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:464
+#: locale/programs/ld-ctype.c:469
 #, c-format
 msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:479
+#: locale/programs/ld-ctype.c:484
 #, c-format
 msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:493 locale/programs/ld-ctype.c:551
+#: locale/programs/ld-ctype.c:498 locale/programs/ld-ctype.c:556
 #, c-format
 msgid "internal error in %s, line %u"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:522
+#: locale/programs/ld-ctype.c:527
 #, c-format
 msgid "character '%s' in class `%s' must be in class `%s'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:538
+#: locale/programs/ld-ctype.c:543
 #, c-format
 msgid "character '%s' in class `%s' must not be in class `%s'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:568 locale/programs/ld-ctype.c:606
+#: locale/programs/ld-ctype.c:573 locale/programs/ld-ctype.c:611
 #, c-format
 msgid "<SP> character not in class `%s'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:580 locale/programs/ld-ctype.c:617
+#: locale/programs/ld-ctype.c:585 locale/programs/ld-ctype.c:622
 #, c-format
 msgid "<SP> character must not be in class `%s'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:595
+#: locale/programs/ld-ctype.c:600
 msgid "character <SP> not defined in character map"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:709
+#: locale/programs/ld-ctype.c:714
 msgid "`digit' category has not entries in groups of ten"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:758
+#: locale/programs/ld-ctype.c:763
 msgid "no input digits defined and none of the standard names in the charmap"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:823
+#: locale/programs/ld-ctype.c:828
 msgid "not all characters used in `outdigit' are available in the charmap"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:840
+#: locale/programs/ld-ctype.c:845
 msgid "not all characters used in `outdigit' are available in the repertoire"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:1235
+#: locale/programs/ld-ctype.c:1245
 #, c-format
 msgid "character class `%s' already defined"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:1241
+#: locale/programs/ld-ctype.c:1251
 #, c-format
 msgid "implementation limit: no more than %Zd character classes allowed"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:1267
+#: locale/programs/ld-ctype.c:1277
 #, c-format
 msgid "character map `%s' already defined"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:1273
+#: locale/programs/ld-ctype.c:1283
 #, c-format
 msgid "implementation limit: no more than %d character maps allowed"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:1538 locale/programs/ld-ctype.c:1663
-#: locale/programs/ld-ctype.c:1769 locale/programs/ld-ctype.c:2455
-#: locale/programs/ld-ctype.c:3443
+#: locale/programs/ld-ctype.c:1548 locale/programs/ld-ctype.c:1673
+#: locale/programs/ld-ctype.c:1779 locale/programs/ld-ctype.c:2465
+#: locale/programs/ld-ctype.c:3461
 #, c-format
 msgid "%s: field `%s' does not contain exactly ten entries"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:1566 locale/programs/ld-ctype.c:2137
+#: locale/programs/ld-ctype.c:1576 locale/programs/ld-ctype.c:2147
 #, c-format
 msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:1693
+#: locale/programs/ld-ctype.c:1703
 msgid "start and end character sequence of range must have the same length"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:1700
+#: locale/programs/ld-ctype.c:1710
 msgid "to-value character sequence is smaller than from-value sequence"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2057 locale/programs/ld-ctype.c:2108
+#: locale/programs/ld-ctype.c:2067 locale/programs/ld-ctype.c:2118
 msgid "premature end of `translit_ignore' definition"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2063 locale/programs/ld-ctype.c:2114
-#: locale/programs/ld-ctype.c:2156
+#: locale/programs/ld-ctype.c:2073 locale/programs/ld-ctype.c:2124
+#: locale/programs/ld-ctype.c:2166
 msgid "syntax error"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2287
+#: locale/programs/ld-ctype.c:2297
 #, c-format
 msgid "%s: syntax error in definition of new character class"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2302
+#: locale/programs/ld-ctype.c:2312
 #, c-format
 msgid "%s: syntax error in definition of new character map"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2477
+#: locale/programs/ld-ctype.c:2487
 msgid "ellipsis range must be marked by two operands of same type"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2486
+#: locale/programs/ld-ctype.c:2496
 msgid ""
 "with symbolic name range values the absolute ellipsis `...' must not be used"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2501
+#: locale/programs/ld-ctype.c:2511
 msgid ""
 "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2515
+#: locale/programs/ld-ctype.c:2525
 msgid ""
 "with character code range values one must use the absolute ellipsis `...'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2666
+#: locale/programs/ld-ctype.c:2676
 #, c-format
 msgid "duplicated definition for mapping `%s'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2744 locale/programs/ld-ctype.c:2888
+#: locale/programs/ld-ctype.c:2762 locale/programs/ld-ctype.c:2906
 #, c-format
 msgid "%s: `translit_start' section does not end with `translit_end'"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2839
+#: locale/programs/ld-ctype.c:2857
 #, c-format
 msgid "%s: duplicate `default_missing' definition"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2844
+#: locale/programs/ld-ctype.c:2862
 msgid "previous definition was here"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:2866
+#: locale/programs/ld-ctype.c:2884
 #, c-format
 msgid "%s: no representable `default_missing' definition found"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3019
+#: locale/programs/ld-ctype.c:3037
 #, c-format
 msgid "%s: character `%s' not defined in charmap while needed as default value"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3024 locale/programs/ld-ctype.c:3108
-#: locale/programs/ld-ctype.c:3128 locale/programs/ld-ctype.c:3149
-#: locale/programs/ld-ctype.c:3170 locale/programs/ld-ctype.c:3191
-#: locale/programs/ld-ctype.c:3212 locale/programs/ld-ctype.c:3252
-#: locale/programs/ld-ctype.c:3273 locale/programs/ld-ctype.c:3340
+#: locale/programs/ld-ctype.c:3042 locale/programs/ld-ctype.c:3126
+#: locale/programs/ld-ctype.c:3146 locale/programs/ld-ctype.c:3167
+#: locale/programs/ld-ctype.c:3188 locale/programs/ld-ctype.c:3209
+#: locale/programs/ld-ctype.c:3230 locale/programs/ld-ctype.c:3270
+#: locale/programs/ld-ctype.c:3291 locale/programs/ld-ctype.c:3358
 #, c-format
 msgid "%s: character `%s' in charmap not representable with one byte"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3103 locale/programs/ld-ctype.c:3123
-#: locale/programs/ld-ctype.c:3165 locale/programs/ld-ctype.c:3186
-#: locale/programs/ld-ctype.c:3207 locale/programs/ld-ctype.c:3247
-#: locale/programs/ld-ctype.c:3268 locale/programs/ld-ctype.c:3335
-#: locale/programs/ld-ctype.c:3377 locale/programs/ld-ctype.c:3402
+#: locale/programs/ld-ctype.c:3121 locale/programs/ld-ctype.c:3141
+#: locale/programs/ld-ctype.c:3183 locale/programs/ld-ctype.c:3204
+#: locale/programs/ld-ctype.c:3225 locale/programs/ld-ctype.c:3265
+#: locale/programs/ld-ctype.c:3286 locale/programs/ld-ctype.c:3353
+#: locale/programs/ld-ctype.c:3395 locale/programs/ld-ctype.c:3420
 #, c-format
 msgid "%s: character `%s' not defined while needed as default value"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3144
+#: locale/programs/ld-ctype.c:3162
 #, c-format
 msgid "character `%s' not defined while needed as default value"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3384 locale/programs/ld-ctype.c:3409
+#: locale/programs/ld-ctype.c:3402 locale/programs/ld-ctype.c:3427
 #, c-format
 msgid ""
 "%s: character `%s' needed as default value not representable with one byte"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3464
+#: locale/programs/ld-ctype.c:3482
 msgid "no output digits defined and none of the standard names in the charmap"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3755
+#: locale/programs/ld-ctype.c:3773
 #, c-format
 msgid "%s: transliteration data from locale `%s' not available"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3851
+#: locale/programs/ld-ctype.c:3869
 #, c-format
 msgid "%s: table for class \"%s\": %lu bytes\n"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:3920
+#: locale/programs/ld-ctype.c:3938
 #, c-format
 msgid "%s: table for map \"%s\": %lu bytes\n"
 msgstr ""
 
-#: locale/programs/ld-ctype.c:4053
+#: locale/programs/ld-ctype.c:4071
 #, c-format
 msgid "%s: table for width: %lu bytes\n"
 msgstr ""
@@ -1140,39 +1155,39 @@ msgstr ""
 msgid "%s: value of field `int_curr_symbol' has wrong length"
 msgstr ""
 
-#: locale/programs/ld-monetary.c:232
+#: locale/programs/ld-monetary.c:237
 #, c-format
 msgid ""
 "%s: value of field `int_curr_symbol' does not correspond to a valid name in "
 "ISO 4217"
 msgstr ""
 
-#: locale/programs/ld-monetary.c:250 locale/programs/ld-numeric.c:119
+#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:119
 #, c-format
 msgid "%s: value for field `%s' must not be the empty string"
 msgstr ""
 
-#: locale/programs/ld-monetary.c:278 locale/programs/ld-monetary.c:308
+#: locale/programs/ld-monetary.c:284 locale/programs/ld-monetary.c:314
 #, c-format
 msgid "%s: value for field `%s' must be in range %d...%d"
 msgstr ""
 
-#: locale/programs/ld-monetary.c:740 locale/programs/ld-numeric.c:275
+#: locale/programs/ld-monetary.c:746 locale/programs/ld-numeric.c:275
 #, c-format
 msgid "%s: value for field `%s' must be a single character"
 msgstr ""
 
-#: locale/programs/ld-monetary.c:837 locale/programs/ld-numeric.c:319
+#: locale/programs/ld-monetary.c:843 locale/programs/ld-numeric.c:319
 #, c-format
 msgid "%s: `-1' must be last entry in `%s' field"
 msgstr ""
 
-#: locale/programs/ld-monetary.c:859 locale/programs/ld-numeric.c:340
+#: locale/programs/ld-monetary.c:865 locale/programs/ld-numeric.c:340
 #, c-format
 msgid "%s: values for field `%s' must be smaller than 127"
 msgstr ""
 
-#: locale/programs/ld-monetary.c:902
+#: locale/programs/ld-monetary.c:908
 msgid "conversion rate value cannot be zero"
 msgstr ""
 
@@ -1258,62 +1273,62 @@ msgstr ""
 msgid "%s: values for field `%s' must not be larger than %d"
 msgstr ""
 
-#: locale/programs/ld-time.c:984
+#: locale/programs/ld-time.c:987
 #, c-format
 msgid "%s: too few values for field `%s'"
 msgstr ""
 
-#: locale/programs/ld-time.c:1029
+#: locale/programs/ld-time.c:1032
 msgid "extra trailing semicolon"
 msgstr ""
 
-#: locale/programs/ld-time.c:1032
+#: locale/programs/ld-time.c:1035
 #, c-format
 msgid "%s: too many values for field `%s'"
 msgstr ""
 
-#: locale/programs/linereader.c:275
+#: locale/programs/linereader.c:131
+msgid "trailing garbage at end of line"
+msgstr ""
+
+#: locale/programs/linereader.c:305
 msgid "garbage at end of number"
 msgstr ""
 
-#: locale/programs/linereader.c:387
+#: locale/programs/linereader.c:417
 msgid "garbage at end of character code specification"
 msgstr ""
 
-#: locale/programs/linereader.c:473
+#: locale/programs/linereader.c:503
 msgid "unterminated symbolic name"
 msgstr ""
 
-#: locale/programs/linereader.c:537 catgets/gencat.c:1195
+#: locale/programs/linereader.c:567 catgets/gencat.c:1196
 msgid "invalid escape sequence"
 msgstr ""
 
-#: locale/programs/linereader.c:600
+#: locale/programs/linereader.c:630
 msgid "illegal escape sequence at end of string"
 msgstr ""
 
-#: locale/programs/linereader.c:604 locale/programs/linereader.c:832
+#: locale/programs/linereader.c:634 locale/programs/linereader.c:862
 msgid "unterminated string"
 msgstr ""
 
-#: locale/programs/linereader.c:646
+#: locale/programs/linereader.c:676
 msgid "non-symbolic character value should not be used"
 msgstr ""
 
-#: locale/programs/linereader.c:793
+#: locale/programs/linereader.c:823
 #, c-format
 msgid "symbol `%.*s' not in charmap"
 msgstr ""
 
-#: locale/programs/linereader.c:814
+#: locale/programs/linereader.c:844
 #, c-format
 msgid "symbol `%.*s' not in repertoire map"
 msgstr ""
 
-#: locale/programs/linereader.h:162
-msgid "trailing garbage at end of line"
-msgstr ""
-
 #: locale/programs/locale.c:75
 msgid "System information:"
 msgstr ""
@@ -1343,16 +1358,35 @@ msgid "Print more information"
 msgstr ""
 
 #: locale/programs/locale.c:88
-msgid "Get locale-specific information."
+msgid ""
+"Get locale-specific information.\013For bug reporting instructions, please "
+"see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
 msgstr ""
 
-#: locale/programs/locale.c:91
+#: locale/programs/locale.c:93
 msgid ""
 "NAME\n"
 "[-a|-m]"
 msgstr ""
 
-#: locale/programs/locale.c:512
+#: locale/programs/locale.c:194
+msgid "Cannot set LC_CTYPE to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:196
+msgid "Cannot set LC_MESSAGES to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:209
+msgid "Cannot set LC_COLLATE to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:225
+msgid "Cannot set LC_ALL to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:501
 msgid "while preparing output"
 msgstr ""
 
@@ -1444,7 +1478,7 @@ msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
 msgstr ""
 
 #: locale/programs/localedef.c:258 locale/programs/localedef.c:274
-#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
+#: locale/programs/localedef.c:600 locale/programs/localedef.c:620
 #, c-format
 msgid "cannot open locale definition file `%s'"
 msgstr ""
@@ -1463,29 +1497,29 @@ msgid ""
 "%s"
 msgstr ""
 
-#: locale/programs/localedef.c:567
+#: locale/programs/localedef.c:568
 msgid "circular dependencies between locale definitions"
 msgstr ""
 
-#: locale/programs/localedef.c:573
+#: locale/programs/localedef.c:574
 #, c-format
 msgid "cannot add already read locale `%s' a second time"
 msgstr ""
 
-#: locale/programs/locarchive.c:89 locale/programs/locarchive.c:259
+#: locale/programs/locarchive.c:89 locale/programs/locarchive.c:258
 msgid "cannot create temporary file"
 msgstr ""
 
-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:305
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:304
 msgid "cannot initialize archive file"
 msgstr ""
 
-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:312
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:311
 msgid "cannot resize archive file"
 msgstr ""
 
-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:321
-#: locale/programs/locarchive.c:511
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:320
+#: locale/programs/locarchive.c:508
 msgid "cannot map archive header"
 msgstr ""
 
@@ -1497,162 +1531,162 @@ msgstr ""
 msgid "cannot change mode of new locale archive"
 msgstr ""
 
-#: locale/programs/locarchive.c:253
+#: locale/programs/locarchive.c:252
 msgid "cannot map locale archive file"
 msgstr ""
 
-#: locale/programs/locarchive.c:329
+#: locale/programs/locarchive.c:328
 msgid "cannot lock new archive"
 msgstr ""
 
-#: locale/programs/locarchive.c:380
+#: locale/programs/locarchive.c:377
 msgid "cannot extend locale archive file"
 msgstr ""
 
-#: locale/programs/locarchive.c:389
+#: locale/programs/locarchive.c:386
 msgid "cannot change mode of resized locale archive"
 msgstr ""
 
-#: locale/programs/locarchive.c:397
+#: locale/programs/locarchive.c:394
 msgid "cannot rename new archive"
 msgstr ""
 
-#: locale/programs/locarchive.c:450
+#: locale/programs/locarchive.c:447
 #, c-format
 msgid "cannot open locale archive \"%s\""
 msgstr ""
 
-#: locale/programs/locarchive.c:455
+#: locale/programs/locarchive.c:452
 #, c-format
 msgid "cannot stat locale archive \"%s\""
 msgstr ""
 
-#: locale/programs/locarchive.c:474
+#: locale/programs/locarchive.c:471
 #, c-format
 msgid "cannot lock locale archive \"%s\""
 msgstr ""
 
-#: locale/programs/locarchive.c:497
+#: locale/programs/locarchive.c:494
 msgid "cannot read archive header"
 msgstr ""
 
-#: locale/programs/locarchive.c:557
+#: locale/programs/locarchive.c:554
 #, c-format
 msgid "locale '%s' already exists"
 msgstr ""
 
-#: locale/programs/locarchive.c:788 locale/programs/locarchive.c:803
-#: locale/programs/locarchive.c:815 locale/programs/locarchive.c:827
-#: locale/programs/locfile.c:343
+#: locale/programs/locarchive.c:785 locale/programs/locarchive.c:800
+#: locale/programs/locarchive.c:812 locale/programs/locarchive.c:824
+#: locale/programs/locfile.c:344
 msgid "cannot add to locale archive"
 msgstr ""
 
-#: locale/programs/locarchive.c:982
+#: locale/programs/locarchive.c:979
 #, c-format
 msgid "locale alias file `%s' not found"
 msgstr ""
 
-#: locale/programs/locarchive.c:1126
+#: locale/programs/locarchive.c:1123
 #, c-format
 msgid "Adding %s\n"
 msgstr ""
 
-#: locale/programs/locarchive.c:1132
+#: locale/programs/locarchive.c:1129
 #, c-format
 msgid "stat of \"%s\" failed: %s: ignored"
 msgstr ""
 
-#: locale/programs/locarchive.c:1138
+#: locale/programs/locarchive.c:1135
 #, c-format
 msgid "\"%s\" is no directory; ignored"
 msgstr ""
 
-#: locale/programs/locarchive.c:1145
+#: locale/programs/locarchive.c:1142
 #, c-format
 msgid "cannot open directory \"%s\": %s: ignored"
 msgstr ""
 
-#: locale/programs/locarchive.c:1217
+#: locale/programs/locarchive.c:1214
 #, c-format
 msgid "incomplete set of locale files in \"%s\""
 msgstr ""
 
-#: locale/programs/locarchive.c:1281
+#: locale/programs/locarchive.c:1278
 #, c-format
 msgid "cannot read all files in \"%s\": ignored"
 msgstr ""
 
-#: locale/programs/locarchive.c:1351
+#: locale/programs/locarchive.c:1348
 #, c-format
 msgid "locale \"%s\" not in archive"
 msgstr ""
 
-#: locale/programs/locfile.c:132
+#: locale/programs/locfile.c:133
 #, c-format
 msgid "argument to `%s' must be a single character"
 msgstr ""
 
-#: locale/programs/locfile.c:251
+#: locale/programs/locfile.c:252
 msgid "syntax error: not inside a locale definition section"
 msgstr ""
 
-#: locale/programs/locfile.c:625
+#: locale/programs/locfile.c:626
 #, c-format
 msgid "cannot open output file `%s' for category `%s'"
 msgstr ""
 
-#: locale/programs/locfile.c:649
+#: locale/programs/locfile.c:650
 #, c-format
 msgid "failure while writing data for category `%s'"
 msgstr ""
 
-#: locale/programs/locfile.c:745
+#: locale/programs/locfile.c:746
 #, c-format
 msgid "cannot create output file `%s' for category `%s'"
 msgstr ""
 
-#: locale/programs/locfile.h:59
+#: locale/programs/locfile.c:782
 msgid "expect string argument for `copy'"
 msgstr ""
 
-#: locale/programs/locfile.h:63
+#: locale/programs/locfile.c:786
 msgid "locale name should consist only of portable characters"
 msgstr ""
 
-#: locale/programs/locfile.h:82
+#: locale/programs/locfile.c:805
 msgid "no other keyword shall be specified when `copy' is used"
 msgstr ""
 
-#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
-#: locale/programs/repertoire.c:296
+#: locale/programs/repertoire.c:231 locale/programs/repertoire.c:272
+#: locale/programs/repertoire.c:297
 #, c-format
 msgid "syntax error in repertoire map definition: %s"
 msgstr ""
 
-#: locale/programs/repertoire.c:272
+#: locale/programs/repertoire.c:273
 msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
 msgstr ""
 
-#: locale/programs/repertoire.c:332
+#: locale/programs/repertoire.c:333
 msgid "cannot safe new repertoire map"
 msgstr ""
 
-#: locale/programs/repertoire.c:343
+#: locale/programs/repertoire.c:344
 #, c-format
 msgid "repertoire map file `%s' not found"
 msgstr ""
 
-#: locale/programs/repertoire.c:450
+#: locale/programs/repertoire.c:451
 #, c-format
 msgid "<%s> and <%s> are invalid names for range"
 msgstr ""
 
-#: locale/programs/repertoire.c:457
+#: locale/programs/repertoire.c:458
 msgid "upper limit in range is not smaller then lower limit"
 msgstr ""
 
-#: locale/programs/xmalloc.c:70 malloc/obstack.c:505 malloc/obstack.c:508
-#: posix/getconf.c:1002
+#: locale/programs/xmalloc.c:70 malloc/obstack.c:415 malloc/obstack.c:418
+#: posix/getconf.c:1104 elf/ldconfig.c:1101
 msgid "memory exhausted"
 msgstr ""
 
@@ -1666,7 +1700,8 @@ msgstr ""
 msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
 msgstr ""
 
-#: intl/tst-codeset.c:40 intl/tst-codeset.c:50
+#: intl/tst-codeset.c:40 intl/tst-codeset.c:50 intl/tst-gettext3.c:42
+#: intl/tst-gettext3.c:52
 msgid "cheese"
 msgstr ""
 
@@ -1678,7 +1713,7 @@ msgstr ""
 msgid "Another string for testing."
 msgstr ""
 
-#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:84
+#: catgets/gencat.c:111 catgets/gencat.c:115 nscd/nscd.c:99
 msgid "NAME"
 msgstr ""
 
@@ -1707,103 +1742,102 @@ msgid ""
 "[OUTPUT-FILE [INPUT-FILE]...]"
 msgstr ""
 
-#: catgets/gencat.c:282
+#: catgets/gencat.c:283
 msgid "*standard input*"
 msgstr ""
 
-#: catgets/gencat.c:417 catgets/gencat.c:494
+#: catgets/gencat.c:418 catgets/gencat.c:495
 msgid "illegal set number"
 msgstr ""
 
-#: catgets/gencat.c:444
+#: catgets/gencat.c:445
 msgid "duplicate set definition"
 msgstr ""
 
-#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+#: catgets/gencat.c:447 catgets/gencat.c:624 catgets/gencat.c:678
 msgid "this is the first definition"
 msgstr ""
 
-#: catgets/gencat.c:522
+#: catgets/gencat.c:523
 #, c-format
 msgid "unknown set `%s'"
 msgstr ""
 
-#: catgets/gencat.c:563
+#: catgets/gencat.c:564
 msgid "invalid quote character"
 msgstr ""
 
-#: catgets/gencat.c:576
+#: catgets/gencat.c:577
 #, c-format
 msgid "unknown directive `%s': line ignored"
 msgstr ""
 
-#: catgets/gencat.c:621
+#: catgets/gencat.c:622
 msgid "duplicated message number"
 msgstr ""
 
-#: catgets/gencat.c:674
+#: catgets/gencat.c:675
 msgid "duplicated message identifier"
 msgstr ""
 
-#: catgets/gencat.c:731
+#: catgets/gencat.c:732
 msgid "invalid character: message ignored"
 msgstr ""
 
-#: catgets/gencat.c:774
+#: catgets/gencat.c:775
 msgid "invalid line"
 msgstr ""
 
-#: catgets/gencat.c:828
+#: catgets/gencat.c:829
 msgid "malformed line ignored"
 msgstr ""
 
-#: catgets/gencat.c:992 catgets/gencat.c:1033
+#: catgets/gencat.c:993 catgets/gencat.c:1034
 #, c-format
 msgid "cannot open output file `%s'"
 msgstr ""
 
-#: catgets/gencat.c:1217
+#: catgets/gencat.c:1218
 msgid "unterminated message"
 msgstr ""
 
-#: catgets/gencat.c:1241
+#: catgets/gencat.c:1242
 msgid "while opening old catalog file"
 msgstr ""
 
-#: catgets/gencat.c:1332
+#: catgets/gencat.c:1333
 msgid "conversion modules not available"
 msgstr ""
 
-#: catgets/gencat.c:1358
+#: catgets/gencat.c:1359
 msgid "cannot determine escape character"
 msgstr ""
 
 #: stdlib/../sysdeps/unix/sysv/linux/ia64/makecontext.c:63
+#, c-format
 msgid "makecontext: does not know how to handle more than 8 arguments\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:12 posix/regcomp.c:133
-#: nis/nis_error.c:29 nis/ypclnt.c:787 nis/ypclnt.c:861
+#: stdio-common/../sysdeps/gnu/errlist.c:20 posix/regcomp.c:160
+#: nis/nis_error.c:29 nis/ypclnt.c:793 nis/ypclnt.c:860
 msgid "Success"
 msgstr ""
 
 #. TRANS Operation not permitted; only the owner of the file (or other resource)
 #. TRANS or processes with special privileges can perform the operation.
-#: stdio-common/../sysdeps/gnu/errlist.c:17
+#: stdio-common/../sysdeps/gnu/errlist.c:25
 msgid "Operation not permitted"
 msgstr ""
 
 #. TRANS No such file or directory.  This is a ``file doesn't exist'' error
 #. TRANS for ordinary files that are referenced in contexts where they are
 #. TRANS expected to already exist.
-#: stdio-common/../sysdeps/gnu/errlist.c:28
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32
+#: stdio-common/../sysdeps/gnu/errlist.c:36
 msgid "No such file or directory"
 msgstr ""
 
 #. TRANS No process matches the specified process ID.
-#: stdio-common/../sysdeps/gnu/errlist.c:37
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33
+#: stdio-common/../sysdeps/gnu/errlist.c:45
 msgid "No such process"
 msgstr ""
 
@@ -1814,13 +1848,12 @@ msgstr ""
 #. TRANS You can choose to have functions resume after a signal that is handled,
 #. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
 #. TRANS Primitives}.
-#: stdio-common/../sysdeps/gnu/errlist.c:52
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34
+#: stdio-common/../sysdeps/gnu/errlist.c:60
 msgid "Interrupted system call"
 msgstr ""
 
 #. TRANS Input/output error; usually used for physical read or write errors.
-#: stdio-common/../sysdeps/gnu/errlist.c:61
+#: stdio-common/../sysdeps/gnu/errlist.c:69
 msgid "Input/output error"
 msgstr ""
 
@@ -1829,8 +1862,7 @@ msgstr ""
 #. TRANS This can mean that the device file was installed incorrectly, or that
 #. TRANS the physical device is missing or not correctly attached to the
 #. TRANS computer.
-#: stdio-common/../sysdeps/gnu/errlist.c:74
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36
+#: stdio-common/../sysdeps/gnu/errlist.c:82
 msgid "No such device or address"
 msgstr ""
 
@@ -1838,29 +1870,27 @@ msgstr ""
 #. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
 #. TRANS File}) occupy too much memory space.  This condition never arises in the
 #. TRANS GNU system.
-#: stdio-common/../sysdeps/gnu/errlist.c:86
+#: stdio-common/../sysdeps/gnu/errlist.c:94
 msgid "Argument list too long"
 msgstr ""
 
 #. TRANS Invalid executable file format.  This condition is detected by the
 #. TRANS @code{exec} functions; see @ref{Executing a File}.
-#: stdio-common/../sysdeps/gnu/errlist.c:96
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38
+#: stdio-common/../sysdeps/gnu/errlist.c:104
 msgid "Exec format error"
 msgstr ""
 
 #. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
 #. TRANS closed or reading from a descriptor open only for writing (or vice
 #. TRANS versa).
-#: stdio-common/../sysdeps/gnu/errlist.c:107
+#: stdio-common/../sysdeps/gnu/errlist.c:115
 msgid "Bad file descriptor"
 msgstr ""
 
 #. TRANS There are no child processes.  This error happens on operations that are
 #. TRANS supposed to manipulate child processes, when there aren't any processes
 #. TRANS to manipulate.
-#: stdio-common/../sysdeps/gnu/errlist.c:118
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40
+#: stdio-common/../sysdeps/gnu/errlist.c:126
 msgid "No child processes"
 msgstr ""
 
@@ -1868,83 +1898,75 @@ msgstr ""
 #. TRANS deadlock situation.  The system does not guarantee that it will notice
 #. TRANS all such situations.  This error means you got lucky and the system
 #. TRANS noticed; it might just hang.  @xref{File Locks}, for an example.
-#: stdio-common/../sysdeps/gnu/errlist.c:130
+#: stdio-common/../sysdeps/gnu/errlist.c:138
 msgid "Resource deadlock avoided"
 msgstr ""
 
 #. TRANS No memory available.  The system cannot allocate more virtual memory
 #. TRANS because its capacity is full.
-#: stdio-common/../sysdeps/gnu/errlist.c:140
+#: stdio-common/../sysdeps/gnu/errlist.c:148
 msgid "Cannot allocate memory"
 msgstr ""
 
 #. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: stdio-common/../sysdeps/gnu/errlist.c:149
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43
-#: nis/nis_error.c:39 nis/ypclnt.c:817
+#: stdio-common/../sysdeps/gnu/errlist.c:157 nis/nis_error.c:39
+#: nis/ypclnt.c:823
 msgid "Permission denied"
 msgstr ""
 
 #. TRANS Bad address; an invalid pointer was detected.
 #. TRANS In the GNU system, this error never happens; you get a signal instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:159
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44
+#: stdio-common/../sysdeps/gnu/errlist.c:167
 msgid "Bad address"
 msgstr ""
 
 #. TRANS A file that isn't a block special file was given in a situation that
 #. TRANS requires one.  For example, trying to mount an ordinary file as a file
 #. TRANS system in Unix gives this error.
-#: stdio-common/../sysdeps/gnu/errlist.c:170
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45
+#: stdio-common/../sysdeps/gnu/errlist.c:178
 msgid "Block device required"
 msgstr ""
 
 #. TRANS Resource busy; a system resource that can't be shared is already in use.
 #. TRANS For example, if you try to delete a file that is the root of a currently
 #. TRANS mounted filesystem, you get this error.
-#: stdio-common/../sysdeps/gnu/errlist.c:181
+#: stdio-common/../sysdeps/gnu/errlist.c:189
 msgid "Device or resource busy"
 msgstr ""
 
 #. TRANS File exists; an existing file was specified in a context where it only
 #. TRANS makes sense to specify a new file.
-#: stdio-common/../sysdeps/gnu/errlist.c:191
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47
+#: stdio-common/../sysdeps/gnu/errlist.c:199
 msgid "File exists"
 msgstr ""
 
 #. TRANS An attempt to make an improper link across file systems was detected.
 #. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
 #. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
-#: stdio-common/../sysdeps/gnu/errlist.c:202
+#: stdio-common/../sysdeps/gnu/errlist.c:210
 msgid "Invalid cross-device link"
 msgstr ""
 
 #. TRANS The wrong type of device was given to a function that expects a
 #. TRANS particular sort of device.
-#: stdio-common/../sysdeps/gnu/errlist.c:212
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49
+#: stdio-common/../sysdeps/gnu/errlist.c:220
 msgid "No such device"
 msgstr ""
 
 #. TRANS A file that isn't a directory was specified when a directory is required.
-#: stdio-common/../sysdeps/gnu/errlist.c:221
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50
+#: stdio-common/../sysdeps/gnu/errlist.c:229
 msgid "Not a directory"
 msgstr ""
 
 #. TRANS File is a directory; you cannot open a directory for writing,
 #. TRANS or create or remove hard links to it.
-#: stdio-common/../sysdeps/gnu/errlist.c:231
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51
+#: stdio-common/../sysdeps/gnu/errlist.c:239
 msgid "Is a directory"
 msgstr ""
 
 #. TRANS Invalid argument.  This is used to indicate various kinds of problems
 #. TRANS with passing the wrong argument to a library function.
-#: stdio-common/../sysdeps/gnu/errlist.c:241
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52
+#: stdio-common/../sysdeps/gnu/errlist.c:249
 msgid "Invalid argument"
 msgstr ""
 
@@ -1955,22 +1977,20 @@ msgstr ""
 #. TRANS limit that can usually be increased.  If you get this error, you might
 #. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
 #. TRANS @pxref{Limits on Resources}.
-#: stdio-common/../sysdeps/gnu/errlist.c:256
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54
+#: stdio-common/../sysdeps/gnu/errlist.c:264
 msgid "Too many open files"
 msgstr ""
 
 #. TRANS There are too many distinct file openings in the entire system.  Note
 #. TRANS that any number of linked channels count as just one file opening; see
 #. TRANS @ref{Linked Channels}.  This error never occurs in the GNU system.
-#: stdio-common/../sysdeps/gnu/errlist.c:267
+#: stdio-common/../sysdeps/gnu/errlist.c:275
 msgid "Too many open files in system"
 msgstr ""
 
 #. TRANS Inappropriate I/O control operation, such as trying to set terminal
 #. TRANS modes on an ordinary file.
-#: stdio-common/../sysdeps/gnu/errlist.c:277
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55
+#: stdio-common/../sysdeps/gnu/errlist.c:285
 msgid "Inappropriate ioctl for device"
 msgstr ""
 
@@ -1979,53 +1999,47 @@ msgstr ""
 #. TRANS debugger to run a program is considered having it open for writing and
 #. TRANS will cause this error.  (The name stands for ``text file busy''.)  This
 #. TRANS is not an error in the GNU system; the text is copied as necessary.
-#: stdio-common/../sysdeps/gnu/errlist.c:290
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56
+#: stdio-common/../sysdeps/gnu/errlist.c:298
 msgid "Text file busy"
 msgstr ""
 
 #. TRANS File too big; the size of a file would be larger than allowed by the system.
-#: stdio-common/../sysdeps/gnu/errlist.c:299
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57
+#: stdio-common/../sysdeps/gnu/errlist.c:307
 msgid "File too large"
 msgstr ""
 
 #. TRANS No space left on device; write operation on a file failed because the
 #. TRANS disk is full.
-#: stdio-common/../sysdeps/gnu/errlist.c:309
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58
+#: stdio-common/../sysdeps/gnu/errlist.c:317
 msgid "No space left on device"
 msgstr ""
 
 #. TRANS Invalid seek operation (such as on a pipe).
-#: stdio-common/../sysdeps/gnu/errlist.c:318
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59
+#: stdio-common/../sysdeps/gnu/errlist.c:326
 msgid "Illegal seek"
 msgstr ""
 
 #. TRANS An attempt was made to modify something on a read-only file system.
-#: stdio-common/../sysdeps/gnu/errlist.c:327
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60
+#: stdio-common/../sysdeps/gnu/errlist.c:335
 msgid "Read-only file system"
 msgstr ""
 
 #. TRANS Too many links; the link count of a single file would become too large.
 #. TRANS @code{rename} can cause this error if the file being renamed already has
 #. TRANS as many links as it can take (@pxref{Renaming Files}).
-#: stdio-common/../sysdeps/gnu/errlist.c:338
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61
+#: stdio-common/../sysdeps/gnu/errlist.c:346
 msgid "Too many links"
 msgstr ""
 
 #. TRANS Domain error; used by mathematical functions when an argument value does
 #. TRANS not fall into the domain over which the function is defined.
-#: stdio-common/../sysdeps/gnu/errlist.c:361
+#: stdio-common/../sysdeps/gnu/errlist.c:369
 msgid "Numerical argument out of domain"
 msgstr ""
 
 #. TRANS Range error; used by mathematical functions when the result value is
 #. TRANS not representable because of overflow or underflow.
-#: stdio-common/../sysdeps/gnu/errlist.c:371
+#: stdio-common/../sysdeps/gnu/errlist.c:379
 msgid "Numerical result out of range"
 msgstr ""
 
@@ -2058,8 +2072,7 @@ msgstr ""
 #. TRANS so usually an interactive program should report the error to the user
 #. TRANS and return to its command loop.
 #. TRANS @end itemize
-#: stdio-common/../sysdeps/gnu/errlist.c:408
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41
+#: stdio-common/../sysdeps/gnu/errlist.c:416
 msgid "Resource temporarily unavailable"
 msgstr ""
 
@@ -2068,7 +2081,7 @@ msgstr ""
 #. TRANS
 #. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
 #. TRANS separate error code.
-#: stdio-common/../sysdeps/gnu/errlist.c:421
+#: stdio-common/../sysdeps/gnu/errlist.c:429
 msgid "Operation would block"
 msgstr ""
 
@@ -2080,54 +2093,47 @@ msgstr ""
 #. TRANS the object before the call completes return @code{EALREADY}.  You can
 #. TRANS use the @code{select} function to find out when the pending operation
 #. TRANS has completed; @pxref{Waiting for I/O}.
-#: stdio-common/../sysdeps/gnu/errlist.c:437
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180
+#: stdio-common/../sysdeps/gnu/errlist.c:445
 msgid "Operation now in progress"
 msgstr ""
 
 #. TRANS An operation is already in progress on an object that has non-blocking
 #. TRANS mode selected.
-#: stdio-common/../sysdeps/gnu/errlist.c:447
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179
+#: stdio-common/../sysdeps/gnu/errlist.c:455
 msgid "Operation already in progress"
 msgstr ""
 
 #. TRANS A file that isn't a socket was specified when a socket is required.
-#: stdio-common/../sysdeps/gnu/errlist.c:456
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125
+#: stdio-common/../sysdeps/gnu/errlist.c:464
 msgid "Socket operation on non-socket"
 msgstr ""
 
 #. TRANS The size of a message sent on a socket was larger than the supported
 #. TRANS maximum size.
-#: stdio-common/../sysdeps/gnu/errlist.c:466
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127
+#: stdio-common/../sysdeps/gnu/errlist.c:474
 msgid "Message too long"
 msgstr ""
 
 #. TRANS The socket type does not support the requested communications protocol.
-#: stdio-common/../sysdeps/gnu/errlist.c:475
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128
+#: stdio-common/../sysdeps/gnu/errlist.c:483
 msgid "Protocol wrong type for socket"
 msgstr ""
 
 #. TRANS You specified a socket option that doesn't make sense for the
 #. TRANS particular protocol being used by the socket.  @xref{Socket Options}.
-#: stdio-common/../sysdeps/gnu/errlist.c:485
+#: stdio-common/../sysdeps/gnu/errlist.c:493
 msgid "Protocol not available"
 msgstr ""
 
 #. TRANS The socket domain does not support the requested communications protocol
 #. TRANS (perhaps because the requested protocol is completely invalid).
 #. TRANS @xref{Creating a Socket}.
-#: stdio-common/../sysdeps/gnu/errlist.c:496
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150
+#: stdio-common/../sysdeps/gnu/errlist.c:504
 msgid "Protocol not supported"
 msgstr ""
 
 #. TRANS The socket type is not supported.
-#: stdio-common/../sysdeps/gnu/errlist.c:505
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151
+#: stdio-common/../sysdeps/gnu/errlist.c:513
 msgid "Socket type not supported"
 msgstr ""
 
@@ -2137,81 +2143,71 @@ msgstr ""
 #. TRANS error can happen for many calls when the object does not support the
 #. TRANS particular operation; it is a generic indication that the server knows
 #. TRANS nothing to do for that call.
-#: stdio-common/../sysdeps/gnu/errlist.c:519
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78
+#: stdio-common/../sysdeps/gnu/errlist.c:527
 msgid "Operation not supported"
 msgstr ""
 
 #. TRANS The socket communications protocol family you requested is not supported.
-#: stdio-common/../sysdeps/gnu/errlist.c:528
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153
+#: stdio-common/../sysdeps/gnu/errlist.c:536
 msgid "Protocol family not supported"
 msgstr ""
 
 #. TRANS The address family specified for a socket is not supported; it is
 #. TRANS inconsistent with the protocol being used on the socket.  @xref{Sockets}.
-#: stdio-common/../sysdeps/gnu/errlist.c:538
+#: stdio-common/../sysdeps/gnu/errlist.c:546
 msgid "Address family not supported by protocol"
 msgstr ""
 
 #. TRANS The requested socket address is already in use.  @xref{Socket Addresses}.
-#: stdio-common/../sysdeps/gnu/errlist.c:547
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155
+#: stdio-common/../sysdeps/gnu/errlist.c:555
 msgid "Address already in use"
 msgstr ""
 
 #. TRANS The requested socket address is not available; for example, you tried
 #. TRANS to give a socket a name that doesn't match the local host name.
 #. TRANS @xref{Socket Addresses}.
-#: stdio-common/../sysdeps/gnu/errlist.c:558
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156
+#: stdio-common/../sysdeps/gnu/errlist.c:566
 msgid "Cannot assign requested address"
 msgstr ""
 
 #. TRANS A socket operation failed because the network was down.
-#: stdio-common/../sysdeps/gnu/errlist.c:567
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157
+#: stdio-common/../sysdeps/gnu/errlist.c:575
 msgid "Network is down"
 msgstr ""
 
 #. TRANS A socket operation failed because the subnet containing the remote host
 #. TRANS was unreachable.
-#: stdio-common/../sysdeps/gnu/errlist.c:577
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158
+#: stdio-common/../sysdeps/gnu/errlist.c:585
 msgid "Network is unreachable"
 msgstr ""
 
 #. TRANS A network connection was reset because the remote host crashed.
-#: stdio-common/../sysdeps/gnu/errlist.c:586
+#: stdio-common/../sysdeps/gnu/errlist.c:594
 msgid "Network dropped connection on reset"
 msgstr ""
 
 #. TRANS A network connection was aborted locally.
-#: stdio-common/../sysdeps/gnu/errlist.c:595
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160
+#: stdio-common/../sysdeps/gnu/errlist.c:603
 msgid "Software caused connection abort"
 msgstr ""
 
 #. TRANS A network connection was closed for reasons outside the control of the
 #. TRANS local host, such as by the remote machine rebooting or an unrecoverable
 #. TRANS protocol violation.
-#: stdio-common/../sysdeps/gnu/errlist.c:606
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161
+#: stdio-common/../sysdeps/gnu/errlist.c:614
 msgid "Connection reset by peer"
 msgstr ""
 
 #. TRANS The kernel's buffers for I/O operations are all in use.  In GNU, this
 #. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
 #. TRANS other from network operations.
-#: stdio-common/../sysdeps/gnu/errlist.c:617
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162
+#: stdio-common/../sysdeps/gnu/errlist.c:625
 msgid "No buffer space available"
 msgstr ""
 
 #. TRANS You tried to connect a socket that is already connected.
 #. TRANS @xref{Connecting}.
-#: stdio-common/../sysdeps/gnu/errlist.c:627
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163
+#: stdio-common/../sysdeps/gnu/errlist.c:635
 msgid "Transport endpoint is already connected"
 msgstr ""
 
@@ -2219,93 +2215,83 @@ msgstr ""
 #. TRANS try to transmit data over a socket, without first specifying a
 #. TRANS destination for the data.  For a connectionless socket (for datagram
 #. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:639
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164
+#: stdio-common/../sysdeps/gnu/errlist.c:647
 msgid "Transport endpoint is not connected"
 msgstr ""
 
 #. TRANS No default destination address was set for the socket.  You get this
 #. TRANS error when you try to transmit data over a connectionless socket,
 #. TRANS without first specifying a destination for the data with @code{connect}.
-#: stdio-common/../sysdeps/gnu/errlist.c:650
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126
+#: stdio-common/../sysdeps/gnu/errlist.c:658
 msgid "Destination address required"
 msgstr ""
 
 #. TRANS The socket has already been shut down.
-#: stdio-common/../sysdeps/gnu/errlist.c:659
+#: stdio-common/../sysdeps/gnu/errlist.c:667
 msgid "Cannot send after transport endpoint shutdown"
 msgstr ""
 
 #. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:668
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174
+#: stdio-common/../sysdeps/gnu/errlist.c:676
 msgid "Too many references: cannot splice"
 msgstr ""
 
 #. TRANS A socket operation with a specified timeout received no response during
 #. TRANS the timeout period.
-#: stdio-common/../sysdeps/gnu/errlist.c:678
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175
+#: stdio-common/../sysdeps/gnu/errlist.c:686
 msgid "Connection timed out"
 msgstr ""
 
 #. TRANS A remote host refused to allow the network connection (typically because
 #. TRANS it is not running the requested service).
-#: stdio-common/../sysdeps/gnu/errlist.c:688
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176
+#: stdio-common/../sysdeps/gnu/errlist.c:696
 msgid "Connection refused"
 msgstr ""
 
 #. TRANS Too many levels of symbolic links were encountered in looking up a file name.
 #. TRANS This often indicates a cycle of symbolic links.
-#: stdio-common/../sysdeps/gnu/errlist.c:698
+#: stdio-common/../sysdeps/gnu/errlist.c:706
 msgid "Too many levels of symbolic links"
 msgstr ""
 
 #. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
 #. TRANS Files}) or host name too long (in @code{gethostname} or
 #. TRANS @code{sethostname}; @pxref{Host Identification}).
-#: stdio-common/../sysdeps/gnu/errlist.c:709
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:108
+#: stdio-common/../sysdeps/gnu/errlist.c:717
 msgid "File name too long"
 msgstr ""
 
 #. TRANS The remote host for a requested network connection is down.
-#: stdio-common/../sysdeps/gnu/errlist.c:718
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177
+#: stdio-common/../sysdeps/gnu/errlist.c:726
 msgid "Host is down"
 msgstr ""
 
 #. TRANS The remote host for a requested network connection is not reachable.
-#: stdio-common/../sysdeps/gnu/errlist.c:727
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178
+#: stdio-common/../sysdeps/gnu/errlist.c:735
 msgid "No route to host"
 msgstr ""
 
 #. TRANS Directory not empty, where an empty directory was expected.  Typically,
 #. TRANS this error occurs when you are trying to delete a directory.
-#: stdio-common/../sysdeps/gnu/errlist.c:737
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123
+#: stdio-common/../sysdeps/gnu/errlist.c:745
 msgid "Directory not empty"
 msgstr ""
 
 #. TRANS This means that the per-user limit on new process would be exceeded by
 #. TRANS an attempted @code{fork}.  @xref{Limits on Resources}, for details on
 #. TRANS the @code{RLIMIT_NPROC} limit.
-#: stdio-common/../sysdeps/gnu/errlist.c:748
+#: stdio-common/../sysdeps/gnu/errlist.c:756
 msgid "Too many processes"
 msgstr ""
 
 #. TRANS The file quota system is confused because there are too many users.
 #. TRANS @c This can probably happen in a GNU system when using NFS.
-#: stdio-common/../sysdeps/gnu/errlist.c:758
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124
+#: stdio-common/../sysdeps/gnu/errlist.c:766
 msgid "Too many users"
 msgstr ""
 
 #. TRANS The user's disk quota was exceeded.
-#: stdio-common/../sysdeps/gnu/errlist.c:767
+#: stdio-common/../sysdeps/gnu/errlist.c:775
 msgid "Disk quota exceeded"
 msgstr ""
 
@@ -2313,8 +2299,7 @@ msgstr ""
 #. TRANS system which is due to file system rearrangements on the server host.
 #. TRANS Repairing this condition usually requires unmounting and remounting
 #. TRANS the NFS file system on the local host.
-#: stdio-common/../sysdeps/gnu/errlist.c:779
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181
+#: stdio-common/../sysdeps/gnu/errlist.c:787
 msgid "Stale NFS file handle"
 msgstr ""
 
@@ -2322,33 +2307,32 @@ msgstr ""
 #. TRANS already specifies an NFS-mounted file.
 #. TRANS (This is an error on some operating systems, but we expect it to work
 #. TRANS properly on the GNU system, making this error code impossible.)
-#: stdio-common/../sysdeps/gnu/errlist.c:791
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96
+#: stdio-common/../sysdeps/gnu/errlist.c:799
 msgid "Object is remote"
 msgstr ""
 
 #. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:800
+#: stdio-common/../sysdeps/gnu/errlist.c:808
 msgid "RPC struct is bad"
 msgstr ""
 
 #. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:809
+#: stdio-common/../sysdeps/gnu/errlist.c:817
 msgid "RPC version wrong"
 msgstr ""
 
 #. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:818
+#: stdio-common/../sysdeps/gnu/errlist.c:826
 msgid "RPC program not available"
 msgstr ""
 
 #. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:827
+#: stdio-common/../sysdeps/gnu/errlist.c:835
 msgid "RPC program version wrong"
 msgstr ""
 
 #. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:836
+#: stdio-common/../sysdeps/gnu/errlist.c:844
 msgid "RPC bad procedure for program"
 msgstr ""
 
@@ -2356,7 +2340,7 @@ msgstr ""
 #. TRANS @ref{File Locks}.  This error is never generated by the GNU system, but
 #. TRANS it can result from an operation to an NFS server running another
 #. TRANS operating system.
-#: stdio-common/../sysdeps/gnu/errlist.c:848
+#: stdio-common/../sysdeps/gnu/errlist.c:856
 msgid "No locks available"
 msgstr ""
 
@@ -2365,17 +2349,17 @@ msgstr ""
 #. TRANS
 #. TRANS On some systems @code{chmod} returns this error if you try to set the
 #. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
-#: stdio-common/../sysdeps/gnu/errlist.c:861
+#: stdio-common/../sysdeps/gnu/errlist.c:869
 msgid "Inappropriate file type or format"
 msgstr ""
 
 #. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:870
+#: stdio-common/../sysdeps/gnu/errlist.c:878
 msgid "Authentication error"
 msgstr ""
 
 #. TRANS ???
-#: stdio-common/../sysdeps/gnu/errlist.c:879
+#: stdio-common/../sysdeps/gnu/errlist.c:887
 msgid "Need authenticator"
 msgstr ""
 
@@ -2384,7 +2368,7 @@ msgstr ""
 #. TRANS operating system.  When you get this error, you can be sure that this
 #. TRANS particular function will always fail with @code{ENOSYS} unless you
 #. TRANS install a new version of the C library or the operating system.
-#: stdio-common/../sysdeps/gnu/errlist.c:892
+#: stdio-common/../sysdeps/gnu/errlist.c:900
 msgid "Function not implemented"
 msgstr ""
 
@@ -2400,13 +2384,13 @@ msgstr ""
 #. TRANS
 #. TRANS If the entire function is not available at all in the implementation,
 #. TRANS it returns @code{ENOSYS} instead.
-#: stdio-common/../sysdeps/gnu/errlist.c:912
+#: stdio-common/../sysdeps/gnu/errlist.c:920
 msgid "Not supported"
 msgstr ""
 
 #. TRANS While decoding a multibyte character the function came along an invalid
 #. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
-#: stdio-common/../sysdeps/gnu/errlist.c:922
+#: stdio-common/../sysdeps/gnu/errlist.c:930
 msgid "Invalid or incomplete multibyte or wide character"
 msgstr ""
 
@@ -2416,88 +2400,80 @@ msgstr ""
 #. TRANS error because functions such as @code{read} and @code{write} translate
 #. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal.  @xref{Job Control},
 #. TRANS for information on process groups and these signals.
-#: stdio-common/../sysdeps/gnu/errlist.c:936
+#: stdio-common/../sysdeps/gnu/errlist.c:944
 msgid "Inappropriate operation for background process"
 msgstr ""
 
 #. TRANS In the GNU system, opening a file returns this error when the file is
 #. TRANS translated by a program and the translator program dies while starting
 #. TRANS up, before it has connected to the file.
-#: stdio-common/../sysdeps/gnu/errlist.c:947
+#: stdio-common/../sysdeps/gnu/errlist.c:955
 msgid "Translator died"
 msgstr ""
 
 #. TRANS The experienced user will know what is wrong.
 #. TRANS @c This error code is a joke.  Its perror text is part of the joke.
 #. TRANS @c Don't change it.
-#: stdio-common/../sysdeps/gnu/errlist.c:958
+#: stdio-common/../sysdeps/gnu/errlist.c:966
 msgid "?"
 msgstr ""
 
 #. TRANS You did @strong{what}?
-#: stdio-common/../sysdeps/gnu/errlist.c:967
+#: stdio-common/../sysdeps/gnu/errlist.c:975
 msgid "You really blew it this time"
 msgstr ""
 
 #. TRANS Go home and have a glass of warm, dairy-fresh milk.
-#: stdio-common/../sysdeps/gnu/errlist.c:976
+#: stdio-common/../sysdeps/gnu/errlist.c:984
 msgid "Computer bought the farm"
 msgstr ""
 
 #. TRANS This error code has no purpose.
-#: stdio-common/../sysdeps/gnu/errlist.c:985
+#: stdio-common/../sysdeps/gnu/errlist.c:993
 msgid "Gratuitous error"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:993
+#: stdio-common/../sysdeps/gnu/errlist.c:1001
 msgid "Bad message"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1001
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66
+#: stdio-common/../sysdeps/gnu/errlist.c:1009
 msgid "Identifier removed"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1009
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104
+#: stdio-common/../sysdeps/gnu/errlist.c:1017
 msgid "Multihop attempted"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1017
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91
+#: stdio-common/../sysdeps/gnu/errlist.c:1025
 msgid "No data available"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1025
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97
+#: stdio-common/../sysdeps/gnu/errlist.c:1033
 msgid "Link has been severed"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1033
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65
+#: stdio-common/../sysdeps/gnu/errlist.c:1041
 msgid "No message of desired type"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1041
+#: stdio-common/../sysdeps/gnu/errlist.c:1049
 msgid "Out of streams resources"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1049
+#: stdio-common/../sysdeps/gnu/errlist.c:1057
 msgid "Device not a stream"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1057
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109
+#: stdio-common/../sysdeps/gnu/errlist.c:1065
 msgid "Value too large for defined data type"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1065
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101
+#: stdio-common/../sysdeps/gnu/errlist.c:1073
 msgid "Protocol error"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1073
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92
+#: stdio-common/../sysdeps/gnu/errlist.c:1081
 msgid "Timer expired"
 msgstr ""
 
@@ -2505,187 +2481,163 @@ msgstr ""
 #. TRANS completed.  @xref{Asynchronous I/O}.  When you call @code{aio_cancel},
 #. TRANS the normal result is for the operations affected to complete with this
 #. TRANS error; @pxref{Cancel AIO Operations}.
-#: stdio-common/../sysdeps/gnu/errlist.c:1085
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77
+#: stdio-common/../sysdeps/gnu/errlist.c:1093
 msgid "Operation canceled"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1093
+#: stdio-common/../sysdeps/gnu/errlist.c:1101
 msgid "Interrupted system call should be restarted"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1101
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67
+#: stdio-common/../sysdeps/gnu/errlist.c:1109
 msgid "Channel number out of range"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1109
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68
+#: stdio-common/../sysdeps/gnu/errlist.c:1117
 msgid "Level 2 not synchronized"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1117
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69
+#: stdio-common/../sysdeps/gnu/errlist.c:1125
 msgid "Level 3 halted"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1125
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70
+#: stdio-common/../sysdeps/gnu/errlist.c:1133
 msgid "Level 3 reset"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1133
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71
+#: stdio-common/../sysdeps/gnu/errlist.c:1141
 msgid "Link number out of range"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1141
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72
+#: stdio-common/../sysdeps/gnu/errlist.c:1149
 msgid "Protocol driver not attached"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1149
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73
+#: stdio-common/../sysdeps/gnu/errlist.c:1157
 msgid "No CSI structure available"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1157
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74
+#: stdio-common/../sysdeps/gnu/errlist.c:1165
 msgid "Level 2 halted"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1165
+#: stdio-common/../sysdeps/gnu/errlist.c:1173
 msgid "Invalid exchange"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1173
+#: stdio-common/../sysdeps/gnu/errlist.c:1181
 msgid "Invalid request descriptor"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1181
+#: stdio-common/../sysdeps/gnu/errlist.c:1189
 msgid "Exchange full"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1189
+#: stdio-common/../sysdeps/gnu/errlist.c:1197
 msgid "No anode"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1197
+#: stdio-common/../sysdeps/gnu/errlist.c:1205
 msgid "Invalid request code"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1205
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85
+#: stdio-common/../sysdeps/gnu/errlist.c:1213
 msgid "Invalid slot"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1213
+#: stdio-common/../sysdeps/gnu/errlist.c:1221
 msgid "File locking deadlock error"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1221
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87
+#: stdio-common/../sysdeps/gnu/errlist.c:1229
 msgid "Bad font file format"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1229
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94
+#: stdio-common/../sysdeps/gnu/errlist.c:1237
 msgid "Machine is not on the network"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1237
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95
+#: stdio-common/../sysdeps/gnu/errlist.c:1245
 msgid "Package not installed"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1245
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98
+#: stdio-common/../sysdeps/gnu/errlist.c:1253
 msgid "Advertise error"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1253
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99
+#: stdio-common/../sysdeps/gnu/errlist.c:1261
 msgid "Srmount error"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1261
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100
+#: stdio-common/../sysdeps/gnu/errlist.c:1269
 msgid "Communication error on send"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1269
+#: stdio-common/../sysdeps/gnu/errlist.c:1277
 msgid "RFS specific error"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1277
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110
+#: stdio-common/../sysdeps/gnu/errlist.c:1285
 msgid "Name not unique on network"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1285
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111
+#: stdio-common/../sysdeps/gnu/errlist.c:1293
 msgid "File descriptor in bad state"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1293
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112
+#: stdio-common/../sysdeps/gnu/errlist.c:1301
 msgid "Remote address changed"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1301
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113
+#: stdio-common/../sysdeps/gnu/errlist.c:1309
 msgid "Can not access a needed shared library"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1309
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114
+#: stdio-common/../sysdeps/gnu/errlist.c:1317
 msgid "Accessing a corrupted shared library"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1317
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115
+#: stdio-common/../sysdeps/gnu/errlist.c:1325
 msgid ".lib section in a.out corrupted"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1325
+#: stdio-common/../sysdeps/gnu/errlist.c:1333
 msgid "Attempting to link in too many shared libraries"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1333
+#: stdio-common/../sysdeps/gnu/errlist.c:1341
 msgid "Cannot exec a shared library directly"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1341
+#: stdio-common/../sysdeps/gnu/errlist.c:1349
 msgid "Streams pipe error"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1349
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165
+#: stdio-common/../sysdeps/gnu/errlist.c:1357
 msgid "Structure needs cleaning"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1357
+#: stdio-common/../sysdeps/gnu/errlist.c:1365
 msgid "Not a XENIX named type file"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1365
+#: stdio-common/../sysdeps/gnu/errlist.c:1373
 msgid "No XENIX semaphores available"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1373
+#: stdio-common/../sysdeps/gnu/errlist.c:1381
 msgid "Is a named type file"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1381
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170
+#: stdio-common/../sysdeps/gnu/errlist.c:1389
 msgid "Remote I/O error"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1389
+#: stdio-common/../sysdeps/gnu/errlist.c:1397
 msgid "No medium found"
 msgstr ""
 
-#: stdio-common/../sysdeps/gnu/errlist.c:1397
+#: stdio-common/../sysdeps/gnu/errlist.c:1405
 msgid "Wrong medium type"
 msgstr ""
 
@@ -2697,337 +2649,86 @@ msgstr ""
 msgid "IOT trap"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
-msgid "Error 0"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
-#: nis/nis_error.c:40
-msgid "Not owner"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
-msgid "I/O error"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
-msgid "Arg list too long"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
-msgid "Bad file number"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
-msgid "Not enough space"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
-msgid "Device busy"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
-msgid "Cross-device link"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
-msgid "File table overflow"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
-msgid "Argument out of domain"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
-msgid "Result too large"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
-msgid "Deadlock situation detected/avoided"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
-msgid "No record locks available"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
-msgid "Disc quota exceeded"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
-msgid "Bad exchange descriptor"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
-msgid "Bad request descriptor"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
-msgid "Message tables full"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
-msgid "Anode table overflow"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
-msgid "Bad request code"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
-msgid "File locking deadlock"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
-msgid "Error 58"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
-msgid "Error 59"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
-msgid "Not a stream device"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
-msgid "Out of stream resources"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
-msgid "Error 72"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
-msgid "Error 73"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
-msgid "Error 75"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
-msgid "Error 76"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
-msgid "Not a data message"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
-msgid "Attempting to link in more shared libraries than system limit"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
-msgid "Can not exec a shared library directly"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
-msgid "Illegal byte sequence"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
-msgid "Operation not applicable"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
-msgid ""
-"Number of symbolic links encountered during path name traversal exceeds "
-"MAXSYMLINKS"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
-msgid "Error 91"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
-msgid "Error 92"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
-msgid "Option not supported by protocol"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
-msgid "Error 100"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
-msgid "Error 101"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
-msgid "Error 102"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
-msgid "Error 103"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
-msgid "Error 104"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
-msgid "Error 105"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
-msgid "Error 106"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
-msgid "Error 107"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
-msgid "Error 108"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
-msgid "Error 109"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
-msgid "Error 110"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
-msgid "Error 111"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
-msgid "Error 112"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
-msgid "Error 113"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
-msgid "Error 114"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
-msgid "Error 115"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
-msgid "Error 116"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
-msgid "Error 117"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
-msgid "Error 118"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
-msgid "Error 119"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
-msgid "Operation not supported on transport endpoint"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
-msgid "Address family not supported by protocol family"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
-msgid "Network dropped connection because of reset"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
-msgid "Error 136"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
-msgid "Not a name file"
-msgstr ""
-
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
-msgid "Not available"
+#: stdio-common/psignal.c:60
+#, c-format
+msgid "%s%sUnknown signal %d\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
-msgid "Is a name file"
+#: stdio-common/psignal.c:63 stdio-common/psignal.c:65
+msgid "Unknown signal"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
-msgid "Reserved for future use"
+#: dlfcn/dlinfo.c:63
+msgid "RTLD_SELF used in code not dynamically loaded"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
-msgid "Error 142"
+#: dlfcn/dlinfo.c:72
+msgid "unsupported dlinfo request"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
-msgid "Cannot send after socket shutdown"
+#: dlfcn/dlmopen.c:63
+msgid "invalid namespace"
 msgstr ""
 
-#: stdio-common/psignal.c:63
-#, c-format
-msgid "%s%sUnknown signal %d\n"
+#: dlfcn/dlopen.c:64
+msgid "invalid mode parameter"
 msgstr ""
 
-#: malloc/mcheck.c:346
+#: malloc/mcheck.c:324
 msgid "memory is consistent, library is buggy\n"
 msgstr ""
 
-#: malloc/mcheck.c:349
+#: malloc/mcheck.c:327
 msgid "memory clobbered before allocated block\n"
 msgstr ""
 
-#: malloc/mcheck.c:352
+#: malloc/mcheck.c:330
 msgid "memory clobbered past end of allocated block\n"
 msgstr ""
 
-#: malloc/mcheck.c:355
+#: malloc/mcheck.c:333
 msgid "block freed twice\n"
 msgstr ""
 
-#: malloc/mcheck.c:358
+#: malloc/mcheck.c:336
 msgid "bogus mcheck_status, library is buggy\n"
 msgstr ""
 
-#: malloc/memusagestat.c:53
+#: malloc/memusagestat.c:55
 msgid "Name output file"
 msgstr ""
 
-#: malloc/memusagestat.c:54
+#: malloc/memusagestat.c:56
 msgid "Title string used in output graphic"
 msgstr ""
 
-#: malloc/memusagestat.c:55
+#: malloc/memusagestat.c:57
 msgid ""
 "Generate output linear to time (default is linear to number of function "
 "calls)"
 msgstr ""
 
-#: malloc/memusagestat.c:57
+#: malloc/memusagestat.c:59
 msgid "Also draw graph for total memory consumption"
 msgstr ""
 
-#: malloc/memusagestat.c:58
+#: malloc/memusagestat.c:60
 msgid "make output graphic VALUE pixel wide"
 msgstr ""
 
-#: malloc/memusagestat.c:59
+#: malloc/memusagestat.c:61
 msgid "make output graphic VALUE pixel high"
 msgstr ""
 
-#: malloc/memusagestat.c:64
+#: malloc/memusagestat.c:66
 msgid "Generate graphic from memory profiling data"
 msgstr ""
 
-#: malloc/memusagestat.c:67
+#: malloc/memusagestat.c:69
 msgid "DATAFILE [OUTFILE]"
 msgstr ""
 
-#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:58
 msgid "Unknown error"
 msgstr ""
 
@@ -3041,344 +2742,378 @@ msgstr ""
 msgid "Unknown signal %d"
 msgstr ""
 
-#: timezone/zdump.c:175
+#: timezone/zdump.c:240
 #, c-format
-msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
+msgid ""
+"%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
 msgstr ""
 
-#: timezone/zdump.c:268
+#: timezone/zdump.c:257
+#, c-format
+msgid "%s: wild -c argument %s\n"
+msgstr ""
+
+#: timezone/zdump.c:347
 msgid "Error writing standard output"
 msgstr ""
 
-#: timezone/zic.c:365
+#: timezone/zdump.c:370
+#, c-format
+msgid ""
+"%s: use of -v on system with floating time_t other than float or double\n"
+msgstr ""
+
+#: timezone/zic.c:367
 #, c-format
 msgid "%s: Memory exhausted: %s\n"
 msgstr ""
 
-#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
+#: timezone/zic.c:392 misc/error.c:129 misc/error.c:157
 msgid "Unknown system error"
 msgstr ""
 
-#: timezone/zic.c:424
+#: timezone/zic.c:426
 #, c-format
 msgid "\"%s\", line %d: %s"
 msgstr ""
 
-#: timezone/zic.c:427
+#: timezone/zic.c:429
 #, c-format
 msgid " (rule from \"%s\", line %d)"
 msgstr ""
 
-#: timezone/zic.c:439
+#: timezone/zic.c:441
 msgid "warning: "
 msgstr ""
 
-#: timezone/zic.c:449
+#: timezone/zic.c:451
 #, c-format
 msgid ""
-"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+"%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p "
+"posixrules ] \\\n"
 "\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
 msgstr ""
 
-#: timezone/zic.c:491
+#: timezone/zic.c:500
 #, c-format
 msgid "%s: More than one -d option specified\n"
 msgstr ""
 
-#: timezone/zic.c:501
+#: timezone/zic.c:510
 #, c-format
 msgid "%s: More than one -l option specified\n"
 msgstr ""
 
-#: timezone/zic.c:511
+#: timezone/zic.c:520
 #, c-format
 msgid "%s: More than one -p option specified\n"
 msgstr ""
 
-#: timezone/zic.c:521
+#: timezone/zic.c:530
 #, c-format
 msgid "%s: More than one -y option specified\n"
 msgstr ""
 
-#: timezone/zic.c:531
+#: timezone/zic.c:540
 #, c-format
 msgid "%s: More than one -L option specified\n"
 msgstr ""
 
-#: timezone/zic.c:638
-#, c-format
-msgid "%s: Can't unlink  %s: %s\n"
+#: timezone/zic.c:589
+msgid "link to link"
 msgstr ""
 
-#: timezone/zic.c:645
+#: timezone/zic.c:654
 msgid "hard link failed, symbolic link used"
 msgstr ""
 
-#: timezone/zic.c:653
+#: timezone/zic.c:662
 #, c-format
 msgid "%s: Can't link from %s to %s: %s\n"
 msgstr ""
 
-#: timezone/zic.c:751 timezone/zic.c:753
+#: timezone/zic.c:771 timezone/zic.c:773
 msgid "same rule name in multiple files"
 msgstr ""
 
-#: timezone/zic.c:794
+#: timezone/zic.c:814
 msgid "unruly zone"
 msgstr ""
 
-#: timezone/zic.c:801
+#: timezone/zic.c:821
 #, c-format
 msgid "%s in ruleless zone"
 msgstr ""
 
-#: timezone/zic.c:822
+#: timezone/zic.c:842
 msgid "standard input"
 msgstr ""
 
-#: timezone/zic.c:827
+#: timezone/zic.c:847
 #, c-format
 msgid "%s: Can't open %s: %s\n"
 msgstr ""
 
-#: timezone/zic.c:838
+#: timezone/zic.c:858
 msgid "line too long"
 msgstr ""
 
-#: timezone/zic.c:858
+#: timezone/zic.c:878
 msgid "input line of unknown type"
 msgstr ""
 
-#: timezone/zic.c:874
+#: timezone/zic.c:894
 #, c-format
 msgid "%s: Leap line in non leap seconds file %s\n"
 msgstr ""
 
-#: timezone/zic.c:881 timezone/zic.c:1295 timezone/zic.c:1320
+#: timezone/zic.c:901 timezone/zic.c:1322 timezone/zic.c:1347
 #, c-format
 msgid "%s: panic: Invalid l_value %d\n"
 msgstr ""
 
-#: timezone/zic.c:889
+#: timezone/zic.c:909
 #, c-format
 msgid "%s: Error reading %s\n"
 msgstr ""
 
-#: timezone/zic.c:896
+#: timezone/zic.c:916
 #, c-format
 msgid "%s: Error closing %s: %s\n"
 msgstr ""
 
-#: timezone/zic.c:901
+#: timezone/zic.c:921
 msgid "expected continuation line not found"
 msgstr ""
 
-#: timezone/zic.c:957
+#: timezone/zic.c:965
+msgid "24:00 not handled by pre-1998 versions of zic"
+msgstr ""
+
+#: timezone/zic.c:979
 msgid "wrong number of fields on Rule line"
 msgstr ""
 
-#: timezone/zic.c:961
+#: timezone/zic.c:983
 msgid "nameless rule"
 msgstr ""
 
-#: timezone/zic.c:966
+#: timezone/zic.c:988
 msgid "invalid saved time"
 msgstr ""
 
-#: timezone/zic.c:985
+#: timezone/zic.c:1007
 msgid "wrong number of fields on Zone line"
 msgstr ""
 
-#: timezone/zic.c:991
+#: timezone/zic.c:1013
 #, c-format
 msgid "\"Zone %s\" line and -l option are mutually exclusive"
 msgstr ""
 
-#: timezone/zic.c:999
+#: timezone/zic.c:1021
 #, c-format
 msgid "\"Zone %s\" line and -p option are mutually exclusive"
 msgstr ""
 
-#: timezone/zic.c:1011
+#: timezone/zic.c:1033
 #, c-format
 msgid "duplicate zone name %s (file \"%s\", line %d)"
 msgstr ""
 
-#: timezone/zic.c:1027
+#: timezone/zic.c:1049
 msgid "wrong number of fields on Zone continuation line"
 msgstr ""
 
-#: timezone/zic.c:1067
+#: timezone/zic.c:1089
 msgid "invalid UTC offset"
 msgstr ""
 
-#: timezone/zic.c:1070
+#: timezone/zic.c:1092
 msgid "invalid abbreviation format"
 msgstr ""
 
-#: timezone/zic.c:1096
+#: timezone/zic.c:1119
 msgid "Zone continuation line end time is not after end time of previous line"
 msgstr ""
 
-#: timezone/zic.c:1123
+#: timezone/zic.c:1147
 msgid "wrong number of fields on Leap line"
 msgstr ""
 
-#: timezone/zic.c:1132
+#: timezone/zic.c:1156
 msgid "invalid leaping year"
 msgstr ""
 
-#: timezone/zic.c:1147 timezone/zic.c:1250
+#: timezone/zic.c:1171 timezone/zic.c:1277
 msgid "invalid month name"
 msgstr ""
 
-#: timezone/zic.c:1160 timezone/zic.c:1372 timezone/zic.c:1386
+#: timezone/zic.c:1184 timezone/zic.c:1399 timezone/zic.c:1413
 msgid "invalid day of month"
 msgstr ""
 
-#: timezone/zic.c:1165
+#: timezone/zic.c:1189
 msgid "time before zero"
 msgstr ""
 
-#: timezone/zic.c:1173 timezone/zic.c:2049 timezone/zic.c:2068
-msgid "time overflow"
+#: timezone/zic.c:1193
+msgid "time too small"
+msgstr ""
+
+#: timezone/zic.c:1197
+msgid "time too large"
 msgstr ""
 
-#: timezone/zic.c:1176 timezone/zic.c:1279
+#: timezone/zic.c:1201 timezone/zic.c:1306
 msgid "invalid time of day"
 msgstr ""
 
-#: timezone/zic.c:1195
+#: timezone/zic.c:1220
 msgid "illegal CORRECTION field on Leap line"
 msgstr ""
 
-#: timezone/zic.c:1199
+#: timezone/zic.c:1225
 msgid "illegal Rolling/Stationary field on Leap line"
 msgstr ""
 
-#: timezone/zic.c:1214
+#: timezone/zic.c:1241
 msgid "wrong number of fields on Link line"
 msgstr ""
 
-#: timezone/zic.c:1218
+#: timezone/zic.c:1245
 msgid "blank FROM field on Link line"
 msgstr ""
 
-#: timezone/zic.c:1222
+#: timezone/zic.c:1249
 msgid "blank TO field on Link line"
 msgstr ""
 
-#: timezone/zic.c:1299
+#: timezone/zic.c:1326
 msgid "invalid starting year"
 msgstr ""
 
-#: timezone/zic.c:1303 timezone/zic.c:1328
+#: timezone/zic.c:1330
 msgid "starting year too low to be represented"
 msgstr ""
 
-#: timezone/zic.c:1305 timezone/zic.c:1330
+#: timezone/zic.c:1332
 msgid "starting year too high to be represented"
 msgstr ""
 
-#: timezone/zic.c:1324
+#: timezone/zic.c:1351
 msgid "invalid ending year"
 msgstr ""
 
-#: timezone/zic.c:1333
+#: timezone/zic.c:1355
+msgid "ending year too low to be represented"
+msgstr ""
+
+#: timezone/zic.c:1357
+msgid "ending year too high to be represented"
+msgstr ""
+
+#: timezone/zic.c:1360
 msgid "starting year greater than ending year"
 msgstr ""
 
-#: timezone/zic.c:1340
+#: timezone/zic.c:1367
 msgid "typed single year"
 msgstr ""
 
-#: timezone/zic.c:1377
+#: timezone/zic.c:1404
 msgid "invalid weekday name"
 msgstr ""
 
-#: timezone/zic.c:1492
+#: timezone/zic.c:1518
 #, c-format
 msgid "%s: Can't remove %s: %s\n"
 msgstr ""
 
-#: timezone/zic.c:1502
+#: timezone/zic.c:1528
 #, c-format
 msgid "%s: Can't create %s: %s\n"
 msgstr ""
 
-#: timezone/zic.c:1568
+#: timezone/zic.c:1595
 #, c-format
 msgid "%s: Error writing %s\n"
 msgstr ""
 
-#: timezone/zic.c:1758
+#: timezone/zic.c:1786
 msgid "can't determine time zone abbreviation to use just after until time"
 msgstr ""
 
-#: timezone/zic.c:1801
+#: timezone/zic.c:1829
 msgid "too many transitions?!"
 msgstr ""
 
-#: timezone/zic.c:1820
+#: timezone/zic.c:1848
 msgid "internal error - addtype called with bad isdst"
 msgstr ""
 
-#: timezone/zic.c:1824
+#: timezone/zic.c:1852
 msgid "internal error - addtype called with bad ttisstd"
 msgstr ""
 
-#: timezone/zic.c:1828
+#: timezone/zic.c:1856
 msgid "internal error - addtype called with bad ttisgmt"
 msgstr ""
 
-#: timezone/zic.c:1847
+#: timezone/zic.c:1875
 msgid "too many local time types"
 msgstr ""
 
-#: timezone/zic.c:1875
+#: timezone/zic.c:1903
 msgid "too many leap seconds"
 msgstr ""
 
-#: timezone/zic.c:1881
+#: timezone/zic.c:1909
 msgid "repeated leap second moment"
 msgstr ""
 
-#: timezone/zic.c:1933
+#: timezone/zic.c:1961
 msgid "Wild result from command execution"
 msgstr ""
 
-#: timezone/zic.c:1934
+#: timezone/zic.c:1962
 #, c-format
 msgid "%s: command was '%s', result was %d\n"
 msgstr ""
 
-#: timezone/zic.c:2029
+#: timezone/zic.c:2058
 msgid "Odd number of quotation marks"
 msgstr ""
 
-#: timezone/zic.c:2115
+#: timezone/zic.c:2079 timezone/zic.c:2098
+msgid "time overflow"
+msgstr ""
+
+#: timezone/zic.c:2145
 msgid "use of 2/29 in non leap-year"
 msgstr ""
 
-#: timezone/zic.c:2149
-msgid "no day in month matches rule"
+#: timezone/zic.c:2180
+msgid ""
+"rule goes past start/end of month--will not work with pre-2004 versions of "
+"zic"
 msgstr ""
 
-#: timezone/zic.c:2172
+#: timezone/zic.c:2202
 msgid "too many, or too long, time zone abbreviations"
 msgstr ""
 
-#: timezone/zic.c:2213
+#: timezone/zic.c:2243
 #, c-format
 msgid "%s: Can't create directory %s: %s\n"
 msgstr ""
 
-#: timezone/zic.c:2235
+#: timezone/zic.c:2265
 #, c-format
 msgid "%s: %d did not sign extend correctly\n"
 msgstr ""
 
-#: posix/../sysdeps/generic/wordexp.c:1801
+#: posix/../sysdeps/generic/wordexp.c:1799
 msgid "parameter null or not set"
 msgstr ""
 
@@ -3446,290 +3181,303 @@ msgstr ""
 msgid "Interrupted by a signal"
 msgstr ""
 
-#: posix/getconf.c:889
+#: posix/../sysdeps/posix/gai_strerror.c:47
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: posix/getconf.c:942
 #, c-format
 msgid "Usage: %s [-v specification] variable_name [pathname]\n"
 msgstr ""
 
-#: posix/getconf.c:947
+#: posix/getconf.c:1018
 #, c-format
 msgid "unknown specification \"%s\""
 msgstr ""
 
-#: posix/getconf.c:974 posix/getconf.c:990
+#: posix/getconf.c:1046
+#, c-format
+msgid "Couldn't execute %s"
+msgstr ""
+
+#: posix/getconf.c:1076 posix/getconf.c:1092
 msgid "undefined"
 msgstr ""
 
-#: posix/getconf.c:1012
+#: posix/getconf.c:1114
 #, c-format
 msgid "Unrecognized variable `%s'"
 msgstr ""
 
-#: posix/getopt.c:692 posix/getopt.c:704
+#: posix/getopt.c:571 posix/getopt.c:590
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr ""
 
-#: posix/getopt.c:737 posix/getopt.c:741
+#: posix/getopt.c:623 posix/getopt.c:627
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr ""
 
-#: posix/getopt.c:750 posix/getopt.c:755
+#: posix/getopt.c:636 posix/getopt.c:641
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr ""
 
-#: posix/getopt.c:791 posix/getopt.c:804 posix/getopt.c:1093
-#: posix/getopt.c:1106
+#: posix/getopt.c:687 posix/getopt.c:709 posix/getopt.c:1040
+#: posix/getopt.c:1062
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr ""
 
-#: posix/getopt.c:842 posix/getopt.c:845
+#: posix/getopt.c:747 posix/getopt.c:750
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr ""
 
-#: posix/getopt.c:853 posix/getopt.c:856
+#: posix/getopt.c:758 posix/getopt.c:761
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr ""
 
-#: posix/getopt.c:903 posix/getopt.c:906
+#: posix/getopt.c:816 posix/getopt.c:819
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr ""
 
-#: posix/getopt.c:912 posix/getopt.c:915
+#: posix/getopt.c:825 posix/getopt.c:828
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr ""
 
-#: posix/getopt.c:962 posix/getopt.c:973 posix/getopt.c:1159
-#: posix/getopt.c:1172
+#: posix/getopt.c:883 posix/getopt.c:902 posix/getopt.c:1115
+#: posix/getopt.c:1136
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr ""
 
-#: posix/getopt.c:1025 posix/getopt.c:1036
+#: posix/getopt.c:955 posix/getopt.c:974
 #, c-format
 msgid "%s: option `-W %s' is ambiguous\n"
 msgstr ""
 
-#: posix/getopt.c:1060 posix/getopt.c:1072
+#: posix/getopt.c:998 posix/getopt.c:1019
 #, c-format
 msgid "%s: option `-W %s' doesn't allow an argument\n"
 msgstr ""
 
-#: posix/regcomp.c:136
+#: posix/regcomp.c:163
 msgid "No match"
 msgstr ""
 
-#: posix/regcomp.c:139
+#: posix/regcomp.c:166
 msgid "Invalid regular expression"
 msgstr ""
 
-#: posix/regcomp.c:142
+#: posix/regcomp.c:169
 msgid "Invalid collation character"
 msgstr ""
 
-#: posix/regcomp.c:145
+#: posix/regcomp.c:172
 msgid "Invalid character class name"
 msgstr ""
 
-#: posix/regcomp.c:148
+#: posix/regcomp.c:175
 msgid "Trailing backslash"
 msgstr ""
 
-#: posix/regcomp.c:151
+#: posix/regcomp.c:178
 msgid "Invalid back reference"
 msgstr ""
 
-#: posix/regcomp.c:154
+#: posix/regcomp.c:181
 msgid "Unmatched [ or [^"
 msgstr ""
 
-#: posix/regcomp.c:157
+#: posix/regcomp.c:184
 msgid "Unmatched ( or \\("
 msgstr ""
 
-#: posix/regcomp.c:160
+#: posix/regcomp.c:187
 msgid "Unmatched \\{"
 msgstr ""
 
-#: posix/regcomp.c:163
+#: posix/regcomp.c:190
 msgid "Invalid content of \\{\\}"
 msgstr ""
 
-#: posix/regcomp.c:166
+#: posix/regcomp.c:193
 msgid "Invalid range end"
 msgstr ""
 
-#: posix/regcomp.c:169
+#: posix/regcomp.c:196
 msgid "Memory exhausted"
 msgstr ""
 
-#: posix/regcomp.c:172
+#: posix/regcomp.c:199
 msgid "Invalid preceding regular expression"
 msgstr ""
 
-#: posix/regcomp.c:175
+#: posix/regcomp.c:202
 msgid "Premature end of regular expression"
 msgstr ""
 
-#: posix/regcomp.c:178
+#: posix/regcomp.c:205
 msgid "Regular expression too big"
 msgstr ""
 
-#: posix/regcomp.c:181
+#: posix/regcomp.c:208
 msgid "Unmatched ) or \\)"
 msgstr ""
 
-#: posix/regcomp.c:615
+#: posix/regcomp.c:692
 msgid "No previous regular expression"
 msgstr ""
 
-#: argp/argp-help.c:213
+#: argp/argp-help.c:225
 #, c-format
 msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
 msgstr ""
 
-#: argp/argp-help.c:222
+#: argp/argp-help.c:234
 #, c-format
 msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
 msgstr ""
 
-#: argp/argp-help.c:234
+#: argp/argp-help.c:246
 #, c-format
 msgid "Garbage in ARGP_HELP_FMT: %s"
 msgstr ""
 
-#: argp/argp-help.c:1189
+#: argp/argp-help.c:1210
 msgid ""
 "Mandatory or optional arguments to long options are also mandatory or "
 "optional for any corresponding short options."
 msgstr ""
 
-#: argp/argp-help.c:1572
+#: argp/argp-help.c:1597
 msgid "Usage:"
 msgstr ""
 
-#: argp/argp-help.c:1576
+#: argp/argp-help.c:1601
 msgid "  or: "
 msgstr ""
 
-#: argp/argp-help.c:1588
+#: argp/argp-help.c:1613
 msgid " [OPTION...]"
 msgstr ""
 
-#: argp/argp-help.c:1615
+#: argp/argp-help.c:1640
 #, c-format
 msgid "Try `%s --help' or `%s --usage' for more information.\n"
 msgstr ""
 
-#: argp/argp-help.c:1643
+#: argp/argp-help.c:1668
 #, c-format
 msgid "Report bugs to %s.\n"
 msgstr ""
 
-#: argp/argp-parse.c:100
+#: argp/argp-parse.c:102
 msgid "Give this help list"
 msgstr ""
 
-#: argp/argp-parse.c:101
+#: argp/argp-parse.c:103
 msgid "Give a short usage message"
 msgstr ""
 
-#: argp/argp-parse.c:102
+#: argp/argp-parse.c:104
 msgid "Set the program name"
 msgstr ""
 
-#: argp/argp-parse.c:104
+#: argp/argp-parse.c:106
 msgid "Hang for SECS seconds (default 3600)"
 msgstr ""
 
-#: argp/argp-parse.c:161
+#: argp/argp-parse.c:167
 msgid "Print program version"
 msgstr ""
 
-#: argp/argp-parse.c:177
+#: argp/argp-parse.c:183
 msgid "(PROGRAM ERROR) No version known!?"
 msgstr ""
 
-#: argp/argp-parse.c:653
+#: argp/argp-parse.c:623
 #, c-format
 msgid "%s: Too many arguments\n"
 msgstr ""
 
-#: argp/argp-parse.c:794
+#: argp/argp-parse.c:766
 msgid "(PROGRAM ERROR) Option should have been recognized!?"
 msgstr ""
 
-#: resolv/herror.c:67
-msgid "Resolver Error 0 (no error)"
+#: libidn/nfkc.c:464
+msgid "Character out of range for UTF-8"
 msgstr ""
 
 #: resolv/herror.c:68
-msgid "Unknown host"
+msgid "Resolver Error 0 (no error)"
 msgstr ""
 
 #: resolv/herror.c:69
-msgid "Host name lookup failure"
+msgid "Unknown host"
 msgstr ""
 
 #: resolv/herror.c:70
-msgid "Unknown server error"
+msgid "Host name lookup failure"
 msgstr ""
 
 #: resolv/herror.c:71
+msgid "Unknown server error"
+msgstr ""
+
+#: resolv/herror.c:72
 msgid "No address associated with name"
 msgstr ""
 
-#: resolv/herror.c:107
+#: resolv/herror.c:108
 msgid "Resolver internal error"
 msgstr ""
 
-#: resolv/herror.c:110
+#: resolv/herror.c:111
 msgid "Unknown resolver error"
 msgstr ""
 
-#: resolv/res_hconf.c:147
+#: resolv/res_hconf.c:149
 #, c-format
 msgid "%s: line %d: expected service, found `%s'\n"
 msgstr ""
 
-#: resolv/res_hconf.c:165
+#: resolv/res_hconf.c:167
 #, c-format
 msgid "%s: line %d: cannot specify more than %d services"
 msgstr ""
 
-#: resolv/res_hconf.c:191
+#: resolv/res_hconf.c:195
 #, c-format
 msgid "%s: line %d: list delimiter not followed by keyword"
 msgstr ""
 
-#: resolv/res_hconf.c:231
+#: resolv/res_hconf.c:236
 #, c-format
 msgid "%s: line %d: cannot specify more than %d trim domains"
 msgstr ""
 
-#: resolv/res_hconf.c:256
+#: resolv/res_hconf.c:262
 #, c-format
 msgid "%s: line %d: list delimiter not followed by domain"
 msgstr ""
 
-#: resolv/res_hconf.c:319
+#: resolv/res_hconf.c:326
 #, c-format
 msgid "%s: line %d: expected `on' or `off', found `%s'\n"
 msgstr ""
 
-#: resolv/res_hconf.c:366
+#: resolv/res_hconf.c:374
 #, c-format
 msgid "%s: line %d: bad command `%s'\n"
 msgstr ""
 
-#: resolv/res_hconf.c:395
+#: resolv/res_hconf.c:404
 #, c-format
 msgid "%s: line %d: ignoring trailing garbage `%s'\n"
 msgstr ""
@@ -3742,24 +3490,27 @@ msgstr ""
 msgid "Service configuration to be used"
 msgstr ""
 
-#: nss/getent.c:136 nss/getent.c:308
-#, c-format
-msgid "Enumeration not supported on %s\n"
+#: nss/getent.c:61
+msgid ""
+"Get entries from administrative database.\013For bug reporting instructions, "
+"please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
 msgstr ""
 
-#: nss/getent.c:732
-msgid "getent - get entries from administrative database."
+#: nss/getent.c:144 nss/getent.c:393
+#, c-format
+msgid "Enumeration not supported on %s\n"
 msgstr ""
 
-#: nss/getent.c:733
+#: nss/getent.c:791
 msgid "Supported databases:"
 msgstr ""
 
-#: nss/getent.c:790 nscd/nscd.c:124 nscd/nscd_nischeck.c:64
+#: nss/getent.c:848 nscd/nscd.c:146 nscd/nscd_nischeck.c:64
 msgid "wrong number of arguments"
 msgstr ""
 
-#: nss/getent.c:800
+#: nss/getent.c:858
 #, c-format
 msgid "Unknown database: %s\n"
 msgstr ""
@@ -3788,72 +3539,72 @@ msgstr ""
 msgid "invalid pointer size"
 msgstr ""
 
-#: inet/rcmd.c:163 inet/rcmd.c:166
+#: inet/rcmd.c:166 inet/rcmd.c:168
 msgid "rcmd: Cannot allocate memory\n"
 msgstr ""
 
-#: inet/rcmd.c:185 inet/rcmd.c:188
+#: inet/rcmd.c:186 inet/rcmd.c:188
 msgid "rcmd: socket: All ports in use\n"
 msgstr ""
 
-#: inet/rcmd.c:222
+#: inet/rcmd.c:220
 #, c-format
 msgid "connect to address %s: "
 msgstr ""
 
-#: inet/rcmd.c:240
+#: inet/rcmd.c:236
 #, c-format
 msgid "Trying %s...\n"
 msgstr ""
 
-#: inet/rcmd.c:289
+#: inet/rcmd.c:281
 #, c-format
 msgid "rcmd: write (setting up stderr): %m\n"
 msgstr ""
 
-#: inet/rcmd.c:310
+#: inet/rcmd.c:300
 #, c-format
 msgid "rcmd: poll (setting up stderr): %m\n"
 msgstr ""
 
-#: inet/rcmd.c:313
+#: inet/rcmd.c:303
 msgid "poll: protocol failure in circuit setup\n"
 msgstr ""
 
-#: inet/rcmd.c:358
+#: inet/rcmd.c:344
 msgid "socket: protocol failure in circuit setup\n"
 msgstr ""
 
-#: inet/rcmd.c:387
+#: inet/rcmd.c:371
 #, c-format
 msgid "rcmd: %s: short read"
 msgstr ""
 
-#: inet/rcmd.c:549
+#: inet/rcmd.c:531
 msgid "lstat failed"
 msgstr ""
 
-#: inet/rcmd.c:551
+#: inet/rcmd.c:533
 msgid "not regular file"
 msgstr ""
 
-#: inet/rcmd.c:556
+#: inet/rcmd.c:538
 msgid "cannot open"
 msgstr ""
 
-#: inet/rcmd.c:558
+#: inet/rcmd.c:540
 msgid "fstat failed"
 msgstr ""
 
-#: inet/rcmd.c:560
+#: inet/rcmd.c:542
 msgid "bad owner"
 msgstr ""
 
-#: inet/rcmd.c:562
+#: inet/rcmd.c:544
 msgid "writeable by other than owner"
 msgstr ""
 
-#: inet/rcmd.c:564
+#: inet/rcmd.c:546
 msgid "hard linked somewhere"
 msgstr ""
 
@@ -3874,11 +3625,11 @@ msgstr ""
 msgid "Unknown .netrc keyword %s"
 msgstr ""
 
-#: sunrpc/auth_unix.c:115 sunrpc/auth_unix.c:118
+#: sunrpc/auth_unix.c:117 sunrpc/auth_unix.c:120
 msgid "authunix_create: out of memory\n"
 msgstr ""
 
-#: sunrpc/auth_unix.c:318
+#: sunrpc/auth_unix.c:356
 msgid "auth_none.c - Fatal marshalling problem"
 msgstr ""
 
@@ -4012,7 +3763,7 @@ msgstr ""
 msgid "clnttcp_create: out of memory\n"
 msgstr ""
 
-#: sunrpc/clnt_udp.c:141 sunrpc/clnt_udp.c:144
+#: sunrpc/clnt_udp.c:142 sunrpc/clnt_udp.c:145
 msgid "clntudp_create: out of memory\n"
 msgstr ""
 
@@ -4020,94 +3771,80 @@ msgstr ""
 msgid "clntunix_create: out of memory\n"
 msgstr ""
 
-#: sunrpc/get_myaddr.c:78
-msgid "get_myaddress: ioctl (get interface configuration)"
-msgstr ""
-
 #: sunrpc/pm_getmaps.c:74
 msgid "pmap_getmaps rpc problem"
 msgstr ""
 
-#: sunrpc/pmap_clnt.c:72
-msgid "__get_myaddress: ioctl (get interface configuration)"
-msgstr ""
-
-#: sunrpc/pmap_clnt.c:137
+#: sunrpc/pmap_clnt.c:129
 msgid "Cannot register service"
 msgstr ""
 
-#: sunrpc/pmap_rmt.c:190
-msgid "broadcast: ioctl (get interface configuration)"
-msgstr ""
-
-#: sunrpc/pmap_rmt.c:199
-msgid "broadcast: ioctl (get interface flags)"
-msgstr ""
-
-#: sunrpc/pmap_rmt.c:269
+#: sunrpc/pmap_rmt.c:248
 msgid "Cannot create socket for broadcast rpc"
 msgstr ""
 
-#: sunrpc/pmap_rmt.c:276
+#: sunrpc/pmap_rmt.c:255
 msgid "Cannot set socket option SO_BROADCAST"
 msgstr ""
 
-#: sunrpc/pmap_rmt.c:328
+#: sunrpc/pmap_rmt.c:307
 msgid "Cannot send broadcast packet"
 msgstr ""
 
-#: sunrpc/pmap_rmt.c:353
+#: sunrpc/pmap_rmt.c:332
 msgid "Broadcast poll problem"
 msgstr ""
 
-#: sunrpc/pmap_rmt.c:366
+#: sunrpc/pmap_rmt.c:345
 msgid "Cannot receive reply to broadcast"
 msgstr ""
 
-#: sunrpc/rpc_main.c:288
+#: sunrpc/rpc_main.c:290
 #, c-format
 msgid "%s: output would overwrite %s\n"
 msgstr ""
 
-#: sunrpc/rpc_main.c:295
+#: sunrpc/rpc_main.c:297
 #, c-format
 msgid "%s: unable to open %s: %m\n"
 msgstr ""
 
-#: sunrpc/rpc_main.c:307
+#: sunrpc/rpc_main.c:309
 #, c-format
 msgid "%s: while writing output %s: %m"
 msgstr ""
 
-#: sunrpc/rpc_main.c:342
+#: sunrpc/rpc_main.c:344
 #, c-format
 msgid "cannot find C preprocessor: %s \n"
 msgstr ""
 
-#: sunrpc/rpc_main.c:350
+#: sunrpc/rpc_main.c:352
 msgid "cannot find any C preprocessor (cpp)\n"
 msgstr ""
 
-#: sunrpc/rpc_main.c:419
+#: sunrpc/rpc_main.c:421
 #, c-format
 msgid "%s: C preprocessor failed with signal %d\n"
 msgstr ""
 
-#: sunrpc/rpc_main.c:422
+#: sunrpc/rpc_main.c:424
 #, c-format
 msgid "%s: C preprocessor failed with exit code %d\n"
 msgstr ""
 
-#: sunrpc/rpc_main.c:462
+#: sunrpc/rpc_main.c:464
 #, c-format
 msgid "illegal nettype :`%s'\n"
 msgstr ""
 
 #: sunrpc/rpc_main.c:1104
+#, c-format
 msgid "rpcgen: too many defines\n"
 msgstr ""
 
 #: sunrpc/rpc_main.c:1116
+#, c-format
 msgid "rpcgen: arglist coding error\n"
 msgstr ""
 
@@ -4119,6 +3856,7 @@ msgid "file `%s' already exists and may be overwritten\n"
 msgstr ""
 
 #: sunrpc/rpc_main.c:1194
+#, c-format
 msgid "Cannot specify more than one input file!\n"
 msgstr ""
 
@@ -4127,6 +3865,7 @@ msgid "This implementation doesn't support newstyle or MT-safe code!\n"
 msgstr ""
 
 #: sunrpc/rpc_main.c:1373
+#, c-format
 msgid "Cannot use netid flag with inetd flag!\n"
 msgstr ""
 
@@ -4139,10 +3878,12 @@ msgid "Cannot use table flags with newstyle!\n"
 msgstr ""
 
 #: sunrpc/rpc_main.c:1411
+#, c-format
 msgid "\"infile\" is required for template generation flags.\n"
 msgstr ""
 
 #: sunrpc/rpc_main.c:1416
+#, c-format
 msgid "Cannot have more than one file generation flag!\n"
 msgstr ""
 
@@ -4173,23 +3914,23 @@ msgstr ""
 msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
 msgstr ""
 
-#: sunrpc/rpc_scan.c:116
+#: sunrpc/rpc_scan.c:118
 msgid "constant or identifier expected"
 msgstr ""
 
-#: sunrpc/rpc_scan.c:312
+#: sunrpc/rpc_scan.c:314
 msgid "illegal character in file: "
 msgstr ""
 
-#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377
+#: sunrpc/rpc_scan.c:353 sunrpc/rpc_scan.c:379
 msgid "unterminated string constant"
 msgstr ""
 
-#: sunrpc/rpc_scan.c:383
+#: sunrpc/rpc_scan.c:385
 msgid "empty char string"
 msgstr ""
 
-#: sunrpc/rpc_scan.c:525 sunrpc/rpc_scan.c:535
+#: sunrpc/rpc_scan.c:527 sunrpc/rpc_scan.c:537
 msgid "preprocessor error"
 msgstr ""
 
@@ -4279,25 +4020,25 @@ msgstr ""
 msgid "can't reassign procedure number %ld\n"
 msgstr ""
 
-#: sunrpc/svc_simple.c:96
+#: sunrpc/svc_simple.c:97
 msgid "couldn't create an rpc server\n"
 msgstr ""
 
-#: sunrpc/svc_simple.c:104
+#: sunrpc/svc_simple.c:105
 #, c-format
 msgid "couldn't register prog %ld vers %ld\n"
 msgstr ""
 
-#: sunrpc/svc_simple.c:111
+#: sunrpc/svc_simple.c:113
 msgid "registerrpc: out of memory\n"
 msgstr ""
 
-#: sunrpc/svc_simple.c:175
+#: sunrpc/svc_simple.c:178
 #, c-format
 msgid "trouble replying to prog %d\n"
 msgstr ""
 
-#: sunrpc/svc_simple.c:183
+#: sunrpc/svc_simple.c:187
 #, c-format
 msgid "never registered prog %d\n"
 msgstr ""
@@ -4334,31 +4075,31 @@ msgstr ""
 msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
 msgstr ""
 
-#: sunrpc/svc_udp.c:471
+#: sunrpc/svc_udp.c:493
 msgid "enablecache: cache already enabled"
 msgstr ""
 
-#: sunrpc/svc_udp.c:477
+#: sunrpc/svc_udp.c:499
 msgid "enablecache: could not allocate cache"
 msgstr ""
 
-#: sunrpc/svc_udp.c:485
+#: sunrpc/svc_udp.c:507
 msgid "enablecache: could not allocate cache data"
 msgstr ""
 
-#: sunrpc/svc_udp.c:492
+#: sunrpc/svc_udp.c:514
 msgid "enablecache: could not allocate cache fifo"
 msgstr ""
 
-#: sunrpc/svc_udp.c:528
+#: sunrpc/svc_udp.c:550
 msgid "cache_set: victim not found"
 msgstr ""
 
-#: sunrpc/svc_udp.c:539
+#: sunrpc/svc_udp.c:561
 msgid "cache_set: victim alloc failed"
 msgstr ""
 
-#: sunrpc/svc_udp.c:545
+#: sunrpc/svc_udp.c:567
 msgid "cache_set: could not allocate new rpc_buffer"
 msgstr ""
 
@@ -4378,11 +4119,11 @@ msgstr ""
 msgid "svc_unix: makefd_xprt: out of memory\n"
 msgstr ""
 
-#: sunrpc/xdr.c:570 sunrpc/xdr.c:573
+#: sunrpc/xdr.c:568 sunrpc/xdr.c:571
 msgid "xdr_bytes: out of memory\n"
 msgstr ""
 
-#: sunrpc/xdr.c:725 sunrpc/xdr.c:728
+#: sunrpc/xdr.c:726 sunrpc/xdr.c:729
 msgid "xdr_string: out of memory\n"
 msgstr ""
 
@@ -4438,6 +4179,10 @@ msgstr ""
 msgid "First/next chain broken"
 msgstr ""
 
+#: nis/nis_error.c:40
+msgid "Not owner"
+msgstr ""
+
 #: nis/nis_error.c:41
 msgid "Name not served by this server"
 msgstr ""
@@ -4582,7 +4327,7 @@ msgstr ""
 msgid "Master server busy, full dump rescheduled."
 msgstr ""
 
-#: nis/nis_local_names.c:126
+#: nis/nis_local_names.c:122
 #, c-format
 msgid "LOCAL entry for UID %d in directory %s not unique\n"
 msgstr ""
@@ -4627,605 +4372,741 @@ msgstr ""
 msgid "(Unknown object)\n"
 msgstr ""
 
-#: nis/nis_print.c:166
+#: nis/nis_print.c:167
 #, c-format
 msgid "Name : `%s'\n"
 msgstr ""
 
-#: nis/nis_print.c:167
+#: nis/nis_print.c:168
 #, c-format
 msgid "Type : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:172
+#: nis/nis_print.c:173
 msgid "Master Server :\n"
 msgstr ""
 
-#: nis/nis_print.c:174
+#: nis/nis_print.c:175
 msgid "Replicate :\n"
 msgstr ""
 
-#: nis/nis_print.c:175
+#: nis/nis_print.c:176
 #, c-format
 msgid "\tName       : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:176
+#: nis/nis_print.c:177
 msgid "\tPublic Key : "
 msgstr ""
 
-#: nis/nis_print.c:180
+#: nis/nis_print.c:181
 msgid "None.\n"
 msgstr ""
 
-#: nis/nis_print.c:183
+#: nis/nis_print.c:184
 #, c-format
 msgid "Diffie-Hellmann (%d bits)\n"
 msgstr ""
 
-#: nis/nis_print.c:188
+#: nis/nis_print.c:189
 #, c-format
 msgid "RSA (%d bits)\n"
 msgstr ""
 
-#: nis/nis_print.c:191
+#: nis/nis_print.c:192
 msgid "Kerberos.\n"
 msgstr ""
 
-#: nis/nis_print.c:194
+#: nis/nis_print.c:195
 #, c-format
 msgid "Unknown (type = %d, bits = %d)\n"
 msgstr ""
 
-#: nis/nis_print.c:205
+#: nis/nis_print.c:206
 #, c-format
 msgid "\tUniversal addresses (%u)\n"
 msgstr ""
 
-#: nis/nis_print.c:227
+#: nis/nis_print.c:228
 msgid "Time to live : "
 msgstr ""
 
-#: nis/nis_print.c:229
+#: nis/nis_print.c:230
 msgid "Default Access rights :\n"
 msgstr ""
 
-#: nis/nis_print.c:238
+#: nis/nis_print.c:239
 #, c-format
 msgid "\tType         : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:239
+#: nis/nis_print.c:240
 msgid "\tAccess rights: "
 msgstr ""
 
-#: nis/nis_print.c:252
+#: nis/nis_print.c:254
 msgid "Group Flags :"
 msgstr ""
 
-#: nis/nis_print.c:255
+#: nis/nis_print.c:257
 msgid ""
 "\n"
 "Group Members :\n"
 msgstr ""
 
-#: nis/nis_print.c:266
+#: nis/nis_print.c:269
 #, c-format
 msgid "Table Type          : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:267
+#: nis/nis_print.c:270
 #, c-format
 msgid "Number of Columns   : %d\n"
 msgstr ""
 
-#: nis/nis_print.c:268
+#: nis/nis_print.c:271
 #, c-format
 msgid "Character Separator : %c\n"
 msgstr ""
 
-#: nis/nis_print.c:269
+#: nis/nis_print.c:272
 #, c-format
 msgid "Search Path         : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:270
+#: nis/nis_print.c:273
 msgid "Columns             :\n"
 msgstr ""
 
-#: nis/nis_print.c:273
+#: nis/nis_print.c:276
 #, c-format
 msgid "\t[%d]\tName          : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:275
+#: nis/nis_print.c:278
 msgid "\t\tAttributes    : "
 msgstr ""
 
-#: nis/nis_print.c:277
+#: nis/nis_print.c:280
 msgid "\t\tAccess Rights : "
 msgstr ""
 
-#: nis/nis_print.c:286
+#: nis/nis_print.c:290
 msgid "Linked Object Type : "
 msgstr ""
 
-#: nis/nis_print.c:288
+#: nis/nis_print.c:292
 #, c-format
 msgid "Linked to : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:297
+#: nis/nis_print.c:302
 #, c-format
 msgid "\tEntry data of type %s\n"
 msgstr ""
 
-#: nis/nis_print.c:300
+#: nis/nis_print.c:305
 #, c-format
 msgid "\t[%u] - [%u bytes] "
 msgstr ""
 
-#: nis/nis_print.c:303
+#: nis/nis_print.c:308
 msgid "Encrypted data\n"
 msgstr ""
 
-#: nis/nis_print.c:305
+#: nis/nis_print.c:310
 msgid "Binary data\n"
 msgstr ""
 
-#: nis/nis_print.c:320
+#: nis/nis_print.c:326
 #, c-format
 msgid "Object Name   : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:321
+#: nis/nis_print.c:327
 #, c-format
 msgid "Directory     : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:322
+#: nis/nis_print.c:328
 #, c-format
 msgid "Owner         : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:323
+#: nis/nis_print.c:329
 #, c-format
 msgid "Group         : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:324
+#: nis/nis_print.c:330
 msgid "Access Rights : "
 msgstr ""
 
-#: nis/nis_print.c:326
+#: nis/nis_print.c:332
+#, c-format
 msgid ""
 "\n"
 "Time to Live  : "
 msgstr ""
 
-#: nis/nis_print.c:329
+#: nis/nis_print.c:335
 #, c-format
 msgid "Creation Time : %s"
 msgstr ""
 
-#: nis/nis_print.c:331
+#: nis/nis_print.c:337
 #, c-format
 msgid "Mod. Time     : %s"
 msgstr ""
 
-#: nis/nis_print.c:332
+#: nis/nis_print.c:338
 msgid "Object Type   : "
 msgstr ""
 
-#: nis/nis_print.c:352
+#: nis/nis_print.c:358
 #, c-format
 msgid "    Data Length = %u\n"
 msgstr ""
 
-#: nis/nis_print.c:365
+#: nis/nis_print.c:372
 #, c-format
 msgid "Status            : %s\n"
 msgstr ""
 
-#: nis/nis_print.c:366
+#: nis/nis_print.c:373
 #, c-format
 msgid "Number of objects : %u\n"
 msgstr ""
 
-#: nis/nis_print.c:370
+#: nis/nis_print.c:377
 #, c-format
 msgid "Object #%d:\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:115
+#: nis/nis_print_group_entry.c:113
 #, c-format
 msgid "Group entry for \"%s.%s\" group:\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:123
+#: nis/nis_print_group_entry.c:121
 msgid "    Explicit members:\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:128
+#: nis/nis_print_group_entry.c:126
 msgid "    No explicit members\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:131
+#: nis/nis_print_group_entry.c:129
 msgid "    Implicit members:\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:136
+#: nis/nis_print_group_entry.c:134
 msgid "    No implicit members\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:139
+#: nis/nis_print_group_entry.c:137
 msgid "    Recursive members:\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:144
+#: nis/nis_print_group_entry.c:142
 msgid "    No recursive members\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163
+#: nis/nis_print_group_entry.c:145 nis/nis_print_group_entry.c:161
 msgid "    Explicit nonmembers:\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:152
+#: nis/nis_print_group_entry.c:150
 msgid "    No explicit nonmembers\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:155
+#: nis/nis_print_group_entry.c:153
 msgid "    Implicit nonmembers:\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:160
+#: nis/nis_print_group_entry.c:158
 msgid "    No implicit nonmembers\n"
 msgstr ""
 
-#: nis/nis_print_group_entry.c:168
+#: nis/nis_print_group_entry.c:166
 msgid "    No recursive nonmembers\n"
 msgstr ""
 
-#: nis/nss_nisplus/nisplus-publickey.c:96
-#: nis/nss_nisplus/nisplus-publickey.c:172
+#: nis/nss_nisplus/nisplus-publickey.c:101
+#: nis/nss_nisplus/nisplus-publickey.c:182
 #, c-format
 msgid "DES entry for netname %s not unique\n"
 msgstr ""
 
-#: nis/nss_nisplus/nisplus-publickey.c:208
+#: nis/nss_nisplus/nisplus-publickey.c:218
 #, c-format
 msgid "netname2user: missing group id list in `%s'."
 msgstr ""
 
-#: nis/nss_nisplus/nisplus-publickey.c:285
-#: nis/nss_nisplus/nisplus-publickey.c:291
-#: nis/nss_nisplus/nisplus-publickey.c:350
-#: nis/nss_nisplus/nisplus-publickey.c:359
+#: nis/nss_nisplus/nisplus-publickey.c:300
+#: nis/nss_nisplus/nisplus-publickey.c:306
+#: nis/nss_nisplus/nisplus-publickey.c:370
+#: nis/nss_nisplus/nisplus-publickey.c:379
 #, c-format
 msgid "netname2user: (nis+ lookup): %s\n"
 msgstr ""
 
-#: nis/nss_nisplus/nisplus-publickey.c:304
+#: nis/nss_nisplus/nisplus-publickey.c:319
 #, c-format
 msgid "netname2user: DES entry for %s in directory %s not unique"
 msgstr ""
 
-#: nis/nss_nisplus/nisplus-publickey.c:322
+#: nis/nss_nisplus/nisplus-publickey.c:337
 #, c-format
 msgid "netname2user: principal name `%s' too long"
 msgstr ""
 
-#: nis/nss_nisplus/nisplus-publickey.c:372
+#: nis/nss_nisplus/nisplus-publickey.c:392
 #, c-format
 msgid "netname2user: LOCAL entry for %s in directory %s not unique"
 msgstr ""
 
-#: nis/nss_nisplus/nisplus-publickey.c:379
+#: nis/nss_nisplus/nisplus-publickey.c:399
 msgid "netname2user: should not have uid 0"
 msgstr ""
 
-#: nis/ypclnt.c:174
+#: nis/ypclnt.c:145
 #, c-format
 msgid "YPBINDPROC_DOMAIN: %s\n"
 msgstr ""
 
-#: nis/ypclnt.c:789
+#: nis/ypclnt.c:795
 msgid "Request arguments bad"
 msgstr ""
 
-#: nis/ypclnt.c:791
+#: nis/ypclnt.c:797
 msgid "RPC failure on NIS operation"
 msgstr ""
 
-#: nis/ypclnt.c:793
+#: nis/ypclnt.c:799
 msgid "Can't bind to server which serves this domain"
 msgstr ""
 
-#: nis/ypclnt.c:795
+#: nis/ypclnt.c:801
 msgid "No such map in server's domain"
 msgstr ""
 
-#: nis/ypclnt.c:797
+#: nis/ypclnt.c:803
 msgid "No such key in map"
 msgstr ""
 
-#: nis/ypclnt.c:799
+#: nis/ypclnt.c:805
 msgid "Internal NIS error"
 msgstr ""
 
-#: nis/ypclnt.c:801
+#: nis/ypclnt.c:807
 msgid "Local resource allocation failure"
 msgstr ""
 
-#: nis/ypclnt.c:803
+#: nis/ypclnt.c:809
 msgid "No more records in map database"
 msgstr ""
 
-#: nis/ypclnt.c:805
+#: nis/ypclnt.c:811
 msgid "Can't communicate with portmapper"
 msgstr ""
 
-#: nis/ypclnt.c:807
+#: nis/ypclnt.c:813
 msgid "Can't communicate with ypbind"
 msgstr ""
 
-#: nis/ypclnt.c:809
+#: nis/ypclnt.c:815
 msgid "Can't communicate with ypserv"
 msgstr ""
 
-#: nis/ypclnt.c:811
+#: nis/ypclnt.c:817
 msgid "Local domain name not set"
 msgstr ""
 
-#: nis/ypclnt.c:813
+#: nis/ypclnt.c:819
 msgid "NIS map database is bad"
 msgstr ""
 
-#: nis/ypclnt.c:815
+#: nis/ypclnt.c:821
 msgid "NIS client/server version mismatch - can't supply service"
 msgstr ""
 
-#: nis/ypclnt.c:819
+#: nis/ypclnt.c:825
 msgid "Database is busy"
 msgstr ""
 
-#: nis/ypclnt.c:821
+#: nis/ypclnt.c:827
 msgid "Unknown NIS error code"
 msgstr ""
 
-#: nis/ypclnt.c:863
+#: nis/ypclnt.c:862
 msgid "Internal ypbind error"
 msgstr ""
 
-#: nis/ypclnt.c:865
+#: nis/ypclnt.c:864
 msgid "Domain not bound"
 msgstr ""
 
-#: nis/ypclnt.c:867
+#: nis/ypclnt.c:866
 msgid "System resource allocation failure"
 msgstr ""
 
-#: nis/ypclnt.c:869
+#: nis/ypclnt.c:868
 msgid "Unknown ypbind error"
 msgstr ""
 
-#: nis/ypclnt.c:908
+#: nis/ypclnt.c:907
 msgid "yp_update: cannot convert host to netname\n"
 msgstr ""
 
-#: nis/ypclnt.c:920
+#: nis/ypclnt.c:919
 msgid "yp_update: cannot get server address\n"
 msgstr ""
 
-#: nscd/cache.c:88
-msgid "while allocating hash table entry"
+#: nscd/aicache.c:74 nscd/hstcache.c:436
+#, c-format
+msgid "Haven't found \"%s\" in hosts cache!"
 msgstr ""
 
-#: nscd/cache.c:150 nscd/connections.c:187
+#: nscd/aicache.c:76 nscd/hstcache.c:438
 #, c-format
-msgid "cannot stat() file `%s': %s"
+msgid "Reloading \"%s\" in hosts cache!"
 msgstr ""
 
-#: nscd/connections.c:146
-msgid "cannot read configuration file; this is fatal"
+#: nscd/cache.c:127
+#, c-format
+msgid "add new entry \"%s\" of type %s for %s to cache%s"
 msgstr ""
 
-#: nscd/connections.c:153
+#: nscd/cache.c:207 nscd/connections.c:501
+#, c-format
+msgid "cannot stat() file `%s': %s"
+msgstr ""
+
+#: nscd/connections.c:209
 msgid "Cannot run nscd in secure mode as unprivileged user"
 msgstr ""
 
-#: nscd/connections.c:175
+#: nscd/connections.c:243 nscd/connections.c:255 nscd/connections.c:266
 #, c-format
-msgid "while allocating cache: %s"
+msgid "invalid persistent database file \"%s\": %s"
+msgstr ""
+
+#: nscd/connections.c:257
+msgid "header size does not match"
+msgstr ""
+
+#: nscd/connections.c:268
+msgid "file size does not match"
+msgstr ""
+
+#: nscd/connections.c:285
+#, c-format
+msgid ""
+"suggested size of table for database %s larger than the persistent "
+"database's table"
+msgstr ""
+
+#: nscd/connections.c:295 nscd/connections.c:376
+#, c-format
+msgid "cannot create read-only descriptor for \"%s\"; no mmap"
+msgstr ""
+
+#: nscd/connections.c:355
+#, c-format
+msgid ""
+"database for %s corrupted or simultaneously used; remove %s manually if "
+"necessary and restart"
 msgstr ""
 
-#: nscd/connections.c:200
+#: nscd/connections.c:362
+#, c-format
+msgid "cannot create %s; no persistent database used"
+msgstr ""
+
+#: nscd/connections.c:365
+#, c-format
+msgid "cannot create %s; no sharing possible"
+msgstr ""
+
+#: nscd/connections.c:430
+#, c-format
+msgid "cannot write to database file %s: %s"
+msgstr ""
+
+#: nscd/connections.c:464
+#, c-format
+msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:514
 #, c-format
 msgid "cannot open socket: %s"
 msgstr ""
 
-#: nscd/connections.c:218
+#: nscd/connections.c:531
+#, c-format
+msgid "cannot change socket to nonblocking mode: %s"
+msgstr ""
+
+#: nscd/connections.c:539
+#, c-format
+msgid "cannot set socket to close on exec: %s"
+msgstr ""
+
+#: nscd/connections.c:550
 #, c-format
 msgid "cannot enable socket to accept connections: %s"
 msgstr ""
 
-#: nscd/connections.c:260
+#: nscd/connections.c:628
 #, c-format
-msgid "handle_request: request received (Version = %d)"
+msgid "provide access to FD %d, for %s"
 msgstr ""
 
-#: nscd/connections.c:266
+#: nscd/connections.c:640
 #, c-format
 msgid "cannot handle old request version %d; current version is %d"
 msgstr ""
 
-#: nscd/connections.c:304 nscd/connections.c:326
+#: nscd/connections.c:689 nscd/connections.c:716
 #, c-format
 msgid "cannot write result: %s"
 msgstr ""
 
-#: nscd/connections.c:405 nscd/connections.c:499
+#: nscd/connections.c:792 nscd/connections.c:1102
 #, c-format
 msgid "error getting callers id: %s"
 msgstr ""
 
-#: nscd/connections.c:471
+#: nscd/connections.c:850 nscd/connections.c:864
+#, c-format
+msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:904
+#, c-format
+msgid "cannot change to old UID: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:914
+#, c-format
+msgid "cannot change to old GID: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:927
 #, c-format
-msgid "while accepting connection: %s"
+msgid "cannot change to old working directory: %s; disabling paranoia mode"
 msgstr ""
 
-#: nscd/connections.c:482
+#: nscd/connections.c:955
+#, c-format
+msgid "re-exec failed: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:1080
 #, c-format
 msgid "short read while reading request: %s"
 msgstr ""
 
-#: nscd/connections.c:518
+#: nscd/connections.c:1130
 #, c-format
 msgid "key length in request too long: %d"
 msgstr ""
 
-#: nscd/connections.c:532
+#: nscd/connections.c:1143
 #, c-format
 msgid "short read while reading request key: %s"
 msgstr ""
 
-#: nscd/connections.c:591 nscd/connections.c:592 nscd/connections.c:611
-#: nscd/connections.c:624 nscd/connections.c:630 nscd/connections.c:637
+#: nscd/connections.c:1152
 #, c-format
-msgid "Failed to run nscd as user '%s'"
+msgid "handle_request: request received (Version = %d) from PID %ld"
 msgstr ""
 
-#: nscd/connections.c:612
-msgid "getgrouplist failed"
+#: nscd/connections.c:1157
+#, c-format
+msgid "handle_request: request received (Version = %d)"
 msgstr ""
 
-#: nscd/connections.c:625
-msgid "setgroups failed"
+#: nscd/connections.c:1515
+#, c-format
+msgid "could only start %d threads; terminating"
 msgstr ""
 
-#: nscd/grpcache.c:103 nscd/hstcache.c:111 nscd/pwdcache.c:109
-msgid "while allocating key copy"
+#: nscd/connections.c:1563 nscd/connections.c:1564 nscd/connections.c:1581
+#: nscd/connections.c:1590 nscd/connections.c:1603 nscd/connections.c:1609
+#: nscd/connections.c:1616
+#, c-format
+msgid "Failed to run nscd as user '%s'"
 msgstr ""
 
-#: nscd/grpcache.c:153 nscd/hstcache.c:168 nscd/pwdcache.c:146
-msgid "while allocating cache entry"
+#: nscd/connections.c:1582
+msgid "initial getgrouplist failed"
+msgstr ""
+
+#: nscd/connections.c:1591
+msgid "getgrouplist failed"
 msgstr ""
 
-#: nscd/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+#: nscd/connections.c:1604
+msgid "setgroups failed"
+msgstr ""
+
+#: nscd/grpcache.c:370 nscd/hstcache.c:386 nscd/initgrcache.c:382
+#: nscd/pwdcache.c:366
 #, c-format
 msgid "short write in %s: %s"
 msgstr ""
 
-#: nscd/grpcache.c:218
+#: nscd/grpcache.c:413 nscd/initgrcache.c:75
 #, c-format
 msgid "Haven't found \"%s\" in group cache!"
 msgstr ""
 
-#: nscd/grpcache.c:284
+#: nscd/grpcache.c:415 nscd/initgrcache.c:77
+#, c-format
+msgid "Reloading \"%s\" in group cache!"
+msgstr ""
+
+#: nscd/grpcache.c:506
 #, c-format
 msgid "Invalid numeric gid \"%s\"!"
 msgstr ""
 
-#: nscd/grpcache.c:291
+#: nscd/mem.c:389
 #, c-format
-msgid "Haven't found \"%d\" in group cache!"
+msgid "freed %zu bytes in %s cache"
 msgstr ""
 
-#: nscd/hstcache.c:304 nscd/hstcache.c:370 nscd/hstcache.c:435
-#: nscd/hstcache.c:500
+#: nscd/mem.c:509
 #, c-format
-msgid "Haven't found \"%s\" in hosts cache!"
+msgid "no more memory for database '%s'"
 msgstr ""
 
-#: nscd/nscd.c:85
+#: nscd/nscd.c:100
 msgid "Read configuration data from NAME"
 msgstr ""
 
-#: nscd/nscd.c:87
+#: nscd/nscd.c:102
 msgid "Do not fork and display messages on the current tty"
 msgstr ""
 
-#: nscd/nscd.c:88
+#: nscd/nscd.c:103
 msgid "NUMBER"
 msgstr ""
 
-#: nscd/nscd.c:88
+#: nscd/nscd.c:103
 msgid "Start NUMBER threads"
 msgstr ""
 
-#: nscd/nscd.c:89
+#: nscd/nscd.c:104
 msgid "Shut the server down"
 msgstr ""
 
-#: nscd/nscd.c:90
+#: nscd/nscd.c:105
 msgid "Print current configuration statistic"
 msgstr ""
 
-#: nscd/nscd.c:91
+#: nscd/nscd.c:106
 msgid "TABLE"
 msgstr ""
 
-#: nscd/nscd.c:92
+#: nscd/nscd.c:107
 msgid "Invalidate the specified cache"
 msgstr ""
 
-#: nscd/nscd.c:93
+#: nscd/nscd.c:108
 msgid "TABLE,yes"
 msgstr ""
 
-#: nscd/nscd.c:93
+#: nscd/nscd.c:109
 msgid "Use separate cache for each user"
 msgstr ""
 
-#: nscd/nscd.c:98
+#: nscd/nscd.c:114
 msgid "Name Service Cache Daemon."
 msgstr ""
 
-#: nscd/nscd.c:131
+#: nscd/nscd.c:156
+msgid "cannot read configuration file; this is fatal"
+msgstr ""
+
+#: nscd/nscd.c:167
 msgid "already running"
 msgstr ""
 
-#: nscd/nscd.c:243 nscd/nscd.c:263 nscd/nscd.c:269
+#: nscd/nscd.c:182 nscd/nscd.c:237
+msgid "cannot fork"
+msgstr ""
+
+#: nscd/nscd.c:251
+msgid "Could not create log file"
+msgstr ""
+
+#: nscd/nscd.c:304 nscd/nscd.c:328 nscd/nscd_stat.c:162
 msgid "Only root is allowed to use this option!"
 msgstr ""
 
-#: nscd/nscd_conf.c:83
+#: nscd/nscd.c:378
+msgid "secure services not implemented anymore"
+msgstr ""
+
+#: nscd/nscd_conf.c:94
 #, c-format
 msgid "Parse error: %s"
 msgstr ""
 
-#: nscd/nscd_conf.c:166
+#: nscd/nscd_conf.c:194
+msgid "Must specify user name for server-user option"
+msgstr ""
+
+#: nscd/nscd_conf.c:201
+msgid "Must specify user name for stat-user option"
+msgstr ""
+
+#: nscd/nscd_conf.c:251
 #, c-format
-msgid "Could not create log file \"%s\""
+msgid "invalid value for 'reload-count': %u"
 msgstr ""
 
-#: nscd/nscd_conf.c:182
-msgid "Must specify user name for server-user option"
+#: nscd/nscd_conf.c:266
+msgid "Must specify value for restart-interval option"
 msgstr ""
 
-#: nscd/nscd_conf.c:187
+#: nscd/nscd_conf.c:269
 #, c-format
 msgid "Unknown option: %s %s %s"
 msgstr ""
 
-#: nscd/nscd_stat.c:87
+#: nscd/nscd_conf.c:282
+#, c-format
+msgid "cannot get current working directory: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/nscd_stat.c:131
 #, c-format
 msgid "cannot write statistics: %s"
 msgstr ""
 
-#: nscd/nscd_stat.c:105
+#: nscd/nscd_stat.c:158
+#, c-format
+msgid "Only root or %s is allowed to use this option!"
+msgstr ""
+
+#: nscd/nscd_stat.c:169
 msgid "nscd not running!\n"
 msgstr ""
 
-#: nscd/nscd_stat.c:116
+#: nscd/nscd_stat.c:180
 msgid "write incomplete"
 msgstr ""
 
-#: nscd/nscd_stat.c:128
+#: nscd/nscd_stat.c:192
 msgid "cannot read statistics data"
 msgstr ""
 
-#: nscd/nscd_stat.c:131
+#: nscd/nscd_stat.c:195
 #, c-format
 msgid ""
 "nscd configuration:\n"
@@ -5233,51 +5114,87 @@ msgid ""
 "%15d  server debug level\n"
 msgstr ""
 
-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-msgid "      no"
+#: nscd/nscd_stat.c:219
+#, c-format
+msgid "%3ud %2uh %2um %2lus  server runtime\n"
 msgstr ""
 
-#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148
-msgid "     yes"
+#: nscd/nscd_stat.c:222
+#, c-format
+msgid "    %2uh %2um %2lus  server runtime\n"
 msgstr ""
 
-#: nscd/nscd_stat.c:154
+#: nscd/nscd_stat.c:224
+#, c-format
+msgid "        %2um %2lus  server runtime\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:226
+#, c-format
+msgid "            %2lus  server runtime\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:228
+#, c-format
+msgid ""
+"%15d  current number of threads\n"
+"%15d  maximum number of threads\n"
+"%15lu  number of times clients had to wait\n"
+"%15s  paranoia mode enabled\n"
+"%15lu  restart internal\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:261
 #, c-format
 msgid ""
 "\n"
 "%s cache:\n"
 "\n"
 "%15s  cache is enabled\n"
-"%15Zd  suggested size\n"
-"%15ld  seconds time to live for positive entries\n"
-"%15ld  seconds time to live for negative entries\n"
-"%15ld  cache hits on positive entries\n"
-"%15ld  cache hits on negative entries\n"
-"%15ld  cache misses on positive entries\n"
-"%15ld  cache misses on negative entries\n"
-"%15ld%% cache hit rate\n"
+"%15s  cache is persistent\n"
+"%15s  cache is shared\n"
+"%15zu  suggested size\n"
+"%15zu  total data pool size\n"
+"%15zu  used data pool size\n"
+"%15lu  seconds time to live for positive entries\n"
+"%15lu  seconds time to live for negative entries\n"
+"%15<PRIuMAX>  cache hits on positive entries\n"
+"%15<PRIuMAX>  cache hits on negative entries\n"
+"%15<PRIuMAX>  cache misses on positive entries\n"
+"%15<PRIuMAX>  cache misses on negative entries\n"
+"%15lu%% cache hit rate\n"
+"%15zu  current number of cached values\n"
+"%15zu  maximum number of cached values\n"
+"%15zu  maximum chain length searched\n"
+"%15<PRIuMAX>  number of delays on rdlock\n"
+"%15<PRIuMAX>  number of delays on wrlock\n"
+"%15<PRIuMAX>  memory allocations failed\n"
 "%15s  check /etc/%s for changes\n"
 msgstr ""
 
-#: nscd/pwdcache.c:214
+#: nscd/pwdcache.c:409
 #, c-format
 msgid "Haven't found \"%s\" in password cache!"
 msgstr ""
 
-#: nscd/pwdcache.c:280
+#: nscd/pwdcache.c:411
 #, c-format
-msgid "Invalid numeric uid \"%s\"!"
+msgid "Reloading \"%s\" in password cache!"
 msgstr ""
 
-#: nscd/pwdcache.c:287
+#: nscd/pwdcache.c:503
 #, c-format
-msgid "Haven't found \"%d\" in password cache!"
+msgid "Invalid numeric uid \"%s\"!"
 msgstr ""
 
-#: elf/../sysdeps/generic/dl-sysdep.c:357
+#: elf/../sysdeps/generic/dl-sysdep.c:486
 msgid "cannot create capability list"
 msgstr ""
 
+#: elf/../sysdeps/generic/dl-tls.c:785
+msgid "cannot create TLS data structures"
+msgstr ""
+
 #: elf/../sysdeps/generic/readelflib.c:35
 #, c-format
 msgid "file %s is truncated\n"
@@ -5312,84 +5229,78 @@ msgstr ""
 msgid "%s is for unknown machine %d.\n"
 msgstr ""
 
-#: elf/cache.c:69
+#: elf/cache.c:70
 msgid "unknown"
 msgstr ""
 
-#: elf/cache.c:105
+#: elf/cache.c:111
 msgid "Unknown OS"
 msgstr ""
 
-#: elf/cache.c:110
+#: elf/cache.c:116
 #, c-format
 msgid ", OS ABI: %s %d.%d.%d"
 msgstr ""
 
-#: elf/cache.c:136 elf/ldconfig.c:1045
+#: elf/cache.c:142 elf/ldconfig.c:1220
 #, c-format
 msgid "Can't open cache file %s\n"
 msgstr ""
 
-#: elf/cache.c:148
+#: elf/cache.c:154
 msgid "mmap of cache file failed.\n"
 msgstr ""
 
-#: elf/cache.c:152 elf/cache.c:162
+#: elf/cache.c:158 elf/cache.c:168
 msgid "File is not a cache file.\n"
 msgstr ""
 
-#: elf/cache.c:195 elf/cache.c:205
+#: elf/cache.c:201 elf/cache.c:211
 #, c-format
 msgid "%d libs found in cache `%s'\n"
 msgstr ""
 
-#: elf/cache.c:392
+#: elf/cache.c:410
 #, c-format
 msgid "Can't remove old temporary cache file %s"
 msgstr ""
 
-#: elf/cache.c:399
+#: elf/cache.c:417
 #, c-format
 msgid "Can't create temporary cache file %s"
 msgstr ""
 
-#: elf/cache.c:407 elf/cache.c:416 elf/cache.c:420
+#: elf/cache.c:425 elf/cache.c:434 elf/cache.c:438
 msgid "Writing of cache data failed"
 msgstr ""
 
-#: elf/cache.c:424
+#: elf/cache.c:442
 msgid "Writing of cache data failed."
 msgstr ""
 
-#: elf/cache.c:431
+#: elf/cache.c:449
 #, c-format
 msgid "Changing access rights of %s to %#o failed"
 msgstr ""
 
-#: elf/cache.c:436
+#: elf/cache.c:454
 #, c-format
 msgid "Renaming of %s to %s failed"
 msgstr ""
 
-#: elf/dl-close.c:128
+#: elf/dl-close.c:119
 msgid "shared object not open"
 msgstr ""
 
-#: elf/dl-close.c:486 elf/dl-open.c:444
-msgid ""
-"TLS generation counter wrapped!  Please send report with the 'glibcbug' "
-"script."
-msgstr ""
-
-#: elf/dl-deps.c:111 elf/dl-open.c:183
+#: elf/dl-deps.c:112 elf/dl-open.c:234
 msgid "DST not allowed in SUID/SGID programs"
 msgstr ""
 
-#: elf/dl-deps.c:124
+#: elf/dl-deps.c:125
 msgid "empty dynamics string token substitution"
 msgstr ""
 
-#: elf/dl-deps.c:130
+#: elf/dl-deps.c:131
 #, c-format
 msgid ""
 "cannot load auxiliary `%s' because of empty dynamic string token "
@@ -5416,456 +5327,559 @@ msgstr ""
 msgid "error while loading shared libraries"
 msgstr ""
 
-#: elf/dl-load.c:339
+#: elf/dl-load.c:363
 msgid "cannot allocate name record"
 msgstr ""
 
-#: elf/dl-load.c:441 elf/dl-load.c:520 elf/dl-load.c:612 elf/dl-load.c:707
+#: elf/dl-load.c:465 elf/dl-load.c:544 elf/dl-load.c:664 elf/dl-load.c:759
 msgid "cannot create cache for search path"
 msgstr ""
 
-#: elf/dl-load.c:543
+#: elf/dl-load.c:567
 msgid "cannot create RUNPATH/RPATH copy"
 msgstr ""
 
-#: elf/dl-load.c:598
+#: elf/dl-load.c:650
 msgid "cannot create search path array"
 msgstr ""
 
-#: elf/dl-load.c:794
+#: elf/dl-load.c:836
 msgid "cannot stat shared object"
 msgstr ""
 
-#: elf/dl-load.c:838
+#: elf/dl-load.c:911
 msgid "cannot open zero fill device"
 msgstr ""
 
-#: elf/dl-load.c:847 elf/dl-load.c:1902
+#: elf/dl-load.c:956 elf/dl-load.c:2144
 msgid "cannot create shared object descriptor"
 msgstr ""
 
-#: elf/dl-load.c:866 elf/dl-load.c:1398 elf/dl-load.c:1481
+#: elf/dl-load.c:975 elf/dl-load.c:1620 elf/dl-load.c:1703
 msgid "cannot read file data"
 msgstr ""
 
-#: elf/dl-load.c:906
+#: elf/dl-load.c:1019
 msgid "ELF load command alignment not page-aligned"
 msgstr ""
 
-#: elf/dl-load.c:913
+#: elf/dl-load.c:1026
 msgid "ELF load command address/offset not properly aligned"
 msgstr ""
 
-#: elf/dl-load.c:988
+#: elf/dl-load.c:1110
 msgid "cannot allocate TLS data structures for initial thread"
 msgstr ""
 
-#: elf/dl-load.c:1012
+#: elf/dl-load.c:1134
 msgid "cannot handle TLS data"
 msgstr ""
 
-#: elf/dl-load.c:1047
+#: elf/dl-load.c:1153
+msgid "object file has no loadable segments"
+msgstr ""
+
+#: elf/dl-load.c:1189
 msgid "failed to map segment from shared object"
 msgstr ""
 
-#: elf/dl-load.c:1071
+#: elf/dl-load.c:1213
 msgid "cannot dynamically load executable"
 msgstr ""
 
-#: elf/dl-load.c:1132
+#: elf/dl-load.c:1274
 msgid "cannot change memory protections"
 msgstr ""
 
-#: elf/dl-load.c:1151
+#: elf/dl-load.c:1293
 msgid "cannot map zero-fill pages"
 msgstr ""
 
-#: elf/dl-load.c:1169
+#: elf/dl-load.c:1307
+msgid "object file has no dynamic section"
+msgstr ""
+
+#: elf/dl-load.c:1330
+msgid "shared object cannot be dlopen()ed"
+msgstr ""
+
+#: elf/dl-load.c:1343
 msgid "cannot allocate memory for program header"
 msgstr ""
 
-#: elf/dl-load.c:1200
-msgid "object file has no dynamic section"
+#: elf/dl-load.c:1385
+msgid "cannot enable executable stack as shared object requires"
 msgstr ""
 
-#: elf/dl-load.c:1240
-msgid "shared object cannot be dlopen()ed"
+#: elf/dl-load.c:1400
+msgid "cannot close file descriptor"
 msgstr ""
 
-#: elf/dl-load.c:1263
+#: elf/dl-load.c:1442
 msgid "cannot create searchlist"
 msgstr ""
 
-#: elf/dl-load.c:1398
+#: elf/dl-load.c:1620
 msgid "file too short"
 msgstr ""
 
-#: elf/dl-load.c:1421
+#: elf/dl-load.c:1643
 msgid "invalid ELF header"
 msgstr ""
 
-#: elf/dl-load.c:1430
+#: elf/dl-load.c:1652
 msgid "ELF file data encoding not big-endian"
 msgstr ""
 
-#: elf/dl-load.c:1432
+#: elf/dl-load.c:1654
 msgid "ELF file data encoding not little-endian"
 msgstr ""
 
-#: elf/dl-load.c:1436
+#: elf/dl-load.c:1658
 msgid "ELF file version ident does not match current one"
 msgstr ""
 
-#: elf/dl-load.c:1440
+#: elf/dl-load.c:1662
 msgid "ELF file OS ABI invalid"
 msgstr ""
 
-#: elf/dl-load.c:1442
+#: elf/dl-load.c:1664
 msgid "ELF file ABI version invalid"
 msgstr ""
 
-#: elf/dl-load.c:1445
+#: elf/dl-load.c:1667
 msgid "internal error"
 msgstr ""
 
-#: elf/dl-load.c:1452
+#: elf/dl-load.c:1674
 msgid "ELF file version does not match current one"
 msgstr ""
 
-#: elf/dl-load.c:1460
-msgid "ELF file's phentsize not the expected size"
+#: elf/dl-load.c:1682
+msgid "only ET_DYN and ET_EXEC can be loaded"
 msgstr ""
 
-#: elf/dl-load.c:1466
-msgid "only ET_DYN and ET_EXEC can be loaded"
+#: elf/dl-load.c:1688
+msgid "ELF file's phentsize not the expected size"
 msgstr ""
 
-#: elf/dl-load.c:1917
+#: elf/dl-load.c:2158
 msgid "cannot open shared object file"
 msgstr ""
 
-#: elf/dl-lookup.c:265 elf/dl-lookup.c:430
+#: elf/dl-lookup.c:249
 msgid "relocation error"
 msgstr ""
 
-#: elf/dl-open.c:111
+#: elf/dl-lookup.c:277
+msgid "symbol lookup error"
+msgstr ""
+
+#: elf/dl-open.c:118
 msgid "cannot extend global scope"
 msgstr ""
 
-#: elf/dl-open.c:214
+#: elf/dl-open.c:180
+msgid "invalid caller"
+msgstr ""
+
+#: elf/dl-open.c:250
 msgid "empty dynamic string token substitution"
 msgstr ""
 
-#: elf/dl-open.c:351 elf/dl-open.c:362
+#: elf/dl-open.c:416 elf/dl-open.c:427
 msgid "cannot create scope list"
 msgstr ""
 
-#: elf/dl-open.c:424
-msgid "cannot create TLS data structures"
+#: elf/dl-open.c:471
+msgid "TLS generation counter wrapped!  Please report this."
 msgstr ""
 
-#: elf/dl-open.c:486
+#: elf/dl-open.c:514
 msgid "invalid mode for dlopen()"
 msgstr ""
 
-#: elf/dl-reloc.c:58
-msgid "shared object cannot be dlopen()ed: static TLS memory too small"
+#: elf/dl-open.c:531
+msgid "no more namespaces available for dlmopen()"
 msgstr ""
 
-#: elf/dl-reloc.c:118
+#: elf/dl-open.c:544
+msgid "invalid target namespace in dlmopen()"
+msgstr ""
+
+#: elf/dl-reloc.c:55
+msgid "cannot allocate memory in static TLS block"
+msgstr ""
+
+#: elf/dl-reloc.c:195
 msgid "cannot make segment writable for relocation"
 msgstr ""
 
-#: elf/dl-reloc.c:219
+#: elf/dl-reloc.c:275
 #, c-format
-msgid "%s: profiler found no PLTREL in object %s\n"
+msgid "%s: no PLTREL found in object %s\n"
 msgstr ""
 
-#: elf/dl-reloc.c:231
+#: elf/dl-reloc.c:286
 #, c-format
-msgid "%s: profiler out of memory shadowing PLTREL of %s\n"
+msgid "%s: out of memory to store relocation results for %s\n"
 msgstr ""
 
-#: elf/dl-reloc.c:246
+#: elf/dl-reloc.c:301
 msgid "cannot restore segment prot after reloc"
 msgstr ""
 
-#: elf/dl-sym.c:74 elf/dl-sym.c:145
+#: elf/dl-reloc.c:326
+msgid "cannot apply additional memory protection after relocation"
+msgstr ""
+
+#: elf/dl-sym.c:98
 msgid "RTLD_NEXT used in code not dynamically loaded"
 msgstr ""
 
-#: elf/dl-version.c:302
+#: elf/dl-version.c:303
 msgid "cannot allocate version reference table"
 msgstr ""
 
-#: elf/ldconfig.c:122
+#: elf/ldconfig.c:135
 msgid "Print cache"
 msgstr ""
 
-#: elf/ldconfig.c:123
+#: elf/ldconfig.c:136
 msgid "Generate verbose messages"
 msgstr ""
 
-#: elf/ldconfig.c:124
+#: elf/ldconfig.c:137
 msgid "Don't build cache"
 msgstr ""
 
-#: elf/ldconfig.c:125
+#: elf/ldconfig.c:138
 msgid "Don't generate links"
 msgstr ""
 
-#: elf/ldconfig.c:126
+#: elf/ldconfig.c:139
 msgid "Change to and use ROOT as root directory"
 msgstr ""
 
-#: elf/ldconfig.c:127
+#: elf/ldconfig.c:139
+msgid "ROOT"
+msgstr ""
+
+#: elf/ldconfig.c:140
+msgid "CACHE"
+msgstr ""
+
+#: elf/ldconfig.c:140
 msgid "Use CACHE as cache file"
 msgstr ""
 
-#: elf/ldconfig.c:128
+#: elf/ldconfig.c:141
+msgid "CONF"
+msgstr ""
+
+#: elf/ldconfig.c:141
 msgid "Use CONF as configuration file"
 msgstr ""
 
-#: elf/ldconfig.c:129
+#: elf/ldconfig.c:142
 msgid ""
 "Only process directories specified on the command line.  Don't build cache."
 msgstr ""
 
-#: elf/ldconfig.c:130
+#: elf/ldconfig.c:143
 msgid "Manually link individual libraries."
 msgstr ""
 
-#: elf/ldconfig.c:131
+#: elf/ldconfig.c:144
+msgid "FORMAT"
+msgstr ""
+
+#: elf/ldconfig.c:144
 msgid "Format to use: new, old or compat (default)"
 msgstr ""
 
-#: elf/ldconfig.c:136
+#: elf/ldconfig.c:152
 msgid "Configure Dynamic Linker Run Time Bindings."
 msgstr ""
 
-#: elf/ldconfig.c:294
+#: elf/ldconfig.c:310
 #, c-format
 msgid "Path `%s' given more than once"
 msgstr ""
 
-#: elf/ldconfig.c:338
+#: elf/ldconfig.c:350
 #, c-format
 msgid "%s is not a known library type"
 msgstr ""
 
-#: elf/ldconfig.c:356
+#: elf/ldconfig.c:375
 #, c-format
 msgid "Can't stat %s"
 msgstr ""
 
-#: elf/ldconfig.c:426
+#: elf/ldconfig.c:449
 #, c-format
 msgid "Can't stat %s\n"
 msgstr ""
 
-#: elf/ldconfig.c:436
+#: elf/ldconfig.c:459
 #, c-format
 msgid "%s is not a symbolic link\n"
 msgstr ""
 
-#: elf/ldconfig.c:455
+#: elf/ldconfig.c:478
 #, c-format
 msgid "Can't unlink %s"
 msgstr ""
 
-#: elf/ldconfig.c:461
+#: elf/ldconfig.c:484
 #, c-format
 msgid "Can't link %s to %s"
 msgstr ""
 
-#: elf/ldconfig.c:467
+#: elf/ldconfig.c:490
 msgid " (changed)\n"
 msgstr ""
 
-#: elf/ldconfig.c:469
+#: elf/ldconfig.c:492
 msgid " (SKIPPED)\n"
 msgstr ""
 
-#: elf/ldconfig.c:524
+#: elf/ldconfig.c:547
 #, c-format
 msgid "Can't find %s"
 msgstr ""
 
-#: elf/ldconfig.c:540
+#: elf/ldconfig.c:563
 #, c-format
 msgid "Can't lstat %s"
 msgstr ""
 
-#: elf/ldconfig.c:547
+#: elf/ldconfig.c:570
 #, c-format
 msgid "Ignored file %s since it is not a regular file."
 msgstr ""
 
-#: elf/ldconfig.c:555
+#: elf/ldconfig.c:578
 #, c-format
 msgid "No link created since soname could not be found for %s"
 msgstr ""
 
-#: elf/ldconfig.c:646
+#: elf/ldconfig.c:669
 #, c-format
 msgid "Can't open directory %s"
 msgstr ""
 
-#: elf/ldconfig.c:701 elf/ldconfig.c:748
+#: elf/ldconfig.c:724 elf/ldconfig.c:771
 #, c-format
 msgid "Cannot lstat %s"
 msgstr ""
 
-#: elf/ldconfig.c:713
+#: elf/ldconfig.c:736
 #, c-format
 msgid "Cannot stat %s"
 msgstr ""
 
-#: elf/ldconfig.c:770 elf/readlib.c:93
+#: elf/ldconfig.c:793 elf/readlib.c:92
 #, c-format
 msgid "Input file %s not found.\n"
 msgstr ""
 
-#: elf/ldconfig.c:804
+#: elf/ldconfig.c:844
 #, c-format
 msgid "libc5 library %s in wrong directory"
 msgstr ""
 
-#: elf/ldconfig.c:807
+#: elf/ldconfig.c:847
 #, c-format
 msgid "libc6 library %s in wrong directory"
 msgstr ""
 
-#: elf/ldconfig.c:810
+#: elf/ldconfig.c:850
 #, c-format
 msgid "libc4 library %s in wrong directory"
 msgstr ""
 
-#: elf/ldconfig.c:837
+#: elf/ldconfig.c:877
 #, c-format
 msgid ""
 "libraries %s and %s in directory %s have same soname but different type."
 msgstr ""
 
-#: elf/ldconfig.c:940
+#: elf/ldconfig.c:984
 #, c-format
 msgid "Can't open configuration file %s"
 msgstr ""
 
-#: elf/ldconfig.c:1024
+#: elf/ldconfig.c:1048
+#, c-format
+msgid "%s:%u: bad syntax in hwcap line"
+msgstr ""
+
+#: elf/ldconfig.c:1054
+#, c-format
+msgid "%s:%u: hwcap index %lu above maximum %u"
+msgstr ""
+
+#: elf/ldconfig.c:1061 elf/ldconfig.c:1069
+#, c-format
+msgid "%s:%u: hwcap index %lu already defined as %s"
+msgstr ""
+
+#: elf/ldconfig.c:1072
+#, c-format
+msgid "%s:%u: duplicate hwcap %lu %s"
+msgstr ""
+
+#: elf/ldconfig.c:1094
+msgid "need absolute file name for configuration file when using -r"
+msgstr ""
+
+#: elf/ldconfig.c:1131
+#, c-format
+msgid "%s:%u: cannot read directory %s"
+msgstr ""
+
+#: elf/ldconfig.c:1171
+#, c-format
+msgid "relative path `%s' used to build cache"
+msgstr ""
+
+#: elf/ldconfig.c:1199
 msgid "Can't chdir to /"
 msgstr ""
 
-#: elf/ldconfig.c:1066
+#: elf/ldconfig.c:1241
 #, c-format
 msgid "Can't open cache file directory %s\n"
 msgstr ""
 
-#: elf/readlib.c:99
+#: elf/readlib.c:98
 #, c-format
 msgid "Cannot fstat file %s.\n"
 msgstr ""
 
 #: elf/readlib.c:109
 #, c-format
+msgid "File %s is empty, not checked."
+msgstr ""
+
+#: elf/readlib.c:115
+#, c-format
 msgid "File %s is too small, not checked."
 msgstr ""
 
-#: elf/readlib.c:118
+#: elf/readlib.c:125
 #, c-format
 msgid "Cannot mmap file %s.\n"
 msgstr ""
 
-#: elf/readlib.c:158
+#: elf/readlib.c:163
 #, c-format
 msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
 msgstr ""
 
-#: elf/sprof.c:72
+#: elf/sprof.c:77
 msgid "Output selection:"
 msgstr ""
 
-#: elf/sprof.c:74
+#: elf/sprof.c:79
 msgid "print list of count paths and their number of use"
 msgstr ""
 
-#: elf/sprof.c:76
+#: elf/sprof.c:81
 msgid "generate flat profile with counts and ticks"
 msgstr ""
 
-#: elf/sprof.c:77
+#: elf/sprof.c:82
 msgid "generate call graph"
 msgstr ""
 
-#: elf/sprof.c:84
-msgid "Read and display shared object profiling data"
+#: elf/sprof.c:89
+msgid ""
+"Read and display shared object profiling data.\013For bug reporting "
+"instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
 msgstr ""
 
-#: elf/sprof.c:87
+#: elf/sprof.c:94
 msgid "SHOBJ [PROFDATA]"
 msgstr ""
 
-#: elf/sprof.c:398
+#: elf/sprof.c:400
 #, c-format
 msgid "failed to load shared object `%s'"
 msgstr ""
 
-#: elf/sprof.c:407
+#: elf/sprof.c:409
 msgid "cannot create internal descriptors"
 msgstr ""
 
-#: elf/sprof.c:526
+#: elf/sprof.c:528
 #, c-format
 msgid "Reopening shared object `%s' failed"
 msgstr ""
 
-#: elf/sprof.c:534
-msgid "mapping of section headers failed"
+#: elf/sprof.c:535 elf/sprof.c:629
+msgid "reading of section headers failed"
 msgstr ""
 
-#: elf/sprof.c:544
-msgid "mapping of section header string table failed"
+#: elf/sprof.c:543 elf/sprof.c:637
+msgid "reading of section header string table failed"
 msgstr ""
 
-#: elf/sprof.c:564
+#: elf/sprof.c:569
+#, c-format
+msgid "*** Cannot read debuginfo file name: %m\n"
+msgstr ""
+
+#: elf/sprof.c:589
+msgid "cannot determine file name"
+msgstr ""
+
+#: elf/sprof.c:622
+msgid "reading of ELF header failed"
+msgstr ""
+
+#: elf/sprof.c:658
 #, c-format
 msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
 msgstr ""
 
-#: elf/sprof.c:594
+#: elf/sprof.c:688
 msgid "failed to load symbol data"
 msgstr ""
 
-#: elf/sprof.c:664
+#: elf/sprof.c:755
 msgid "cannot load profiling data"
 msgstr ""
 
-#: elf/sprof.c:673
+#: elf/sprof.c:764
 msgid "while stat'ing profiling data file"
 msgstr ""
 
-#: elf/sprof.c:681
+#: elf/sprof.c:772
 #, c-format
 msgid "profiling data file `%s' does not match shared object `%s'"
 msgstr ""
 
-#: elf/sprof.c:692
+#: elf/sprof.c:783
 msgid "failed to mmap the profiling data file"
 msgstr ""
 
-#: elf/sprof.c:700
+#: elf/sprof.c:791
 msgid "error while closing the profiling data file"
 msgstr ""
 
-#: elf/sprof.c:709 elf/sprof.c:779
+#: elf/sprof.c:800 elf/sprof.c:870
 msgid "cannot create internal descriptor"
 msgstr ""
 
-#: elf/sprof.c:755
+#: elf/sprof.c:846
 #, c-format
 msgid "`%s' is no correct profile data file for `%s'"
 msgstr ""
 
-#: elf/sprof.c:936 elf/sprof.c:988
+#: elf/sprof.c:1027 elf/sprof.c:1085
 msgid "cannot allocate symbol data"
 msgstr ""
diff --git a/posix/Makefile b/posix/Makefile
index f08ec9f1f8..f6b6aefbe0 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -86,7 +86,8 @@ tests		:= tstgetopt testfnm runtests runptests	     \
 		   tst-getaddrinfo2 bug-glob1 bug-glob2 tst-sysconf \
 		   tst-execvp1 tst-execvp2 tst-execlp1 tst-execlp2 \
 		   tst-execv1 tst-execv2 tst-execl1 tst-execl2 \
-		   tst-execve1 tst-execve2 tst-execle1 tst-execle2
+		   tst-execve1 tst-execve2 tst-execle1 tst-execle2 \
+		   tst-execvp3
 xtests		:= bug-ga2
 ifeq (yes,$(build-shared))
 test-srcs	:= globtest
@@ -191,6 +192,7 @@ tst-rxspencer-ENV = LOCPATH=$(common-objpfx)localedata
 tst-pcre-ARGS = PCRE.tests
 tst-boost-ARGS = BOOST.tests
 bug-glob1-ARGS = "$(objpfx)"
+tst-execvp3-ARGS = --test-dir=$(objpfx)
 
 testcases.h: TESTS TESTS2C.sed
 	sed -f TESTS2C.sed < $< > $@T
diff --git a/posix/execvp.c b/posix/execvp.c
index 0abfa7007c..6f4e4b8566 100644
--- a/posix/execvp.c
+++ b/posix/execvp.c
@@ -133,14 +133,14 @@ execvp (file, argv)
 	  else
 	    startp = (char *) memcpy (name - (p - path), path, p - path);
 
-	  /* Try to execute this name.  If it works, execv will not return.  */
+	  /* Try to execute this name.  If it works, execve will not return. */
 	  __execve (startp, argv, __environ);
 
 	  if (errno == ENOEXEC)
 	    {
 	      if (script_argv == NULL)
 		{
-		  script_argv = allocate_scripts_argv (file, argv);
+		  script_argv = allocate_scripts_argv (startp, argv);
 		  if (script_argv == NULL)
 		    {
 		      /* A possible EACCES error is not as important as
diff --git a/posix/tst-execvp3.c b/posix/tst-execvp3.c
new file mode 100644
index 0000000000..5ebc87952d
--- /dev/null
+++ b/posix/tst-execvp3.c
@@ -0,0 +1,42 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/stat.h>
+
+
+static void do_prepare (void);
+#define PREPARE(argc, argv) do_prepare ()
+static int do_test (void);
+#define TEST_FUNCTION do_test ()
+
+#include "../test-skeleton.c"
+
+
+static char *fname;
+
+static void
+do_prepare (void)
+{
+  int fd = create_temp_file ("testscript", &fname);
+  dprintf (fd, "echo foo\n");
+  fchmod (fd, 0700);
+  close (fd);
+}
+
+
+static int
+do_test (void)
+{
+  if  (setenv ("PATH", test_dir, 1) != 0)
+    {
+      puts ("setenv failed");
+      return 1;
+    }
+
+  char *argv[] = { fname, NULL };
+  execvp (basename (fname), argv);
+
+  /* If we come here, the execvp call failed.  */
+  return 1;
+}
diff --git a/scripts/config.guess b/scripts/config.guess
index 61f2e4c608..9c292ea45b 100755
--- a/scripts/config.guess
+++ b/scripts/config.guess
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
-timestamp='2003-10-20'
+timestamp='2005-03-24'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -53,7 +53,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
@@ -197,15 +197,21 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
 	echo "${machine}-${os}${release}"
 	exit 0 ;;
+    amd64:OpenBSD:*:*)
+	echo x86_64-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
     amiga:OpenBSD:*:*)
 	echo m68k-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
-    arc:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+    cats:OpenBSD:*:*)
+	echo arm-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
     hp300:OpenBSD:*:*)
 	echo m68k-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
+    luna88k:OpenBSD:*:*)
+    	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
     mac68k:OpenBSD:*:*)
 	echo m68k-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
@@ -221,28 +227,33 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     mvmeppc:OpenBSD:*:*)
 	echo powerpc-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
-    pegasos:OpenBSD:*:*)
-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
-    pmax:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
     sgi:OpenBSD:*:*)
-	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	echo mips64-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
     sun3:OpenBSD:*:*)
 	echo m68k-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
-    wgrisc:OpenBSD:*:*)
-	echo mipsel-unknown-openbsd${UNAME_RELEASE}
-	exit 0 ;;
     *:OpenBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
 	exit 0 ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit 0 ;;
+    macppc:MirBSD:*:*)
+	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit 0 ;;
     alpha:OSF1:*:*)
-	if test $UNAME_RELEASE = "V4.0"; then
+	case $UNAME_RELEASE in
+	*4.0)
 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
-	fi
+		;;
+	*5.*)
+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
 	# According to Compaq, /usr/sbin/psrinfo has been available on
 	# OSF/1 and Tru64 systems produced since 1995.  I hope that
 	# covers most systems running today.  This code pipes the CPU
@@ -280,14 +291,12 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
 	    "EV7.9 (21364A)")
 		UNAME_MACHINE="alphaev79" ;;
 	esac
+	# A Pn.n version is a patched version.
 	# A Vn.n version is a released version.
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
-	exit 0 ;;
-    Alpha*:OpenVMS:*:*)
-	echo alpha-hp-vms
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
 	exit 0 ;;
     Alpha\ *:Windows_NT*:*)
 	# How do we know it's Interix rather than the generic POSIX subsystem?
@@ -310,6 +319,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:OS/390:*:*)
 	echo i370-ibm-openedition
 	exit 0 ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit 0 ;;
     *:OS400:*:*)
         echo powerpc-ibm-os400
 	exit 0 ;;
@@ -333,7 +345,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     DRS?6000:unix:4.0:6*)
 	echo sparc-icl-nx6
 	exit 0 ;;
-    DRS?6000:UNIX_SV:4.2*:7*)
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
 	case `/usr/bin/uname -p` in
 	    sparc) echo sparc-icl-nx7 && exit 0 ;;
 	esac ;;
@@ -405,6 +417,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
         echo m68k-unknown-mint${UNAME_RELEASE}
         exit 0 ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit 0 ;;
     powerpc:machten:*:*)
 	echo powerpc-apple-machten${UNAME_RELEASE}
 	exit 0 ;;
@@ -740,7 +755,7 @@ EOF
 	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit 0 ;;
     *:UNICOS/mp:*:*)
-	echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
 	exit 0 ;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
@@ -763,21 +778,7 @@ EOF
 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
 	exit 0 ;;
     *:FreeBSD:*:*)
-	# Determine whether the default compiler uses glibc.
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#if __GLIBC__ >= 2
-	LIBC=gnu
-	#else
-	LIBC=
-	#endif
-EOF
-	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
-	# GNU/KFreeBSD systems have a "k" prefix to indicate we are using
-	# FreeBSD's kernel, but not the complete OS.
-	case ${LIBC} in gnu) kernel_only='k' ;; esac
-	echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
 	exit 0 ;;
     i*:CYGWIN*:*)
 	echo ${UNAME_MACHINE}-pc-cygwin
@@ -803,6 +804,9 @@ EOF
     i*:UWIN*:*)
 	echo ${UNAME_MACHINE}-pc-uwin
 	exit 0 ;;
+    amd64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit 0 ;;
     p*:CYGWIN*:*)
 	echo powerpcle-unknown-cygwin
 	exit 0 ;;
@@ -826,9 +830,18 @@ EOF
     cris:Linux:*:*)
 	echo cris-axis-linux-gnu
 	exit 0 ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit 0 ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit 0 ;;
     ia64:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit 0 ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
     m68*:Linux:*:*)
 	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit 0 ;;
@@ -1069,9 +1082,9 @@ EOF
     M680?0:D-NIX:5.3:*)
 	echo m68k-diab-dnix
 	exit 0 ;;
-    M68*:*:R3V[567]*:*)
+    M68*:*:R3V[5678]*:*)
 	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
-    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
 	OS_REL=''
 	test -r /etc/.relid \
 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
@@ -1169,9 +1182,10 @@ EOF
 	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
 	exit 0 ;;
     *:Darwin:*:*)
-	case `uname -p` in
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
 	    *86) UNAME_PROCESSOR=i686 ;;
-	    powerpc) UNAME_PROCESSOR=powerpc ;;
+	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
 	exit 0 ;;
@@ -1186,7 +1200,10 @@ EOF
     *:QNX:*:4*)
 	echo i386-pc-qnx
 	exit 0 ;;
-    NSR-[DGKLNPTVWY]:NONSTOP_KERNEL:*:*)
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit 0 ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
 	echo nsr-tandem-nsk${UNAME_RELEASE}
 	exit 0 ;;
     *:NonStop-UX:*:*)
@@ -1230,8 +1247,18 @@ EOF
     SEI:*:*:SEIUX)
         echo mips-sei-seiux${UNAME_RELEASE}
 	exit 0 ;;
-    *:DRAGONFLY:*:*)
-	echo ${UNAME_MACHINE}-unknown-dragonfly${UNAME_RELEASE}
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit 0 ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms && exit 0 ;;
+	    I*) echo ia64-dec-vms && exit 0 ;;
+	    V*) echo vax-dec-vms && exit 0 ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
 	exit 0 ;;
 esac
 
@@ -1392,7 +1419,9 @@ This script, last modified $timestamp, has failed to recognize
 the operating system you are using. It is advised that you
 download the most up to date version of the config scripts from
 
-    ftp://ftp.gnu.org/pub/gnu/config/
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
 
 If the version you run ($0) is already up to date, please
 send the following data and any information you think might be
diff --git a/scripts/config.sub b/scripts/config.sub
index fac5195126..d8fd2f8fa2 100755
--- a/scripts/config.sub
+++ b/scripts/config.sub
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Configuration validation subroutine script.
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
-timestamp='2003-11-20'
+timestamp='2005-02-10'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -70,7 +70,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
@@ -145,7 +145,7 @@ case $os in
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis)
+	-apple | -axis | -knuth | -cray)
 		os=
 		basic_machine=$1
 		;;
@@ -237,7 +237,7 @@ case $basic_machine in
 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
 	| i370 | i860 | i960 | ia64 \
 	| ip2k | iq2000 \
-	| m32r | m68000 | m68k | m88k | mcore \
+	| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
 	| mips | mipsbe | mipseb | mipsel | mipsle \
 	| mips16 \
 	| mips64 | mips64el \
@@ -262,12 +262,12 @@ case $basic_machine in
 	| pyramid \
 	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
-	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \
 	| strongarm \
 	| tahoe | thumb | tic4x | tic80 | tron \
 	| v850 | v850e \
 	| we32k \
-	| x86 | xscale | xstormy16 | xtensa \
+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
 	| z8k)
 		basic_machine=$basic_machine-unknown
 		;;
@@ -300,7 +300,7 @@ case $basic_machine in
 	| avr-* \
 	| bs2000-* \
 	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
-	| clipper-* | cydra-* \
+	| clipper-* | craynv-* | cydra-* \
 	| d10v-* | d30v-* | dlx-* \
 	| elxsi-* \
 	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
@@ -308,9 +308,9 @@ case $basic_machine in
 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
 	| i*86-* | i860-* | i960-* | ia64-* \
 	| ip2k-* | iq2000-* \
-	| m32r-* \
+	| m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | mcore-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
@@ -326,8 +326,9 @@ case $basic_machine in
 	| mipsisa64sb1-* | mipsisa64sb1el-* \
 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
 	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
 	| msp430-* \
-	| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
 	| orion-* \
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
@@ -336,14 +337,14 @@ case $basic_machine in
 	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
-	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
 	| tahoe-* | thumb-* \
 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
 	| tron-* \
 	| v850-* | v850e-* | vax-* \
 	| we32k-* \
-	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
-	| xtensa-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa-* \
 	| ymp-* \
 	| z8k-*)
 		;;
@@ -363,6 +364,9 @@ case $basic_machine in
 		basic_machine=a29k-amd
 		os=-udi
 		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
 	adobe68k)
 		basic_machine=m68010-adobe
 		os=-scout
@@ -380,6 +384,9 @@ case $basic_machine in
 	amd64)
 		basic_machine=x86_64-pc
 		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
 	amdahl)
 		basic_machine=580-amdahl
 		os=-sysv
@@ -439,12 +446,27 @@ case $basic_machine in
 		basic_machine=j90-cray
 		os=-unicos
 		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16c)
+		basic_machine=cr16c-unknown
+		os=-elf
+		;;
 	crds | unos)
 		basic_machine=m68k-crds
 		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
 	cris | cris-* | etrax*)
 		basic_machine=cris-axis
 		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
 	da30 | da30-*)
 		basic_machine=m68k-da30
 		;;
@@ -467,6 +489,10 @@ case $basic_machine in
 		basic_machine=m88k-motorola
 		os=-sysv3
 		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
 	dpx20 | dpx20-*)
 		basic_machine=rs6000-bull
 		os=-bosx
@@ -645,10 +671,6 @@ case $basic_machine in
 	mips3*)
 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
 		;;
-	mmix*)
-		basic_machine=mmix-knuth
-		os=-mmixware
-		;;
 	monitor)
 		basic_machine=m68k-rom68k
 		os=-coff
@@ -729,10 +751,6 @@ case $basic_machine in
 	np1)
 		basic_machine=np1-gould
 		;;
-	nv1)
-		basic_machine=nv1-cray
-		os=-unicosmp
-		;;
 	nsr-tandem)
 		basic_machine=nsr-tandem
 		;;
@@ -1015,6 +1033,10 @@ case $basic_machine in
 		basic_machine=hppa1.1-winbond
 		os=-proelf
 		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
 	xps | xps100)
 		basic_machine=xps100-honeywell
 		;;
@@ -1045,6 +1067,9 @@ case $basic_machine in
 	romp)
 		basic_machine=romp-ibm
 		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
 	rs6000)
 		basic_machine=rs6000-ibm
 		;;
@@ -1067,7 +1092,7 @@ case $basic_machine in
 	sh64)
 		basic_machine=sh64-unknown
 		;;
-	sparc | sparcv9 | sparcv9b)
+	sparc | sparcv8 | sparcv9 | sparcv9b)
 		basic_machine=sparc-sun
 		;;
 	cydra)
@@ -1140,8 +1165,9 @@ case $os in
 	      | -aos* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
-	      | -hiux* | -386bsd* | -knetbsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
-	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
 	      | -chorusos* | -chorusrdb* \
@@ -1279,6 +1305,9 @@ case $os in
 	-kaos*)
 		os=-kaos
 		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
 	-none)
 		;;
 	*)
@@ -1359,6 +1388,9 @@ case $basic_machine in
 	*-ibm)
 		os=-aix
 		;;
+    	*-knuth)
+		os=-mmixware
+		;;
 	*-wec)
 		os=-proelf
 		;;
diff --git a/stdlib/random_r.c b/stdlib/random_r.c
index c85fd5eeef..5e564a737d 100644
--- a/stdlib/random_r.c
+++ b/stdlib/random_r.c
@@ -1,4 +1,4 @@
-/* 
+/*
    Copyright (C) 1995, 2005 Free Software Foundation
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -32,7 +32,7 @@
    4. Neither the name of the University nor the names of its contributors
       may be used to endorse or promote products derived from this software
       without specific prior written permission.
-   
+
    THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -236,23 +236,20 @@ __initstate_r (seed, arg_state, n, buf)
      size_t n;
      struct random_data *buf;
 {
-  int type;
-  int degree;
-  int separation;
-  int32_t *state;
-  int old_type;
-  int32_t *old_state;
-
   if (buf == NULL)
     goto fail;
 
-  old_type = buf->rand_type;
-  old_state = buf->state;
-  if (old_type == TYPE_0)
-    old_state[-1] = TYPE_0;
-  else
-    old_state[-1] = (MAX_TYPES * (buf->rptr - old_state)) + old_type;
+  int32_t *old_state = buf->state;
+  if (old_state != NULL)
+    {
+      int old_type = buf->rand_type;
+      if (old_type == TYPE_0)
+	old_state[-1] = TYPE_0;
+      else
+	old_state[-1] = (MAX_TYPES * (buf->rptr - old_state)) + old_type;
+    }
 
+  int type;
   if (n >= BREAK_3)
     type = n < BREAK_4 ? TYPE_3 : TYPE_4;
   else if (n < BREAK_1)
@@ -267,13 +264,13 @@ __initstate_r (seed, arg_state, n, buf)
   else
     type = n < BREAK_2 ? TYPE_1 : TYPE_2;
 
-  degree = random_poly_info.degrees[type];
-  separation = random_poly_info.seps[type];
+  int degree = random_poly_info.degrees[type];
+  int separation = random_poly_info.seps[type];
 
   buf->rand_type = type;
   buf->rand_sep = separation;
   buf->rand_deg = degree;
-  state = &((int32_t *) arg_state)[1];	/* First location.  */
+  int32_t *state = &((int32_t *) arg_state)[1];	/* First location.  */
   /* Must set END_PTR before srandom.  */
   buf->end_ptr = &state[degree];
 
diff --git a/string/Makefile b/string/Makefile
index 66469f586e..2f37d29526 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-1999,2000,2001,2002 Free Software Foundation, Inc.
+# Copyright (C) 1991-1999,2000,2001,2002, 2005 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -52,7 +52,7 @@ strop-tests	:= memchr memcmp memcpy memmove mempcpy memset memccpy	\
 tests		:= tester inl-tester noinl-tester testcopy test-ffs	\
 		   tst-strlen stratcliff tst-svc tst-inlcall		\
 		   bug-strncat1 bug-strspn1 bug-strpbrk1 tst-bswap	\
-		   tst-strtok tst-strxfrm bug-strcoll1			\
+		   tst-strtok tst-strxfrm bug-strcoll1 tst-strfry	\
 		   $(addprefix test-,$(strop-tests))
 distribute	:= memcopy.h pagecopy.h tst-svc.expect test-string.h
 
diff --git a/string/tst-strfry.c b/string/tst-strfry.c
new file mode 100644
index 0000000000..2b40a39b13
--- /dev/null
+++ b/string/tst-strfry.c
@@ -0,0 +1,15 @@
+#include <stdio.h>
+#include <string.h>
+
+static int
+do_test (void)
+{
+  char str[] = "this is a test";
+
+  strfry (str);
+
+  return 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/sysdeps/generic/dl-sysdep.c b/sysdeps/generic/dl-sysdep.c
index 34498a880c..1fae16efce 100644
--- a/sysdeps/generic/dl-sysdep.c
+++ b/sysdeps/generic/dl-sysdep.c
@@ -1,5 +1,5 @@
 /* Operating system support for run-time dynamic linker.  Generic Unix version.
-   Copyright (C) 1995-1998, 2000-2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 1995-1998, 2000-2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -39,6 +39,12 @@
 #include <hp-timing.h>
 #include <tls.h>
 
+#ifdef _DL_FIRST_PLATFORM
+# define _DL_FIRST_EXTRA (_DL_FIRST_PLATFORM + _DL_PLATFORMS_COUNT)
+#else
+# define _DL_FIRST_EXTRA _DL_HWCAP_COUNT
+#endif
+
 extern char **_environ attribute_hidden;
 extern void _end attribute_hidden;
 
@@ -149,7 +155,7 @@ _dl_sysdep_start (void **start_argptr,
 	GLRO(dl_platform) = av->a_un.a_ptr;
 	break;
       case AT_HWCAP:
-	GLRO(dl_hwcap) = av->a_un.a_val;
+	GLRO(dl_hwcap) = (unsigned long int) av->a_un.a_val;
 	break;
       case AT_CLKTCK:
 	GLRO(dl_clktck) = av->a_un.a_val;
@@ -172,10 +178,6 @@ _dl_sysdep_start (void **start_argptr,
 #endif
       }
 
-#ifdef DL_SYSDEP_OSCHECK
-  DL_SYSDEP_OSCHECK (dl_fatal);
-#endif
-
 #ifndef HAVE_AUX_SECURE
   if (seen != -1)
     {
@@ -343,7 +345,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
 		      size_t *max_capstrlen)
 {
   /* Determine how many important bits are set.  */
-  unsigned long int masked = GLRO(dl_hwcap) & GLRO(dl_hwcap_mask);
+  uint64_t masked = GLRO(dl_hwcap) & GLRO(dl_hwcap_mask);
   size_t cnt = platform != NULL;
   size_t n, m;
   size_t total;
@@ -353,18 +355,64 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
   char *cp;
 
   /* Count the number of bits set in the masked value.  */
-  for (n = 0; (~((1UL << n) - 1) & masked) != 0; ++n)
-    if ((masked & (1UL << n)) != 0)
+  for (n = 0; (~((1ULL << n) - 1) & masked) != 0; ++n)
+    if ((masked & (1ULL << n)) != 0)
       ++cnt;
 
+#if (defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO) && defined SHARED
+  /* The system-supplied DSO can contain a note of type 2, vendor "GNU".
+     This gives us a list of names to treat as fake hwcap bits.  */
+
+  const char *dsocaps = NULL;
+  size_t dsocapslen = 0;
+  if (GLRO(dl_sysinfo_map) != NULL)
+    {
+      const ElfW(Phdr) *const phdr = GLRO(dl_sysinfo_map)->l_phdr;
+      const ElfW(Word) phnum = GLRO(dl_sysinfo_map)->l_phnum;
+      for (uint_fast16_t i = 0; i < phnum; ++i)
+	if (phdr[i].p_type == PT_NOTE)
+	  {
+	    const ElfW(Addr) start = (phdr[i].p_vaddr
+				      + GLRO(dl_sysinfo_map)->l_addr);
+	    const struct
+	    {
+	      ElfW(Word) vendorlen;
+	      ElfW(Word) datalen;
+	      ElfW(Word) type;
+	    } *note = (const void *) start;
+	    while ((ElfW(Addr)) (note + 1) - start < phdr[i].p_memsz)
+	      {
+#define ROUND(len) (((len) + sizeof (ElfW(Word)) - 1) & -sizeof (ElfW(Word)))
+		if (note->type == 2
+		    && note->vendorlen == sizeof "GNU"
+		    && !memcmp ((note + 1), "GNU", sizeof "GNU")
+		    && note->datalen > 2 * sizeof (ElfW(Word)) + 2)
+		  {
+		    const ElfW(Word) *p = ((const void *) (note + 1)
+					   + ROUND (sizeof "GNU"));
+		    cnt += *p++;
+		    ++p;	/* Skip mask word.  */
+		    dsocaps = (const char *) p;
+		    dsocapslen = note->datalen - sizeof *p;
+		    break;
+		  }
+		note = ((const void *) (note + 1)
+			+ ROUND (note->vendorlen) + ROUND (note->datalen));
+	      }
+	    if (dsocaps != NULL)
+	      break;
+	  }
+    }
+#endif
+
 #ifdef USE_TLS
   /* For TLS enabled builds always add 'tls'.  */
   ++cnt;
 #else
   if (cnt == 0)
     {
-      /* If we have platform name and no important capability we only have
-	 the base directory to search.  */
+      /* If we no have platform name and no important capability we only
+	 have the base directory to search.  */
       result = (struct r_strlenpair *) malloc (sizeof (*result));
       if (result == NULL)
 	goto no_memory;
@@ -380,12 +428,26 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
   /* Create temporary data structure to generate result table.  */
   temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp));
   m = 0;
+#if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO
+  if (dsocaps != NULL)
+    {
+      GLRO(dl_hwcap) |= ((uint64_t) ((const ElfW(Word) *) dsocaps)[-1]
+			 << _DL_FIRST_EXTRA);
+      for (const char *p = dsocaps;
+	   p < dsocaps + dsocapslen;
+	   p += temp[m++].len + 1)
+	{
+	  temp[m].str = p;
+	  temp[m].len = strlen (p);
+	}
+    }
+#endif
   for (n = 0; masked != 0; ++n)
-    if ((masked & (1UL << n)) != 0)
+    if ((masked & (1ULL << n)) != 0)
       {
 	temp[m].str = _dl_hwcap_string (n);
 	temp[m].len = strlen (temp[m].str);
-	masked ^= 1UL << n;
+	masked ^= 1ULL << n;
 	++m;
       }
   if (platform != NULL)
@@ -503,8 +565,8 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
       ++rp;
     }
 
-  /* The second have starts right after the first part of the string of
-     corresponding entry in the first half.  */
+  /* The second half starts right after the first part of the string of
+     the corresponding entry in the first half.  */
   do
     {
       rp[0].str = rp[-(1 << (cnt - 1))].str + temp[cnt - 1].len + 1;
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index e1a934aeda..2e3254356b 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -199,6 +199,10 @@ struct La_mips_32_regs;
 struct La_mips_32_retval;
 struct La_mips_64_regs;
 struct La_mips_64_retval;
+struct La_sparc32_regs;
+struct La_sparc32_retval;
+struct La_sparc64_regs;
+struct La_sparc64_retval;
 
 struct audit_ifaces
 {
@@ -270,6 +274,16 @@ struct audit_ifaces
 					 const struct La_mips_64_regs *,
 					 unsigned int *, const char *name,
 					 long int *framesizep);
+    Elf32_Addr (*sparc32_gnu_pltenter) (Elf32_Sym *, unsigned int,
+					uintptr_t *, uintptr_t *,
+					const struct La_sparc32_regs *,
+					unsigned int *, const char *name,
+					long int *framesizep);
+    Elf64_Addr (*sparc64_gnu_pltenter) (Elf64_Sym *, unsigned int,
+					uintptr_t *, uintptr_t *,
+					const struct La_sparc64_regs *,
+					unsigned int *, const char *name,
+					long int *framesizep);
   };
   union
   {
@@ -328,6 +342,16 @@ struct audit_ifaces
 					  const struct La_mips_64_regs *,
 					  struct La_mips_64_retval *,
 					  const char *);
+    unsigned int (*sparc32_gnu_pltexit) (Elf32_Sym *, unsigned int,
+					 uintptr_t *, uintptr_t *,
+					 const struct La_sparc32_regs *,
+					 struct La_sparc32_retval *,
+					 const char *);
+    unsigned int (*sparc64_gnu_pltexit) (Elf64_Sym *, unsigned int,
+					 uintptr_t *, uintptr_t *,
+					 const struct La_sparc32_regs *,
+					 struct La_sparc32_retval *,
+					 const char *);
   };
   unsigned int (*objclose) (uintptr_t *);
 
@@ -587,10 +611,10 @@ struct rtld_global_ro
   EXTERN int _dl_correct_cache_id;
 
   /* Mask for hardware capabilities that are available.  */
-  EXTERN unsigned long int _dl_hwcap;
+  EXTERN uint64_t _dl_hwcap;
 
   /* Mask for important hardware capabilities we honour. */
-  EXTERN unsigned long int _dl_hwcap_mask;
+  EXTERN uint64_t _dl_hwcap_mask;
 
   /* Get architecture specific definitions.  */
 #define PROCINFO_DECL
@@ -636,6 +660,10 @@ struct rtld_global_ro
   /* The vsyscall page is a virtual DSO pre-mapped by the kernel.
      This points to its ELF header.  */
   EXTERN const ElfW(Ehdr) *_dl_sysinfo_dso;
+
+  /* At startup time we set up the normal DSO data structure for it,
+     and this points to it.  */
+  EXTERN struct link_map *_dl_sysinfo_map;
 #endif
 
 #ifdef SHARED
diff --git a/sysdeps/ia64/fpu/e_acosh.S b/sysdeps/ia64/fpu/e_acosh.S
index b55a6ab43c..fb25fa0053 100644
--- a/sysdeps/ia64/fpu/e_acosh.S
+++ b/sysdeps/ia64/fpu/e_acosh.S
@@ -1,7 +1,7 @@
 .file "acosh.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -45,6 +45,7 @@
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 02/06/03 Reordered header: .section, .global, .proc, .align
 // 05/14/03 Improved performance, set denormal flag for unorms >= 1.0
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 // ==============================================================
diff --git a/sysdeps/ia64/fpu/e_acoshl.S b/sysdeps/ia64/fpu/e_acoshl.S
index 5eb2b3466b..42e1f394ef 100644
--- a/sysdeps/ia64/fpu/e_acoshl.S
+++ b/sysdeps/ia64/fpu/e_acoshl.S
@@ -1,7 +1,7 @@
 .file "acoshl.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -47,6 +47,7 @@
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 08/14/02 Changed mli templates to mlx
 // 02/06/03 Reorganized data tables
+// 03/31/05 Reformatted delimiters between data tables
 //
 //*********************************************************************
 //
@@ -258,6 +259,7 @@ data8 0x9E34AF4D372861E0, 0x3FFB  // .77248925727776366270605984806795850504e-1
 data8 0xF3DC502AEE14C4AE, 0x3FA6  // .3077953476682583606615438814166025592e-26  
 LOCAL_OBJECT_END(Poly_P)
 
+//
 LOCAL_OBJECT_START(Poly_Q)
 data8 0xF76E3FD3C7680357, 0x3FF1  // .11798413344703621030038719253730708525e-3  
 data8 0xD107D2E7273263AE, 0x3FF7  // .63791065024872525660782716786703188820e-2  
diff --git a/sysdeps/ia64/fpu/e_atanh.S b/sysdeps/ia64/fpu/e_atanh.S
index 5ae96dc90b..4ae5ee6926 100644
--- a/sysdeps/ia64/fpu/e_atanh.S
+++ b/sysdeps/ia64/fpu/e_atanh.S
@@ -1,7 +1,7 @@
 .file "atanh.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -44,6 +44,7 @@
 // 05/20/02  Cleaned up namespace and sf0 syntax
 // 02/06/03  Reordered header: .section, .global, .proc, .align
 // 05/26/03  Improved performance, fixed to handle unorms
+// 03/31/05  Reformatted delimiters between data tables
 //
 // API
 // ==============================================================
diff --git a/sysdeps/ia64/fpu/e_cosh.S b/sysdeps/ia64/fpu/e_cosh.S
index 38bd80e146..885456b389 100644
--- a/sysdeps/ia64/fpu/e_cosh.S
+++ b/sysdeps/ia64/fpu/e_cosh.S
@@ -1,7 +1,7 @@
 .file "cosh.s"
 
 
-// Copyright (c) 2000 - 2002, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -46,6 +46,7 @@
 // 05/07/01 Reworked to improve speed of all paths
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 11/15/02 Improved speed with new algorithm
+// 03/31/05 Reformatted delimiters between data tables
 
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/e_coshf.S b/sysdeps/ia64/fpu/e_coshf.S
index 6d30064256..97cb4e1771 100644
--- a/sysdeps/ia64/fpu/e_coshf.S
+++ b/sysdeps/ia64/fpu/e_coshf.S
@@ -1,7 +1,7 @@
 .file "coshf.s"
 
 
-// Copyright (c) 2000 - 2002, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -47,6 +47,7 @@
 // 05/07/01 Reworked to improve speed of all paths
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 11/15/02 Improved algorithm based on expf
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //*********************************************************************
diff --git a/sysdeps/ia64/fpu/e_exp.S b/sysdeps/ia64/fpu/e_exp.S
index d22fd18b77..fcc247fb1a 100644
--- a/sysdeps/ia64/fpu/e_exp.S
+++ b/sysdeps/ia64/fpu/e_exp.S
@@ -1,7 +1,7 @@
 .file "exp.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -53,6 +53,7 @@
 // 09/07/02 Force inexact flag
 // 11/15/02 Split underflow path into zero/nonzero; eliminated fma in main path
 // 05/30/03 Set inexact flag on unmasked overflow/underflow
+// 03/31/05 Reformatted delimiters between data tables
 
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/e_exp10.S b/sysdeps/ia64/fpu/e_exp10.S
index 6bfc21879d..eafa59dd7c 100644
--- a/sysdeps/ia64/fpu/e_exp10.S
+++ b/sysdeps/ia64/fpu/e_exp10.S
@@ -1,7 +1,7 @@
 .file "exp10.s"
 
 
-// Copyright (c) 2000 - 2004, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -44,6 +44,7 @@
 // 09/06/02 Improved performance; no inexact flags on exact cases
 // 01/29/03 Added missing } to bundle templates
 // 12/16/04 Call error handling on underflow.
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
@@ -203,7 +204,6 @@ data8 0x8245cd9ab2cec048, 0x825c62a423d13f0c
 data8 0x8272fb97b2a5894c, 0x828998760d01faf3
 data8 0x82a0393fe0bb0ca8, 0x82b6ddf5dbc35906
 //
-//
 // 2^{0.b1 b2 b3 b4 b5}
 data8 0x8000000000000000, 0x82cd8698ac2ba1d7
 data8 0x85aac367cc487b14, 0x88980e8092da8527
diff --git a/sysdeps/ia64/fpu/e_exp10f.S b/sysdeps/ia64/fpu/e_exp10f.S
index 46615e98ff..fa54e9039f 100644
--- a/sysdeps/ia64/fpu/e_exp10f.S
+++ b/sysdeps/ia64/fpu/e_exp10f.S
@@ -1,7 +1,7 @@
 .file "exp10f.s"
 
 
-// Copyright (c) 2000 - 2004, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -44,6 +44,7 @@
 // 09/06/02 Improved performance and accuracy; no inexact flags on exact cases
 // 01/29/03 Added missing } to bundle templates
 // 12/16/04 Call error handling on underflow.
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
@@ -193,7 +194,6 @@ data8 0x8245cd9ab2cec048, 0x825c62a423d13f0c
 data8 0x8272fb97b2a5894c, 0x828998760d01faf3
 data8 0x82a0393fe0bb0ca8, 0x82b6ddf5dbc35906
 //
-//
 // 2^{0.b1 b2 b3 b4 b5}
 data8 0x8000000000000000, 0x82cd8698ac2ba1d7
 data8 0x85aac367cc487b14, 0x88980e8092da8527
diff --git a/sysdeps/ia64/fpu/e_exp2.S b/sysdeps/ia64/fpu/e_exp2.S
index 46fca2d3cd..54f652e384 100644
--- a/sysdeps/ia64/fpu/e_exp2.S
+++ b/sysdeps/ia64/fpu/e_exp2.S
@@ -1,7 +1,7 @@
 .file "exp2.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -43,6 +43,7 @@
 // 05/20/02  Cleaned up namespace and sf0 syntax
 // 09/05/02  Improved performance
 // 01/17/03  Fixed to call error support when x=1024.0
+// 03/31/05  Reformatted delimiters between data tables
 //
 // API
 //==============================================================
@@ -204,7 +205,6 @@ data8 0x8245cd9ab2cec048, 0x825c62a423d13f0c
 data8 0x8272fb97b2a5894c, 0x828998760d01faf3
 data8 0x82a0393fe0bb0ca8, 0x82b6ddf5dbc35906
 //
-//
 // 2^{0.b1 b2 b3 b4 b5}
 data8 0x8000000000000000, 0x82cd8698ac2ba1d7
 data8 0x85aac367cc487b14, 0x88980e8092da8527
diff --git a/sysdeps/ia64/fpu/e_exp2f.S b/sysdeps/ia64/fpu/e_exp2f.S
index 8ee600c554..36354ae3bd 100644
--- a/sysdeps/ia64/fpu/e_exp2f.S
+++ b/sysdeps/ia64/fpu/e_exp2f.S
@@ -1,7 +1,7 @@
 .file "exp2f.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -43,6 +43,7 @@
 // 05/20/02  Cleaned up namespace and sf0 syntax
 // 09/05/02  Improved performance and accuracy
 // 01/17/03  Fixed to call error support when x=128.0
+// 03/31/05  Reformatted delimiters between data tables
 //
 // API
 //==============================================================
@@ -198,7 +199,6 @@ data8 0x8245cd9ab2cec048, 0x825c62a423d13f0c
 data8 0x8272fb97b2a5894c, 0x828998760d01faf3
 data8 0x82a0393fe0bb0ca8, 0x82b6ddf5dbc35906
 //
-//
 // 2^{0.b1 b2 b3 b4 b5}
 data8 0x8000000000000000, 0x82cd8698ac2ba1d7
 data8 0x85aac367cc487b14, 0x88980e8092da8527
diff --git a/sysdeps/ia64/fpu/e_expf.S b/sysdeps/ia64/fpu/e_expf.S
index 3dc0ba9bf6..6fe0a833e2 100644
--- a/sysdeps/ia64/fpu/e_expf.S
+++ b/sysdeps/ia64/fpu/e_expf.S
@@ -1,7 +1,7 @@
 .file "expf.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -53,6 +53,7 @@
 //          corrected
 // 11/15/02 Improved performance on Itanium 2, added possible over/under paths
 // 05/30/03 Set inexact flag on unmasked overflow/underflow
+// 03/31/05 Reformatted delimiters between data tables
 //
 //
 // API
diff --git a/sysdeps/ia64/fpu/e_log.S b/sysdeps/ia64/fpu/e_log.S
index 7b277f8a40..c644c6f8f7 100644
--- a/sysdeps/ia64/fpu/e_log.S
+++ b/sysdeps/ia64/fpu/e_log.S
@@ -1,7 +1,7 @@
 .file "log.s"
 
 
-// Copyright (c) 2000 - 2002, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -51,6 +51,7 @@
 // 05/23/02 Modified algorithm. Now only one polynomial is used
 //          for |x-1| >= 1/256 and for |x-1| < 1/256
 // 12/11/02 Improved performance for Itanium 2
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/e_logf.S b/sysdeps/ia64/fpu/e_logf.S
index 186edab501..3d11a296cc 100644
--- a/sysdeps/ia64/fpu/e_logf.S
+++ b/sysdeps/ia64/fpu/e_logf.S
@@ -1,7 +1,7 @@
 .file "logf.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -47,6 +47,7 @@
 // 05/23/02 Modified algorithm. Now only one polynomial is used
 //          for |x-1| >= 1/256 and for |x-1| < 1/256
 // 02/10/03 Reordered header: .section, .global, .proc, .align
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/e_pow.S b/sysdeps/ia64/fpu/e_pow.S
index 86005f2f59..89449c79ec 100644
--- a/sysdeps/ia64/fpu/e_pow.S
+++ b/sysdeps/ia64/fpu/e_pow.S
@@ -1,7 +1,7 @@
 .file "pow.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -66,6 +66,7 @@
 // 08/29/02 Improved Itanium 2 performance
 // 09/21/02 Added branch for |y*log(x)|<2^-11 to fix monotonicity problems.
 // 02/10/03 Reordered header: .section, .global, .proc, .align
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/e_powf.S b/sysdeps/ia64/fpu/e_powf.S
index 4c839cba71..1406a94b65 100644
--- a/sysdeps/ia64/fpu/e_powf.S
+++ b/sysdeps/ia64/fpu/e_powf.S
@@ -1,7 +1,7 @@
 .file "powf.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -66,6 +66,7 @@
 // 02/10/03 Reordered header: .section, .global, .proc, .align
 // 10/09/03 Modified algorithm to improve performance, reduce table size, and
 //          fix boundary case powf(2.0,-150.0)
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/e_sinh.S b/sysdeps/ia64/fpu/e_sinh.S
index 5910d4aef9..f60907b72b 100644
--- a/sysdeps/ia64/fpu/e_sinh.S
+++ b/sysdeps/ia64/fpu/e_sinh.S
@@ -1,7 +1,7 @@
 .file "sinh.s"
 
 
-// Copyright (c) 2000 - 2002, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -48,6 +48,7 @@
 // 05/02/01 Reworked to improve speed of all paths
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 11/20/02 Improved speed with new algorithm
+// 03/31/05 Reformatted delimiters between data tables
 
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/e_sinhf.S b/sysdeps/ia64/fpu/e_sinhf.S
index d01d830734..6d808cb478 100644
--- a/sysdeps/ia64/fpu/e_sinhf.S
+++ b/sysdeps/ia64/fpu/e_sinhf.S
@@ -1,7 +1,7 @@
 .file "sinhf.s"
 
 
-// Copyright (c) 2000 - 2002, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -48,6 +48,7 @@
 // 05/02/01 Reworked to improve speed of all paths
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 11/20/02 Improved algorithm based on expf
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //*********************************************************************
diff --git a/sysdeps/ia64/fpu/libm_error.c b/sysdeps/ia64/fpu/libm_error.c
index a7f9daefa0..24fb406a53 100644
--- a/sysdeps/ia64/fpu/libm_error.c
+++ b/sysdeps/ia64/fpu/libm_error.c
@@ -1,7 +1,7 @@
 /* file: libm_error.c */
 
 
-// Copyright (c) 2000 - 2004, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -85,6 +85,7 @@
 //           nextafter_underflow, nexttoward_overflow, nexttoward_underflow.  
 //           Added ISOC to set errno for nextafter and nexttoward underflow.
 // 12/15/04: Corrected POSIX behavior for exp, exp2, and exp10 underflow.
+// 03/31/05: Added missing ALIGNIT statement to 6 float constants.
 
 #include <errno.h>
 #include <stdio.h>
@@ -163,11 +164,17 @@ struct exceptionl excl;
 
 #define STATIC static
 
+ALIGNIT
 STATIC const char float_inf[4] = {0x00,0x00,0x80,0x7F};
+ALIGNIT
 STATIC const char float_huge[4] = {0xFF,0xFF,0x7F,0x7F};
+ALIGNIT
 STATIC const char float_zero[4] = {0x00,0x00,0x00,0x00};
+ALIGNIT
 STATIC const char float_neg_inf[4] = {0x00,0x00,0x80,0xFF};
+ALIGNIT
 STATIC const char float_neg_huge[4] = {0xFF,0xFF,0x7F,0xFF};
+ALIGNIT
 STATIC const char float_neg_zero[4] = {0x00,0x00,0x00,0x80};
 ALIGNIT
 STATIC const char double_inf[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x7F};
diff --git a/sysdeps/ia64/fpu/libm_lgamma.S b/sysdeps/ia64/fpu/libm_lgamma.S
index 0df1e4bc58..6096319ba5 100644
--- a/sysdeps/ia64/fpu/libm_lgamma.S
+++ b/sysdeps/ia64/fpu/libm_lgamma.S
@@ -1,7 +1,7 @@
 .file "libm_lgamma.s"
 
 
-// Copyright (c) 2002 - 2003, Intel Corporation
+// Copyright (c) 2002 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2002 by the Intel Numerics Group, Intel Corporation
@@ -48,6 +48,7 @@
 // 10/21/02  Now it returns SIGN(GAMMA(x))=-1 for negative zero
 // 02/10/03  Reordered header: .section, .global, .proc, .align
 // 07/22/03  Reformatted some data tables
+// 03/31/05  Reformatted delimiters between data tables
 //
 //*********************************************************************
 //
@@ -630,7 +631,7 @@ data8 0x7F5754D9278B51A8 // overflow boundary (first inf result)
 data8 0xAAAAAAAAAAAAAAAB,0x3FFB // W2=B2/2=1/12
 //
 data8 0x3FBC756AC654273B // Q8
-data8 0xBFC001A42489AB4D // Q7	; 
+data8 0xBFC001A42489AB4D // Q7
 data8 0x3FC99999999A169B // Q4
 data8 0xBFD00000000019AC // Q3
 data8 0x3FC2492479AA0DF8 // Q6
diff --git a/sysdeps/ia64/fpu/libm_lgammaf.S b/sysdeps/ia64/fpu/libm_lgammaf.S
index 04dcd63fa7..4bd92c3b26 100644
--- a/sysdeps/ia64/fpu/libm_lgammaf.S
+++ b/sysdeps/ia64/fpu/libm_lgammaf.S
@@ -1,7 +1,7 @@
 .file "libm_lgammaf.s"
 
 
-// Copyright (c) 2002 - 2003, Intel Corporation
+// Copyright (c) 2002 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2002 by the Intel Numerics Group, Intel Corporation
@@ -48,6 +48,7 @@
 // 10/21/02  Now it returns SIGN(GAMMA(x))=-1 for negative zero
 // 02/10/03  Reordered header: .section, .global, .proc, .align
 // 07/22/03  Reformatted some data tables
+// 03/31/05  Reformatted delimiters between data tables
 //
 //*********************************************************************
 //
diff --git a/sysdeps/ia64/fpu/libm_lgammal.S b/sysdeps/ia64/fpu/libm_lgammal.S
index 844c517785..407b3452cd 100644
--- a/sysdeps/ia64/fpu/libm_lgammal.S
+++ b/sysdeps/ia64/fpu/libm_lgammal.S
@@ -1,7 +1,7 @@
 .file "libm_lgammal.s"
 
 
-// Copyright (c) 2002 - 2003, Intel Corporation
+// Copyright (c) 2002 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2002 by the Intel Numerics Group, Intel Corporation
@@ -46,6 +46,7 @@
 // 09/26/02  Algorithm description improved
 // 10/21/02  Now it returns SIGN(GAMMA(x))=-1 for negative zero
 // 02/10/03  Reordered header: .section, .global, .proc, .align
+// 03/31/05  Reformatted delimiters between data tables
 //
 //*********************************************************************
 //
diff --git a/sysdeps/ia64/fpu/libm_sincos.S b/sysdeps/ia64/fpu/libm_sincos.S
index 3475b6281b..7fda2afac4 100644
--- a/sysdeps/ia64/fpu/libm_sincos.S
+++ b/sysdeps/ia64/fpu/libm_sincos.S
@@ -1,7 +1,7 @@
 .file "libm_sincos.s"
 
 
-// Copyright (c) 2002 - 2003, Intel Corporation
+// Copyright (c) 2002 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2002 by the Intel Numerics Group, Intel Corporation
@@ -48,6 +48,7 @@
 // 02/10/03 Reordered header: .section, .global, .proc, .align
 // 08/08/03 Improved performance
 // 02/11/04 cis is moved to the separate file.
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/libm_sincosf.S b/sysdeps/ia64/fpu/libm_sincosf.S
index fb12007af8..cf23356ef4 100644
--- a/sysdeps/ia64/fpu/libm_sincosf.S
+++ b/sysdeps/ia64/fpu/libm_sincosf.S
@@ -1,7 +1,7 @@
 .file "libm_sincosf.s"
 
 
-// Copyright (c) 2002 - 2003, Intel Corporation
+// Copyright (c) 2002 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2002 by the Intel Numerics Group, Intel Corporation
@@ -48,6 +48,7 @@
 // 09/05/02 Work range is widened by reduction strengthen (2 parts of Pi/16)
 // 02/10/03 Reordered header: .section, .global, .proc, .align
 // 02/11/04 cisf is moved to the separate file.
+// 03/31/05 Reformatted delimiters between data tables
 
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_asinh.S b/sysdeps/ia64/fpu/s_asinh.S
index ab01f4f570..7eba39eb40 100644
--- a/sysdeps/ia64/fpu/s_asinh.S
+++ b/sysdeps/ia64/fpu/s_asinh.S
@@ -1,7 +1,7 @@
 .file "asinh.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -46,6 +46,7 @@
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 02/06/03 Reordered header: .section, .global, .proc, .align
 // 05/21/03 Improved performance, fixed to handle unorms
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 // ==============================================================
diff --git a/sysdeps/ia64/fpu/s_atanl.S b/sysdeps/ia64/fpu/s_atanl.S
index 721a38c108..1a23611307 100644
--- a/sysdeps/ia64/fpu/s_atanl.S
+++ b/sysdeps/ia64/fpu/s_atanl.S
@@ -1,7 +1,7 @@
 .file "atanl.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -51,6 +51,7 @@
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 02/10/03 Reordered header: .section, .global, .proc, .align;
 //          used data8 for long double table values
+// 03/31/05 Reformatted delimiters between data tables
 //
 //*********************************************************************
 //
diff --git a/sysdeps/ia64/fpu/s_cos.S b/sysdeps/ia64/fpu/s_cos.S
index bf8997b4f5..fc121fce19 100644
--- a/sysdeps/ia64/fpu/s_cos.S
+++ b/sysdeps/ia64/fpu/s_cos.S
@@ -1,7 +1,7 @@
 .file "sincos.s"
 
 
-// Copyright (c) 2000 - 2004, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -53,6 +53,7 @@
 // 02/10/03 Reordered header: .section, .global, .proc, .align
 // 08/08/03 Improved performance
 // 10/28/04 Saved sincos_r_sincos to avoid clobber by dynamic loader 
+// 03/31/05 Reformatted delimiters between data tables
 
 // API
 //==============================================================
@@ -300,7 +301,6 @@ data8 0xd4db3148750d181a , 0x00003ffe // cos( 3 pi/16)  C3
 data8 0xb504f333f9de6484 , 0x00003ffe // sin( 4 pi/16)  S4
 data8 0xb504f333f9de6484 , 0x00003ffe // cos( 4 pi/16)  C4
 //
-//
 data8 0xd4db3148750d181a , 0x00003ffe // sin( 5 pi/16)  C3
 data8 0x8e39d9cd73464364 , 0x00003ffe // cos( 5 pi/16)  S3
 //
@@ -313,7 +313,6 @@ data8 0xc7c5c1e34d3055b3 , 0x00003ffc // cos( 7 pi/16)  S1
 data8 0x8000000000000000 , 0x00003fff // sin( 8 pi/16)  C0
 data8 0x0000000000000000 , 0x00000000 // cos( 8 pi/16)  S0
 //
-//
 data8 0xfb14be7fbae58157 , 0x00003ffe // sin( 9 pi/16)  C1
 data8 0xc7c5c1e34d3055b3 , 0x0000bffc // cos( 9 pi/16)  -S1
 //
@@ -326,7 +325,6 @@ data8 0x8e39d9cd73464364 , 0x0000bffe // cos(11 pi/16)  -S3
 data8 0xb504f333f9de6484 , 0x00003ffe // sin(12 pi/16)  S4
 data8 0xb504f333f9de6484 , 0x0000bffe // cos(12 pi/16)  -S4
 //
-//
 data8 0x8e39d9cd73464364 , 0x00003ffe // sin(13 pi/16) S3
 data8 0xd4db3148750d181a , 0x0000bffe // cos(13 pi/16) -C3
 //
@@ -339,7 +337,6 @@ data8 0xfb14be7fbae58157 , 0x0000bffe // cos(15 pi/16) -C1
 data8 0x0000000000000000 , 0x00000000 // sin(16 pi/16) S0
 data8 0x8000000000000000 , 0x0000bfff // cos(16 pi/16) -C0
 //
-//
 data8 0xc7c5c1e34d3055b3 , 0x0000bffc // sin(17 pi/16) -S1
 data8 0xfb14be7fbae58157 , 0x0000bffe // cos(17 pi/16) -C1
 //
@@ -352,7 +349,6 @@ data8 0xd4db3148750d181a , 0x0000bffe // cos(19 pi/16) -C3
 data8 0xb504f333f9de6484 , 0x0000bffe // sin(20 pi/16) -S4
 data8 0xb504f333f9de6484 , 0x0000bffe // cos(20 pi/16) -S4
 //
-//
 data8 0xd4db3148750d181a , 0x0000bffe // sin(21 pi/16) -C3
 data8 0x8e39d9cd73464364 , 0x0000bffe // cos(21 pi/16) -S3
 //
@@ -365,7 +361,6 @@ data8 0xc7c5c1e34d3055b3 , 0x0000bffc // cos(23 pi/16) -S1
 data8 0x8000000000000000 , 0x0000bfff // sin(24 pi/16) -C0
 data8 0x0000000000000000 , 0x00000000 // cos(24 pi/16) S0
 //
-//
 data8 0xfb14be7fbae58157 , 0x0000bffe // sin(25 pi/16) -C1
 data8 0xc7c5c1e34d3055b3 , 0x00003ffc // cos(25 pi/16) S1
 //
@@ -378,7 +373,6 @@ data8 0x8e39d9cd73464364 , 0x00003ffe // cos(27 pi/16) S3
 data8 0xb504f333f9de6484 , 0x0000bffe // sin(28 pi/16) -S4
 data8 0xb504f333f9de6484 , 0x00003ffe // cos(28 pi/16) S4
 //
-//
 data8 0x8e39d9cd73464364 , 0x0000bffe // sin(29 pi/16) -S3
 data8 0xd4db3148750d181a , 0x00003ffe // cos(29 pi/16) C3
 //
diff --git a/sysdeps/ia64/fpu/s_cosf.S b/sysdeps/ia64/fpu/s_cosf.S
index a588938eed..bcdf1b0c02 100644
--- a/sysdeps/ia64/fpu/s_cosf.S
+++ b/sysdeps/ia64/fpu/s_cosf.S
@@ -1,7 +1,7 @@
 .file "sincosf.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -51,6 +51,7 @@
 // 06/03/02 Insure inexact flag set for large arg result
 // 09/05/02 Single precision version is made using double precision one as base
 // 02/10/03 Reordered header: .section, .global, .proc, .align
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_erf.S b/sysdeps/ia64/fpu/s_erf.S
index 3abcd3e1ab..7174a197fb 100644
--- a/sysdeps/ia64/fpu/s_erf.S
+++ b/sysdeps/ia64/fpu/s_erf.S
@@ -1,7 +1,7 @@
 .file "erf.s"
 
 
-// Copyright (c) 2001 - 2003, Intel Corporation
+// Copyright (c) 2001 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2001 by the Intel Numerics Group, Intel Corporation
@@ -42,6 +42,7 @@
 // 08/15/01 Initial version
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 02/06/03 Reordered header: .section, .global, .proc, .align
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_erfc.S b/sysdeps/ia64/fpu/s_erfc.S
index 3b1b583803..addfef44c2 100644
--- a/sysdeps/ia64/fpu/s_erfc.S
+++ b/sysdeps/ia64/fpu/s_erfc.S
@@ -1,7 +1,7 @@
 .file "erfc.s"
 
 
-// Copyright (c) 2001 - 2003, Intel Corporation
+// Copyright (c) 2001 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2001 by the Intel Numerics Group, Intel Corporation
@@ -42,6 +42,7 @@
 // 11/12/01  Initial version
 // 05/20/02  Cleaned up namespace and sf0 syntax
 // 02/06/03  Reordered header: .section, .global, .proc, .align
+// 03/31/05  Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_erfcf.S b/sysdeps/ia64/fpu/s_erfcf.S
index e09ce98ebd..2e3eeab3c7 100644
--- a/sysdeps/ia64/fpu/s_erfcf.S
+++ b/sysdeps/ia64/fpu/s_erfcf.S
@@ -1,7 +1,7 @@
 .file "erfcf.s"
 
 
-// Copyright (c) 2002 - 2003, Intel Corporation
+// Copyright (c) 2002 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2002 by the Intel Numerics Group, Intel Corporation
@@ -42,6 +42,7 @@
 // 01/17/02  Initial version
 // 05/20/02  Cleaned up namespace and sf0 syntax
 // 02/06/03  Reordered header: .section, .global, .proc, .align
+// 03/31/05  Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_erfcl.S b/sysdeps/ia64/fpu/s_erfcl.S
index 11f66bcb8a..266e1e1c91 100644
--- a/sysdeps/ia64/fpu/s_erfcl.S
+++ b/sysdeps/ia64/fpu/s_erfcl.S
@@ -1,7 +1,7 @@
 .file "erfcl.s"
 
 
-// Copyright (c) 2001 - 2003, Intel Corporation
+// Copyright (c) 2001 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2001 by the Intel Numerics Group, Intel Corporation
@@ -44,6 +44,7 @@
 // 05/20/02  Cleaned up namespace and sf0 syntax
 // 02/10/03  Reordered header: .section, .global, .proc, .align;
 //           used data8 for long double table values
+// 03/31/05  Reformatted delimiters between data tables
 //
 // API
 //==============================================================
@@ -763,7 +764,7 @@ LOCAL_OBJECT_END(erfc_s_table)
 
 LOCAL_OBJECT_START(erfc_Q_table)
 // Q(z)= (P(z)- S)/S
-
+//
 // Pol0 
 data8 0x98325D50F9DC3499, 0x0000BFAA //A0 = +3.07358861423101280650e-26L
 data8 0xED35081A2494DDD9, 0x00003FF8 //A1 = +1.44779757616302832466e-02L
diff --git a/sysdeps/ia64/fpu/s_erff.S b/sysdeps/ia64/fpu/s_erff.S
index 204446fbdf..ed0aaac488 100644
--- a/sysdeps/ia64/fpu/s_erff.S
+++ b/sysdeps/ia64/fpu/s_erff.S
@@ -1,7 +1,7 @@
 .file "erff.s"
 
 
-// Copyright (c) 2001 - 2003, Intel Corporation
+// Copyright (c) 2001 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2001 by the Intel Numerics Group, Intel Corporation
@@ -42,6 +42,7 @@
 // 08/14/01 Initial version
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 02/06/03 Reordered header: .section, .global, .proc, .align
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_expm1.S b/sysdeps/ia64/fpu/s_expm1.S
index 5d1fd8c538..09a22bbbdd 100644
--- a/sysdeps/ia64/fpu/s_expm1.S
+++ b/sysdeps/ia64/fpu/s_expm1.S
@@ -1,7 +1,7 @@
 .file "exp_m1.s"
 
 
-// Copyright (c) 2000 - 2002, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -46,6 +46,7 @@
 // 07/07/01 Improved speed of all paths
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 11/20/02 Improved speed, algorithm based on exp
+// 03/31/05 Reformatted delimiters between data tables
 
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_expm1f.S b/sysdeps/ia64/fpu/s_expm1f.S
index 311be06343..8996977ddb 100644
--- a/sysdeps/ia64/fpu/s_expm1f.S
+++ b/sysdeps/ia64/fpu/s_expm1f.S
@@ -1,7 +1,7 @@
 .file "expf_m1.s"
 
 
-// Copyright (c) 2000 - 2002, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -46,6 +46,7 @@
 // 07/07/01 Improved speed of all paths
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 11/20/02 Improved speed, algorithm based on expf
+// 03/31/05 Reformatted delimiters between data tables
 //
 //
 // API
diff --git a/sysdeps/ia64/fpu/s_log1p.S b/sysdeps/ia64/fpu/s_log1p.S
index ccf0c310ad..e1e6dcc80b 100644
--- a/sysdeps/ia64/fpu/s_log1p.S
+++ b/sysdeps/ia64/fpu/s_log1p.S
@@ -1,7 +1,7 @@
 .file "log1p.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -48,6 +48,7 @@
 // 10/02/02 Improved performance by basing on log algorithm
 // 02/10/03 Reordered header: .section, .global, .proc, .align
 // 04/18/03 Eliminate possible WAW dependency warning
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_tanf.S b/sysdeps/ia64/fpu/s_tanf.S
index 98e3f76f17..193d7568a5 100644
--- a/sysdeps/ia64/fpu/s_tanf.S
+++ b/sysdeps/ia64/fpu/s_tanf.S
@@ -1,7 +1,7 @@
 .file "tancotf.s"
 
 
-// Copyright (c) 2000 - 2003, Intel Corporation
+// Copyright (c) 2000 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2000 by the Intel Numerics Group, Intel Corporation
@@ -47,6 +47,7 @@
 // 11/25/02 Added explicit completer on fnorm
 // 02/10/03 Reordered header: .section, .global, .proc, .align
 // 04/17/03 Eliminated redundant stop bits
+// 03/31/05 Reformatted delimiters between data tables
 //
 // APIs
 //==============================================================
diff --git a/sysdeps/ia64/fpu/s_tanh.S b/sysdeps/ia64/fpu/s_tanh.S
index 5e0c407c78..9adbc9c461 100644
--- a/sysdeps/ia64/fpu/s_tanh.S
+++ b/sysdeps/ia64/fpu/s_tanh.S
@@ -1,7 +1,7 @@
 .file "tanh.s"
 
 
-// Copyright (c) 2001 - 2003, Intel Corporation
+// Copyright (c) 2001 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2001 by the Intel Numerics Group, Intel Corporation
@@ -45,6 +45,7 @@
 // 05/20/02  Cleaned up namespace and sf0 syntax
 // 08/14/02  Changed mli templates to mlx
 // 02/10/03  Reordered header: .section, .global, .proc, .align
+// 03/31/05  Reformatted delimiters between data tables
 //
 // API
 //==============================================================================
@@ -364,7 +365,6 @@ data8 0xA23A087F96846951, 0x0000BFE0 //A6
 data8 0xF358D8A7FC012D5D, 0x00003FDE //A5
 data8 0x98176E2309B7C73A, 0x0000BFDD //A4
 //
-//
 // Coefficients ##16..19 ("tail" coefficient tables)
 // Polynomial coefficients for the tanh(x), 0.25 <= |x| < 0.5 
 data8 0x838F209ABB9BA7B3, 0x0000BFF7 //A3
@@ -427,7 +427,6 @@ data8 0xE42327B9B0D7202F, 0x0000BFD8 //A2
 data8 0xE42327BB13076BD6, 0x00003FD5 //A1
 data8 0xFFFFFFFFFFF8DEE7, 0x00003FFE //A0
 //
-//
 // Polynomial coefficients for the tanh(x), 0.0 <= |x| < 0.25 
 // ('tanh_near_zero' path)
 data8 0xBF2BA5D26E479D0C //A9
@@ -440,7 +439,6 @@ data8 0x3F6D6D36C3D5B7A1 //A6
 data8 0xBFABA1BA1BA19D32 //A3
 data8 0x3FC1111111111108 //A2
 //
-//
 // 1.0 - 2^(-63)
 // ('tanh_saturation' path)
 data8 0xFFFFFFFFFFFFFFFF, 0x00003FFE 
diff --git a/sysdeps/ia64/fpu/s_tanhf.S b/sysdeps/ia64/fpu/s_tanhf.S
index 344ca4ec5a..e4e91cfe63 100644
--- a/sysdeps/ia64/fpu/s_tanhf.S
+++ b/sysdeps/ia64/fpu/s_tanhf.S
@@ -1,7 +1,7 @@
 .file "tanhf.s"
 
 
-// Copyright (c) 2001 - 2003, Intel Corporation
+// Copyright (c) 2001 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2001 by the Intel Numerics Group, Intel Corporation
@@ -42,6 +42,7 @@
 // 05/30/01 Initial version
 // 05/20/02 Cleaned up namespace and sf0 syntax
 // 02/10/03 Reordered header: .section, .global, .proc, .align
+// 03/31/05 Reformatted delimiters between data tables
 //
 // API
 //==============================================================
@@ -224,7 +225,6 @@ data8 0xBFD555551E8245B7 // A0
 data8 0x3FC110E63F52E689 // A1
 data8 0xBFAB8CD6A5B7BAFA // A2
 data8 0x3F945D467FCEB553 // A3
-//
 // Polynomial coefficients for the tanh(x), 0.3125 <= |x| < 0.5
 data8 0xBE3DCC92FCAECBB6 // A0
 data8 0x3FF0000043B7D267 // A1
diff --git a/sysdeps/ia64/fpu/w_tgamma.S b/sysdeps/ia64/fpu/w_tgamma.S
index e55e4e396b..24f3d11840 100644
--- a/sysdeps/ia64/fpu/w_tgamma.S
+++ b/sysdeps/ia64/fpu/w_tgamma.S
@@ -1,7 +1,7 @@
 .file "tgamma.s"
 
 
-// Copyright (c) 2001 - 2003, Intel Corporation
+// Copyright (c) 2001 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2001 by the Intel Numerics Group, Intel Corporation
@@ -45,6 +45,7 @@
 // 02/10/03  Reordered header: .section, .global, .proc, .align
 // 04/04/03  Changed error codes for overflow and negative integers
 // 04/10/03  Changed code for overflow near zero handling
+// 03/31/05  Reformatted delimiters between data tables
 //
 //*********************************************************************
 //
@@ -538,7 +539,6 @@ data8 0x8646E78AABEF0255,0x00003FFF // C20
 data8 0xA32AEDB62E304345,0x00003FFF // C30
 data8 0xCE83E40280EE7DF0,0x00003FFF // C40
 //
-//
 //[2; 3]
 data8 0xC44FB47E90584083,0x00004001 // C50
 data8 0xE863EE77E1C45981,0x00004001 // C60
diff --git a/sysdeps/ia64/fpu/w_tgammaf.S b/sysdeps/ia64/fpu/w_tgammaf.S
index 64421ab4ee..dda0d0fe9d 100644
--- a/sysdeps/ia64/fpu/w_tgammaf.S
+++ b/sysdeps/ia64/fpu/w_tgammaf.S
@@ -1,7 +1,7 @@
 .file "tgammaf.s"
 
 
-// Copyright (c) 2001 - 2003, Intel Corporation
+// Copyright (c) 2001 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2001 by the Intel Numerics Group, Intel Corporation
@@ -46,6 +46,7 @@
 // 04/04/03  Changed error codes for overflow and negative integers
 // 04/10/03  Changed code for overflow near zero handling
 // 12/16/03  Fixed parameter passing to/from error handling routine
+// 03/31/05  Reformatted delimiters between data tables
 //
 //*********************************************************************
 //
diff --git a/sysdeps/ia64/fpu/w_tgammal.S b/sysdeps/ia64/fpu/w_tgammal.S
index d801ba0886..f64e213266 100644
--- a/sysdeps/ia64/fpu/w_tgammal.S
+++ b/sysdeps/ia64/fpu/w_tgammal.S
@@ -1,7 +1,7 @@
 .file "tgammal.s"
 
 
-// Copyright (c) 2002 - 2003, Intel Corporation
+// Copyright (c) 2002 - 2005, Intel Corporation
 // All rights reserved.
 //
 // Contributed 2002 by the Intel Numerics Group, Intel Corporation
@@ -45,6 +45,7 @@
 //           used data8 for long double table values
 // 03/17/03  Moved tgammal_libm_err label into .proc region
 // 04/10/03  Changed error codes for overflow and negative integers
+// 03/31/05  Reformatted delimiters between data tables
 //
 // API
 //==============================================================
diff --git a/sysdeps/sh/elf/configure b/sysdeps/sh/elf/configure
index df45f2cde2..d38b0ece5d 100644
--- a/sysdeps/sh/elf/configure
+++ b/sysdeps/sh/elf/configure
@@ -5,7 +5,7 @@ if test "$usetls" != no; then
 # Check for support of thread-local storage handling in assembler and
 # linker.
 echo "$as_me:$LINENO: checking for SH TLS support" >&5
-echo $ECHO_N "checking for sh TLS support... $ECHO_C" >&6
+echo $ECHO_N "checking for SH TLS support... $ECHO_C" >&6
 if test "${libc_cv_sh_tls+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
diff --git a/sysdeps/sparc/bits/link.h b/sysdeps/sparc/bits/link.h
new file mode 100644
index 0000000000..9b8434f56f
--- /dev/null
+++ b/sysdeps/sparc/bits/link.h
@@ -0,0 +1,100 @@
+/* Machine-specific audit interfaces for dynamic linker.  SPARC version.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef	_LINK_H
+# error "Never include <bits/link.h> directly; use <link.h> instead."
+#endif
+
+#if __WORDSIZE == 32
+
+typedef struct La_sparc32_regs
+{
+  uint32_t lr_lreg[8];  /* %l0 through %l7 */
+  uint32_t lr_reg[6];   /* %o0 through %o5 */
+  uint32_t lr_sp;       /* %o6 */
+  uint32_t lr_ra;       /* %o7 */
+  uint32_t lr_struct;   /* Pass-by-reference struct pointer */
+} La_sparc32_regs;
+
+typedef struct La_sparc32_retval
+{
+  uint32_t lrv_reg[2]; /* %o0 and %o1 */
+  double lrv_fpreg[2]; /* %f0 and %f2 */
+} La_sparc32_retval;
+
+#else
+
+typedef struct La_sparc64_regs
+{
+  uint64_t lr_lreg[8];  /* %l0 through %l7 */
+  uint64_t lr_reg[6];	/* %o0 through %o5 */
+  uint64_t lr_sp;	/* %o6 */
+  uint64_t lr_ra;	/* %o7 */
+  double lr_fpreg[16];	/* %f0 through %f30 */
+} La_sparc64_regs;
+
+typedef struct La_sparc64_retval
+{
+  uint64_t lrv_reg[4]; /* %o0 through %o3 */
+  double lrv_fprev[4]; /* %f0 through %f8 */
+} La_sparc64_retval;
+
+#endif
+
+__BEGIN_DECLS
+
+#if __WORDSIZE == 32
+
+extern Elf32_Addr la_sparc32_gnu_pltenter (Elf32_Sym *__sym,
+					   unsigned int __ndx,
+					   uintptr_t *__refcook,
+					   uintptr_t *__defcook,
+					   La_sparc32_regs *__regs,
+					   unsigned int *__flags,
+					   const char *__symname,
+					   long int *__framesizep);
+extern unsigned int la_sparc32_gnu_pltexit (Elf32_Sym *__sym,
+					    unsigned int __ndx,
+					    uintptr_t *__refcook,
+					    uintptr_t *__defcook,
+					     const La_sparc32_regs *__inregs,
+					    La_sparc32_retval *__outregs,
+					    const char *symname);
+
+#else
+
+extern Elf64_Addr la_sparc64_gnu_pltenter (Elf64_Sym *__sym,
+					   unsigned int __ndx,
+					   uintptr_t *__refcook,
+					   uintptr_t *__defcook,
+					   La_sparc64_regs *__regs,
+					   unsigned int *__flags,
+					   const char *__symname,
+					   long int *__framesizep);
+extern unsigned int la_sparc64_gnu_pltexit (Elf64_Sym *__sym,
+					    unsigned int __ndx,
+					    uintptr_t *__refcook,
+					    uintptr_t *__defcook,
+					    const La_sparc64_regs *__inregs,
+					    La_sparc64_retval *__outregs,
+					    const char *symname);
+
+#endif
+
+__END_DECLS
diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h
index d0af232d48..4ea122c46b 100644
--- a/sysdeps/sparc/sparc32/dl-machine.h
+++ b/sysdeps/sparc/sparc32/dl-machine.h
@@ -131,30 +131,31 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 	 bits of %g1 with an offset into the .rela.plt section and jump to
 	 the beginning of the PLT.  */
       plt = (Elf32_Addr *) D_PTR (l, l_info[DT_PLTGOT]);
-      if (! profile)
-	rfunc = (Elf32_Addr) &_dl_runtime_resolve;
-      else
+      if (__builtin_expect(profile, 0))
 	{
 	  rfunc = (Elf32_Addr) &_dl_runtime_profile;
 
-	  if (_dl_name_match_p (GLRO(dl_profile), l))
+	  if (GLRO(dl_profile) != NULL
+	      && _dl_name_match_p (GLRO(dl_profile), l))
 	    GL(dl_profile_map) = l;
 	}
+      else
+	{
+	  rfunc = (Elf32_Addr) &_dl_runtime_resolve;
+	}
 
       /* The beginning of the PLT does:
 
-		save %sp, -64, %sp
-	 pltpc:	call _dl_runtime_resolve
-		nop
+		sethi %hi(_dl_runtime_{resolve,profile}), %g2
+	 pltpc:	jmpl %g2 + %lo(_dl_runtime_{resolve,profile}), %g2
+		 nop
 		.word MAP
 
-         This saves the register window containing the arguments, and the
-	 PC value (pltpc) implicitly saved in %o7 by the call points near the
+         The PC value (pltpc) saved in %g2 by the jmpl points near the
 	 location where we store the link_map pointer for this object.  */
 
-      plt[0] = OPCODE_SAVE_SP;
-      /* Construct PC-relative word address.  */
-      plt[1] = OPCODE_CALL | ((rfunc - (Elf32_Addr) &plt[1]) >> 2);
+      plt[0] = 0x05000000 | ((rfunc >> 10) & 0x003fffff);
+      plt[1] = 0x85c0a000 | (rfunc & 0x3ff);
       plt[2] = OPCODE_NOP;	/* Fill call delay slot.  */
       plt[3] = (Elf32_Addr) l;
       if (__builtin_expect (l->l_info[VALIDX(DT_GNU_PRELINKED)] != NULL, 0)
@@ -190,39 +191,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
   return lazy;
 }
 
-/* This code is used in dl-runtime.c to call the `fixup' function
-   and then redirect to the address it returns.  */
-#define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name)	\
-  asm ( "\
-	.text\n\
-	.globl	" #tramp_name "\n\
-	.type	" #tramp_name ", @function\n\
-	.align	32\n\
-" #tramp_name ":\n\
-	/* Set up the arguments to fixup --\n\
-	   %o0 = link_map out of plt0\n\
-	   %o1 = offset of reloc entry\n\
-	   %o2 = return address  */\n\
-	ld	[%o7 + 8], %o0\n\
-	srl	%g1, 10, %o1\n\
-	mov	%i7, %o2\n\
-	call	" #fixup_name "\n\
-	 sub	%o1, 4*12, %o1\n\
-	jmp	%o0\n\
-	 restore\n\
-	.size	" #tramp_name ", . - " #tramp_name "\n\
-	.previous")
-
-#ifndef PROF
-#define ELF_MACHINE_RUNTIME_TRAMPOLINE			\
-  TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup);	\
-  TRAMPOLINE_TEMPLATE (_dl_runtime_profile, profile_fixup);
-#else
-#define ELF_MACHINE_RUNTIME_TRAMPOLINE			\
-  TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup);	\
-  TRAMPOLINE_TEMPLATE (_dl_runtime_profile, fixup);
-#endif
-
 /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
    PLT entries should not be allowed to define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
@@ -406,7 +374,10 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
 
 #endif /* dl_machine_h */
 
-#ifdef RESOLVE
+#define ARCH_LA_PLTENTER	sparc32_gnu_pltenter
+#define ARCH_LA_PLTEXIT		sparc32_gnu_pltexit
+
+#ifdef RESOLVE_MAP
 
 /* Perform the relocation specified by RELOC and SYM (which is fully resolved).
    MAP is the object containing the reloc.  */
@@ -418,7 +389,10 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  void *const reloc_addr_arg)
 {
   Elf32_Addr *const reloc_addr = reloc_addr_arg;
+  const Elf32_Sym *const refsym = sym;
+  Elf32_Addr value;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
+  struct link_map *sym_map = NULL;
 
 #if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
   /* This is defined in rtld.c, but nowhere in the static libc.a; make the
@@ -429,6 +403,9 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
   weak_extern (_dl_rtld_map);
 #endif
 
+  if (__builtin_expect (r_type == R_SPARC_NONE, 0))
+    return;
+
 #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
   if (__builtin_expect (r_type == R_SPARC_RELATIVE, 0))
     {
@@ -436,161 +413,143 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
       if (map != &_dl_rtld_map) /* Already done in rtld itself. */
 # endif
 	*reloc_addr += map->l_addr + reloc->r_addend;
+      return;
     }
-  else
-#endif
-    {
-#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP
-      const Elf32_Sym *const refsym = sym;
-# ifdef USE_TLS
-      struct link_map *sym_map;
-# endif
 #endif
-      Elf32_Addr value;
+
 #ifndef RESOLVE_CONFLICT_FIND_MAP
-      if (sym->st_shndx != SHN_UNDEF &&
-	  ELF32_ST_BIND (sym->st_info) == STB_LOCAL)
-	{
-	  value = map->l_addr;
-# if defined USE_TLS && !defined RTLD_BOOTSTRAP
-	  sym_map = map;
-# endif
-	}
-      else
-	{
-# if defined USE_TLS && !defined RTLD_BOOTSTRAP
-	  sym_map = RESOLVE_MAP (&sym, version, r_type);
-	  value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
-# else
-	  value = RESOLVE (&sym, version, r_type);
-	  if (sym)
-	    value += sym->st_value;
-# endif
-	}
+  if (__builtin_expect (ELF32_ST_BIND (sym->st_info) == STB_LOCAL, 0)
+      && sym->st_shndx != SHN_UNDEF)
+    {
+      value = map->l_addr;
+    }
+  else
+    {
+      sym_map = RESOLVE_MAP (&sym, version, r_type);
+      value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
+    }
 #else
-      value = 0;
+  value = 0;
 #endif
-      value += reloc->r_addend;	/* Assume copy relocs have zero addend.  */
 
-      switch (r_type)
-	{
+  value += reloc->r_addend;	/* Assume copy relocs have zero addend.  */
+
+  switch (r_type)
+    {
 #if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP
-	case R_SPARC_COPY:
-	  if (sym == NULL)
-	    /* This can happen in trace mode if an object could not be
-	       found.  */
-	    break;
-	  if (sym->st_size > refsym->st_size
-	      || (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
-	    {
-	      const char *strtab;
+    case R_SPARC_COPY:
+      if (sym == NULL)
+	/* This can happen in trace mode if an object could not be
+	   found.  */
+	break;
+      if (sym->st_size > refsym->st_size
+	  || (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
+	{
+	  const char *strtab;
 
-	      strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-	      _dl_error_printf ("\
+	  strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+	  _dl_error_printf ("\
 %s: Symbol `%s' has different size in shared object, consider re-linking\n",
-				rtld_progname ?: "<program name unknown>",
-				strtab + refsym->st_name);
-	    }
-	  memcpy (reloc_addr_arg, (void *) value,
-		  MIN (sym->st_size, refsym->st_size));
-	  break;
+			    rtld_progname ?: "<program name unknown>",
+			    strtab + refsym->st_name);
+	}
+      memcpy (reloc_addr_arg, (void *) value,
+	      MIN (sym->st_size, refsym->st_size));
+      break;
 #endif
-	case R_SPARC_GLOB_DAT:
-	case R_SPARC_32:
-	  *reloc_addr = value;
-	  break;
-	case R_SPARC_JMP_SLOT:
-	  /* At this point we don't need to bother with thread safety,
-	     so we can optimize the first instruction of .plt out.  */
-	  sparc_fixup_plt (reloc, reloc_addr, value, 0);
-	  break;
+    case R_SPARC_GLOB_DAT:
+    case R_SPARC_32:
+      *reloc_addr = value;
+      break;
+    case R_SPARC_JMP_SLOT:
+      /* At this point we don't need to bother with thread safety,
+	 so we can optimize the first instruction of .plt out.  */
+      sparc_fixup_plt (reloc, reloc_addr, value, 0);
+      break;
 #if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
     && !defined RESOLVE_CONFLICT_FIND_MAP
-	case R_SPARC_TLS_DTPMOD32:
-	  /* Get the information from the link map returned by the
-	     resolv function.  */
-	  if (sym_map != NULL)
-	    *reloc_addr = sym_map->l_tls_modid;
-	  break;
-	case R_SPARC_TLS_DTPOFF32:
-	  /* During relocation all TLS symbols are defined and used.
-	     Therefore the offset is already correct.  */
-	  *reloc_addr = (sym == NULL ? 0 : sym->st_value) + reloc->r_addend;
-	  break;
-	case R_SPARC_TLS_TPOFF32:
-	  /* The offset is negative, forward from the thread pointer.  */
-	  /* We know the offset of object the symbol is contained in.
-	     It is a negative value which will be added to the
-	     thread pointer.  */
-	  if (sym != NULL)
-	    {
-	      CHECK_STATIC_TLS (map, sym_map);
-	      *reloc_addr = sym->st_value - sym_map->l_tls_offset
-			    + reloc->r_addend;
-	    }
-	  break;
+    case R_SPARC_TLS_DTPMOD32:
+      /* Get the information from the link map returned by the
+	 resolv function.  */
+      if (sym_map != NULL)
+	*reloc_addr = sym_map->l_tls_modid;
+      break;
+    case R_SPARC_TLS_DTPOFF32:
+      /* During relocation all TLS symbols are defined and used.
+	 Therefore the offset is already correct.  */
+      *reloc_addr = (sym == NULL ? 0 : sym->st_value) + reloc->r_addend;
+      break;
+    case R_SPARC_TLS_TPOFF32:
+      /* The offset is negative, forward from the thread pointer.  */
+      /* We know the offset of object the symbol is contained in.
+	 It is a negative value which will be added to the
+	 thread pointer.  */
+      if (sym != NULL)
+	{
+	  CHECK_STATIC_TLS (map, sym_map);
+	  *reloc_addr = sym->st_value - sym_map->l_tls_offset
+	    + reloc->r_addend;
+	}
+      break;
 # ifndef RTLD_BOOTSTRAP
-	case R_SPARC_TLS_LE_HIX22:
-	case R_SPARC_TLS_LE_LOX10:
-	  if (sym != NULL)
-	    {
-	      CHECK_STATIC_TLS (map, sym_map);
-	      value = sym->st_value - sym_map->l_tls_offset
-		      + reloc->r_addend;
-	      if (r_type == R_SPARC_TLS_LE_HIX22)
-		*reloc_addr = (*reloc_addr & 0xffc00000) | ((~value) >> 10);
-	      else
-		*reloc_addr = (*reloc_addr & 0xffffe000) | (value & 0x3ff)
-			      | 0x1c00;
-	    }
-	  break;
+    case R_SPARC_TLS_LE_HIX22:
+    case R_SPARC_TLS_LE_LOX10:
+      if (sym != NULL)
+	{
+	  CHECK_STATIC_TLS (map, sym_map);
+	  value = sym->st_value - sym_map->l_tls_offset
+	    + reloc->r_addend;
+	  if (r_type == R_SPARC_TLS_LE_HIX22)
+	    *reloc_addr = (*reloc_addr & 0xffc00000) | ((~value) >> 10);
+	  else
+	    *reloc_addr = (*reloc_addr & 0xffffe000) | (value & 0x3ff)
+	      | 0x1c00;
+	}
+      break;
 # endif
 #endif
 #ifndef RTLD_BOOTSTRAP
-	case R_SPARC_8:
-	  *(char *) reloc_addr = value;
-	  break;
-	case R_SPARC_16:
-	  *(short *) reloc_addr = value;
-	  break;
-	case R_SPARC_DISP8:
-	  *(char *) reloc_addr = (value - (Elf32_Addr) reloc_addr);
-	  break;
-	case R_SPARC_DISP16:
-	  *(short *) reloc_addr = (value - (Elf32_Addr) reloc_addr);
-	  break;
-	case R_SPARC_DISP32:
-	  *reloc_addr = (value - (Elf32_Addr) reloc_addr);
-	  break;
-	case R_SPARC_LO10:
-	  *reloc_addr = (*reloc_addr & ~0x3ff) | (value & 0x3ff);
-	  break;
-	case R_SPARC_WDISP30:
-	  *reloc_addr = ((*reloc_addr & 0xc0000000)
-			 | ((value - (unsigned int) reloc_addr) >> 2));
-	  break;
-	case R_SPARC_HI22:
-	  *reloc_addr = (*reloc_addr & 0xffc00000) | (value >> 10);
-	  break;
-	case R_SPARC_UA16:
-	  ((unsigned char *) reloc_addr_arg) [0] = value >> 8;
-	  ((unsigned char *) reloc_addr_arg) [1] = value;
-	  break;
-	case R_SPARC_UA32:
-	  ((unsigned char *) reloc_addr_arg) [0] = value >> 24;
-	  ((unsigned char *) reloc_addr_arg) [1] = value >> 16;
-	  ((unsigned char *) reloc_addr_arg) [2] = value >> 8;
-	  ((unsigned char *) reloc_addr_arg) [3] = value;
-	  break;
+    case R_SPARC_8:
+      *(char *) reloc_addr = value;
+      break;
+    case R_SPARC_16:
+      *(short *) reloc_addr = value;
+      break;
+    case R_SPARC_DISP8:
+      *(char *) reloc_addr = (value - (Elf32_Addr) reloc_addr);
+      break;
+    case R_SPARC_DISP16:
+      *(short *) reloc_addr = (value - (Elf32_Addr) reloc_addr);
+      break;
+    case R_SPARC_DISP32:
+      *reloc_addr = (value - (Elf32_Addr) reloc_addr);
+      break;
+    case R_SPARC_LO10:
+      *reloc_addr = (*reloc_addr & ~0x3ff) | (value & 0x3ff);
+      break;
+    case R_SPARC_WDISP30:
+      *reloc_addr = ((*reloc_addr & 0xc0000000)
+		     | ((value - (unsigned int) reloc_addr) >> 2));
+      break;
+    case R_SPARC_HI22:
+      *reloc_addr = (*reloc_addr & 0xffc00000) | (value >> 10);
+      break;
+    case R_SPARC_UA16:
+      ((unsigned char *) reloc_addr_arg) [0] = value >> 8;
+      ((unsigned char *) reloc_addr_arg) [1] = value;
+      break;
+    case R_SPARC_UA32:
+      ((unsigned char *) reloc_addr_arg) [0] = value >> 24;
+      ((unsigned char *) reloc_addr_arg) [1] = value >> 16;
+      ((unsigned char *) reloc_addr_arg) [2] = value >> 8;
+      ((unsigned char *) reloc_addr_arg) [3] = value;
+      break;
 #endif
-	case R_SPARC_NONE:		/* Alright, Wilbur.  */
-	  break;
 #if !defined RTLD_BOOTSTRAP || defined _NDEBUG
-	default:
-	  _dl_reloc_bad_type (map, r_type, 0);
-	  break;
+    default:
+      _dl_reloc_bad_type (map, r_type, 0);
+      break;
 #endif
-	}
     }
 }
 
@@ -620,4 +579,4 @@ elf_machine_lazy_rel (struct link_map *map,
     }
 }
 
-#endif	/* RESOLVE */
+#endif	/* RESOLVE_MAP */
diff --git a/sysdeps/sparc/sparc32/dl-trampoline.S b/sysdeps/sparc/sparc32/dl-trampoline.S
new file mode 100644
index 0000000000..4b7853029a
--- /dev/null
+++ b/sysdeps/sparc/sparc32/dl-trampoline.S
@@ -0,0 +1,155 @@
+/* PLT trampolines.  Sparc 32-bit version.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+
+	.text
+	.align	32
+
+	/* %g1:	PLT offset loaded by PLT entry
+	 * %g2: callers PC, which is PLT0 + 4, and we store the
+	 *      link map at PLT0 + 12, therefore we add 8 to get
+	 *      the address of the link map
+	 */
+	.globl	_dl_runtime_resolve
+	.type	_dl_runtime_resolve, @function
+_dl_runtime_resolve:
+	save	%sp, -104, %sp
+	ld	[%g2 + 8], %o0
+	srl	%g1, 10, %o1
+	call	_dl_fixup
+	 sub	%o1, 4*12, %o1
+	jmp	%o0
+	 restore
+	.size	_dl_runtime_resolve, .-_dl_runtime_resolve
+
+	/* For the profiling cases we pass in our stack frame
+	 * as the base of the La_sparc64_regs, so it looks
+	 * like:
+	 *	%l0			%sp
+	 *	...
+	 *	%l7			%sp + (7 * 8)
+	 *	%i0			%sp + (8 * 8)
+	 *	...
+	 *	%i7			%sp + (15 * 8)
+	 *	%f0			%sp + (16 * 8)
+	 *	%f16			%sp + (31 * 8)
+	 *	framesize		%sp + (32 * 8)
+	 */
+
+	.globl	_dl_profile_save_regs
+	.type	_dl_profile_save_regs, @function
+_dl_profile_save_regs:
+	std	%l0, [%sp + ( 0 * 8)]
+	std	%l2, [%sp + ( 1 * 8)]
+	std	%l4, [%sp + ( 2 * 8)]
+	std	%l6, [%sp + ( 3 * 8)]
+	std	%i0, [%sp + ( 4 * 8)]
+	std	%i2, [%sp + ( 5 * 8)]
+	std	%i4, [%sp + ( 6 * 8)]
+	std	%i6, [%sp + ( 7 * 8)]
+	ld	[%sp + (8 * 8)], %l4
+	retl
+	 st	%l4, [%sp + (8 * 8)]
+	.size	_dl_profile_save_regs, .-_dl_profile_save_regs
+
+	/* If we are going to call pltexit, then we must replicate
+	 * the caller's stack frame.
+	 * %o0: PLT resolved function address
+	 */
+	.globl	_dl_profile_invoke
+	.type	_dl_profile_invoke, @function
+_dl_profile_invoke:
+	sub	%sp, %l0, %sp
+1:
+	srl	%l0, 3, %l7
+	mov	%o0, %l1
+	mov	%i0, %o0
+	mov	%i1, %o1
+	mov	%i2, %o2
+	mov	%i3, %o3
+	mov	%i4, %o4
+	mov	%i5, %o5
+	mov	%fp, %l2
+	mov	%sp, %l3
+1:	ldd	[%l2], %g2
+	add	%l2, 0x8, %l2
+	subcc	%l7, 1, %l7
+	std	%g2, [%l3]
+	bne	1b
+	 add	%l3, 0x8, %l3
+
+	jmpl	%l1, %o7
+	 nop
+
+	std	%o0, [%sp + ( 9 * 8)]
+	std	%f0, [%sp + (10 * 8)]
+
+	mov	%l5, %o0
+	mov	%l6, %o1
+	add	%sp, %l0, %o2
+	call	_dl_call_pltexit
+	 add	%sp, (16 * 8), %o3
+
+	ldd	[%sp + (9 * 8)], %i0
+
+	jmpl	%i7 + 8, %g0
+	 restore
+
+	/* %g1:	PLT offset loaded by PLT entry
+	 * %g2: callers PC, which is PLT0 + 4, and we store the
+	 *      link map at PLT0 + 12, therefore we add 8 to get
+	 *      the address of the link map
+	 */
+	.align	32
+	.globl	_dl_runtime_profile
+	.type	_dl_runtime_profile, @function
+_dl_runtime_profile:
+	cmp	%fp, 0
+	be,a	1f
+	 mov	104, %g3
+	sub	%fp, %sp, %g3
+1:	save	%sp, -104, %sp
+	ld	[%g2 + 8], %o0
+	srl	%g1, 10, %o1
+	mov	%i7, %o2
+	sub	%o1, 4*12, %o1
+
+	mov	%g3, %l0
+	mov	%o0, %l5
+	mov	%o1, %l6
+
+	call _dl_profile_save_regs
+	 nop
+
+	mov	%sp, %o3
+	call	_dl_profile_fixup
+	 add	%sp, (9 * 8), %o4
+
+	ld	[%sp + (9 * 8)], %o1
+	cmp	%o1, 0
+	bgeu	1f
+	 nop
+	
+	call	_dl_profile_invoke
+	 nop
+
+1:	jmp	%o0
+	 restore
+	.size	_dl_runtime_profile, .-_dl_runtime_profile
diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h
index 72b88e235c..ce9b8c9dd9 100644
--- a/sysdeps/sparc/sparc64/dl-machine.h
+++ b/sysdeps/sparc/sparc64/dl-machine.h
@@ -18,6 +18,9 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#ifndef dl_machine_h
+#define dl_machine_h
+
 #define ELF_MACHINE_NAME "sparc64"
 
 #include <string.h>
@@ -88,7 +91,7 @@ elf_machine_load_address (void)
 
 /* We have 4 cases to handle.  And we code different code sequences
    for each one.  I love V9 code models...  */
-static inline void
+static inline void __attribute__ ((always_inline))
 sparc64_fixup_plt (struct link_map *map, const Elf64_Rela *reloc,
 		   Elf64_Addr *reloc_addr, Elf64_Addr value,
 		   Elf64_Addr high, int t)
@@ -212,7 +215,7 @@ sparc64_fixup_plt (struct link_map *map, const Elf64_Rela *reloc,
     }
 }
 
-static inline Elf64_Addr
+static inline Elf64_Addr __attribute__ ((always_inline))
 elf_machine_fixup_plt (struct link_map *map, lookup_t t,
 		       const Elf64_Rela *reloc,
 		       Elf64_Addr *reloc_addr, Elf64_Addr value)
@@ -233,239 +236,21 @@ elf_machine_plt_value (struct link_map *map, const Elf64_Rela *reloc,
   return value;
 }
 
-#ifdef RESOLVE
-
-/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
-   MAP is the object containing the reloc.  */
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
-		  const Elf64_Sym *sym, const struct r_found_version *version,
-		  void *const reloc_addr_arg)
-{
-  Elf64_Addr *const reloc_addr = reloc_addr_arg;
-  const unsigned long int r_type = ELF64_R_TYPE_ID (reloc->r_info);
-
-#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
-  if (__builtin_expect (r_type == R_SPARC_RELATIVE, 0))
-    *reloc_addr = map->l_addr + reloc->r_addend;
-# ifndef RTLD_BOOTSTRAP
-  else if (r_type == R_SPARC_NONE) /* Who is Wilbur? */
-    return;
-# endif
-  else
-#endif
-    {
-#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP
-      const Elf64_Sym *const refsym = sym;
-#endif
-      Elf64_Addr value;
-#ifndef RESOLVE_CONFLICT_FIND_MAP
-      if (sym->st_shndx != SHN_UNDEF &&
-	  ELF64_ST_BIND (sym->st_info) == STB_LOCAL)
-	value = map->l_addr;
-      else
-	{
-	  value = RESOLVE (&sym, version, r_type);
-	  if (sym)
-	    value += sym->st_value;
-	}
-#else
-      value = 0;
-#endif
-      value += reloc->r_addend;	/* Assume copy relocs have zero addend.  */
-
-      switch (r_type)
-	{
-#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP
-	case R_SPARC_COPY:
-	  if (sym == NULL)
-	    /* This can happen in trace mode if an object could not be
-	       found.  */
-	    break;
-	  if (sym->st_size > refsym->st_size
-	      || (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
-	    {
-	      const char *strtab;
-
-	      strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
-	      _dl_error_printf ("\
-%s: Symbol `%s' has different size in shared object, consider re-linking\n",
-				rtld_progname ?: "<program name unknown>",
-				strtab + refsym->st_name);
-	    }
-	  memcpy (reloc_addr_arg, (void *) value,
-		  MIN (sym->st_size, refsym->st_size));
-	  break;
-#endif
-	case R_SPARC_64:
-	case R_SPARC_GLOB_DAT:
-	  *reloc_addr = value;
-	  break;
-#ifndef RTLD_BOOTSTRAP
-	case R_SPARC_8:
-	  *(char *) reloc_addr = value;
-	  break;
-	case R_SPARC_16:
-	  *(short *) reloc_addr = value;
-	  break;
-	case R_SPARC_32:
-	  *(unsigned int *) reloc_addr = value;
-	  break;
-	case R_SPARC_DISP8:
-	  *(char *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
-	  break;
-	case R_SPARC_DISP16:
-	  *(short *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
-	  break;
-	case R_SPARC_DISP32:
-	  *(unsigned int *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
-	  break;
-	case R_SPARC_WDISP30:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & 0xc0000000) |
-	     ((value - (Elf64_Addr) reloc_addr) >> 2));
-	  break;
-
-	/* MEDLOW code model relocs */
-	case R_SPARC_LO10:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & ~0x3ff) |
-	     (value & 0x3ff));
-	  break;
-	case R_SPARC_HI22:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & 0xffc00000) |
-	     (value >> 10));
-	  break;
-	case R_SPARC_OLO10:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & ~0x1fff) |
-	     (((value & 0x3ff) + ELF64_R_TYPE_DATA (reloc->r_info)) & 0x1fff));
-	  break;
-
-	/* MEDMID code model relocs */
-	case R_SPARC_H44:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & 0xffc00000) |
-	     (value >> 22));
-	  break;
-	case R_SPARC_M44:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & ~0x3ff) |
-	     ((value >> 12) & 0x3ff));
-	  break;
-	case R_SPARC_L44:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & ~0xfff) |
-	     (value & 0xfff));
-	  break;
-
-	/* MEDANY code model relocs */
-	case R_SPARC_HH22:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & 0xffc00000) |
-	     (value >> 42));
-	  break;
-	case R_SPARC_HM10:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & ~0x3ff) |
-	     ((value >> 32) & 0x3ff));
-	  break;
-	case R_SPARC_LM22:
-	  *(unsigned int *) reloc_addr =
-	    ((*(unsigned int *)reloc_addr & 0xffc00000) |
-	     ((value >> 10) & 0x003fffff));
-	  break;
-#endif
-	case R_SPARC_JMP_SLOT:
-#ifdef RESOLVE_CONFLICT_FIND_MAP
-	  /* R_SPARC_JMP_SLOT conflicts against .plt[32768+]
-	     relocs should be turned into R_SPARC_64 relocs
-	     in .gnu.conflict section.
-	     r_addend non-zero does not mean it is a .plt[32768+]
-	     reloc, instead it is the actual address of the function
-	     to call.  */
-	  sparc64_fixup_plt (NULL, reloc, reloc_addr, value, 0, 0);
-#else
-	  sparc64_fixup_plt (map, reloc, reloc_addr, value,
-			     reloc->r_addend, 0);
-#endif
-	  break;
-#ifndef RTLD_BOOTSTRAP
-	case R_SPARC_UA16:
-	  ((unsigned char *) reloc_addr_arg) [0] = value >> 8;
-	  ((unsigned char *) reloc_addr_arg) [1] = value;
-	  break;
-	case R_SPARC_UA32:
-	  ((unsigned char *) reloc_addr_arg) [0] = value >> 24;
-	  ((unsigned char *) reloc_addr_arg) [1] = value >> 16;
-	  ((unsigned char *) reloc_addr_arg) [2] = value >> 8;
-	  ((unsigned char *) reloc_addr_arg) [3] = value;
-	  break;
-	case R_SPARC_UA64:
-	  if (! ((long) reloc_addr_arg & 3))
-	    {
-	      /* Common in .eh_frame */
-	      ((unsigned int *) reloc_addr_arg) [0] = value >> 32;
-	      ((unsigned int *) reloc_addr_arg) [1] = value;
-	      break;
-	    }
-	  ((unsigned char *) reloc_addr_arg) [0] = value >> 56;
-	  ((unsigned char *) reloc_addr_arg) [1] = value >> 48;
-	  ((unsigned char *) reloc_addr_arg) [2] = value >> 40;
-	  ((unsigned char *) reloc_addr_arg) [3] = value >> 32;
-	  ((unsigned char *) reloc_addr_arg) [4] = value >> 24;
-	  ((unsigned char *) reloc_addr_arg) [5] = value >> 16;
-	  ((unsigned char *) reloc_addr_arg) [6] = value >> 8;
-	  ((unsigned char *) reloc_addr_arg) [7] = value;
-	  break;
-#endif
-#if !defined RTLD_BOOTSTRAP || defined _NDEBUG
-	default:
-	  _dl_reloc_bad_type (map, r_type, 0);
-	  break;
-#endif
-	}
-    }
-}
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-			   void *const reloc_addr_arg)
-{
-  Elf64_Addr *const reloc_addr = reloc_addr_arg;
-  *reloc_addr = l_addr + reloc->r_addend;
-}
-
-auto inline void
-__attribute__ ((always_inline))
-elf_machine_lazy_rel (struct link_map *map,
-		      Elf64_Addr l_addr, const Elf64_Rela *reloc)
-{
-  switch (ELF64_R_TYPE (reloc->r_info))
-    {
-    case R_SPARC_NONE:
-      break;
-    case R_SPARC_JMP_SLOT:
-      break;
-    default:
-      _dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 1);
-      break;
-    }
-}
-
-#endif	/* RESOLVE */
-
 /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
    PLT entries should not be allowed to define the value.
    ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
    of the main executable's symbols, as for a COPY reloc.  */
-#define elf_machine_type_class(type) \
+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD)
+# define elf_machine_type_class(type) \
+  ((((type) == R_SPARC_JMP_SLOT						      \
+     || ((type) >= R_SPARC_TLS_GD_HI22 && (type) <= R_SPARC_TLS_TPOFF64))     \
+    * ELF_RTYPE_CLASS_PLT)						      \
+   | (((type) == R_SPARC_COPY) * ELF_RTYPE_CLASS_COPY))
+#else
+# define elf_machine_type_class(type) \
   ((((type) == R_SPARC_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)	\
    | (((type) == R_SPARC_COPY) * ELF_RTYPE_CLASS_COPY))
+#endif
 
 /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.  */
 #define ELF_MACHINE_JMP_SLOT	R_SPARC_JMP_SLOT
@@ -490,74 +275,67 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
       extern void _dl_runtime_profile_1 (void);
       Elf64_Addr res0_addr, res1_addr;
       unsigned int *plt = (void *) D_PTR (l, l_info[DT_PLTGOT]);
-      int i = 0;
 
-      if (! profile)
-	{
-	  res0_addr = (Elf64_Addr) &_dl_runtime_resolve_0;
-	  res1_addr = (Elf64_Addr) &_dl_runtime_resolve_1;
-	}
-      else
+      if (__builtin_expect(profile, 0))
 	{
 	  res0_addr = (Elf64_Addr) &_dl_runtime_profile_0;
 	  res1_addr = (Elf64_Addr) &_dl_runtime_profile_1;
-	  if (_dl_name_match_p (GLRO(dl_profile), l))
+
+	  if (GLRO(dl_profile) != NULL
+	      && _dl_name_match_p (GLRO(dl_profile), l))
 	    GL(dl_profile_map) = l;
 	}
+      else
+	{
+	  res0_addr = (Elf64_Addr) &_dl_runtime_resolve_0;
+	  res1_addr = (Elf64_Addr) &_dl_runtime_resolve_1;
+	}
 
       /* PLT0 looks like:
 
-	 save	%sp, -192, %sp
-	 sethi	%hh(_dl_runtime_{resolve,profile}_0), %l0
-	 sethi	%lm(_dl_runtime_{resolve,profile}_0), %l1
-	 or	%l0, %hm(_dl_runtime_{resolve,profile}_0), %l0
-	 or	%l1, %lo(_dl_runtime_{resolve,profile}_0), %l1
-	 sllx	%l0, 32, %l0
-	 jmpl	%l0 + %l1, %l6
-	  sethi	%hi(0xffc00), %l2
+         sethi	%uhi(_dl_runtime_{resolve,profile}_0), %g4
+	 sethi	%hi(_dl_runtime_{resolve,profile}_0), %g5
+	 or	%g4, %ulo(_dl_runtime_{resolve,profile}_0), %g4
+	 or	%g5, %lo(_dl_runtime_{resolve,profile}_0), %g5
+	 sllx	%g4, 32, %g4
+	 add	%g4, %g5, %g5
+	 jmpl	%g5, %g4
+	  nop
        */
 
-      plt[0] = 0x9de3bf40;
-      plt[1] = 0x21000000 | (res0_addr >> (64 - 22));
-      plt[2] = 0x23000000 | ((res0_addr >> 10) & 0x003fffff);
-      plt[3] = 0xa0142000 | ((res0_addr >> 32) & 0x3ff);
-      plt[4] = 0xa2146000 | (res0_addr & 0x3ff);
-      plt[5] = 0xa12c3020;
-      plt[6] = 0xadc40011;
-      plt[7] = 0x250003ff;
+      plt[0] = 0x09000000 | (res0_addr >> (64 - 22));
+      plt[1] = 0x0b000000 | ((res0_addr >> 10) & 0x003fffff);
+      plt[2] = 0x88112000 | ((res0_addr >> 32) & 0x3ff);
+      plt[3] = 0x8a116000 | (res0_addr & 0x3ff);
+      plt[4] = 0x89293020;
+      plt[5] = 0x8a010005;
+      plt[6] = 0x89c14000;
+      plt[7] = 0x01000000;
 
       /* PLT1 looks like:
 
-	 save	%sp, -192, %sp
-	 sethi	%hh(_dl_runtime_{resolve,profile}_1), %l0
-	 sethi	%lm(_dl_runtime_{resolve,profile}_1), %l1
-	 or	%l0, %hm(_dl_runtime_{resolve,profile}_1), %l0
-	 or	%l1, %lo(_dl_runtime_{resolve,profile}_1), %l1
-	 sllx	%l0, 32, %l0
-	 jmpl	%l0 + %l1, %l6
-	  srlx	%g1, 12, %o1
+         sethi	%uhi(_dl_runtime_{resolve,profile}_1), %g4
+	 sethi	%hi(_dl_runtime_{resolve,profile}_1), %g5
+	 or	%g4, %ulo(_dl_runtime_{resolve,profile}_1), %g4
+	 or	%g5, %lo(_dl_runtime_{resolve,profile}_1), %g5
+	 sllx	%g4, 32, %g4
+	 add	%g4, %g5, %g5
+	 jmpl	%g5, %g4
+	  nop
        */
 
-      plt[8 + 0] = 0x9de3bf40;
-      if (__builtin_expect (((res1_addr + 4) >> 32) & 0x3ff, 0))
-	i = 1;
-      else
-	res1_addr += 4;
-      plt[8 + 1] = 0x21000000 | (res1_addr >> (64 - 22));
-      plt[8 + 2] = 0x23000000 | ((res1_addr >> 10) & 0x003fffff);
-      if (__builtin_expect (i, 0))
-	plt[8 + 3] = 0xa0142000 | ((res1_addr >> 32) & 0x3ff);
-      else
-	plt[8 + 3] = 0xa12c3020;
-      plt[8 + 4] = 0xa2146000 | (res1_addr & 0x3ff);
-      if (__builtin_expect (i, 0))
-	plt[8 + 5] = 0xa12c3020;
-      plt[8 + 5 + i] = 0xadc40011;
-      plt[8 + 6 + i] = 0x9330700c;
+      plt[8] = 0x09000000 | (res1_addr >> (64 - 22));
+      plt[9] = 0x0b000000 | ((res1_addr >> 10) & 0x003fffff);
+      plt[10] = 0x88112000 | ((res1_addr >> 32) & 0x3ff);
+      plt[11] = 0x8a116000 | (res1_addr & 0x3ff);
+      plt[12] = 0x89293020;
+      plt[13] = 0x8a010005;
+      plt[14] = 0x89c14000;
+      plt[15] = 0x01000000;
 
       /* Now put the magic cookie at the beginning of .PLT2
 	 Entry .PLT3 is unused by this implementation.  */
-      *((struct link_map **)(&plt[16 + 0])) = l;
+      *((struct link_map **)(&plt[16])) = l;
 
       if (__builtin_expect (l->l_info[VALIDX(DT_GNU_PRELINKED)] != NULL, 0)
 	  || __builtin_expect (l->l_info [VALIDX (DT_GNU_LIBLISTSZ)] != NULL, 0))
@@ -604,68 +382,6 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
   return lazy;
 }
 
-/* This code is used in dl-runtime.c to call the `fixup' function
-   and then redirect to the address it returns.  */
-#define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name)	\
-  asm ("\n"						\
-"	.text\n"					\
-"	.globl	" #tramp_name "_0\n"			\
-"	.type	" #tramp_name "_0, @function\n"		\
-"	.align	32\n"					\
-"\t" #tramp_name "_0:\n"				\
-"	! sethi   %hi(1047552), %l2 - Done in .PLT0\n"	\
-"	ldx	[%l6 + 32 + 8], %o0\n"			\
-"	sub     %g1, %l6, %l0\n"			\
-"	xor     %l2, -1016, %l2\n"			\
-"	sethi   %hi(5120), %l3	! 160 * 32\n"		\
-"	add     %l0, %l2, %l0\n"			\
-"	sethi   %hi(32768), %l4\n"			\
-"	udivx   %l0, %l3, %l3\n"			\
-"	sllx    %l3, 2, %l1\n"				\
-"	add     %l1, %l3, %l1\n"			\
-"	sllx    %l1, 10, %l2\n"				\
-"	sub	%l4, 4, %l4	! No thanks to Sun for not obeying their own ABI\n" \
-"	sllx    %l1, 5, %l1\n"				\
-"	sub     %l0, %l2, %l0\n"			\
-"	udivx   %l0, 24, %l0\n"				\
-"	add     %l0, %l4, %l0\n"			\
-"	add     %l1, %l0, %l1\n"			\
-"	add     %l1, %l1, %l0\n"			\
-"	add     %l0, %l1, %l0\n"			\
-"	mov	%i7, %o2\n"				\
-"	call	" #fixup_name "\n"			\
-"	 sllx    %l0, 3, %o1\n"				\
-"	jmp	%o0\n"					\
-"	 restore\n"					\
-"	.size	" #tramp_name "_0, . - " #tramp_name "_0\n" \
-"\n"							\
-"	.globl	" #tramp_name "_1\n"			\
-"	.type	" #tramp_name "_1, @function\n"		\
-"	! tramp_name_1 + 4 needs to be .align 32\n"	\
-"\t" #tramp_name "_1:\n"				\
-"	sub	%l6, 4, %l6\n"				\
-"	! srlx	%g1, 12, %o1 - Done in .PLT1\n"		\
-"	ldx	[%l6 + 12], %o0\n"			\
-"	add	%o1, %o1, %o3\n"			\
-"	sub	%o1, 96, %o1	! No thanks to Sun for not obeying their own ABI\n" \
-"	mov	%i7, %o2\n"				\
-"	call	" #fixup_name "\n"			\
-"	 add	%o1, %o3, %o1\n"			\
-"	jmp	%o0\n"					\
-"	 restore\n"					\
-"	.size	" #tramp_name "_1, . - " #tramp_name "_1\n" \
-"	.previous\n");
-
-#ifndef PROF
-#define ELF_MACHINE_RUNTIME_TRAMPOLINE			\
-  TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup);	\
-  TRAMPOLINE_TEMPLATE (_dl_runtime_profile, profile_fixup);
-#else
-#define ELF_MACHINE_RUNTIME_TRAMPOLINE			\
-  TRAMPOLINE_TEMPLATE (_dl_runtime_resolve, fixup);	\
-  TRAMPOLINE_TEMPLATE (_dl_runtime_profile, fixup);
-#endif
-
 /* The PLT uses Elf64_Rela relocs.  */
 #define elf_machine_relplt elf_machine_rela
 
@@ -766,3 +482,290 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
 "	 add	%sp, 6*8, %sp\n"					\
 "	.size	_dl_start_user, . - _dl_start_user\n"			\
 "	.previous\n");
+
+#endif /* dl_machine_h */
+
+#define ARCH_LA_PLTENTER	sparc64_gnu_pltenter
+#define ARCH_LA_PLTEXIT		sparc64_gnu_pltexit
+
+#ifdef RESOLVE_MAP
+
+/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
+   MAP is the object containing the reloc.  */
+
+auto inline void
+__attribute__ ((always_inline))
+elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
+		  const Elf64_Sym *sym, const struct r_found_version *version,
+		  void *const reloc_addr_arg)
+{
+  Elf64_Addr *const reloc_addr = reloc_addr_arg;
+#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP
+  const Elf64_Sym *const refsym = sym;
+#endif
+  Elf64_Addr value;
+  const unsigned long int r_type = ELF64_R_TYPE_ID (reloc->r_info);
+#if !defined RESOLVE_CONFLICT_FIND_MAP
+  struct link_map *sym_map = NULL;
+#endif
+
+#if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
+  /* This is defined in rtld.c, but nowhere in the static libc.a; make the
+     reference weak so static programs can still link.  This declaration
+     cannot be done when compiling rtld.c (i.e.  #ifdef RTLD_BOOTSTRAP)
+     because rtld.c contains the common defn for _dl_rtld_map, which is
+     incompatible with a weak decl in the same file.  */
+  weak_extern (_dl_rtld_map);
+#endif
+
+  if (__builtin_expect (r_type == R_SPARC_NONE, 0))
+    return;
+
+#if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
+  if (__builtin_expect (r_type == R_SPARC_RELATIVE, 0))
+    {
+# if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
+      if (map != &_dl_rtld_map) /* Already done in rtld itself. */
+# endif
+	*reloc_addr += map->l_addr + reloc->r_addend;
+      return;
+    }
+#endif
+
+#ifndef RESOLVE_CONFLICT_FIND_MAP
+  if (__builtin_expect (ELF64_ST_BIND (sym->st_info) == STB_LOCAL, 0)
+      && sym->st_shndx != SHN_UNDEF)
+    {
+      value = map->l_addr;
+    }
+  else
+    {
+      sym_map = RESOLVE_MAP (&sym, version, r_type);
+      value = sym_map == NULL ? 0 : sym_map->l_addr + sym->st_value;
+    }
+#else
+  value = 0;
+#endif
+
+  value += reloc->r_addend;	/* Assume copy relocs have zero addend.  */
+
+  switch (r_type)
+    {
+#if !defined RTLD_BOOTSTRAP && !defined RESOLVE_CONFLICT_FIND_MAP
+    case R_SPARC_COPY:
+      if (sym == NULL)
+	/* This can happen in trace mode if an object could not be
+	   found.  */
+	break;
+      if (sym->st_size > refsym->st_size
+	  || (GLRO(dl_verbose) && sym->st_size < refsym->st_size))
+	{
+	  const char *strtab;
+
+	  strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+	  _dl_error_printf ("\
+%s: Symbol `%s' has different size in shared object, consider re-linking\n",
+			    rtld_progname ?: "<program name unknown>",
+			    strtab + refsym->st_name);
+	}
+      memcpy (reloc_addr_arg, (void *) value,
+	      MIN (sym->st_size, refsym->st_size));
+      break;
+#endif
+    case R_SPARC_64:
+    case R_SPARC_GLOB_DAT:
+      *reloc_addr = value;
+      break;
+    case R_SPARC_JMP_SLOT:
+#ifdef RESOLVE_CONFLICT_FIND_MAP
+      /* R_SPARC_JMP_SLOT conflicts against .plt[32768+]
+	 relocs should be turned into R_SPARC_64 relocs
+	 in .gnu.conflict section.
+	 r_addend non-zero does not mean it is a .plt[32768+]
+	 reloc, instead it is the actual address of the function
+	 to call.  */
+      sparc64_fixup_plt (NULL, reloc, reloc_addr, value, 0, 0);
+#else
+      sparc64_fixup_plt (map, reloc, reloc_addr, value, reloc->r_addend, 0);
+#endif
+      break;
+#if defined USE_TLS && (!defined RTLD_BOOTSTRAP || USE___THREAD) \
+    && !defined RESOLVE_CONFLICT_FIND_MAP
+    case R_SPARC_TLS_DTPMOD64:
+      /* Get the information from the link map returned by the
+	 resolv function.  */
+      if (sym_map != NULL)
+	*reloc_addr = sym_map->l_tls_modid;
+      break;
+    case R_SPARC_TLS_DTPOFF64:
+      /* During relocation all TLS symbols are defined and used.
+	 Therefore the offset is already correct.  */
+      *reloc_addr = (sym == NULL ? 0 : sym->st_value) + reloc->r_addend;
+      break;
+    case R_SPARC_TLS_TPOFF64:
+      /* The offset is negative, forward from the thread pointer.  */
+      /* We know the offset of object the symbol is contained in.
+	 It is a negative value which will be added to the
+	 thread pointer.  */
+      if (sym != NULL)
+	{
+	  CHECK_STATIC_TLS (map, sym_map);
+	  *reloc_addr = sym->st_value - sym_map->l_tls_offset
+	    + reloc->r_addend;
+	}
+      break;
+# ifndef RTLD_BOOTSTRAP
+    case R_SPARC_TLS_LE_HIX22:
+    case R_SPARC_TLS_LE_LOX10:
+      if (sym != NULL)
+	{
+	  CHECK_STATIC_TLS (map, sym_map);
+	  value = sym->st_value - sym_map->l_tls_offset
+	    + reloc->r_addend;
+	  if (r_type == R_SPARC_TLS_LE_HIX22)
+	    *reloc_addr = (*reloc_addr & 0xffc00000) | ((~value) >> 10);
+	  else
+	    *reloc_addr = (*reloc_addr & 0xffffe000) | (value & 0x3ff)
+	      | 0x1c00;
+	}
+      break;
+# endif
+#endif
+#ifndef RTLD_BOOTSTRAP
+    case R_SPARC_8:
+      *(char *) reloc_addr = value;
+      break;
+    case R_SPARC_16:
+      *(short *) reloc_addr = value;
+      break;
+    case R_SPARC_32:
+      *(unsigned int *) reloc_addr = value;
+      break;
+    case R_SPARC_DISP8:
+      *(char *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
+      break;
+    case R_SPARC_DISP16:
+      *(short *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
+      break;
+    case R_SPARC_DISP32:
+      *(unsigned int *) reloc_addr = (value - (Elf64_Addr) reloc_addr);
+      break;
+    case R_SPARC_WDISP30:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & 0xc0000000) |
+	 ((value - (Elf64_Addr) reloc_addr) >> 2));
+      break;
+
+      /* MEDLOW code model relocs */
+    case R_SPARC_LO10:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & ~0x3ff) |
+	 (value & 0x3ff));
+      break;
+    case R_SPARC_HI22:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & 0xffc00000) |
+	 (value >> 10));
+      break;
+    case R_SPARC_OLO10:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & ~0x1fff) |
+	 (((value & 0x3ff) + ELF64_R_TYPE_DATA (reloc->r_info)) & 0x1fff));
+      break;
+
+      /* MEDMID code model relocs */
+    case R_SPARC_H44:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & 0xffc00000) |
+	 (value >> 22));
+      break;
+    case R_SPARC_M44:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & ~0x3ff) |
+	 ((value >> 12) & 0x3ff));
+      break;
+    case R_SPARC_L44:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & ~0xfff) |
+	 (value & 0xfff));
+      break;
+
+      /* MEDANY code model relocs */
+    case R_SPARC_HH22:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & 0xffc00000) |
+	 (value >> 42));
+      break;
+    case R_SPARC_HM10:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & ~0x3ff) |
+	 ((value >> 32) & 0x3ff));
+      break;
+    case R_SPARC_LM22:
+      *(unsigned int *) reloc_addr =
+	((*(unsigned int *)reloc_addr & 0xffc00000) |
+	 ((value >> 10) & 0x003fffff));
+      break;
+    case R_SPARC_UA16:
+      ((unsigned char *) reloc_addr_arg) [0] = value >> 8;
+      ((unsigned char *) reloc_addr_arg) [1] = value;
+      break;
+    case R_SPARC_UA32:
+      ((unsigned char *) reloc_addr_arg) [0] = value >> 24;
+      ((unsigned char *) reloc_addr_arg) [1] = value >> 16;
+      ((unsigned char *) reloc_addr_arg) [2] = value >> 8;
+      ((unsigned char *) reloc_addr_arg) [3] = value;
+      break;
+    case R_SPARC_UA64:
+      if (! ((long) reloc_addr_arg & 3))
+	{
+	  /* Common in .eh_frame */
+	  ((unsigned int *) reloc_addr_arg) [0] = value >> 32;
+	  ((unsigned int *) reloc_addr_arg) [1] = value;
+	  break;
+	}
+      ((unsigned char *) reloc_addr_arg) [0] = value >> 56;
+      ((unsigned char *) reloc_addr_arg) [1] = value >> 48;
+      ((unsigned char *) reloc_addr_arg) [2] = value >> 40;
+      ((unsigned char *) reloc_addr_arg) [3] = value >> 32;
+      ((unsigned char *) reloc_addr_arg) [4] = value >> 24;
+      ((unsigned char *) reloc_addr_arg) [5] = value >> 16;
+      ((unsigned char *) reloc_addr_arg) [6] = value >> 8;
+      ((unsigned char *) reloc_addr_arg) [7] = value;
+      break;
+#endif
+#if !defined RTLD_BOOTSTRAP || defined _NDEBUG
+    default:
+      _dl_reloc_bad_type (map, r_type, 0);
+      break;
+#endif
+    }
+}
+
+auto inline void
+__attribute__ ((always_inline))
+elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
+			   void *const reloc_addr_arg)
+{
+  Elf64_Addr *const reloc_addr = reloc_addr_arg;
+  *reloc_addr = l_addr + reloc->r_addend;
+}
+
+auto inline void
+__attribute__ ((always_inline))
+elf_machine_lazy_rel (struct link_map *map,
+		      Elf64_Addr l_addr, const Elf64_Rela *reloc)
+{
+  switch (ELF64_R_TYPE (reloc->r_info))
+    {
+    case R_SPARC_NONE:
+      break;
+    case R_SPARC_JMP_SLOT:
+      break;
+    default:
+      _dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 1);
+      break;
+    }
+}
+
+#endif	/* RESOLVE_MAP */
diff --git a/sysdeps/sparc/sparc64/dl-trampoline.S b/sysdeps/sparc/sparc64/dl-trampoline.S
new file mode 100644
index 0000000000..f85527f4c4
--- /dev/null
+++ b/sysdeps/sparc/sparc64/dl-trampoline.S
@@ -0,0 +1,280 @@
+/* PLT trampolines.  Sparc 64-bit version.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <sysdep.h>
+
+	.text
+	.align	32
+
+	/* %g1:	PLT offset loaded by PLT entry
+	 * %g4: callers PC, which is PLT0 + 24, therefore we
+	 *      add (32 + 8) to get the address of PLT2 which
+	 *      is where the magic cookie is stored
+	 */
+	.globl	_dl_runtime_resolve_0
+	.type	_dl_runtime_resolve_0, @function
+_dl_runtime_resolve_0:
+	save	%sp, -192, %sp
+	sethi   %hi(1047552), %l2
+	ldx	[%g4 + 32 + 8], %o0
+	sub     %g1, %g4, %l0
+	xor     %l2, -1016, %l2
+	sethi   %hi(5120), %l3	/* 160 * 32 */
+	add     %l0, %l2, %l0
+	sethi   %hi(32768), %l4
+	udivx   %l0, %l3, %l3
+	sllx    %l3, 2, %l1
+	add     %l1, %l3, %l1
+	sllx    %l1, 10, %l2
+	sub	%l4, 4, %l4
+	sllx    %l1, 5, %l1
+	sub     %l0, %l2, %l0
+	udivx   %l0, 24, %l0
+	add     %l0, %l4, %l0
+	add     %l1, %l0, %l1
+	add     %l1, %l1, %l0
+	add     %l0, %l1, %l0
+	call	_dl_fixup
+	 sllx    %l0, 3, %o1
+	jmp	%o0
+	 restore
+	.size	_dl_runtime_resolve_0, .-_dl_runtime_resolve_0
+
+	/* %g1:	PLT offset loaded by PLT entry
+	 * %g4: callers PC, which is PLT1 + 24, therefore we
+	 *      add 8 to get the address of PLT2 which
+	 *      is where the magic cookie is stored
+	 */
+	.globl	_dl_runtime_resolve_1
+	.type	_dl_runtime_resolve_1, @function
+_dl_runtime_resolve_1:
+	save	%sp, -192, %sp
+	srlx	%g1, 12, %o1
+	ldx	[%g4 + 8], %o0
+	add	%o1, %o1, %o3
+	sub	%o1, 96, %o1
+	call	_dl_fixup
+	 add	%o1, %o3, %o1
+	jmp	%o0
+	 restore
+	.size	_dl_runtime_resolve_1, .-_dl_runtime_resolve_1
+
+	/* For the profiling cases we pass in our stack frame
+	 * as the base of the La_sparc64_regs, so it looks
+	 * like:
+	 *	%l0			%sp
+	 *	...
+	 *	%l7			%sp + (7 * 8)
+	 *	%i0			%sp + (8 * 8)
+	 *	...
+	 *	%i7			%sp + (15 * 8)
+	 *	%f0			%sp + (16 * 8)
+	 *	%f16			%sp + (31 * 8)
+	 *	framesize		%sp + (32 * 8)
+	 */
+
+	.globl	_dl_profile_save_regs
+	.type	_dl_profile_save_regs, @function
+_dl_profile_save_regs:
+	stx	%l0, [%sp + STACK_BIAS + ( 0 * 8)]
+	stx	%l1, [%sp + STACK_BIAS + ( 1 * 8)]
+	stx	%l2, [%sp + STACK_BIAS + ( 2 * 8)]
+	stx	%l3, [%sp + STACK_BIAS + ( 3 * 8)]
+	stx	%l4, [%sp + STACK_BIAS + ( 4 * 8)]
+	stx	%l5, [%sp + STACK_BIAS + ( 5 * 8)]
+	stx	%l6, [%sp + STACK_BIAS + ( 6 * 8)]
+	stx	%l7, [%sp + STACK_BIAS + ( 7 * 8)]
+	stx	%i0, [%sp + STACK_BIAS + ( 8 * 8)]
+	stx	%i1, [%sp + STACK_BIAS + ( 9 * 8)]
+	stx	%i2, [%sp + STACK_BIAS + (10 * 8)]
+	stx	%i3, [%sp + STACK_BIAS + (11 * 8)]
+	stx	%i4, [%sp + STACK_BIAS + (12 * 8)]
+	stx	%i5, [%sp + STACK_BIAS + (13 * 8)]
+	stx	%i6, [%sp + STACK_BIAS + (14 * 8)]
+	stx	%i7, [%sp + STACK_BIAS + (15 * 8)]
+	std	%f0, [%sp + STACK_BIAS + (16 * 8)]
+	std	%f2, [%sp + STACK_BIAS + (17 * 8)]
+	std	%f4, [%sp + STACK_BIAS + (18 * 8)]
+	std	%f6, [%sp + STACK_BIAS + (19 * 8)]
+	std	%f8, [%sp + STACK_BIAS + (20 * 8)]
+	std	%f10, [%sp + STACK_BIAS + (21 * 8)]
+	std	%f12, [%sp + STACK_BIAS + (22 * 8)]
+	std	%f14, [%sp + STACK_BIAS + (23 * 8)]
+	std	%f16, [%sp + STACK_BIAS + (24 * 8)]
+	std	%f18, [%sp + STACK_BIAS + (25 * 8)]
+	std	%f20, [%sp + STACK_BIAS + (26 * 8)]
+	std	%f22, [%sp + STACK_BIAS + (27 * 8)]
+	std	%f24, [%sp + STACK_BIAS + (28 * 8)]
+	std	%f26, [%sp + STACK_BIAS + (29 * 8)]
+	std	%f28, [%sp + STACK_BIAS + (30 * 8)]
+	retl
+	 std	%f30, [%sp + STACK_BIAS + (31 * 8)]
+	.size	_dl_profile_save_regs, .-_dl_profile_save_regs
+
+	/* If we are going to call pltexit, then we must replicate
+	 * the caller's stack frame.
+	 * %o0: PLT resolved function address
+	 */
+	.globl	_dl_profile_invoke
+	.type	_dl_profile_invoke, @function
+_dl_profile_invoke:
+	sub	%sp, %l0, %sp
+1:
+	srlx	%l0, 3, %l7
+	mov	%o0, %l1
+	mov	%i0, %o0
+	mov	%i1, %o1
+	mov	%i2, %o2
+	mov	%i3, %o3
+	mov	%i4, %o4
+	mov	%i5, %o5
+	add	%fp, STACK_BIAS, %l2
+	add	%sp, STACK_BIAS, %l3
+1:	ldx	[%l2], %l4
+	add	%l2, 0x8, %l2
+	subcc	%l7, 1, %l7
+	stx	%l4, [%l3]
+	bne,pt	%xcc, 1b
+	 add	%l3, 0x8, %l3
+
+	jmpl	%l1, %o7
+	 nop
+
+	stx	%o0, [%sp + STACK_BIAS + (16 * 8)]
+	stx	%o1, [%sp + STACK_BIAS + (17 * 8)]
+	stx	%o2, [%sp + STACK_BIAS + (18 * 8)]
+	stx	%o3, [%sp + STACK_BIAS + (19 * 8)]
+	std	%f0, [%sp + STACK_BIAS + (20 * 8)]
+	std	%f2, [%sp + STACK_BIAS + (21 * 8)]
+	std	%f4, [%sp + STACK_BIAS + (22 * 8)]
+	std	%f8, [%sp + STACK_BIAS + (23 * 8)]
+
+	mov	%l5, %o0
+	mov	%l6, %o1
+	add	%sp, %l0, %o2
+	add	%sp, STACK_BIAS + (16 * 8), %o3
+	call	_dl_call_pltexit
+	 add	%o2, STACK_BIAS, %o2
+
+	ldx	[%sp + STACK_BIAS + (16 * 8)], %i0
+	ldx	[%sp + STACK_BIAS + (17 * 8)], %i1
+	ldx	[%sp + STACK_BIAS + (18 * 8)], %i2
+	ldx	[%sp + STACK_BIAS + (19 * 8)], %i3
+
+	jmpl	%i7 + 8, %g0
+	 restore
+
+	/* %g1:	PLT offset loaded by PLT entry
+	 * %g4: callers PC, which is PLT0 + 24, therefore we
+	 *      add (32 + 8) to get the address of PLT2 which
+	 *      is where the magic cookie is stored
+	 */
+	.align	32
+	.globl	_dl_runtime_profile_0
+	.type	_dl_runtime_profile_0, @function
+_dl_runtime_profile_0:
+	brz,a,pn %fp, 1f
+	 mov	192, %g5
+	sub	%fp, %sp, %g5
+1:	save	%sp, -336, %sp
+	sethi   %hi(1047552), %l2
+	ldx	[%g4 + 32 + 8], %o0
+	sub     %g1, %g4, %l0
+	xor     %l2, -1016, %l2
+	sethi   %hi(5120), %l3	/* 160 * 32 */
+	add     %l0, %l2, %l0
+	sethi   %hi(32768), %l4
+	udivx   %l0, %l3, %l3
+	sllx    %l3, 2, %l1
+	add     %l1, %l3, %l1
+	sllx    %l1, 10, %l2
+	sub	%l4, 4, %l4
+	sllx    %l1, 5, %l1
+	sub     %l0, %l2, %l0
+	udivx   %l0, 24, %l0
+	add     %l0, %l4, %l0
+	add     %l1, %l0, %l1
+	add     %l1, %l1, %l0
+	add     %l0, %l1, %l0
+
+	mov	%i7, %o2
+	sllx    %l0, 3, %o1
+
+	mov	%g5, %l0
+	mov	%o0, %l5
+	mov	%o1, %l6
+
+	call	_dl_profile_save_regs
+	 nop
+
+	add	%sp, STACK_BIAS, %o3
+	call	_dl_profile_fixup
+	 add	%sp, (STACK_BIAS + (32 * 8)), %o4
+
+	ldx	[%sp + STACK_BIAS + (32 * 8)], %o1
+	brgez,pt %o1, 1f
+	 nop
+
+	call	_dl_profile_invoke
+	 nop
+
+1:	jmp	%o0
+	 restore
+	.size	_dl_runtime_profile_0, .-_dl_runtime_profile_0
+
+	/* %g1:	PLT offset loaded by PLT entry
+	 * %g4: callers PC, which is PLT1 + 24, therefore we
+	 *      add 8 to get the address of PLT2 which
+	 *      is where the magic cookie is stored
+	 */
+	.globl	_dl_runtime_profile_1
+	.type	_dl_runtime_profile_1, @function
+_dl_runtime_profile_1:
+	brz,a,pn %fp, 1f
+	 mov	192, %g5
+	sub	%fp, %sp, %g5
+1:	save	%sp, -336, %sp
+	srlx	%g1, 12, %o1
+	ldx	[%g4 + 8], %o0
+	add	%o1, %o1, %o3
+	sub	%o1, 96, %o1
+	mov	%i7, %o2
+	add	%o1, %o3, %o1
+
+	mov	%g5, %l0
+	mov	%o0, %l5
+	mov	%o1, %l6
+
+	call	_dl_profile_save_regs
+	 nop
+
+	add	%sp, STACK_BIAS, %o3
+	call	_dl_profile_fixup
+	 add	%sp, (STACK_BIAS + (32 * 8)), %o4
+
+	ldx	[%sp + STACK_BIAS + (32 * 8)], %o1
+	brgez,pt %o1, 1f
+	 nop
+
+	call	_dl_profile_invoke
+	 nop
+
+1:	jmp	%o0
+	 restore
+	.size	_dl_runtime_resolve_1, .-_dl_runtime_resolve_1
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index d059143396..325073c62c 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -138,6 +138,10 @@ case "$machine" in
     arch_minimum_kernel=2.3.99
     libc_cv_gcc_unwind_find_fde=yes
     ;;
+  sparc/sparc64*)
+    libc_cv_gcc_unwind_find_fde=yes
+    arch_minimum_kernel=2.4.21
+    ;;
   sparc*)
     libc_cv_gcc_unwind_find_fde=yes
     arch_minimum_kernel=2.0.10
diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in
index e3fccb4c9b..88feb868fe 100644
--- a/sysdeps/unix/sysv/linux/configure.in
+++ b/sysdeps/unix/sysv/linux/configure.in
@@ -98,6 +98,10 @@ case "$machine" in
     arch_minimum_kernel=2.3.99
     libc_cv_gcc_unwind_find_fde=yes
     ;;
+  sparc/sparc64*)
+    libc_cv_gcc_unwind_find_fde=yes
+    arch_minimum_kernel=2.4.21
+    ;;
   sparc*)
     libc_cv_gcc_unwind_find_fde=yes
     arch_minimum_kernel=2.0.10
diff --git a/sysdeps/unix/sysv/linux/dl-osinfo.h b/sysdeps/unix/sysv/linux/dl-osinfo.h
index dfb4cde72d..befa804cb1 100644
--- a/sysdeps/unix/sysv/linux/dl-osinfo.h
+++ b/sysdeps/unix/sysv/linux/dl-osinfo.h
@@ -43,6 +43,45 @@ dl_fatal (const char *str)
 static inline int __attribute__ ((always_inline))
 _dl_discover_osversion (void)
 {
+#if (defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO) && defined SHARED
+  if (GLRO(dl_sysinfo_map) != NULL)
+    {
+      /* If the kernel-supplied DSO contains a note indicating the kernel's
+	 version, we don't need to call uname or parse any strings.  */
+
+      static const struct
+      {
+	ElfW(Word) vendorlen;
+	ElfW(Word) datalen;
+	ElfW(Word) type;
+	char vendor[8];
+      } expected_note = { sizeof "Linux", sizeof (ElfW(Word)), 0, "Linux" };
+      const ElfW(Phdr) *const phdr = GLRO(dl_sysinfo_map)->l_phdr;
+      const ElfW(Word) phnum = GLRO(dl_sysinfo_map)->l_phnum;
+      for (uint_fast16_t i = 0; i < phnum; ++i)
+	if (phdr[i].p_type == PT_NOTE)
+	  {
+	    const ElfW(Addr) start = (phdr[i].p_vaddr
+				      + GLRO(dl_sysinfo_map)->l_addr);
+	    const struct
+	    {
+	      ElfW(Word) vendorlen;
+	      ElfW(Word) datalen;
+	      ElfW(Word) type;
+	    } *note = (const void *) start;
+	    while ((ElfW(Addr)) (note + 1) - start < phdr[i].p_memsz)
+	      {
+		if (!memcmp (note, &expected_note, sizeof expected_note))
+		  return *(const ElfW(Word) *) ((const void *) note
+						+ sizeof expected_note);
+#define ROUND(len) (((len) + sizeof (ElfW(Word)) - 1) & -sizeof (ElfW(Word)))
+		note = ((const void *) (note + 1)
+			+ ROUND (note->vendorlen) + ROUND (note->datalen));
+	      }
+	  }
+    }
+#endif
+
   char bufmem[64];
   char *buf = bufmem;
   unsigned int version;
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
index 66cdbf3ca7..4d8fdb8200 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
@@ -40,11 +40,19 @@ __clone:
 	save	%sp,-96,%sp
 
 	/* sanity check arguments */
-	tst	%i0
+	orcc	%i0,%g0,%g2
 	be	.Lerror
 	 orcc	%i1,%g0,%o1
 	be	.Lerror
 	 mov	%i2,%o0
+
+	/* The child_stack is the top of the stack, allocate one
+	   whole stack frame from that as this is what the kernel
+	   expects.  */
+	sub	%o1, 96, %o1
+	mov	%i3, %g3
+	mov	%i2, %g4
+
 	/* ptid */
 	mov	%i4,%o2
 	/* tls */
@@ -76,19 +84,21 @@ __clone:
 __thread_start:
 #ifdef RESET_PID
 	sethi	%hi(CLONE_THREAD), %l0
-	andcc	%i2, %l0, %g0
+	andcc	%g4, %l0, %g0
 	bne	1f
-	 andcc	%i2, CLONE_VM, %g0
+	 andcc	%g4, CLONE_VM, %g0
 	bne,a	2f
 	 mov	-1,%o0
 	set	__NR_getpid,%g1
 	ta	0x10
-2:	st	%o0,[%g7 + PID]
+2:
+	st	%o0,[%g7 + PID]
 	st	%o0,[%g7 + TID]
 1:
 #endif
-	call	%i0
-	 mov	%i3,%o0
+	mov	%g0, %fp	/* terminate backtrace */
+	call	%g2
+	 mov	%g3,%o0
 	call	_exit,0
 	 nop
 
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
index a7c248b2e8..f6134599e2 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
@@ -22,8 +22,16 @@
 
 #include <asm/errno.h>
 #include <asm/unistd.h>
+#include <tcb-offsets.h>
 
-/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */
+#define CLONE_VM	0x00000100
+#define CLONE_THREAD	0x00010000
+
+/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
+	     pid_t *ptid, void *tls, pid_t *ctid); */
+
+	.register	%g2,#scratch
+	.register	%g3,#scratch
 
 	.text
 	.align	4
@@ -34,22 +42,31 @@ __clone:
 	save	%sp, -192, %sp
 
 	/* sanity check arguments */
-	brz,pn	%i0, 99f
-	 mov	%i0, %l0		/* save fn */
-	brz,pn	%i1, 99f
-	 mov	%i3, %l3		/* save arg */
+	brz,pn	%i0, 99f		/* fn non-NULL? */
+	 mov	%i0, %g2
+	brz,pn	%i1, 99f		/* child_stack non-NULL? */
+	 mov	%i2, %o0		/* clone flags */
+
+	/* The child_stack is the top of the stack, allocate one
+	   whole stack frame from that as this is what the kernel
+	   expects.  Also, subtract STACK_BIAS.  */
+	sub	%i1, 192 + 0x7ff, %o1
+	mov	%i3, %g3
+	mov	%i2, %g4
+
+	mov	%i4,%o2			/* PTID */
+	mov	%i5,%o3			/* TLS */
+	ldx	[%fp+0x7ff+176],%o4	/* CTID */
 
 	/* Do the system call */
-	sub	%i1, 0x7ff, %o1
-	mov	%i2, %o0
 	set	__NR_clone, %g1
 	ta	0x6d
 	bcs,pn	%xcc, 99f
 	 nop
 	brnz,pn	%o1, __thread_start
-	 mov	%o0, %i0
+	 nop
 	ret
-	 restore
+	 restore %o0, %g0, %o0
 99:
 #ifndef _LIBC_REENTRANT
 #ifdef PIC
@@ -77,10 +94,22 @@ __clone:
 
 	.type __thread_start,@function
 __thread_start:
+#ifdef RESET_PID
+	sethi	%hi(CLONE_THREAD), %l0
+	andcc	%g4, %l0, %g0
+	bne,pt	%icc, 1f
+	 andcc	%g4, CLONE_VM, %g0
+	bne,a,pn %icc, 2f
+	 mov	-1,%o0
+	set	__NR_getpid,%g1
+	ta	0x6d
+2:	st	%o0,[%g7 + PID]
+	st	%o0,[%g7 + TID]
+1:
+#endif
 	mov	%g0, %fp	/* terminate backtrace */
-	sub	%sp, 6*8, %sp	/* provide arg storage */
-	call	%l0
-	 mov	%l3,%o0
+	call	%g2
+	 mov	%g3,%o0
 	call	_exit,0
 	 nop
 	.size __thread_start, .-__thread_start
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c b/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c
index 2ec5bd39ad..40fab28d47 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c
@@ -1 +1,47 @@
-#include <sysdeps/posix/pause.c>
+/* pause -- suspend the process until a signal arrives.  POSIX.1 version.
+   Copyright (C) 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <signal.h>
+#include <unistd.h>
+#include <sysdep-cancel.h>
+
+#include <sysdep.h>
+#include <sys/syscall.h>
+#include <bp-checks.h>
+
+/* Suspend the process until a signal arrives.
+   This always returns -1 and sets errno to EINTR.  */
+int
+__libc_pause (void)
+{
+  sigset_t set;
+
+  __sigemptyset (&set);
+  INLINE_SYSCALL (rt_sigprocmask, 4, SIG_BLOCK, CHECK_SIGSET (NULL),
+		  CHECK_SIGSET_NULL_OK (&set), _NSIG / 8);
+
+  /* pause is a cancellation point, but so is sigsuspend.
+     So no need for anything special here.  */
+
+  return __sigsuspend (&set);
+}
+weak_alias (__libc_pause, pause)
+
+LIBC_CANCEL_HANDLED ();		/* sigsuspend handles our cancellation.  */
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
index 3c6492aeca..071aa3a310 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
@@ -85,11 +85,54 @@ SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler)			\
 	sethi	%hi(_GLOBAL_OFFSET_TABLE_-4), %l7;			\
 	call	__sparc64.get_pic.l7;					\
 	 add	%l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7;			\
-	ldx	[%l7 + rtld_errno], %l0;				\
+	sethi	%hi(rtld_errno), %g1;					\
+	or	%g1, %lo(rtld_errno), %g1;				\
+	ldx	[%l7 + %g1], %l0;					\
 	st	%i0, [%l0];						\
 	jmpl	%i7+8, %g0;						\
 	 restore %g0, -1, %o0;						\
 	.previous;
+#elif USE___THREAD
+# ifndef NOT_IN_libc
+#  define SYSCALL_ERROR_ERRNO __libc_errno
+# else
+#  define SYSCALL_ERROR_ERRNO errno
+# endif
+# ifdef SHARED
+#  define SYSCALL_ERROR_HANDLER						\
+	.section .gnu.linkonce.t.__sparc64.get_pic.l7,"ax",@progbits;	\
+	.globl __sparc64.get_pic.l7;					\
+	.hidden __sparc64.get_pic.l7;					\
+	.type __sparc64.get_pic.l7,@function;				\
+__sparc64.get_pic.l7:							\
+	retl;								\
+	 add	%o7, %l7, %l7;						\
+	.previous;							\
+SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler)			\
+	save	%sp,-192,%sp;						\
+	sethi	%tie_hi22(SYSCALL_ERROR_ERRNO), %l1;			\
+	sethi	%hi(_GLOBAL_OFFSET_TABLE_-4), %l7;			\
+	call	__sparc64.get_pic.l7;					\
+	 add	%l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7;			\
+	add	%l1, %tie_lo10(SYSCALL_ERROR_ERRNO), %l1;		\
+	ldx	[%l7 + %l1], %l1, %tie_ldx(SYSCALL_ERROR_ERRNO);	\
+	st	%i0, [%g7 + %l1], %tie_add(SYSCALL_ERROR_ERRNO);	\
+	jmpl	%i7+8, %g0;						\
+	 restore %g0, -1, %o0;						\
+	.previous;
+# else
+#  define SYSCALL_ERROR_HANDLER						\
+SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler)			\
+	sethi	%tie_hi22(SYSCALL_ERROR_ERRNO), %g1;			\
+	sethi	%hi(_GLOBAL_OFFSET_TABLE_), %g2;			\
+	add	%g1, %tie_lo10(SYSCALL_ERROR_ERRNO), %g1;		\
+	add	%g2, %lo(_GLOBAL_OFFSET_TABLE_), %g2;			\
+	ldx	[%g2 + %g1], %g1, %tie_ldx(SYSCALL_ERROR_ERRNO);	\
+	st	%o0, [%g7 + %g1], %tie_add(SYSCALL_ERROR_ERRNO);	\
+	jmpl	%o7+8, %g0;						\
+	 mov	-1, %o0;						\
+	.previous;
+# endif
 #else
 # define SYSCALL_ERROR_HANDLER						\
 SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler)			\
diff --git a/version.h b/version.h
index 2c6a016515..8dc03abfa3 100644
--- a/version.h
+++ b/version.h
@@ -1,4 +1,4 @@
 /* This file just defines the current version number of libc.  */
 
 #define RELEASE "development"
-#define VERSION "2.3.4"
+#define VERSION "2.3.5"