]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Updated to fedora-glibc-20050415T0909 cvs/fedora-glibc-2_3_5-1
authorRoland McGrath <roland@gnu.org>
Fri, 15 Apr 2005 09:33:04 +0000 (09:33 +0000)
committerRoland McGrath <roland@gnu.org>
Fri, 15 Apr 2005 09:33:04 +0000 (09:33 +0000)
90 files changed:
ChangeLog
FAQ
FAQ.in
MakeTAGS
Makefile
NEWS
elf/cache.c
elf/dl-load.c
elf/dl-support.c
elf/ldconfig.c
elf/rtld.c
elf/tls-macros.h
elf/tst-auditmod1.c
fedora/branch.mk
fedora/glibc.spec.in
iconv/gconv_int.h
intl/tst-codeset.sh
intl/tst-gettext3.sh
manual/string.texi
nptl/ChangeLog
nptl/sysdeps/sparc/sparc64/jmpbuf-unwind.h [new file with mode: 0644]
nptl/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S [new file with mode: 0644]
nscd/Makefile
po/.cvsignore
po/libc.pot
posix/Makefile
posix/execvp.c
posix/tst-execvp3.c [new file with mode: 0644]
scripts/config.guess
scripts/config.sub
stdlib/random_r.c
string/Makefile
string/tst-strfry.c [new file with mode: 0644]
sysdeps/generic/dl-sysdep.c
sysdeps/generic/ldsodefs.h
sysdeps/ia64/fpu/e_acosh.S
sysdeps/ia64/fpu/e_acoshl.S
sysdeps/ia64/fpu/e_atanh.S
sysdeps/ia64/fpu/e_cosh.S
sysdeps/ia64/fpu/e_coshf.S
sysdeps/ia64/fpu/e_exp.S
sysdeps/ia64/fpu/e_exp10.S
sysdeps/ia64/fpu/e_exp10f.S
sysdeps/ia64/fpu/e_exp2.S
sysdeps/ia64/fpu/e_exp2f.S
sysdeps/ia64/fpu/e_expf.S
sysdeps/ia64/fpu/e_log.S
sysdeps/ia64/fpu/e_logf.S
sysdeps/ia64/fpu/e_pow.S
sysdeps/ia64/fpu/e_powf.S
sysdeps/ia64/fpu/e_sinh.S
sysdeps/ia64/fpu/e_sinhf.S
sysdeps/ia64/fpu/libm_error.c
sysdeps/ia64/fpu/libm_lgamma.S
sysdeps/ia64/fpu/libm_lgammaf.S
sysdeps/ia64/fpu/libm_lgammal.S
sysdeps/ia64/fpu/libm_sincos.S
sysdeps/ia64/fpu/libm_sincosf.S
sysdeps/ia64/fpu/s_asinh.S
sysdeps/ia64/fpu/s_atanl.S
sysdeps/ia64/fpu/s_cos.S
sysdeps/ia64/fpu/s_cosf.S
sysdeps/ia64/fpu/s_erf.S
sysdeps/ia64/fpu/s_erfc.S
sysdeps/ia64/fpu/s_erfcf.S
sysdeps/ia64/fpu/s_erfcl.S
sysdeps/ia64/fpu/s_erff.S
sysdeps/ia64/fpu/s_expm1.S
sysdeps/ia64/fpu/s_expm1f.S
sysdeps/ia64/fpu/s_log1p.S
sysdeps/ia64/fpu/s_tanf.S
sysdeps/ia64/fpu/s_tanh.S
sysdeps/ia64/fpu/s_tanhf.S
sysdeps/ia64/fpu/w_tgamma.S
sysdeps/ia64/fpu/w_tgammaf.S
sysdeps/ia64/fpu/w_tgammal.S
sysdeps/sh/elf/configure
sysdeps/sparc/bits/link.h [new file with mode: 0644]
sysdeps/sparc/sparc32/dl-machine.h
sysdeps/sparc/sparc32/dl-trampoline.S [new file with mode: 0644]
sysdeps/sparc/sparc64/dl-machine.h
sysdeps/sparc/sparc64/dl-trampoline.S [new file with mode: 0644]
sysdeps/unix/sysv/linux/configure
sysdeps/unix/sysv/linux/configure.in
sysdeps/unix/sysv/linux/dl-osinfo.h
sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
sysdeps/unix/sysv/linux/sparc/sparc64/pause.c
sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
version.h

index 850dd5bec2b29c07f3b4324edc1368a5360be097..2a1358023eb1238b488bbfa719877e8d4ee6749b 100644 (file)
--- 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.
 
 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.
 
 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>
 
 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.
        * 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.
 
 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.
 
        * 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.
 
 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.
 
 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
        * 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.
 
        * elf/dl-addr.c (_dl_addr): Add a cast.
 
+       [BZ #821]
        * elf/unload3mod4.c: Declare foo.
        * elf/testobj2.c: Include <stdio.h>.
 
 
 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.
 
 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.
        * 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 6d95ef332d6a8f0ffca8533ae576f2f95c95a476..77bd47e3ede94735b18a2149f9899c62d5df69d9 100644 (file)
--- 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.
+
 \f
 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
 
diff --git a/FAQ.in b/FAQ.in
index 4c161cceb620e7811fa6acf55fd7b65edff31ea8..227132bc08c53a8917a43cb7f5dec3cdc0ccca34 100644 (file)
--- 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?
index bee41252ee5538df38234ec24f2ffd88e8c7a090..fff6851c9129ee4188459338fb3e03fe48a0e3e9 100644 (file)
--- 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
index dc7a6f177a1cba4e6fa9beaa087896cb82775ae0..734687cf3dc88fef1cf82d5314646209ba425ec0 100644 (file)
--- 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 2601cd5dde4fff51837a2e30fd2a145a2cef2d1e..3ece35565b848a88444b812567729e0fce1ccfa4 100644 (file)
--- 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.
 \f
+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.
+\f
 Version 2.3.4
 
 * Support for RFC 3678.  Real implementations exist only for Linux so far.
index 22ad55c612ebc6e95a6bb50bae905dd48457f29b..9324f3dc6caf11ce786619d1eb32525ca87c9038 100644 (file)
@@ -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[] =
index 2ca108ef698356278d130e1cb6fe4ec0a8e9d916..d8b3a56d0dd01904012e8ecd6be0798f5018c375 100644 (file)
@@ -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
     {
index cfe01babbf1a29967a224f9db7473cc3b61d230b..d20e9a40488aeae88563f3e3876f2baa8315d6e0 100644 (file)
@@ -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:
index 70f3a8f402bdf9dce2958dc22f9c42eee9053053..d96295cbc1332b28b7664d3bc7e4ab78edf0d737 100644 (file)
 
 #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)
index b2122bb9d6fe6ad0a59c2d15e7aad875f6b56bf4..5d64d5a99e64e51feb548f84679bb3c6a9df463b 100644 (file)
@@ -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
index f734417149779934b86fdd11c7ea47ad5e8b2513..0ae9e65dc00e3fb00f5f0bd401587e01f9b3df18 100644 (file)
@@ -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) \
index 38768224299813fe09a749acc02736d387870621..73d341d72b9936e7bdf623b2965477abe7ebfb70 100644 (file)
@@ -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
index 3403138b761b80e0fd33c754eb8740575c27be19..5b5f55469d68d85f32428366e95da137feb7f4c9 100644 (file)
@@ -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
index 54224171013df02559d5b1e5c06f9098d75b73f0..e0b84fa4bc58a333fadd2feb254a14bc55c71da2 100644 (file)
@@ -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)
index 36d4ae2d44f21d031c3f68a9ce321df6cd191db0..768ebf0a97af074cb0b7b1d6e8fcae52dc81059b 100644 (file)
@@ -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
index 3d9b9559b725653177c1aaf630cf3855116f64ab..8b052168b21a9944fc219ce36e1b7ab1920f4fbf 100644 (file)
@@ -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
index 7bd977cf2d3cd7fd2794d865a8678f020c9a75f1..185576886ee9313e67bc6a69f6fee5143ac93a62 100644 (file)
@@ -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
index d9de12996e3d2b919ebdff5859a87fd1211f6b06..2717699213944c5dd36adf7a2a0cde706b82fbcf 100644 (file)
@@ -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
index d07ee780640b403e47b98514c2e17902fbec56e1..e608d136ceab729d13b1e0e299b083a68cd4d968 100644 (file)
@@ -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 (file)
index 0000000..77321aa
--- /dev/null
@@ -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 (file)
index 0000000..410f320
--- /dev/null
@@ -0,0 +1,2 @@
+#define RESET_PID
+#include <sysdeps/unix/sysv/linux/sparc/sparc64/clone.S>
index 9c32c68681a8ad298c27c5c2f0ad4c73c256c6c5..75a9d434f47d0ac9da51ef7ca077f5818b65f76a 100644 (file)
@@ -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
 
index f3acb7df82db92ea8cd8a23a438072087d75ce70..02da89616982674673df98e93be40e504a1c34fe 100644 (file)
@@ -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
index cd4f5617388a02dae5456f4588b63c2f128b4486..fa5a2214358f0e14b9c6f84c858be8cc2d66ec92 100644 (file)
@@ -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,688 +2649,471 @@ msgstr ""
 msgid "IOT trap"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30
-msgid "Error 0"
+#: stdio-common/psignal.c:60
+#, c-format
+msgid "%s%sUnknown signal %d\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31
-#: nis/nis_error.c:40
-msgid "Not owner"
+#: stdio-common/psignal.c:63 stdio-common/psignal.c:65
+msgid "Unknown signal"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35
-msgid "I/O error"
+#: dlfcn/dlinfo.c:63
+msgid "RTLD_SELF used in code not dynamically loaded"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37
-msgid "Arg list too long"
+#: dlfcn/dlinfo.c:72
+msgid "unsupported dlinfo request"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39
-msgid "Bad file number"
+#: dlfcn/dlmopen.c:63
+msgid "invalid namespace"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42
-msgid "Not enough space"
+#: dlfcn/dlopen.c:64
+msgid "invalid mode parameter"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46
-msgid "Device busy"
+#: malloc/mcheck.c:324
+msgid "memory is consistent, library is buggy\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48
-msgid "Cross-device link"
+#: malloc/mcheck.c:327
+msgid "memory clobbered before allocated block\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53
-msgid "File table overflow"
+#: malloc/mcheck.c:330
+msgid "memory clobbered past end of allocated block\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63
-msgid "Argument out of domain"
+#: malloc/mcheck.c:333
+msgid "block freed twice\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64
-msgid "Result too large"
+#: malloc/mcheck.c:336
+msgid "bogus mcheck_status, library is buggy\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75
-msgid "Deadlock situation detected/avoided"
+#: malloc/memusagestat.c:55
+msgid "Name output file"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76
-msgid "No record locks available"
+#: malloc/memusagestat.c:56
+msgid "Title string used in output graphic"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79
-msgid "Disc quota exceeded"
+#: malloc/memusagestat.c:57
+msgid ""
+"Generate output linear to time (default is linear to number of function "
+"calls)"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80
-msgid "Bad exchange descriptor"
+#: malloc/memusagestat.c:59
+msgid "Also draw graph for total memory consumption"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81
-msgid "Bad request descriptor"
+#: malloc/memusagestat.c:60
+msgid "make output graphic VALUE pixel wide"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82
-msgid "Message tables full"
+#: malloc/memusagestat.c:61
+msgid "make output graphic VALUE pixel high"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83
-msgid "Anode table overflow"
+#: malloc/memusagestat.c:66
+msgid "Generate graphic from memory profiling data"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84
-msgid "Bad request code"
+#: malloc/memusagestat.c:69
+msgid "DATAFILE [OUTFILE]"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86
-msgid "File locking deadlock"
+#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:58
+msgid "Unknown error"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88
-msgid "Error 58"
+#: string/strsignal.c:69
+#, c-format
+msgid "Real-time signal %d"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89
-msgid "Error 59"
+#: string/strsignal.c:73
+#, c-format
+msgid "Unknown signal %d"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90
-msgid "Not a stream device"
+#: timezone/zdump.c:240
+#, c-format
+msgid ""
+"%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93
-msgid "Out of stream resources"
+#: timezone/zdump.c:257
+#, c-format
+msgid "%s: wild -c argument %s\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102
-msgid "Error 72"
+#: timezone/zdump.c:347
+msgid "Error writing standard output"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103
-msgid "Error 73"
+#: timezone/zdump.c:370
+#, c-format
+msgid ""
+"%s: use of -v on system with floating time_t other than float or double\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105
-msgid "Error 75"
+#: timezone/zic.c:367
+#, c-format
+msgid "%s: Memory exhausted: %s\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106
-msgid "Error 76"
+#: timezone/zic.c:392 misc/error.c:129 misc/error.c:157
+msgid "Unknown system error"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107
-msgid "Not a data message"
+#: timezone/zic.c:426
+#, c-format
+msgid "\"%s\", line %d: %s"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116
-msgid "Attempting to link in more shared libraries than system limit"
+#: timezone/zic.c:429
+#, c-format
+msgid " (rule from \"%s\", line %d)"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117
-msgid "Can not exec a shared library directly"
+#: timezone/zic.c:441
+msgid "warning: "
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118
-msgid "Illegal byte sequence"
+#: timezone/zic.c:451
+#, c-format
+msgid ""
+"%s: usage is %s [ --version ] [ -s ] [ -v ] [ -l localtime ] [ -p "
+"posixrules ] \\\n"
+"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119
-msgid "Operation not applicable"
+#: timezone/zic.c:500
+#, c-format
+msgid "%s: More than one -d option specified\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120
-msgid ""
-"Number of symbolic links encountered during path name traversal exceeds "
-"MAXSYMLINKS"
+#: timezone/zic.c:510
+#, c-format
+msgid "%s: More than one -l option specified\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121
-msgid "Error 91"
+#: timezone/zic.c:520
+#, c-format
+msgid "%s: More than one -p option specified\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122
-msgid "Error 92"
+#: timezone/zic.c:530
+#, c-format
+msgid "%s: More than one -y option specified\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129
-msgid "Option not supported by protocol"
+#: timezone/zic.c:540
+#, c-format
+msgid "%s: More than one -L option specified\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130
-msgid "Error 100"
+#: timezone/zic.c:589
+msgid "link to link"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131
-msgid "Error 101"
+#: timezone/zic.c:654
+msgid "hard link failed, symbolic link used"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132
-msgid "Error 102"
+#: timezone/zic.c:662
+#, c-format
+msgid "%s: Can't link from %s to %s: %s\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133
-msgid "Error 103"
+#: timezone/zic.c:771 timezone/zic.c:773
+msgid "same rule name in multiple files"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134
-msgid "Error 104"
+#: timezone/zic.c:814
+msgid "unruly zone"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135
-msgid "Error 105"
+#: timezone/zic.c:821
+#, c-format
+msgid "%s in ruleless zone"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136
-msgid "Error 106"
+#: timezone/zic.c:842
+msgid "standard input"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137
-msgid "Error 107"
+#: timezone/zic.c:847
+#, c-format
+msgid "%s: Can't open %s: %s\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138
-msgid "Error 108"
+#: timezone/zic.c:858
+msgid "line too long"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139
-msgid "Error 109"
+#: timezone/zic.c:878
+msgid "input line of unknown type"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140
-msgid "Error 110"
+#: timezone/zic.c:894
+#, c-format
+msgid "%s: Leap line in non leap seconds file %s\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141
-msgid "Error 111"
+#: timezone/zic.c:901 timezone/zic.c:1322 timezone/zic.c:1347
+#, c-format
+msgid "%s: panic: Invalid l_value %d\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142
-msgid "Error 112"
+#: timezone/zic.c:909
+#, c-format
+msgid "%s: Error reading %s\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143
-msgid "Error 113"
+#: timezone/zic.c:916
+#, c-format
+msgid "%s: Error closing %s: %s\n"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144
-msgid "Error 114"
+#: timezone/zic.c:921
+msgid "expected continuation line not found"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145
-msgid "Error 115"
+#: timezone/zic.c:965
+msgid "24:00 not handled by pre-1998 versions of zic"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146
-msgid "Error 116"
+#: timezone/zic.c:979
+msgid "wrong number of fields on Rule line"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147
-msgid "Error 117"
+#: timezone/zic.c:983
+msgid "nameless rule"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148
-msgid "Error 118"
+#: timezone/zic.c:988
+msgid "invalid saved time"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149
-msgid "Error 119"
+#: timezone/zic.c:1007
+msgid "wrong number of fields on Zone line"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152
-msgid "Operation not supported on transport endpoint"
+#: timezone/zic.c:1013
+#, c-format
+msgid "\"Zone %s\" line and -l option are mutually exclusive"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154
-msgid "Address family not supported by protocol family"
+#: timezone/zic.c:1021
+#, c-format
+msgid "\"Zone %s\" line and -p option are mutually exclusive"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159
-msgid "Network dropped connection because of reset"
+#: timezone/zic.c:1033
+#, c-format
+msgid "duplicate zone name %s (file \"%s\", line %d)"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166
-msgid "Error 136"
+#: timezone/zic.c:1049
+msgid "wrong number of fields on Zone continuation line"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167
-msgid "Not a name file"
+#: timezone/zic.c:1089
+msgid "invalid UTC offset"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168
-msgid "Not available"
+#: timezone/zic.c:1092
+msgid "invalid abbreviation format"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169
-msgid "Is a name file"
+#: timezone/zic.c:1119
+msgid "Zone continuation line end time is not after end time of previous line"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171
-msgid "Reserved for future use"
+#: timezone/zic.c:1147
+msgid "wrong number of fields on Leap line"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172
-msgid "Error 142"
+#: timezone/zic.c:1156
+msgid "invalid leaping year"
 msgstr ""
 
-#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173
-msgid "Cannot send after socket shutdown"
+#: timezone/zic.c:1171 timezone/zic.c:1277
+msgid "invalid month name"
 msgstr ""
 
-#: stdio-common/psignal.c:63
-#, c-format
-msgid "%s%sUnknown signal %d\n"
+#: timezone/zic.c:1184 timezone/zic.c:1399 timezone/zic.c:1413
+msgid "invalid day of month"
 msgstr ""
 
-#: malloc/mcheck.c:346
-msgid "memory is consistent, library is buggy\n"
+#: timezone/zic.c:1189
+msgid "time before zero"
 msgstr ""
 
-#: malloc/mcheck.c:349
-msgid "memory clobbered before allocated block\n"
+#: timezone/zic.c:1193
+msgid "time too small"
 msgstr ""
 
-#: malloc/mcheck.c:352
-msgid "memory clobbered past end of allocated block\n"
+#: timezone/zic.c:1197
+msgid "time too large"
 msgstr ""
 
-#: malloc/mcheck.c:355
-msgid "block freed twice\n"
+#: timezone/zic.c:1201 timezone/zic.c:1306
+msgid "invalid time of day"
 msgstr ""
 
-#: malloc/mcheck.c:358
-msgid "bogus mcheck_status, library is buggy\n"
+#: timezone/zic.c:1220
+msgid "illegal CORRECTION field on Leap line"
 msgstr ""
 
-#: malloc/memusagestat.c:53
-msgid "Name output file"
+#: timezone/zic.c:1225
+msgid "illegal Rolling/Stationary field on Leap line"
 msgstr ""
 
-#: malloc/memusagestat.c:54
-msgid "Title string used in output graphic"
+#: timezone/zic.c:1241
+msgid "wrong number of fields on Link line"
 msgstr ""
 
-#: malloc/memusagestat.c:55
-msgid ""
-"Generate output linear to time (default is linear to number of function "
-"calls)"
+#: timezone/zic.c:1245
+msgid "blank FROM field on Link line"
 msgstr ""
 
-#: malloc/memusagestat.c:57
-msgid "Also draw graph for total memory consumption"
+#: timezone/zic.c:1249
+msgid "blank TO field on Link line"
 msgstr ""
 
-#: malloc/memusagestat.c:58
-msgid "make output graphic VALUE pixel wide"
+#: timezone/zic.c:1326
+msgid "invalid starting year"
 msgstr ""
 
-#: malloc/memusagestat.c:59
-msgid "make output graphic VALUE pixel high"
+#: timezone/zic.c:1330
+msgid "starting year too low to be represented"
 msgstr ""
 
-#: malloc/memusagestat.c:64
-msgid "Generate graphic from memory profiling data"
+#: timezone/zic.c:1332
+msgid "starting year too high to be represented"
 msgstr ""
 
-#: malloc/memusagestat.c:67
-msgid "DATAFILE [OUTFILE]"
-msgstr ""
-
-#: string/strerror.c:43 posix/../sysdeps/posix/gai_strerror.c:57
-msgid "Unknown error"
-msgstr ""
-
-#: string/strsignal.c:69
-#, c-format
-msgid "Real-time signal %d"
-msgstr ""
-
-#: string/strsignal.c:73
-#, c-format
-msgid "Unknown signal %d"
-msgstr ""
-
-#: timezone/zdump.c:175
-#, c-format
-msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n"
-msgstr ""
-
-#: timezone/zdump.c:268
-msgid "Error writing standard output"
-msgstr ""
-
-#: timezone/zic.c:365
-#, c-format
-msgid "%s: Memory exhausted: %s\n"
-msgstr ""
-
-#: timezone/zic.c:390 misc/error.c:127 misc/error.c:155
-msgid "Unknown system error"
-msgstr ""
-
-#: timezone/zic.c:424
-#, c-format
-msgid "\"%s\", line %d: %s"
-msgstr ""
-
-#: timezone/zic.c:427
-#, c-format
-msgid " (rule from \"%s\", line %d)"
-msgstr ""
-
-#: timezone/zic.c:439
-msgid "warning: "
-msgstr ""
-
-#: timezone/zic.c:449
-#, c-format
-msgid ""
-"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
-"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
-msgstr ""
-
-#: timezone/zic.c:491
-#, c-format
-msgid "%s: More than one -d option specified\n"
-msgstr ""
-
-#: timezone/zic.c:501
-#, c-format
-msgid "%s: More than one -l option specified\n"
-msgstr ""
-
-#: timezone/zic.c:511
-#, c-format
-msgid "%s: More than one -p option specified\n"
-msgstr ""
-
-#: timezone/zic.c:521
-#, c-format
-msgid "%s: More than one -y option specified\n"
-msgstr ""
-
-#: timezone/zic.c:531
-#, 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"
-msgstr ""
-
-#: timezone/zic.c:645
-msgid "hard link failed, symbolic link used"
-msgstr ""
-
-#: timezone/zic.c:653
-#, c-format
-msgid "%s: Can't link from %s to %s: %s\n"
-msgstr ""
-
-#: timezone/zic.c:751 timezone/zic.c:753
-msgid "same rule name in multiple files"
-msgstr ""
-
-#: timezone/zic.c:794
-msgid "unruly zone"
-msgstr ""
-
-#: timezone/zic.c:801
-#, c-format
-msgid "%s in ruleless zone"
-msgstr ""
-
-#: timezone/zic.c:822
-msgid "standard input"
-msgstr ""
-
-#: timezone/zic.c:827
-#, c-format
-msgid "%s: Can't open %s: %s\n"
-msgstr ""
-
-#: timezone/zic.c:838
-msgid "line too long"
-msgstr ""
-
-#: timezone/zic.c:858
-msgid "input line of unknown type"
-msgstr ""
-
-#: timezone/zic.c:874
-#, 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
-#, c-format
-msgid "%s: panic: Invalid l_value %d\n"
-msgstr ""
-
-#: timezone/zic.c:889
-#, c-format
-msgid "%s: Error reading %s\n"
-msgstr ""
-
-#: timezone/zic.c:896
-#, c-format
-msgid "%s: Error closing %s: %s\n"
-msgstr ""
-
-#: timezone/zic.c:901
-msgid "expected continuation line not found"
-msgstr ""
-
-#: timezone/zic.c:957
-msgid "wrong number of fields on Rule line"
-msgstr ""
-
-#: timezone/zic.c:961
-msgid "nameless rule"
-msgstr ""
-
-#: timezone/zic.c:966
-msgid "invalid saved time"
-msgstr ""
-
-#: timezone/zic.c:985
-msgid "wrong number of fields on Zone line"
-msgstr ""
-
-#: timezone/zic.c:991
-#, c-format
-msgid "\"Zone %s\" line and -l option are mutually exclusive"
-msgstr ""
-
-#: timezone/zic.c:999
-#, c-format
-msgid "\"Zone %s\" line and -p option are mutually exclusive"
-msgstr ""
-
-#: timezone/zic.c:1011
-#, c-format
-msgid "duplicate zone name %s (file \"%s\", line %d)"
-msgstr ""
-
-#: timezone/zic.c:1027
-msgid "wrong number of fields on Zone continuation line"
-msgstr ""
-
-#: timezone/zic.c:1067
-msgid "invalid UTC offset"
-msgstr ""
-
-#: timezone/zic.c:1070
-msgid "invalid abbreviation format"
-msgstr ""
-
-#: timezone/zic.c:1096
-msgid "Zone continuation line end time is not after end time of previous line"
-msgstr ""
-
-#: timezone/zic.c:1123
-msgid "wrong number of fields on Leap line"
-msgstr ""
-
-#: timezone/zic.c:1132
-msgid "invalid leaping year"
-msgstr ""
-
-#: timezone/zic.c:1147 timezone/zic.c:1250
-msgid "invalid month name"
-msgstr ""
-
-#: timezone/zic.c:1160 timezone/zic.c:1372 timezone/zic.c:1386
-msgid "invalid day of month"
-msgstr ""
-
-#: timezone/zic.c:1165
-msgid "time before zero"
-msgstr ""
-
-#: timezone/zic.c:1173 timezone/zic.c:2049 timezone/zic.c:2068
-msgid "time overflow"
-msgstr ""
-
-#: timezone/zic.c:1176 timezone/zic.c:1279
-msgid "invalid time of day"
-msgstr ""
-
-#: timezone/zic.c:1195
-msgid "illegal CORRECTION field on Leap line"
-msgstr ""
-
-#: timezone/zic.c:1199
-msgid "illegal Rolling/Stationary field on Leap line"
-msgstr ""
-
-#: timezone/zic.c:1214
-msgid "wrong number of fields on Link line"
-msgstr ""
-
-#: timezone/zic.c:1218
-msgid "blank FROM field on Link line"
-msgstr ""
-
-#: timezone/zic.c:1222
-msgid "blank TO field on Link line"
-msgstr ""
-
-#: timezone/zic.c:1299
-msgid "invalid starting year"
-msgstr ""
-
-#: timezone/zic.c:1303 timezone/zic.c:1328
-msgid "starting year too low to be represented"
+#: timezone/zic.c:1351
+msgid "invalid ending year"
 msgstr ""
 
-#: timezone/zic.c:1305 timezone/zic.c:1330
-msgid "starting year too high to be represented"
+#: timezone/zic.c:1355
+msgid "ending year too low to be represented"
 msgstr ""
 
-#: timezone/zic.c:1324
-msgid "invalid ending year"
+#: timezone/zic.c:1357
+msgid "ending year too high to be represented"
 msgstr ""
 
-#: timezone/zic.c:1333
+#: 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/aicache.c:76 nscd/hstcache.c:438
+#, c-format
+msgid "Reloading \"%s\" in hosts cache!"
 msgstr ""
 
-#: nscd/cache.c:150 nscd/connections.c:187
+#: nscd/cache.c:127
 #, c-format
-msgid "cannot stat() file `%s': %s"
+msgid "add new entry \"%s\" of type %s for %s to cache%s"
 msgstr ""
 
-#: nscd/connections.c:146
-msgid "cannot read configuration file; this is fatal"
+#: nscd/cache.c:207 nscd/connections.c:501
+#, c-format
+msgid "cannot stat() file `%s': %s"
 msgstr ""
 
-#: nscd/connections.c:153
+#: 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 "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:362
+#, c-format
+msgid "cannot create %s; no persistent database used"
+msgstr ""
+
+#: nscd/connections.c:365
 #, c-format
-msgid "while allocating cache: %s"
+msgid "cannot create %s; no sharing possible"
 msgstr ""
 
-#: nscd/connections.c:200
+#: 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 "while accepting connection: %s"
+msgid "cannot change to old UID: %s; disabling paranoia mode"
 msgstr ""
 
-#: nscd/connections.c:482
+#: nscd/connections.c:914
+#, c-format
+msgid "cannot change to old GID: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:927
+#, c-format
+msgid "cannot change to old working directory: %s; disabling paranoia mode"
+msgstr ""
+
+#: 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/grpcache.c:196 nscd/hstcache.c:282 nscd/pwdcache.c:192
+#: nscd/connections.c:1591
+msgid "getgrouplist failed"
+msgstr ""
+
+#: 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: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:154
+#: 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-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:118
+#: 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 ""
index f08ec9f1f8dfdea24c3302a30fc86f1ce50a63b9..f6b6aefbe064ab1c46db5b6d545476a04bba401a 100644 (file)
@@ -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
index 0abfa7007cce39729024482becfdb604729af41a..6f4e4b8566cae138b423b483f167f42ae647090c 100644 (file)
@@ -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 (file)
index 0000000..5ebc879
--- /dev/null
@@ -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;
+}
index 61f2e4c60871b85734dd3dfcb9318531c3191ef0..9c292ea45b88464ed079d493a7a932cd59d3a09a 100755 (executable)
@@ -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
index fac5195126e741a45b671736832c919b654cfcdc..d8fd2f8fa2f58cb9a31d7494d75d7ed8b7135dfe 100755 (executable)
@@ -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
                ;;
index c85fd5eeef1f6dee9877bbcafdc95064d99a345c..5e564a737d3badb703b71416b8cfe18d9609abf9 100644 (file)
@@ -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];
 
index 66469f586ed7ae9bf800f0643607e045e7681f46..2f37d29526548e65040e5536950615a90acfcac8 100644 (file)
@@ -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 (file)
index 0000000..2b40a39
--- /dev/null
@@ -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"
index 34498a880ca414ad3a2f63203b2a6a0d33e52426..1fae16efce0ed88d655b11136aa4d24c9f14260a 100644 (file)
@@ -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
 #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;
index e1a934aeda9aecc406c96c7a748b7ea9d3b30406..2e3254356bc819023744d60a97592fe5856905f5 100644 (file)
@@ -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
index b55a6ab43c0e5d9892d21667fa24c48439cf9f89..fb25fa00537f7831b7e42690ff288db559fba1e9 100644 (file)
@@ -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
 // ==============================================================
index 5eb2b3466b304772f1082381f9572ce5dabb2b3b..42e1f394ef3325da78db409aa1311cc91c203cfb 100644 (file)
@@ -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  
index 5ae96dc90b7ce649e83c43abcd3dfab21b5a25b3..4ae5ee69269e4b551c43409f63dfc704cadc571f 100644 (file)
@@ -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
 // ==============================================================
index 38bd80e1468b5f76a84ebbd5abf7756e5e819830..885456b389c8f0a53326b435c59e39375b37e167 100644 (file)
@@ -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
 //==============================================================
index 6d30064256d1c7e988accaa6f3b526f1d864446e..97cb4e1771ea655cbbe999cb36b749da33a9533e 100644 (file)
@@ -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
 //*********************************************************************
index d22fd18b777fd1339f91b1e9399406287bb03cda..fcc247fb1a940bd5a00bf12052a773b53e041863 100644 (file)
@@ -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
 //==============================================================
index 6bfc21879dbfaba9927c6ff715ae3f1793c2a385..eafa59dd7c769956195db31a66c25e9d0d06d5db 100644 (file)
@@ -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
index 46615e98fffccbbb3c3d181009153f51645da750..fa54e9039faae19da5d420added462fd33116b65 100644 (file)
@@ -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
index 46fca2d3cd2f9890a07e4442965274cf76aa8388..54f652e384d9672de715e2aa0fa68de8dbee8241 100644 (file)
@@ -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
index 8ee600c55450ade267cc7a1457c56d9558646f4a..36354ae3bdbf39349a19d4ba85ca01f83d55f121 100644 (file)
@@ -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
index 3dc0ba9bf6f9ce565dd5a061e802a36a75506cf2..6fe0a833e2fa38ef3f1f94bcaa8fc1e06dcef6ab 100644 (file)
@@ -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
index 7b277f8a40ded4008fd8c0e3ded5a68a40a5e4a7..c644c6f8f7957c3ef2807a7469beabc0257b1adc 100644 (file)
@@ -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
 //==============================================================
index 186edab5016d2b478491d54ee4de9d9882cd4117..3d11a296cc4a2a91e62d0b2275bc0c455e310144 100644 (file)
@@ -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
 //==============================================================
index 86005f2f59001fb04820fd38cec7e7a1f81f61a7..89449c79ec01d6097f6b72186ee413e755f632ee 100644 (file)
@@ -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
 //==============================================================
index 4c839cba712e1d93990f2289e1a9590ff1e804e4..1406a94b655ae998d5fff85d68924bf0d38b1498 100644 (file)
@@ -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
 //==============================================================
index 5910d4aef98208ca09b063f978a56491f8607b70..f60907b72b8401afa865079c11a53ed071c378f8 100644 (file)
@@ -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
 //==============================================================
index d01d8307347b9354058160f1b9a28651358b1d28..6d808cb47857a39cf47d8c889f9230715d89a5ee 100644 (file)
@@ -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
 //*********************************************************************
index a7f9daefa02402a99e633552246ac802a1103fcb..24fb406a53e47533e2869a719ef42a90542592d9 100644 (file)
@@ -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};
index 0df1e4bc58b5b86e3ff81fbfba2c92921a5dae86..6096319ba5011642c5d19e8129ddaae3ffd71eae 100644 (file)
@@ -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
index 04dcd63fa7b602bad0a0b47a7d999cbda08a8c1b..4bd92c3b267cda0f53d626d94dd266406a73e3b1 100644 (file)
@@ -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
 //
 //*********************************************************************
 //
index 844c517785750b6ba03f922b31688b0aaca7fdea..407b3452cd3a4b980e524161737a71d8c90ca454 100644 (file)
@@ -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
 //
 //*********************************************************************
 //
index 3475b6281bdbe44579c2530a1b102675eeccb8fa..7fda2afac4926c3de49fe5675f1c8cb8c0bc265b 100644 (file)
@@ -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
 //==============================================================
index fb12007af8b9f3a16e1401249fae00f97587cae9..cf23356ef44f3198cb6e985a70d8e72beadc6e60 100644 (file)
@@ -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
 //==============================================================
index ab01f4f57073a307a493f57bec778c4f2dafe566..7eba39eb40b0058ba5e10b4840aa7ab34a48eb9d 100644 (file)
@@ -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
 // ==============================================================
index 721a38c10826ef45bb5d3272dd409eb0e638d666..1a2361130799d123147d92dbed412a999b1a1766 100644 (file)
@@ -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
 //
 //*********************************************************************
 //
index bf8997b4f5d3e23337aebeeb32abcfdd5a3cf0c1..fc121fce19391d4e75306c78572adbd507e5d4c1 100644 (file)
@@ -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
 //
index a588938eedc054505ac8e1744ed4972f7d194927..bcdf1b0c0207b0604ebf92bb1b8ea8af3a0ac983 100644 (file)
@@ -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
 //==============================================================
index 3abcd3e1ab458df52a607c3e5cd2eab7462a83f5..7174a197fbb5bf4ce989a6af99bda249ed0abae6 100644 (file)
@@ -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
 //==============================================================
index 3b1b58380384213451edbcb2568a3e886ae9f4bb..addfef44c2ba20c217b13d1c8c84f3d15f6610d2 100644 (file)
@@ -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
 //==============================================================
index e09ce98ebd04595062f90666cfd09a44a6e6aaf6..2e3eeab3c75501a457cd1de25718ddeedb25318e 100644 (file)
@@ -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
 //==============================================================
index 11f66bcb8a9c5f63e8bd7d60e5a3c3036f05b79f..266e1e1c911a9670b26648bc30391dffcc4f3e9c 100644 (file)
@@ -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
index 204446fbdfc5d343c42ca4068a4860fbe62662e7..ed0aaac4882021d95bca8608cde8be837487234d 100644 (file)
@@ -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
 //==============================================================
index 5d1fd8c5383be9ff6a16aabc8d71e5b596ab2f34..09a22bbbddf09cb3ddf6f0dd449d0d903aafac3f 100644 (file)
@@ -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
 //==============================================================
index 311be063434c79bf6e6331cb2effe45845250e5a..8996977ddb429ad099962e263c078e3d726a8faa 100644 (file)
@@ -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
index ccf0c310adcb1216f1a951b5cd69da27b5d63a60..e1e6dcc80bc92516d13c56fa04ced542b3e093e6 100644 (file)
@@ -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
 //==============================================================
index 98e3f76f175f696ef1d5275f974c1b7618e60c8c..193d7568a51f767a43dbe39dd385302b0e8e27eb 100644 (file)
@@ -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
 //==============================================================
index 5e0c407c782fb1d3e5f4df558a6cfd8cdeec9ed5..9adbc9c461b1726a6d48ecc15972c4621be52158 100644 (file)
@@ -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 
index 344ca4ec5a133e1432f05f4b9743cf966908b0db..e4e91cfe6397e401661b6f6e593a8b432b88b7a2 100644 (file)
@@ -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
index e55e4e396b74e62524b9a4e11dd6f56deff421a7..24f3d11840f0d11a8c8b2f2d12612245625ea2a9 100644 (file)
@@ -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
index 64421ab4eebe09c4d346e4f5dcc16537053ca7c4..dda0d0fe9d90a10f35b101b625841acca38cf36c 100644 (file)
@@ -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
 //
 //*********************************************************************
 //
index d801ba08866b27d3a6e19e04df55db7608cdfd2e..f64e21326690eb85dd36d8a0662bd888c1c39860 100644 (file)
@@ -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
 //==============================================================
index df45f2cde28b817abc4428b96870e858be70930e..d38b0ece5da556f5b54abb3bf225c83d8478fe82 100644 (file)
@@ -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 (file)
index 0000000..9b8434f
--- /dev/null
@@ -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
index d0af232d4867f188ffe8fe5459cb2589129cd360..4ea122c46b9ae4b5c71e6c617e736ef9c03bcec9 100644 (file)
@@ -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 (file)
index 0000000..4b78530
--- /dev/null
@@ -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
index 72b88e235c5aedb6763a0431120d639142bd0d6b..ce9b8c9dd91179bb001e8fa23ec1645578c9548b 100644 (file)
@@ -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 (file)
index 0000000..f85527f
--- /dev/null
@@ -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
index d0591433962fb8c54d194ec540715e8ff605be33..325073c62c40fbf576a9454c92ac11158b346ec2 100644 (file)
@@ -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
index e3fccb4c9bd33f28a57f640199d172186fc67fc1..88feb868fee47d9e11c4029901273c942fc12bd6 100644 (file)
@@ -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
index dfb4cde72d34f98acf188cbd3dd39bbc2c03c96b..befa804cb1fa1f62214a3060b2d786193b41e2ff 100644 (file)
@@ -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;
index 66cdbf3ca78bf623e1b41b1fef9a04746b349fd5..4d8fdb82004711f4d42026f64562506fd0f26d67 100644 (file)
@@ -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
 
index a7c248b2e84c39694a0c25a6127c92500b11a7fd..f6134599e2d309ef49f425527eb05ad63132d580 100644 (file)
 
 #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
index 2ec5bd39adf7c63b7aa1a8d87ad95889b40e223e..40fab28d47f80db51fdbd76300144debc48cebd9 100644 (file)
@@ -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.  */
index 3c6492aeca9c96226266fc80e846ab889d9cf732..071aa3a31080c935329f8066e206685000fc489b 100644 (file)
@@ -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)                   \
index 2c6a0165153509865e988eb2cc00633a309bb310..8dc03abfa3adb5c051050fd5527c850713f271ac 100644 (file)
--- 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"