summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2011-06-21 15:01:41 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2011-06-21 15:01:41 +0000
commit2f4cad8d89b656684e8829b2e164070515d4d34b (patch)
tree243b95293e11d7a8968cb2412fbfacb5ece6c4ba /libc
parentdc798c87712902a115d067b099582c811d9f6951 (diff)
Merge changes between r14014 and r14127 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@14282 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'libc')
-rw-r--r--libc/ChangeLog165
-rw-r--r--libc/ChangeLog.eglibc5
-rw-r--r--libc/Makeconfig6
-rw-r--r--libc/NEWS43
-rw-r--r--libc/config.make.in1
-rwxr-xr-xlibc/debug/xtrace.sh4
-rw-r--r--libc/elf/Makefile30
-rw-r--r--libc/elf/dl-deps.c93
-rw-r--r--libc/elf/dl-fini.c10
-rw-r--r--libc/elf/rtld.c8
-rw-r--r--libc/elf/sotruss-lib.c333
-rwxr-xr-xlibc/elf/sotruss.ksh154
-rw-r--r--libc/include/features.h2
-rw-r--r--libc/locale/findlocale.c5
-rw-r--r--libc/locale/programs/locarchive.c13
-rw-r--r--libc/malloc/malloc.h91
-rwxr-xr-xlibc/malloc/memusage.sh4
-rw-r--r--libc/manual/Makefile12
-rw-r--r--libc/manual/fdl-1.1.texi (renamed from libc/manual/fdl.texi)11
-rw-r--r--libc/manual/lgpl-2.1.texi (renamed from libc/manual/lesser.texi)42
-rw-r--r--libc/manual/libc.texinfo10
-rw-r--r--libc/nscd/nscd_getserv_r.c16
-rw-r--r--libc/po/Makefile12
-rw-r--r--libc/po/libc.pot1605
-rw-r--r--libc/posix/Makefile2
-rw-r--r--libc/posix/bug-regex32.c36
-rw-r--r--libc/posix/glob.c1
-rw-r--r--libc/posix/regex_internal.c24
-rw-r--r--libc/posix/regexec.c10
-rw-r--r--libc/resolv/res_init.c65
-rw-r--r--libc/resolv/res_send.c12
-rw-r--r--libc/rt/bits/mqueue2.h12
-rw-r--r--libc/shadow/sgetspent_r.c20
-rw-r--r--libc/stdlib/longlong.h2
-rw-r--r--libc/sysdeps/posix/getaddrinfo.c4
-rw-r--r--libc/sysdeps/sparc/sparc32/dl-irel.h5
-rw-r--r--libc/sysdeps/sparc/sparc32/dl-machine.h8
-rw-r--r--libc/sysdeps/sparc/sparc64/dl-irel.h5
-rw-r--r--libc/sysdeps/sparc/sparc64/dl-machine.h8
-rw-r--r--libc/sysdeps/sparc/sparc64/multiarch/memcpy.S22
-rw-r--r--libc/sysdeps/sparc/sparc64/multiarch/memset.S36
-rw-r--r--libc/sysdeps/unix/sysv/linux/Makefile3
-rw-r--r--libc/sysdeps/unix/sysv/linux/Versions4
-rw-r--r--libc/sysdeps/unix/sysv/linux/bits/sched.h10
-rw-r--r--libc/sysdeps/unix/sysv/linux/bits/siginfo.h4
-rw-r--r--libc/sysdeps/unix/sysv/linux/bits/socket.h9
-rw-r--r--libc/sysdeps/unix/sysv/linux/dl-osinfo.h2
-rw-r--r--libc/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h4
-rw-r--r--libc/sysdeps/unix/sysv/linux/internal_sendmmsg.S14
-rw-r--r--libc/sysdeps/unix/sysv/linux/kernel-features.h5
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/bits/siginfo.h4
-rw-r--r--libc/sysdeps/unix/sysv/linux/sendmmsg.c96
-rw-r--r--libc/sysdeps/unix/sysv/linux/socketcall.h3
-rw-r--r--libc/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h4
-rw-r--r--libc/sysdeps/unix/sysv/linux/syscalls.list2
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/init-first.c22
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S7
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/time.S7
-rw-r--r--libc/sysdeps/x86_64/multiarch/init-arch.c7
-rw-r--r--libc/version.h4
60 files changed, 2170 insertions, 988 deletions
diff --git a/libc/ChangeLog b/libc/ChangeLog
index 34df6baea..2826e8296 100644
--- a/libc/ChangeLog
+++ b/libc/ChangeLog
@@ -1,5 +1,169 @@
+2011-06-07 David S. Miller <davem@davemloft.net>
+
+ * sysdeps/sparc/sparc32/dl-irel.h (elf_irela): Pass dl_hwcap to
+ ifuncs.
+ * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela,
+ elf_machine_lazy_rel): Likewise.
+ * sysdeps/sparc/sparc64/dl-irel.h (elf_irela): Likewise.
+ * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela,
+ elf_machine_lazy_rel): Likewise.
+ * sysdeps/sparc/sparc64/multiarch/memcpy.S (memcpy): Fetch
+ dl_hwcap via passed in argument.
+ * sysdeps/sparc/sparc64/multiarch/memset.S (memset, bzero):
+ Likewise.
+
+2011-06-06 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
+
+ * stdlib/longlong.h: Update from GCC. Fix smul_ppmm for S/390.
+
+2011-06-06 Roland McGrath <roland@hack.frob.com>
+
+ [BZ #12849]
+ * manual/fdl-1.1.texi: New file, verbatim from:
+ http://www.gnu.org/licenses/old-licenses/fdl-1.1.texi
+ * manual/lgpl-2.1.texi: New file, verbatim from:
+ http://www.gnu.org/licenses/old-licenses/lgpl-2.1.texi
+ * manual/Makefile (licenses): New variable, list those new file names.
+ (texis): Use it.
+ (chapters.% top-menu.%): Include $(licenses) with $(appendices).
+
+ * manual/fdl.texi: File removed.
+ * manual/lesser.texi: File removed.
+ * manual/libc.texinfo (Copying, Documentation License):
+ Use new @include file names, put @appendix directive before @include.
+
+2011-06-04 Jakub Jelinek <jakub@redhat.com>
+
+ [BZ #12841]
+ * rt/bits/mqueue2.h (__mq_open_2): Add __THROW.
+ (__mq_open_alias): Use __REDIRECT_NTH instead of __REDIRECT.
+ (mq_open): Add __NTH.
+
+2011-06-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
+ Assume Intel Core i3/i5/i7 processor if AVX is available.
+
+2011-05-31 Ulrich Drepper <drepper@gmail.com>
+
+ * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard): Fix
+ typo.
+
+2011-05-31 Andreas Schwab <schwab@redhat.com>
+
+ * nscd/nscd_getserv_r.c (nscd_getserv_r): Don't free non-malloced
+ memory. Use alloca_account. Fix memory leak when retrying.
+
+2011-05-31 Ulrich Drepper <drepper@gmail.com>
+
+ * version.h (RELEASE): Bump for 2.14 release.
+ * include/features.h (__GLIBC_MINOR__): Bump to 14.
+
+ * config.make.in (RANLIB): Remove entry.
+
+2011-05-30 Ulrich Drepper <drepper@gmail.com>
+
+ * po/Makefile (po-sed-cmd): Add ksh to extensions.
+ (libc.pot): Work around missing support for .ksh extension in xgettext.
+
+ [BZ #12684]
+ * resolv/res_send.c (__libc_res_nsend): Only go to the next name server
+ if both request failed.
+ (send_dg): In case of server errors clear resplen or *resplen2.
+
+ [BZ #12454]
+ * elf/dl-deps.c (_dl_map_object_deps): Run initializer sorting only
+ when there are multiple maps.
+ * elf/dl-fini.c (_dl_sort_fini): Check for list of one.
+ (_dl_fini): Remove test here.
+
+ * elf/rtld.c (dl_main): Don't allow the loader to load itself.
+
+2011-05-29 Ulrich Drepper <drepper@gmail.com>
+
+ [BZ #12350]
+ * sysdeps/posix/getaddrinfo.c (gethosts): Restore only RES_USE_IENT6
+ bit from old_res_options.
+ (gaih_inet): Likewise.
+
+ [BZ #11099]
+ * shadow/sgetspent_r.c (LINE_PARSER): Interpret numeric field values
+ as signed.
+
+ * resolv/res_init.c (res_setoptions): Make the code more compact.
+
+ [BZ #11558]
+ * resolv/res_init.c (res_setoptions): Recognize use-vc option and
+ set RES_USEVC.
+
+ [BZ #11634]
+ * elf/Makefile (tests): Don't add tst-audit[67] without working -mavx.
+
+ * malloc/malloc.h: Mark malloc hook variables as deprecated.
+
+ [BZ #11781]
+ * malloc/malloc.h: Declare malloc hook variables as volatile.
+
+ * locale/programs/locarchive.c (add_locale_to_archive): Fix typo
+ in last patch.
+
+ [BZ #11799]
+ * sysdeps/unix/sysv/linux/bits/siginfo.h (SI_USER): Don't mention
+ raise in the comment.
+ * sysdeps/unix/sysv/linux/s390/bits/siginfo.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/siginfo.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/siginfo.h: Likewise.
+
+2011-05-28 Ulrich Drepper <drepper@gmail.com>
+
+ [BZ #12811]
+ * posix/regex_internal.c (build_wcs_buffer): Don't signal we have to
+ grow the buffers more if it already has to be sufficient.
+ (build_wcs_upper_buffer): Likewise.
+ * posix/regexec.c (check_matching): Likewise.
+ (clean_state_log_if_needed): Likewise.
+ (extend_buffers): Don't enlarge buffers beyond size of the input
+ buffer.
+ Patches mostly by Emil Wojak <emil@wojak.eu>.
+ * posix/bug-regex32.c: New file.
+ * posix/Makefile (tests): Add bug-regex32.
+
+ * locale/findlocale.c (_nl_find_locale): Return right away if
+ _nl_explode_name failed.
+ * locale/programs/locarchive.c (add_locale_to_archive): Likewise.
+
+ * sysdeps/unix/sysv/linux/socketcall.h (SOCKOP_sendmmsg): Define.
+
+ * debug/xtrace.sh: Unify messages.
+ * malloc/memusage.sh: Likewise.
+
+ [BZ #12813]
+ * sysdeps/unix/sysv/linux/x86_64/init-first.c (__vdso_time): Retrieve
+ time symbol from vDSO. Substitute with vsyscall if not available.
+ * sysdeps/unix/sysv/linux/x86_64/time.S [SHARED]: Use
+ __vdso_time.
+
+ * sysdeps/unix/sysv/linux/internal_sendmmsg.S: New file.
+ * sysdeps/unix/sysv/linux/sendmmsg.c: New file.
+ * sysdeps/unix/sysv/linux/Makefile [subdir=socket] (sysdep_routines):
+ Add sendmmsg and internal_sendmmsg.
+ * sysdeps/unix/sysv/linux/Versions [GLIBC_2.14]: Add sendmmsg.
+ * sysdeps/unix/sysv/linux/bits/socket.h: Declare sendmmsg.
+ * sysdeps/unix/sysv/linux/kernel-features.h: Define __ASSUME_SENDMMSG.
+
+ * sysdeps/unix/sysv/linux/syscalls.list: Add setns entry.
+ * sysdeps/unix/sysv/linux/bits/sched.h: Declare setns.
+ * sysdeps/unix/sysv/linux/Versions [GLIBC_2.14]: Add setns.
+
2011-05-27 Ulrich Drepper <drepper@gmail.com>
+ [BZ #12813]
+ * sysdeps/unix/sysv/linux/x86_64/init-first.c (__vdso_getcpu):
+ Retrieve getcpu symbol from vDSO. Substitute with vsyscall if not
+ available.
+ * sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S [SHARED]: Use
+ __vdso_getcpu.
+
[BZ #12814]
* iconvdata/Makefile (tests): Add bug-iconv9.
* iconvdata/bug-iconv9.c: New file.
@@ -2444,6 +2608,7 @@
2010-07-06 Andreas Schwab <schwab@redhat.com>
+ [BZ #11577]
* elf/dl-version.c (match_symbol): Don't pass NULL occation to
dl_signal_cerror.
diff --git a/libc/ChangeLog.eglibc b/libc/ChangeLog.eglibc
index b29e1b96a..ee1d6e3cc 100644
--- a/libc/ChangeLog.eglibc
+++ b/libc/ChangeLog.eglibc
@@ -1,3 +1,8 @@
+2011-06-21 Joseph Myers <joseph@codesourcery.com>
+
+ * elf/sotruss.ksh: Use PKGVERSION and REPORT_BUGS_TO.
+ * elf/Makefile ($(objpfx)sotruss): Substitute them in sotruss.
+
2011-05-11 Nathan Sidwell <nathan@codesourcery.com>
* malloc/Makefile (libmemusage.so): Add libc_nonshared.a dependency.
diff --git a/libc/Makeconfig b/libc/Makeconfig
index ea7bf3437..31c683055 100644
--- a/libc/Makeconfig
+++ b/libc/Makeconfig
@@ -278,6 +278,12 @@ infodir = $(prefix)/info
endif
inst_infodir = $(install_root)$(infodir)
+# Where to install audit libraries.
+ifndef auditdir
+auditdir = $(libdir)/audit
+endif
+inst_auditdir = $(install_root)$(auditdir)
+
# Where to install default configuration files. These include the local
# timezone specification and network data base files.
ifndef sysconfdir
diff --git a/libc/NEWS b/libc/NEWS
index 2cdb0cc42..a6b383238 100644
--- a/libc/NEWS
+++ b/libc/NEWS
@@ -1,4 +1,4 @@
-GNU C Library NEWS -- history of user-visible changes. 2011-5-27
+GNU C Library NEWS -- history of user-visible changes. 2011-6-4
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
See the end for copying conditions.
@@ -9,20 +9,21 @@ Version 2.14
* The following bugs are resolved with this release:
- 386, 6420, 7101, 9730, 9732, 9809, 10138, 10149, 10157, 11257, 11258,
- 11487, 11532, 11578, 11653, 11668, 11697, 11724, 11820, 11837, 11857,
- 11869, 11892, 11895, 11901, 11945, 11947, 11952, 11987, 12052, 12083,
- 12158, 12178, 12200, 12346, 12393, 12420, 12432, 12445, 12449, 12453,
- 12454, 12460, 12469, 12489, 12509, 12510, 12511, 12518, 12527, 12541,
- 12545, 12551, 12582, 12583, 12587, 12597, 12601, 12611, 12625, 12626,
- 12631, 12650, 12653, 12655, 12660, 12671, 12681, 12685, 12711, 12713,
- 12714, 12717, 12723, 12724, 12734, 12738, 12746, 12766, 12775, 12777,
- 12782, 12788, 12792, 12795, 12814
+ 386, 6420, 7101, 9730, 9732, 9809, 10138, 10149, 10157, 11099, 11257,
+ 11258, 11487, 11532, 11558, 11578, 11634, 11653, 11668, 11697, 11724,
+ 11781, 11799, 11820, 11837, 11857, 11869, 11892, 11895, 11901, 11945,
+ 11947, 11952, 11987, 12052, 12083, 12158, 12178, 12200, 12346, 12350,
+ 12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489,
+ 12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583,
+ 12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655,
+ 12660, 12671, 12681, 12684, 12685, 12711, 12713, 12714, 12717, 12723,
+ 12724, 12734, 12738, 12746, 12766, 12775, 12777, 12782, 12788, 12792,
+ 12795, 12811, 12813, 12814, 12841
* The RPC implementation in libc is obsoleted. Old programs keep working
but new programs cannot be linked with the routines in libc anymore.
Programs in need of RPC functionality must be linked against TI-RPC.
- The TI-RPC implemtation is IPv6 enabled and there are other benefits.
+ The TI-RPC implementation is IPv6 enabled and there are other benefits.
Visible changes of this change include (obviously) the inability to link
programs using RPC functions without referencing the TI-RPC library and the
@@ -30,22 +31,30 @@ Version 2.14
Implemented by Ulrich Drepper.
* New Linux interfaces: clock_adjtime, name_to_handle_at, open_by_handle_at,
- syncfs
+ syncfs, setns, sendmmsg
* New locales: os_RU, bem_ZA, en_ZA, ff_SN, sw_KE, sw_TZ, lb_LU, wae_CH,
yue_HK, lij_IT, mhr_RU
* New encodings: CP770, CP771, CP772, CP773, CP774
+
+* New program sotruss to trace calls through PLTs
+ Implemented by Ulrich Drepper.
+
+* The malloc hook implementation is marked deprecated and will be removed
+ from the default implementation in the next version. The design never
+ worked ever since the introduction of threads. Even programs which do
+ not create threads themselves can use multiple threads created internally.
Version 2.13
* The following bugs are resolved with this release:
- 3268, 6812, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11611, 11640,
- 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979, 12005,
- 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113, 12140,
- 12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348, 12378,
- 12394, 12397
+ 3268, 6812, 7066, 10085, 10484, 10563, 10851, 11149, 11155, 11577, 11611,
+ 11640, 11655, 11701, 11840, 11856, 11883, 11903, 11904, 11968, 11979,
+ 12005, 12037, 12067, 12077, 12078, 12092, 12093, 12107, 12108, 12113,
+ 12140, 12159, 12167, 12191, 12194, 12201, 12204, 12205, 12207, 12348,
+ 12378, 12394, 12397
* New Linux interfaces: prlimit, prlimit64, fanotify_init, fanotify_mark
diff --git a/libc/config.make.in b/libc/config.make.in
index a0ea8135a..e1c4da3c9 100644
--- a/libc/config.make.in
+++ b/libc/config.make.in
@@ -111,7 +111,6 @@ CFLAGS = @CFLAGS@
ASFLAGS-config = @ASFLAGS_config@
AR = @AR@
NM = @NM@
-RANLIB = @RANLIB@
MAKEINFO = @MAKEINFO@
AS = $(CC) -c
MIG = @MIG@
diff --git a/libc/debug/xtrace.sh b/libc/debug/xtrace.sh
index 092f559d8..c6d6b57fc 100755
--- a/libc/debug/xtrace.sh
+++ b/libc/debug/xtrace.sh
@@ -30,13 +30,13 @@ do_usage() {
# Refer to --help option.
help_info() {
- printf >&2 $"Try \`xtrace --help' for more information.\n"
+ printf >&2 $"Try \`%s --help' or `%s --usage' for more information.\n" xtrace xtrace
exit 1
}
# Message for missing argument.
do_missing_arg() {
- printf >&2 $"xtrace: option \`$1' requires an argument.\n"
+ printf >&2 $"%s: option '%s' requires an argument.\n" xtrace "$1"
help_info
}
diff --git a/libc/elf/Makefile b/libc/elf/Makefile
index 7e00096cb..87757e760 100644
--- a/libc/elf/Makefile
+++ b/libc/elf/Makefile
@@ -170,6 +170,31 @@ vpath %.c ../locale/programs
endif
endif
+ifeq ($(have-ksh)$(build-shared),yesyes)
+extra-objs += sotruss-lib.os sotruss-lib.so
+install-others += $(inst_auditdir)/sotruss-lib.so
+install-bin-script += sotruss
+generated += sotruss
+CPPFLAGS-sotruss-lib = -DNOT_IN_libc
+$(objpfx)sotruss-lib.so: $(objpfx)sotruss-lib.os $(common-objpfx)shlib.lds
+ $(build-module-asneeded)
+$(objpfx)sotruss-lib.so: $(common-objpfx)libc.so $(objpfx)ld.so \
+ $(common-objpfx)libc_nonshared.a
+
+$(objpfx)sotruss: sotruss.ksh $(common-objpfx)config.make
+ sed -e 's%@KSH@%$(KSH)%g' \
+ -e 's%@VERSION@%$(version)%g' \
+ -e 's%@TEXTDOMAINDIR@%$(msgcatdir)%g' \
+ -e 's%@PREFIX@%$(prefix)%g' \
+ -e 's%@PKGVERSION@%$(PKGVERSION)%g' \
+ -e 's%@REPORT_BUGS_TO@%$(REPORT_BUGS_TO)%g' \
+ < $< > $@.new
+ chmod 555 $@.new
+ mv -f $@.new $@
+$(inst_auditdir)/sotruss-lib.so: $(objpfx)sotruss-lib.so $(+force)
+ $(do-install-program)
+endif
+
tests = tst-tls1 tst-tls2 tst-tls9 tst-leaks1
ifeq (yes,$(have-initfini-array))
tests += tst-array1 tst-array2 tst-array3 tst-array4 tst-array5
@@ -212,7 +237,10 @@ ifneq ($(selinux-enabled),1)
tests-execstack-yes = tst-execstack tst-execstack-needed tst-execstack-prog
endif
ifeq (x86_64,$(config-machine))
-tests += tst-audit3 tst-audit4 tst-audit5 tst-audit6 tst-audit7
+tests += tst-audit3 tst-audit4 tst-audit5
+ifeq (yes,$(config-cflags-avx))
+tests += tst-audit6 tst-audit7
+endif
endif
endif
tests: $(objpfx)tst-leaks1-mem $(objpfx)noload-mem
diff --git a/libc/elf/dl-deps.c b/libc/elf/dl-deps.c
index 3994e7e38..be6d6d76a 100644
--- a/libc/elf/dl-deps.c
+++ b/libc/elf/dl-deps.c
@@ -617,61 +617,64 @@ Filters not supported with LD_TRACE_PRELINKING"));
map->l_searchlist.r_list[i]->l_reserved = 0;
}
- /* Now determine the order in which the initialization has to happen. */
+ /* Sort the initializer list to take dependencies into account. The binary
+ itself will always be initialize last. */
memcpy (l_initfini, map->l_searchlist.r_list,
nlist * sizeof (struct link_map *));
-
- /* We can skip looking for the binary itself which is at the front
- of the search list. */
- assert (nlist > 1);
- i = 1;
- bool seen[nlist];
- memset (seen, false, nlist * sizeof (seen[0]));
- while (1)
+ if (__builtin_expect (nlist > 1, 1))
{
- /* Keep track of which object we looked at this round. */
- seen[i] = true;
- struct link_map *thisp = l_initfini[i];
-
- /* Find the last object in the list for which the current one is
- a dependency and move the current object behind the object
- with the dependency. */
- unsigned int k = nlist - 1;
- while (k > i)
+ /* We can skip looking for the binary itself which is at the front
+ of the search list. */
+ i = 1;
+ bool seen[nlist];
+ memset (seen, false, nlist * sizeof (seen[0]));
+ while (1)
{
- struct link_map **runp = l_initfini[k]->l_initfini;
- if (runp != NULL)
- /* Look through the dependencies of the object. */
- while (*runp != NULL)
- if (__builtin_expect (*runp++ == thisp, 0))
- {
- /* Move the current object to the back past the last
- object with it as the dependency. */
- memmove (&l_initfini[i], &l_initfini[i + 1],
- (k - i) * sizeof (l_initfini[0]));
- l_initfini[k] = thisp;
-
- if (seen[i + 1])
+ /* Keep track of which object we looked at this round. */
+ seen[i] = true;
+ struct link_map *thisp = l_initfini[i];
+
+ /* Find the last object in the list for which the current one is
+ a dependency and move the current object behind the object
+ with the dependency. */
+ unsigned int k = nlist - 1;
+ while (k > i)
+ {
+ struct link_map **runp = l_initfini[k]->l_initfini;
+ if (runp != NULL)
+ /* Look through the dependencies of the object. */
+ while (*runp != NULL)
+ if (__builtin_expect (*runp++ == thisp, 0))
{
- ++i;
- goto next_clear;
+ /* Move the current object to the back past the last
+ object with it as the dependency. */
+ memmove (&l_initfini[i], &l_initfini[i + 1],
+ (k - i) * sizeof (l_initfini[0]));
+ l_initfini[k] = thisp;
+
+ if (seen[i + 1])
+ {
+ ++i;
+ goto next_clear;
+ }
+
+ memmove (&seen[i], &seen[i + 1],
+ (k - i) * sizeof (seen[0]));
+ seen[k] = true;
+
+ goto next;
}
- memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0]));
- seen[k] = true;
+ --k;
+ }
- goto next;
- }
+ if (++i == nlist)
+ break;
+ next_clear:
+ memset (&seen[i], false, (nlist - i) * sizeof (seen[0]));
- --k;
+ next:;
}
-
- if (++i == nlist)
- break;
- next_clear:
- memset (&seen[i], false, (nlist - i) * sizeof (seen[0]));
-
- next:;
}
/* Terminate the list of dependencies. */
diff --git a/libc/elf/dl-fini.c b/libc/elf/dl-fini.c
index c8c9a52d6..f3a1c7cf2 100644
--- a/libc/elf/dl-fini.c
+++ b/libc/elf/dl-fini.c
@@ -33,9 +33,12 @@ internal_function
_dl_sort_fini (struct link_map *l, struct link_map **maps, size_t nmaps,
char *used, Lmid_t ns)
{
+ /* A list of one element need not be sorted. */
+ if (nmaps == 1)
+ return;
+
/* We can skip looking for the binary itself which is at the front
of the search list for the main namespace. */
- assert (nmaps > 1);
unsigned int i = ns == LM_ID_BASE;
bool seen[nmaps];
memset (seen, false, nmaps * sizeof (seen[0]));
@@ -195,9 +198,8 @@ _dl_fini (void)
assert (ns == LM_ID_BASE || i == nloaded || i == nloaded - 1);
nmaps = i;
- if (nmaps > 1)
- /* Now we have to do the sorting. */
- _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns);
+ /* Now we have to do the sorting. */
+ _dl_sort_fini (GL(dl_ns)[ns]._ns_loaded, maps, nmaps, NULL, ns);
/* We do not rely on the linked list of loaded object anymore from
this point on. We have our own list here (maps). The various
diff --git a/libc/elf/rtld.c b/libc/elf/rtld.c
index 9560127b1..059b30411 100644
--- a/libc/elf/rtld.c
+++ b/libc/elf/rtld.c
@@ -1076,6 +1076,14 @@ of this helper program; chances are you did not intend to run this program.\n\
/* Now the map for the main executable is available. */
main_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
+ if (GL(dl_rtld_map).l_info[DT_SONAME] != NULL
+ && main_map->l_info[DT_SONAME] != NULL
+ && strcmp ((const char *) D_PTR (&GL(dl_rtld_map), l_info[DT_STRTAB])
+ + GL(dl_rtld_map).l_info[DT_SONAME]->d_un.d_val,
+ (const char *) D_PTR (main_map, l_info[DT_STRTAB])
+ + main_map->l_info[DT_SONAME]->d_un.d_val) == 0)
+ _dl_fatal_printf ("loader cannot load itself\n");
+
phdr = main_map->l_phdr;
phnum = main_map->l_phnum;
/* We overwrite here a pointer to a malloc()ed string. But since
diff --git a/libc/elf/sotruss-lib.c b/libc/elf/sotruss-lib.c
new file mode 100644
index 000000000..b01011d08
--- /dev/null
+++ b/libc/elf/sotruss-lib.c
@@ -0,0 +1,333 @@
+/* Trace calls through PLTs and show caller, callee, and parameters.
+ Copyright (C) 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ 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 <error.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <sys/param.h>
+#include <sys/uio.h>
+
+#include <ldsodefs.h>
+
+
+extern const char *__progname;
+extern const char *__progname_full;
+
+
+/* List of objects to trace calls from. */
+static const char *fromlist;
+/* List of objects to trace calls to. */
+static const char *tolist;
+
+/* If non-zero, also trace returns of the calls. */
+static int do_exit;
+/* If non-zero print PID for each line. */
+static int print_pid;
+
+/* The output stream to use. */
+static FILE *out_file;
+
+
+static int
+match_pid (pid_t pid, const char *which)
+{
+ if (which == NULL || which[0] == '\0')
+ {
+ print_pid = 1;
+ return 1;
+ }
+
+ char *endp;
+ unsigned long n = strtoul (which, &endp, 0);
+ return *endp == '\0' && n == pid;
+}
+
+
+static void
+init (void)
+{
+ fromlist = getenv ("SOTRUSS_FROMLIST");
+ if (fromlist != NULL && fromlist[0] == '\0')
+ fromlist = NULL;
+ tolist = getenv ("SOTRUSS_TOLIST");
+ if (tolist != NULL && tolist[0] == '\0')
+ tolist = NULL;
+ do_exit = (getenv ("SOTRUSS_EXIT") ?: "")[0] != '\0';
+
+ /* Determine whether this process is supposed to be traced and if
+ yes, whether we should print into a file. */
+ const char *which_process = getenv ("SOTRUSS_WHICH");
+ pid_t pid = getpid ();
+ int out_fd = -1;
+ if (match_pid (pid, which_process))
+ {
+ const char *out_filename = getenv ("SOTRUSS_OUTNAME");
+
+ if (out_filename != NULL && out_filename[0] != 0)
+ {
+ size_t out_filename_len = strlen (out_filename) + 12;
+ char fullname[out_filename_len];
+ char *endp = stpcpy (fullname, out_filename);
+ if (which_process == NULL || which_process[0] == '\0')
+ snprintf (endp, 12, ".%lu", (unsigned long int) pid);
+
+ out_fd = open (fullname, O_RDWR | O_CREAT | O_TRUNC, 0666);
+ if (out_fd != -1)
+ print_pid = 0;
+ }
+ }
+
+ /* If we do not write into a file write to stderr. Duplicate the
+ descriptor so that we can keep printing in case the program
+ closes stderr. Try first to allocate a descriptor with a value
+ usually not used as to minimize interference with the
+ program. */
+ if (out_fd == -1)
+ {
+ out_fd = fcntl (STDERR_FILENO, F_DUPFD, 1000);
+ if (out_fd == -1)
+ out_fd = dup (STDERR_FILENO);
+ }
+
+ if (out_fd != -1)
+ {
+ /* Convert file descriptor into a stream. */
+ out_file = fdopen (out_fd, "w");
+ if (out_file != NULL)
+ setlinebuf (out_file);
+ }
+}
+
+
+/* Audit interface verification. We also initialize everything if
+ everything checks out OK. */
+unsigned int
+la_version (unsigned int v)
+{
+ if (v != LAV_CURRENT)
+ error (1, 0, "cannot handle interface version %u", v);
+
+ init ();
+
+ return v;
+}
+
+
+/* Check whether a file name is on the colon-separated list of file
+ names. */
+static unsigned int
+match_file (const char *list, const char *name, size_t name_len,
+ unsigned int mask)
+{
+ if (list[0] == '\0')
+ return 0;
+
+ const char *cp = list;
+ while (1)
+ {
+ if (strncmp (cp, name, name_len) == 0
+ && (cp[name_len] == ':' || cp[name_len] == '\0'))
+ return mask;
+
+ cp = strchr (cp, ':');
+ if (cp == NULL)
+ return 0;
+ ++cp;
+ }
+}
+
+
+unsigned int
+la_objopen (struct link_map *map, Lmid_t lmid, uintptr_t *cookie)
+{
+ if (out_file == NULL)
+ return 0;
+
+ const char *full_name = map->l_name ?: "";
+ if (full_name[0] == '\0')
+ full_name = __progname_full;
+ size_t full_name_len = strlen (full_name);
+ const char *base_name = basename (full_name);
+ if (base_name[0] == '\0')
+ base_name = __progname;
+ size_t base_name_len = strlen (base_name);
+
+ int result = 0;
+ const char *print_name = NULL;
+ for (struct libname_list *l = map->l_libname; l != NULL; l = l->next)
+ {
+ if (print_name == NULL || (print_name[0] == '/' && l->name[0] != '/'))
+ print_name = l->name;
+
+ if (fromlist != NULL)
+ result |= match_file (fromlist, l->name, strlen (l->name),
+ LA_FLG_BINDFROM);
+
+ if (tolist != NULL)
+ result |= match_file (tolist, l->name, strlen (l->name),LA_FLG_BINDTO);
+ }
+
+ if (print_name == NULL)
+ print_name = base_name;
+ if (print_name[0] == '\0')
+ print_name = __progname;
+
+ /* We cannot easily get to the object name in the PLT handling
+ functions. Use the cookie to get the string pointer passed back
+ to us. */
+ *cookie = (uintptr_t) print_name;
+
+ /* The object name has to be on the list of objects to trace calls
+ from or that list must be empty. In the latter case we trace
+ only calls from the main binary. */
+ if (fromlist == NULL)
+ result |= map->l_name[0] == '\0' ? LA_FLG_BINDFROM : 0;
+ else
+ result |= (match_file (fromlist, full_name, full_name_len,
+ LA_FLG_BINDFROM)
+ | match_file (fromlist, base_name, base_name_len,
+ LA_FLG_BINDFROM));
+
+ /* The object name has to be on the list of objects to trace calls
+ to or that list must be empty. In the latter case we trace
+ calls toall objects. */
+ if (tolist == NULL)
+ result |= LA_FLG_BINDTO;
+ else
+ result |= (match_file (tolist, full_name, full_name_len, LA_FLG_BINDTO)
+ | match_file (tolist, base_name, base_name_len, LA_FLG_BINDTO));
+
+ return result;
+}
+
+
+#if __ELF_NATIVE_CLASS == 32
+# define la_symbind la_symbind32
+typedef Elf32_Sym Elf_Sym;
+#else
+# define la_symbind la_symbind64
+typedef Elf64_Sym Elf_Sym;
+#endif
+
+uintptr_t
+la_symbind (Elf_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, unsigned int *flags, const char *symname)
+{
+ if (!do_exit)
+ *flags = LA_SYMB_NOPLTEXIT;
+
+ return sym->st_value;
+}
+
+
+static void
+print_enter (uintptr_t *refcook, uintptr_t *defcook, const char *symname,
+ unsigned long int reg1, unsigned long int reg2,
+ unsigned long int reg3, unsigned int flags)
+{
+ char buf[3 * sizeof (pid_t) + 3];
+ buf[0] = '\0';
+ if (print_pid)
+ snprintf (buf, sizeof (buf), "%5ld: ", (long int) getpid ());
+
+ fprintf (out_file, "%s%15s -> %-15s:%s%s(0x%lx, 0x%lx, 0x%lx)\n",
+ buf, (char *) *refcook, (char *) *defcook,
+ (flags & LA_SYMB_NOPLTEXIT) ? "*" : " ", symname, reg1, reg2, reg3);
+}
+
+
+#ifdef __i386__
+Elf32_Addr
+la_i86_gnu_pltenter (Elf32_Sym *sym __attribute__ ((unused)),
+ unsigned int ndx __attribute__ ((unused)),
+ uintptr_t *refcook, uintptr_t *defcook,
+ La_i86_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ unsigned long int *sp = (unsigned long int *) regs->lr_esp;
+
+ print_enter (refcook, defcook, symname, sp[1], sp[2], sp[3], *flags);
+
+ /* No need to copy anything, we will not need the parameters in any case. */
+ *framesizep = 0;
+
+ return sym->st_value;
+}
+#elif defined __x86_64__
+Elf64_Addr
+la_x86_64_gnu_pltenter (Elf64_Sym *sym __attribute__ ((unused)),
+ unsigned int ndx __attribute__ ((unused)),
+ uintptr_t *refcook, uintptr_t *defcook,
+ La_x86_64_regs *regs, unsigned int *flags,
+ const char *symname, long int *framesizep)
+{
+ print_enter (refcook, defcook, symname,
+ regs->lr_rdi, regs->lr_rsi, regs->lr_rdx, *flags);
+
+ /* No need to copy anything, we will not need the parameters in any case. */
+ *framesizep = 0;
+
+ return sym->st_value;
+}
+#elif !defined HAVE_ARCH_PLTENTER
+# warning "pltenter for architecture not supported"
+#endif
+
+
+static void
+print_exit (uintptr_t *refcook, uintptr_t *defcook, const char *symname,
+ unsigned long int reg)
+{
+ char buf[3 * sizeof (pid_t) + 3];
+ buf[0] = '\0';
+ if (print_pid)
+ snprintf (buf, sizeof (buf), "%5ld: ", (long int) getpid ());
+
+ fprintf (out_file, "%s%15s -> %-15s:%s%s - 0x%lu\n",
+ buf, (char *) *refcook, (char *) *defcook, " ", symname, reg);
+}
+
+
+#ifdef __i386__
+unsigned int
+la_i86_gnu_pltexit (Elf32_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const struct La_i86_regs *inregs,
+ struct La_i86_retval *outregs, const char *symname)
+{
+ print_exit (refcook, defcook, symname, outregs->lrv_eax);
+
+ return 0;
+}
+#elif defined __x86_64__
+unsigned int
+la_x86_64_gnu_pltexit (Elf64_Sym *sym, unsigned int ndx, uintptr_t *refcook,
+ uintptr_t *defcook, const struct La_x86_64_regs *inregs,
+ struct La_x86_64_retval *outregs, const char *symname)
+{
+ print_exit (refcook, defcook, symname, outregs->lrv_rax);
+
+ return 0;
+}
+#elif !defined HAVE_ARCH_PLTEXIT
+# warning "pltexit for architecture not supported"
+#endif
diff --git a/libc/elf/sotruss.ksh b/libc/elf/sotruss.ksh
new file mode 100755
index 000000000..9da5bfffd
--- /dev/null
+++ b/libc/elf/sotruss.ksh
@@ -0,0 +1,154 @@
+#! @KSH@
+# Copyright (C) 2011 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.
+
+# We should be able to find the translation right at the beginning.
+TEXTDOMAIN=libc
+TEXTDOMAINDIR=@TEXTDOMAINDIR@
+
+unset SOTRUSS_FROMLIST
+unset SOTRUSS_TOLIST
+unset SOTRUSS_OUTNAME
+unset SOTRUSS_EXIT
+unset SOTRUSS_NOINDENT
+SOTRUSS_WHICH=$$
+lib='@PREFIX@/$LIB/audit/sotruss-lib.so'
+
+function do_help {
+ echo $"Usage: sotruss [OPTION...] [--] EXECUTABLE [EXECUTABLE-OPTION...]
+ -F, --from FROMLIST trace calls from objects on FORMLIST
+ -T, --to TOLIST trace calls to objects on TOLIST
+
+ -e, --exit also show exits from the function calls
+ -f, --follow trace child processes
+ -o, --output FILENAME write output to FILENAME (or FILENAME.$PID in case
+ -f is also used) instead of standard error
+
+ --help print this help and exit
+ --version print version information and exit"
+
+ echo
+ printf $"Mandatory arguments to long options are also mandatory for any corresponding\nshort options.\n"
+ echo
+
+ echo $"For bug reporting instructions, please see:
+@REPORT_BUGS_TO@.
+"
+ exit 0
+}
+
+function do_missing_arg {
+ printf >&2 $"%s: option requires an argument -- '%s'\n" sotruss "$1"
+ printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss
+ exit 1
+}
+
+function do_ambiguous {
+ printf >&2 $"%s: option is ambiguous; possibilities:"
+ while test $# -gt 0; do
+ printf >&2 " '%s'" $1
+ shift
+ done
+ printf >&2 "\n"
+ printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss
+ exit 1
+}
+
+while test $# -gt 0; do
+ case "$1" in
+ --v | --ve | --ver | --vers | --versi | --versio | --version)
+ echo "sotruss @PKGVERSION@@VERSION@"
+ printf $"Copyright (C) %s Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+" "2011"
+ printf $"Written by %s.\n" "Ulrich Drepper"
+ exit 0
+ ;;
+ --h | --he | --hel | --help)
+ do_help
+ ;;
+ --u | --us | --usa | --usag | --usage)
+ printf $"Usage: %s [-ef] [-F FROMLIST] [-o FILENAME] [-T TOLIST] [--exit]
+ [--follow] [--from FROMLIST] [--output FILENAME] [--to TOLIST]\n" sotruss
+ exit 0
+ ;;
+ -F | --fr | --fro | --from)
+ if test $# -eq 1; then
+ do_missing_arg "$1"
+ fi
+ shift
+ SOTRUSS_FROMLIST="$2"
+ ;;
+ -T | --t | --to)
+ if test $# -eq 1; then
+ do_missing_arg "$1"
+ fi
+ shift
+ SOTRUSS_TOLIST="$2"
+ ;;
+ -o | --o | --ou | --out | --outp | --outpu | --output)
+ if test $# -eq 1; then
+ do_missing_arg "$1"
+ fi
+ shift
+ SOTRUSS_OUTNAME="$1"
+ ;;
+ -f | --fo | --fol | --foll | --follo | --follow)
+ unset SOTRUSS_WHICH
+ ;;
+ -l | --l | --li | --lib)
+ if test $# -eq 1; then
+ do_missing_arg "$1"
+ fi
+ shift
+ lib="$1"
+ ;;
+ -e | --e | --ex | --exi | --exit)
+ SOTRUSS_EXIT=1
+ ;;
+ --f)
+ do_ambiguous '--from' '--follow'
+ ;;
+ --)
+ shift
+ break
+ ;;
+ -*)
+ printf >&2 $"%s: unrecognized option '%c%s'\n" sotruss '-' ${1#-}
+ printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss
+ exit 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+done
+
+export SOTRUSS_FROMLIST
+export SOTRUSS_TOLIST
+export SOTRUSS_OUTNAME
+export SOTRUSS_WHICH
+export SOTRUSS_EXIT
+export LD_AUDIT="$lib"
+
+exec "$@"
+# Local Variables:
+# mode:ksh
+# End:
diff --git a/libc/include/features.h b/libc/include/features.h
index 5f771bdaa..b16129562 100644
--- a/libc/include/features.h
+++ b/libc/include/features.h
@@ -338,7 +338,7 @@
/* Major and minor version number of the GNU C library package. Use
these macros to test for features in specific releases. */
#define __GLIBC__ 2
-#define __GLIBC_MINOR__ 13
+#define __GLIBC_MINOR__ 14
#define __GLIBC_PREREQ(maj, min) \
((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
diff --git a/libc/locale/findlocale.c b/libc/locale/findlocale.c
index 6b88c9634..2fec9a70d 100644
--- a/libc/locale/findlocale.c
+++ b/libc/locale/findlocale.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2003, 2006, 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@@ -140,6 +140,9 @@ _nl_find_locale (const char *locale_path, size_t locale_path_len,
*/
mask = _nl_explode_name (loc_name, &language, &modifier, &territory,
&codeset, &normalized_codeset);
+ if (mask == -1)
+ /* Memory allocate problem. */
+ return NULL;
/* If exactly this locale was already asked for we have an entry with
the complete name. */
diff --git a/libc/locale/programs/locarchive.c b/libc/locale/programs/locarchive.c
index 27d589b88..b4b409673 100644
--- a/libc/locale/programs/locarchive.c
+++ b/libc/locale/programs/locarchive.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2005, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002,2003,2005,2007,2009,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -1080,6 +1080,8 @@ add_locale_to_archive (ah, name, data, replace)
int mask = _nl_explode_name (strdupa (name),
&language, &modifier, &territory,
&codeset, &normalized_codeset);
+ if (mask == -1)
+ return -1;
if (mask & XPG_NORM_CODESET)
/* This name contains a codeset in unnormalized form.
@@ -1129,6 +1131,7 @@ add_locale_to_archive (ah, name, data, replace)
/* Now read the locale.alias files looking for lines whose
right hand side matches our name after normalization. */
+ int result = 0;
if (alias_file != NULL)
{
FILE *fp;
@@ -1208,6 +1211,11 @@ add_locale_to_archive (ah, name, data, replace)
&rhs_territory,
&rhs_codeset,
&rhs_normalized_codeset);
+ if (rhs_mask == -1)
+ {
+ result = -1;
+ goto out;
+ }
if (!strcmp (language, rhs_language)
&& ((rhs_mask & XPG_CODESET)
/* He has a codeset, it must match normalized. */
@@ -1241,6 +1249,7 @@ add_locale_to_archive (ah, name, data, replace)
}
}
+ out:
fclose (fp);
}
@@ -1249,7 +1258,7 @@ add_locale_to_archive (ah, name, data, replace)
if (mask & XPG_NORM_CODESET)
free ((char *) normalized_codeset);
- return 0;
+ return result;
}
diff --git a/libc/malloc/malloc.h b/libc/malloc/malloc.h
index d0aedc0cd..3a43f7cfd 100644
--- a/libc/malloc/malloc.h
+++ b/libc/malloc/malloc.h
@@ -1,5 +1,5 @@
/* Prototypes and definition for malloc implementation.
- Copyright (C) 1996, 1997, 1999, 2000, 2002-2004, 2005, 2007, 2009
+ Copyright (C) 1996, 1997, 1999, 2000, 2002-2004, 2005, 2007, 2009, 2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -37,10 +37,20 @@
functions. */
# define __MALLOC_PMT(args) args
+# ifdef _LIBC
+# define __MALLOC_HOOK_VOLATILE
+# define __MALLOC_DEPRECATED
+# else
+# define __MALLOC_HOOK_VOLATILE __volatile
+# define __MALLOC_DEPRECATED __attribute_deprecated__
+# endif
+
#else /* Not GCC. */
# define __MALLOC_P(args) args
# define __MALLOC_PMT(args) args
+# define __MALLOC_HOOK_VOLATILE
+# define __MALLOC_DEPRECATED __attribute_deprecated__
#endif /* GCC. */
@@ -48,50 +58,49 @@
__BEGIN_DECLS
/* Allocate SIZE bytes of memory. */
-extern void *malloc __MALLOC_P ((size_t __size)) __attribute_malloc__ __wur;
+extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur;
/* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */
-extern void *calloc __MALLOC_P ((size_t __nmemb, size_t __size))
- __attribute_malloc__ __wur;
+extern void *calloc (size_t __nmemb, size_t __size)
+ __THROW __attribute_malloc__ __wur;
/* Re-allocate the previously allocated block in __ptr, making the new
block SIZE bytes long. */
/* __attribute_malloc__ is not used, because if realloc returns
the same pointer that was passed to it, aliasing needs to be allowed
between objects pointed by the old and new pointers. */
-extern void *realloc __MALLOC_P ((void *__ptr, size_t __size))
- __attribute_warn_unused_result__;
+extern void *realloc (void *__ptr, size_t __size)
+ __THROW __attribute_warn_unused_result__;
/* Free a block allocated by `malloc', `realloc' or `calloc'. */
-extern void free __MALLOC_P ((void *__ptr));
+extern void free (void *__ptr) __THROW;
/* Free a block allocated by `calloc'. */
-extern void cfree __MALLOC_P ((void *__ptr));
+extern void cfree (void *__ptr) __THROW;
/* Allocate SIZE bytes allocated to ALIGNMENT bytes. */
-extern void *memalign __MALLOC_P ((size_t __alignment, size_t __size))
- __attribute_malloc__ __wur;
+extern void *memalign (size_t __alignment, size_t __size)
+ __THROW __attribute_malloc__ __wur;
/* Allocate SIZE bytes on a page boundary. */
-extern void *valloc __MALLOC_P ((size_t __size))
- __attribute_malloc__ __wur;
+extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur;
/* Equivalent to valloc(minimum-page-that-holds(n)), that is, round up
__size to nearest pagesize. */
-extern void * pvalloc __MALLOC_P ((size_t __size))
- __attribute_malloc__ __wur;
+extern void * pvalloc (size_t __size) __THROW __attribute_malloc__ __wur;
/* Underlying allocation function; successive calls should return
contiguous pieces of memory. */
-extern void *(*__morecore) __MALLOC_PMT ((ptrdiff_t __size));
+extern void *(*__morecore) (ptrdiff_t __size);
/* Default value of `__morecore'. */
-extern void *__default_morecore __MALLOC_P ((ptrdiff_t __size))
- __attribute_malloc__;
+extern void *__default_morecore (ptrdiff_t __size)
+ __THROW __attribute_malloc__;
/* SVID2/XPG mallinfo structure */
-struct mallinfo {
+struct mallinfo
+{
int arena; /* non-mmapped space allocated from system */
int ordblks; /* number of free chunks */
int smblks; /* number of fastbin blocks */
@@ -105,7 +114,7 @@ struct mallinfo {
};
/* Returns a copy of the updated current mallinfo. */
-extern struct mallinfo mallinfo __MALLOC_P ((void));
+extern struct mallinfo mallinfo (void) __THROW;
/* SVID2/XPG mallopt options */
#ifndef M_MXFAST
@@ -132,47 +141,53 @@ extern struct mallinfo mallinfo __MALLOC_P ((void));
#define M_ARENA_MAX -8
/* General SVID/XPG interface to tunable parameters. */
-extern int mallopt __MALLOC_P ((int __param, int __val));
+extern int mallopt (int __param, int __val) __THROW;
/* Release all but __pad bytes of freed top-most memory back to the
system. Return 1 if successful, else 0. */
-extern int malloc_trim __MALLOC_P ((size_t __pad));
+extern int malloc_trim (size_t __pad) __THROW;
/* Report the number of usable allocated bytes associated with allocated
chunk __ptr. */
-extern size_t malloc_usable_size __MALLOC_P ((void *__ptr));
+extern size_t malloc_usable_size (void *__ptr) __THROW;
/* Prints brief summary statistics on stderr. */
-extern void malloc_stats __MALLOC_P ((void));
+extern void malloc_stats (void) __THROW;
/* Output information about state of allocator to stream FP. */
-extern int malloc_info (int __options, FILE *__fp);
+extern int malloc_info (int __options, FILE *__fp) __THROW;
/* Record the state of all malloc variables in an opaque data structure. */
-extern void *malloc_get_state __MALLOC_P ((void));
+extern void *malloc_get_state (void) __THROW;
/* Restore the state of all malloc variables from data obtained with
malloc_get_state(). */
-extern int malloc_set_state __MALLOC_P ((void *__ptr));
+extern int malloc_set_state (void *__ptr) __THROW;
/* Called once when malloc is initialized; redefining this variable in
the application provides the preferred way to set up the hook
pointers. */
-extern void (*__malloc_initialize_hook) __MALLOC_PMT ((void));
+extern void (*__MALLOC_HOOK_VOLATILE __malloc_initialize_hook) (void)
+ __MALLOC_DEPRECATED;
/* Hooks for debugging and user-defined versions. */
-extern void (*__free_hook) __MALLOC_PMT ((void *__ptr,
- __const __malloc_ptr_t));
-extern void *(*__malloc_hook) __MALLOC_PMT ((size_t __size,
- __const __malloc_ptr_t));
-extern void *(*__realloc_hook) __MALLOC_PMT ((void *__ptr, size_t __size,
- __const __malloc_ptr_t));
-extern void *(*__memalign_hook) __MALLOC_PMT ((size_t __alignment,
- size_t __size,
- __const __malloc_ptr_t));
-extern void (*__after_morecore_hook) __MALLOC_PMT ((void));
+extern void (*__MALLOC_HOOK_VOLATILE __free_hook) (void *__ptr,
+ __const __malloc_ptr_t)
+ __MALLOC_DEPRECATED;
+extern void *(*__MALLOC_HOOK_VOLATILE __malloc_hook) (size_t __size,
+ __const __malloc_ptr_t)
+ __MALLOC_DEPRECATED;
+extern void *(*__MALLOC_HOOK_VOLATILE __realloc_hook) (void *__ptr,
+ size_t __size,
+ __const __malloc_ptr_t)
+ __MALLOC_DEPRECATED;
+extern void *(*__MALLOC_HOOK_VOLATILE __memalign_hook) (size_t __alignment,
+ size_t __size,
+ __const __malloc_ptr_t)
+ __MALLOC_DEPRECATED;
+extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void);
/* Activate a standard set of debugging hooks. */
-extern void __malloc_check_init __MALLOC_P ((void));
+extern void __malloc_check_init (void) __THROW __MALLOC_DEPRECATED;
__END_DECLS
diff --git a/libc/malloc/memusage.sh b/libc/malloc/memusage.sh
index 87d76adb5..8895b634e 100755
--- a/libc/malloc/memusage.sh
+++ b/libc/malloc/memusage.sh
@@ -24,13 +24,13 @@ TEXTDOMAIN=libc
# Print usage message.
do_usage() {
- echo >&2 $"Try \`memusage --help' for more information."
+ printf >&2 $"Try \`%s --help' or `%s --usage' for more information.\n" memusage memusage
exit 1
}
# Message for missing argument.
do_missing_arg() {
- echo >&2 $"memusage: option \`$1' requires an argument"
+ printf >&2 $"%s: option '%s' requires an argument\n" memusage "$1"
do_usage
}
diff --git a/libc/manual/Makefile b/libc/manual/Makefile
index 40c83be4c..87393d7b6 100644
--- a/libc/manual/Makefile
+++ b/libc/manual/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-1999,2000,2001,2002,2003,2004,2006
+# Copyright (C) 1992-1999,2000,2001,2002,2003,2004,2006,2011
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -59,11 +59,11 @@ chapters = $(addsuffix .texi, \
resource setjmp signal startup process job nss \
users sysinfo conf crypt debug)
add-chapters = $(wildcard $(foreach d, $(add-ons), ../$d/$d.texi))
-appendices = lang.texi header.texi install.texi maint.texi contrib.texi \
- freemanuals.texi
+appendices = lang.texi header.texi install.texi maint.texi contrib.texi
+licenses = freemanuals.texi lgpl-2.1.texi fdl-1.1.texi
-include $(objpfx)texis
-$(objpfx)texis: texis.awk $(chapters) $(add-chapters) $(appendices) lesser.texi fdl.texi
+$(objpfx)texis: texis.awk $(chapters) $(add-chapters) $(appendices) $(licenses)
$(make-target-directory)
$(AWK) -f $^ > $@.T
mv -f $@.T $@
@@ -74,7 +74,9 @@ examples = $(filter-out $(foreach d, $(add-ons), ../$d/%.c.texi), \
# Kludge: implicit rule so Make knows the one command does it all.
chapters.% top-menu.%: libc-texinfo.sh $(texis) Makefile
- AWK=$(AWK) $(SHELL) $< '$(chapters)' '$(add-chapters)' '$(appendices)'
+ AWK=$(AWK) $(SHELL) $< '$(chapters)' \
+ '$(add-chapters)' \
+ '$(appendices) $(licenses)'
libc.dvi libc.pdf libc.info: chapters.texi top-menu.texi dir-add.texi \
libm-err.texi pkgvers.texi
diff --git a/libc/manual/fdl.texi b/libc/manual/fdl-1.1.texi
index b03f7b089..f093d54c0 100644
--- a/libc/manual/fdl.texi
+++ b/libc/manual/fdl-1.1.texi
@@ -1,12 +1,12 @@
-
-@appendix GNU Free Documentation License
-
-@cindex FDL, GNU Free Documentation License
+@c The GNU Free Documentation License.
@center Version 1.1, March 2000
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
@display
Copyright @copyright{} 2000 Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -399,4 +399,3 @@ to permit their use in free software.
@c Local Variables:
@c ispell-local-pdict: "ispell-dict"
@c End:
-
diff --git a/libc/manual/lesser.texi b/libc/manual/lgpl-2.1.texi
index b8c273f98..ab03d6cc3 100644
--- a/libc/manual/lesser.texi
+++ b/libc/manual/lgpl-2.1.texi
@@ -1,16 +1,12 @@
-@ifset lgpl-appendix
-@appendix GNU Lesser General Public License
-@end ifset
-@ifclear lgpl-appendix
-@unnumbered GNU Lesser General Public License
-@end ifclear
-
-@cindex LGPL, Lesser General Public License
+@c The GNU Lesser General Public License.
@center Version 2.1, February 1999
+@c This file is intended to be included within another document,
+@c hence no sectioning command or @node.
+
@display
Copyright @copyright{} 1991, 1999 Free Software Foundation, Inc.
-59 Temple Place -- Suite 330, Boston, MA 02111-1307, USA
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -20,7 +16,7 @@ as the successor of the GNU Library Public License, version 2, hence the
version number 2.1.]
@end display
-@appendixsubsec Preamble
+@subheading Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
@@ -122,13 +118,7 @@ modification follow. Pay close attention to the difference between a
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
-@iftex
-@appendixsubsec TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end iftex
-@ifinfo
-@center GNU LESSER GENERAL PUBLIC LICENSE
-@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-@end ifinfo
+@subheading TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@enumerate 0
@item
@@ -480,12 +470,7 @@ decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
-@iftex
-@heading NO WARRANTY
-@end iftex
-@ifinfo
-@center NO WARRANTY
-@end ifinfo
+@center @b{NO WARRANTY}
@item
BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
@@ -511,15 +496,10 @@ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
@end enumerate
-@iftex
-@heading END OF TERMS AND CONDITIONS
-@end iftex
-@ifinfo
-@center END OF TERMS AND CONDITIONS
-@end ifinfo
+@subheading END OF TERMS AND CONDITIONS
@page
-@appendixsubsec How to Apply These Terms to Your New Libraries
+@subheading How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
@@ -548,7 +528,7 @@ Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307,
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
USA.
@end smallexample
diff --git a/libc/manual/libc.texinfo b/libc/manual/libc.texinfo
index 3f6447d34..5456f77f3 100644
--- a/libc/manual/libc.texinfo
+++ b/libc/manual/libc.texinfo
@@ -33,7 +33,7 @@ of @cite{The GNU C Library Reference Manual}, for version
@value{VERSION} @value{PKGVERSION}.
Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002,
-2003, 2007, 2008, 2010 Free Software Foundation, Inc.
+2003, 2007, 2008, 2010, 2011 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@@ -102,12 +102,14 @@ of the GNU C Library.
@node Free Manuals, Copying, Contributors, Top
@include freemanuals.texi
-@set lgpl-appendix
@node Copying, Documentation License, Free Manuals, Top
-@include lesser.texi
+@appendix GNU Lesser General Public License
+@include lgpl-2.1.texi
@node Documentation License, Concept Index, Copying, Top
-@include fdl.texi
+@appendix GNU Free Documentation License
+@cindex FDL, GNU Free Documentation License
+@include fdl-1.1.texi
@node Concept Index, Type Index, Documentation License, Top
@unnumbered Concept Index
diff --git a/libc/nscd/nscd_getserv_r.c b/libc/nscd/nscd_getserv_r.c
index de96a5757..f9ef0565d 100644
--- a/libc/nscd/nscd_getserv_r.c
+++ b/libc/nscd/nscd_getserv_r.c
@@ -124,6 +124,7 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto,
s_name = (char *) (&found->data[0].servdata + 1);
serv_resp = found->data[0].servdata;
s_proto = s_name + serv_resp.s_name_len;
+ alloca_aliases_len = 1;
aliases_len = (uint32_t *) (s_proto + serv_resp.s_proto_len);
aliases_list = ((char *) aliases_len
+ serv_resp.s_aliases_cnt * sizeof (uint32_t));
@@ -154,7 +155,9 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto,
+ (serv_resp.s_aliases_cnt
* sizeof (uint32_t)));
if (alloca_aliases_len)
- tmp = __alloca (serv_resp.s_aliases_cnt * sizeof (uint32_t));
+ tmp = alloca_account (serv_resp.s_aliases_cnt
+ * sizeof (uint32_t),
+ alloca_used);
else
{
tmp = malloc (serv_resp.s_aliases_cnt * sizeof (uint32_t));
@@ -249,8 +252,9 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto,
+ (serv_resp.s_aliases_cnt
* sizeof (uint32_t)));
if (alloca_aliases_len)
- aliases_len = alloca (serv_resp.s_aliases_cnt
- * sizeof (uint32_t));
+ aliases_len = alloca_account (serv_resp.s_aliases_cnt
+ * sizeof (uint32_t),
+ alloca_used);
else
{
aliases_len = malloc (serv_resp.s_aliases_cnt
@@ -368,7 +372,11 @@ nscd_getserv_r (const char *crit, size_t critlen, const char *proto,
}
if (retval != -1)
- goto retry;
+ {
+ if (!alloca_aliases_len)
+ free (aliases_len);
+ goto retry;
+ }
}
if (!alloca_aliases_len)
diff --git a/libc/po/Makefile b/libc/po/Makefile
index 4ac253e3d..4d2f40652 100644
--- a/libc/po/Makefile
+++ b/libc/po/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1996-1999,2001,2002,2006,2007,2009
+# Copyright (C) 1996-1999,2001,2002,2006,2007,2009,2011
# Free Software Foundation, Inc.
# This file is part of the GNU C Library.
@@ -62,18 +62,24 @@ libc.pot: header.pot libc.pot.files
sed -e 's/VERSION/$(version)/' \
-e "s/DATE/`date +'%Y-%m-%d %H:%M'$$disp`/" \
$< > $@.new
+ egrep -v '\.ksh$$' $(word 2,$^) > $(objdir)/tmp-libc.pot-files
cd ..; $(XGETTEXT) --keyword=_ --keyword=N_ \
--add-comments=TRANS --flag=error:3:c-format \
--flag=f_print:2:c-format \
--sort-by-file --omit-header -E -n -d - \
- -f po/$(word 2,$^) >> po/$@.new
+ -f $(objdir)/tmp-libc.pot-files >> po/$@.new
+ egrep '\.ksh$$' $(word 2,$^) > $(objdir)/tmp-libc.pot-files
+ cd ..; $(XGETTEXT) --add-comments=TRANS --language=Shell \
+ --sort-by-file --omit-header -E -n -o po/$@.new -j \
+ -f $(objdir)/tmp-libc.pot-files po/$@.new
+ rm $(objdir)/tmp-libc.pot-files
mv -f $@.new $@
ifeq ($(with-cvs),yes)
test ! -d CVS || cvs $(CVSOPTS) ci -m'Regenerated from source files' $@
endif
po-sed-cmd = \
- '/\/tst-/d;$(foreach S,[ch] cxx sh bash,$(subst .,\.,/.$S\(.in\)*$$/p;))'
+ '/\/tst-/d;$(foreach S,[ch] cxx sh ksh bash,$(subst .,\.,/.$S\(.in\)*$$/p;))'
# Omit tst-* files, and get only files with the given suffixes.
libc.pot.files: FORCE
diff --git a/libc/po/libc.pot b/libc/po/libc.pot
index 71d425fc5..c2d3e48d0 100644
--- a/libc/po/libc.pot
+++ b/libc/po/libc.pot
@@ -5,8 +5,8 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.9.90\n"
-"POT-Creation-Date: 2009-02-06 12:40-0800\n"
+"Project-Id-Version: libc 2.13.90\n"
+"POT-Creation-Date: 2011-05-31 00:06-0400\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"
@@ -90,14 +90,16 @@ msgstr ""
msgid "(PROGRAM ERROR) Option should have been recognized!?"
msgstr ""
-#: assert/assert-perr.c:57
+#: assert/assert-perr.c:37
#, c-format
msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
msgstr ""
-#: assert/assert.c:57
+#: assert/assert.c:105
#, c-format
-msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+msgid ""
+"%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+"%n"
msgstr ""
#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:100 nss/makedb.c:61
@@ -130,25 +132,24 @@ msgid ""
msgstr ""
#: catgets/gencat.c:232 debug/pcprofiledump.c:208 debug/xtrace.sh:58
-#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sprof.c:360
-#: iconv/iconv_prog.c:408 iconv/iconvconfig.c:380 locale/programs/locale.c:278
-#: locale/programs/localedef.c:371 login/programs/pt_chown.c:88
-#: malloc/memusage.sh:65 malloc/memusagestat.c:533 nscd/nscd.c:415
-#: nss/getent.c:842 nss/makedb.c:231 posix/getconf.c:1030
-#: sunrpc/rpc_main.c:1494 sunrpc/rpcinfo.c:699
+#: elf/ldconfig.c:302 elf/ldd.bash.in:56 elf/sln.c:86 elf/sotruss.ksh:49
+#: elf/sprof.c:371 iconv/iconv_prog.c:408 iconv/iconvconfig.c:380
+#: locale/programs/locale.c:278 locale/programs/localedef.c:371
+#: login/programs/pt_chown.c:92 malloc/memusage.sh:65
+#: malloc/memusagestat.c:539 nscd/nscd.c:415 nss/getent.c:918 nss/makedb.c:231
+#: posix/getconf.c:1122 sunrpc/rpc_main.c:1492 sunrpc/rpcinfo.c:691
#: sysdeps/unix/sysv/linux/lddlibc4.c:62
-#, c-format
msgid ""
"For bug reporting instructions, please see:\n"
"<http://www.gnu.org/software/libc/bugs.html>.\n"
msgstr ""
#: catgets/gencat.c:246 debug/pcprofiledump.c:222 debug/xtrace.sh:66
-#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sprof.c:375
+#: elf/ldconfig.c:316 elf/ldd.bash.in:39 elf/sotruss.ksh:76 elf/sprof.c:386
#: iconv/iconv_prog.c:423 iconv/iconvconfig.c:395 locale/programs/locale.c:293
-#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
-#: malloc/memusage.sh:73 malloc/memusagestat.c:551 nscd/nscd.c:429
-#: nss/getent.c:81 nss/makedb.c:245 posix/getconf.c:1012
+#: locale/programs/localedef.c:387 login/programs/pt_chown.c:63
+#: malloc/memusage.sh:73 malloc/memusagestat.c:557 nscd/nscd.c:429
+#: nss/getent.c:87 nss/makedb.c:245 posix/getconf.c:1104
#: sysdeps/unix/sysv/linux/lddlibc4.c:69
#, c-format
msgid ""
@@ -158,11 +159,11 @@ msgid ""
msgstr ""
#: catgets/gencat.c:251 debug/pcprofiledump.c:227 debug/xtrace.sh:70
-#: elf/ldconfig.c:321 elf/sprof.c:381 iconv/iconv_prog.c:428
+#: elf/ldconfig.c:321 elf/sprof.c:392 iconv/iconv_prog.c:428
#: iconv/iconvconfig.c:400 locale/programs/locale.c:298
#: locale/programs/localedef.c:392 malloc/memusage.sh:77
-#: malloc/memusagestat.c:556 nscd/nscd.c:434 nss/getent.c:86 nss/makedb.c:250
-#: posix/getconf.c:1017
+#: malloc/memusagestat.c:562 nscd/nscd.c:434 nss/getent.c:92 nss/makedb.c:250
+#: posix/getconf.c:1109
#, c-format
msgid "Written by %s.\n"
msgstr ""
@@ -282,12 +283,12 @@ msgstr ""
msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
msgstr ""
-#: debug/xtrace.sh:33
-msgid "Try \\`xtrace --help' for more information.\\n"
+#: debug/xtrace.sh:33 malloc/memusage.sh:27
+msgid "Try \\`%s --help' or `%s --usage' for more information.\\n"
msgstr ""
#: debug/xtrace.sh:39
-msgid "xtrace: option \\`$1' requires an argument.\\n"
+msgid "%s: option '%s' requires an argument.\\n"
msgstr ""
#: debug/xtrace.sh:46
@@ -358,7 +359,7 @@ msgstr ""
msgid ", OS ABI: %s %d.%d.%d"
msgstr ""
-#: elf/cache.c:134 elf/ldconfig.c:1289
+#: elf/cache.c:134 elf/ldconfig.c:1305
#, c-format
msgid "Can't open cache file %s\n"
msgstr ""
@@ -398,11 +399,11 @@ msgstr ""
msgid "Renaming of %s to %s failed"
msgstr ""
-#: elf/dl-close.c:378 elf/dl-open.c:460
+#: elf/dl-close.c:387 elf/dl-open.c:397
msgid "cannot create scope list"
msgstr ""
-#: elf/dl-close.c:725
+#: elf/dl-close.c:767
msgid "shared object not open"
msgstr ""
@@ -410,7 +411,7 @@ msgstr ""
msgid "DST not allowed in SUID/SGID programs"
msgstr ""
-#: elf/dl-deps.c:127 elf/dl-open.c:282
+#: elf/dl-deps.c:127
msgid "empty dynamic string token substitution"
msgstr ""
@@ -425,11 +426,11 @@ msgstr ""
msgid "cannot allocate dependency list"
msgstr ""
-#: elf/dl-deps.c:510 elf/dl-deps.c:565
+#: elf/dl-deps.c:514 elf/dl-deps.c:574
msgid "cannot allocate symbol search list"
msgstr ""
-#: elf/dl-deps.c:550
+#: elf/dl-deps.c:554
msgid "Filters not supported with LD_TRACE_PRELINKING"
msgstr ""
@@ -453,205 +454,213 @@ msgstr ""
msgid "internal error: symidx out of range of fptr table"
msgstr ""
-#: elf/dl-load.c:372
+#: elf/dl-load.c:471
msgid "cannot allocate name record"
msgstr ""
-#: elf/dl-load.c:474 elf/dl-load.c:582 elf/dl-load.c:667 elf/dl-load.c:780
+#: elf/dl-load.c:548 elf/dl-load.c:664 elf/dl-load.c:749 elf/dl-load.c:862
msgid "cannot create cache for search path"
msgstr ""
-#: elf/dl-load.c:565
+#: elf/dl-load.c:639
msgid "cannot create RUNPATH/RPATH copy"
msgstr ""
-#: elf/dl-load.c:653
+#: elf/dl-load.c:735
msgid "cannot create search path array"
msgstr ""
-#: elf/dl-load.c:864
+#: elf/dl-load.c:931
msgid "cannot stat shared object"
msgstr ""
-#: elf/dl-load.c:934
+#: elf/dl-load.c:1009
msgid "cannot open zero fill device"
msgstr ""
-#: elf/dl-load.c:979 elf/dl-load.c:2215
+#: elf/dl-load.c:1055 elf/dl-load.c:2313
msgid "cannot create shared object descriptor"
msgstr ""
-#: elf/dl-load.c:998 elf/dl-load.c:1647 elf/dl-load.c:1739
+#: elf/dl-load.c:1074 elf/dl-load.c:1730 elf/dl-load.c:1833
msgid "cannot read file data"
msgstr ""
-#: elf/dl-load.c:1042
+#: elf/dl-load.c:1120
msgid "ELF load command alignment not page-aligned"
msgstr ""
-#: elf/dl-load.c:1049
+#: elf/dl-load.c:1127
msgid "ELF load command address/offset not properly aligned"
msgstr ""
-#: elf/dl-load.c:1132
+#: elf/dl-load.c:1210
msgid "cannot allocate TLS data structures for initial thread"
msgstr ""
-#: elf/dl-load.c:1155
+#: elf/dl-load.c:1233
msgid "cannot handle TLS data"
msgstr ""
-#: elf/dl-load.c:1174
+#: elf/dl-load.c:1252
msgid "object file has no loadable segments"
msgstr ""
-#: elf/dl-load.c:1210
+#: elf/dl-load.c:1288
msgid "failed to map segment from shared object"
msgstr ""
-#: elf/dl-load.c:1236
+#: elf/dl-load.c:1314
msgid "cannot dynamically load executable"
msgstr ""
-#: elf/dl-load.c:1298
+#: elf/dl-load.c:1376
msgid "cannot change memory protections"
msgstr ""
-#: elf/dl-load.c:1317
+#: elf/dl-load.c:1395
msgid "cannot map zero-fill pages"
msgstr ""
-#: elf/dl-load.c:1331
+#: elf/dl-load.c:1409
msgid "object file has no dynamic section"
msgstr ""
-#: elf/dl-load.c:1354
+#: elf/dl-load.c:1432
msgid "shared object cannot be dlopen()ed"
msgstr ""
-#: elf/dl-load.c:1367
+#: elf/dl-load.c:1445
msgid "cannot allocate memory for program header"
msgstr ""
-#: elf/dl-load.c:1384 elf/dl-open.c:218
+#: elf/dl-load.c:1462 elf/dl-open.c:180
msgid "invalid caller"
msgstr ""
-#: elf/dl-load.c:1423
+#: elf/dl-load.c:1501
msgid "cannot enable executable stack as shared object requires"
msgstr ""
-#: elf/dl-load.c:1436
+#: elf/dl-load.c:1514
msgid "cannot close file descriptor"
msgstr ""
-#: elf/dl-load.c:1647
+#: elf/dl-load.c:1730
msgid "file too short"
msgstr ""
-#: elf/dl-load.c:1676
+#: elf/dl-load.c:1766
msgid "invalid ELF header"
msgstr ""
-#: elf/dl-load.c:1688
+#: elf/dl-load.c:1778
msgid "ELF file data encoding not big-endian"
msgstr ""
-#: elf/dl-load.c:1690
+#: elf/dl-load.c:1780
msgid "ELF file data encoding not little-endian"
msgstr ""
-#: elf/dl-load.c:1694
+#: elf/dl-load.c:1784
msgid "ELF file version ident does not match current one"
msgstr ""
-#: elf/dl-load.c:1698
+#: elf/dl-load.c:1788
msgid "ELF file OS ABI invalid"
msgstr ""
-#: elf/dl-load.c:1700
+#: elf/dl-load.c:1791
msgid "ELF file ABI version invalid"
msgstr ""
-#: elf/dl-load.c:1703
+#: elf/dl-load.c:1794
+msgid "nonzero padding in e_ident"
+msgstr ""
+
+#: elf/dl-load.c:1797
msgid "internal error"
msgstr ""
-#: elf/dl-load.c:1710
+#: elf/dl-load.c:1804
msgid "ELF file version does not match current one"
msgstr ""
-#: elf/dl-load.c:1718
+#: elf/dl-load.c:1812
msgid "only ET_DYN and ET_EXEC can be loaded"
msgstr ""
-#: elf/dl-load.c:1724
+#: elf/dl-load.c:1818
msgid "ELF file's phentsize not the expected size"
msgstr ""
-#: elf/dl-load.c:2231
+#: elf/dl-load.c:2332
msgid "wrong ELF class: ELFCLASS64"
msgstr ""
-#: elf/dl-load.c:2232
+#: elf/dl-load.c:2333
msgid "wrong ELF class: ELFCLASS32"
msgstr ""
-#: elf/dl-load.c:2235
+#: elf/dl-load.c:2336
msgid "cannot open shared object file"
msgstr ""
-#: elf/dl-lookup.c:356
+#: elf/dl-lookup.c:757
msgid "relocation error"
msgstr ""
-#: elf/dl-lookup.c:384
+#: elf/dl-lookup.c:785
msgid "symbol lookup error"
msgstr ""
-#: elf/dl-open.c:114
+#: elf/dl-open.c:115
msgid "cannot extend global scope"
msgstr ""
-#: elf/dl-open.c:512
+#: elf/dl-open.c:440
msgid "TLS generation counter wrapped! Please report this."
msgstr ""
-#: elf/dl-open.c:549
+#: elf/dl-open.c:462
+msgid "cannot load any more object with static TLS"
+msgstr ""
+
+#: elf/dl-open.c:511
msgid "invalid mode for dlopen()"
msgstr ""
-#: elf/dl-open.c:566
+#: elf/dl-open.c:528
msgid "no more namespaces available for dlmopen()"
msgstr ""
-#: elf/dl-open.c:579
+#: elf/dl-open.c:547
msgid "invalid target namespace in dlmopen()"
msgstr ""
-#: elf/dl-reloc.c:121
+#: elf/dl-reloc.c:120
msgid "cannot allocate memory in static TLS block"
msgstr ""
-#: elf/dl-reloc.c:211
+#: elf/dl-reloc.c:212
msgid "cannot make segment writable for relocation"
msgstr ""
-#: elf/dl-reloc.c:277
+#: elf/dl-reloc.c:275
#, c-format
msgid "%s: no PLTREL found in object %s\n"
msgstr ""
-#: elf/dl-reloc.c:288
+#: elf/dl-reloc.c:286
#, c-format
msgid "%s: out of memory to store relocation results for %s\n"
msgstr ""
-#: elf/dl-reloc.c:304
+#: elf/dl-reloc.c:302
msgid "cannot restore segment prot after reloc"
msgstr ""
-#: elf/dl-reloc.c:329
+#: elf/dl-reloc.c:331
msgid "cannot apply additional memory protection after relocation"
msgstr ""
@@ -659,14 +668,18 @@ msgstr ""
msgid "RTLD_NEXT used in code not dynamically loaded"
msgstr ""
-#: elf/dl-sysdep.c:481 elf/dl-sysdep.c:493
+#: elf/dl-sysdep.c:488 elf/dl-sysdep.c:500
msgid "cannot create capability list"
msgstr ""
-#: elf/dl-tls.c:864
+#: elf/dl-tls.c:861
msgid "cannot create TLS data structures"
msgstr ""
+#: elf/dl-version.c:172
+msgid "version lookup error"
+msgstr ""
+
#: elf/dl-version.c:303
msgid "cannot allocate version reference table"
msgstr ""
@@ -746,147 +759,147 @@ msgstr ""
msgid "%s is not a known library type"
msgstr ""
-#: elf/ldconfig.c:404
+#: elf/ldconfig.c:407
#, c-format
msgid "Can't stat %s"
msgstr ""
-#: elf/ldconfig.c:478
+#: elf/ldconfig.c:481
#, c-format
msgid "Can't stat %s\n"
msgstr ""
-#: elf/ldconfig.c:488
+#: elf/ldconfig.c:491
#, c-format
msgid "%s is not a symbolic link\n"
msgstr ""
-#: elf/ldconfig.c:507
+#: elf/ldconfig.c:510
#, c-format
msgid "Can't unlink %s"
msgstr ""
-#: elf/ldconfig.c:513
+#: elf/ldconfig.c:516
#, c-format
msgid "Can't link %s to %s"
msgstr ""
-#: elf/ldconfig.c:519
+#: elf/ldconfig.c:522
msgid " (changed)\n"
msgstr ""
-#: elf/ldconfig.c:521
+#: elf/ldconfig.c:524
msgid " (SKIPPED)\n"
msgstr ""
-#: elf/ldconfig.c:576
+#: elf/ldconfig.c:579
#, c-format
msgid "Can't find %s"
msgstr ""
-#: elf/ldconfig.c:592 elf/ldconfig.c:765 elf/ldconfig.c:813 elf/ldconfig.c:847
+#: elf/ldconfig.c:595 elf/ldconfig.c:768 elf/ldconfig.c:827 elf/ldconfig.c:861
#, c-format
msgid "Cannot lstat %s"
msgstr ""
-#: elf/ldconfig.c:599
+#: elf/ldconfig.c:602
#, c-format
msgid "Ignored file %s since it is not a regular file."
msgstr ""
-#: elf/ldconfig.c:608
+#: elf/ldconfig.c:611
#, c-format
msgid "No link created since soname could not be found for %s"
msgstr ""
-#: elf/ldconfig.c:691
+#: elf/ldconfig.c:694
#, c-format
msgid "Can't open directory %s"
msgstr ""
-#: elf/ldconfig.c:779
+#: elf/ldconfig.c:786 elf/ldconfig.c:848 elf/readlib.c:91
#, c-format
-msgid "Cannot stat %s"
+msgid "Input file %s not found.\n"
msgstr ""
-#: elf/ldconfig.c:834 elf/readlib.c:91
+#: elf/ldconfig.c:793
#, c-format
-msgid "Input file %s not found.\n"
+msgid "Cannot stat %s"
msgstr ""
-#: elf/ldconfig.c:908
+#: elf/ldconfig.c:922
#, c-format
msgid "libc5 library %s in wrong directory"
msgstr ""
-#: elf/ldconfig.c:911
+#: elf/ldconfig.c:925
#, c-format
msgid "libc6 library %s in wrong directory"
msgstr ""
-#: elf/ldconfig.c:914
+#: elf/ldconfig.c:928
#, c-format
msgid "libc4 library %s in wrong directory"
msgstr ""
-#: elf/ldconfig.c:942
+#: elf/ldconfig.c:956
#, c-format
msgid ""
"libraries %s and %s in directory %s have same soname but different type."
msgstr ""
-#: elf/ldconfig.c:1051
+#: elf/ldconfig.c:1065
#, c-format
msgid "Can't open configuration file %s"
msgstr ""
-#: elf/ldconfig.c:1115
+#: elf/ldconfig.c:1129
#, c-format
msgid "%s:%u: bad syntax in hwcap line"
msgstr ""
-#: elf/ldconfig.c:1121
+#: elf/ldconfig.c:1135
#, c-format
msgid "%s:%u: hwcap index %lu above maximum %u"
msgstr ""
-#: elf/ldconfig.c:1128 elf/ldconfig.c:1136
+#: elf/ldconfig.c:1142 elf/ldconfig.c:1150
#, c-format
msgid "%s:%u: hwcap index %lu already defined as %s"
msgstr ""
-#: elf/ldconfig.c:1139
+#: elf/ldconfig.c:1153
#, c-format
msgid "%s:%u: duplicate hwcap %lu %s"
msgstr ""
-#: elf/ldconfig.c:1161
+#: elf/ldconfig.c:1175
#, c-format
msgid "need absolute file name for configuration file when using -r"
msgstr ""
-#: elf/ldconfig.c:1168 locale/programs/xmalloc.c:70 malloc/obstack.c:434
-#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1177
+#: elf/ldconfig.c:1182 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:1077 posix/getconf.c:1297
#, c-format
msgid "memory exhausted"
msgstr ""
-#: elf/ldconfig.c:1198
+#: elf/ldconfig.c:1214
#, c-format
msgid "%s:%u: cannot read directory %s"
msgstr ""
-#: elf/ldconfig.c:1242
+#: elf/ldconfig.c:1258
#, c-format
msgid "relative path `%s' used to build cache"
msgstr ""
-#: elf/ldconfig.c:1268
+#: elf/ldconfig.c:1284
#, c-format
msgid "Can't chdir to /"
msgstr ""
-#: elf/ldconfig.c:1310
+#: elf/ldconfig.c:1325
#, c-format
msgid "Can't open cache file directory %s\n"
msgstr ""
@@ -929,7 +942,7 @@ msgstr ""
msgid "No such file or directory"
msgstr ""
-#: elf/ldd.bash.in:153 inet/rcmd.c:483
+#: elf/ldd.bash.in:153 inet/rcmd.c:488
msgid "not regular file"
msgstr ""
@@ -1041,6 +1054,55 @@ msgstr ""
msgid "Invalid link from \"%s\" to \"%s\": %s\n"
msgstr ""
+#: elf/sotruss.ksh:33
+#, sh-format
+msgid ""
+"Usage: sotruss [OPTION...] [--] EXECUTABLE [EXECUTABLE-OPTION...]\n"
+" -F, --from FROMLIST trace calls from objects on FORMLIST\n"
+" -T, --to TOLIST trace calls to objects on TOLIST\n"
+"\n"
+" -e, --exit also show exits from the function calls\n"
+" -f, --follow trace child processes\n"
+" -o, --output FILENAME write output to FILENAME (or FILENAME.$PID in "
+"case\n"
+"\t\t\t -f is also used) instead of standard error\n"
+"\n"
+" --help print this help and exit\n"
+" --version print version information and exit"
+msgstr ""
+
+#: elf/sotruss.ksh:46
+msgid ""
+"Mandatory arguments to long options are also mandatory for any corresponding"
+"\\nshort options.\\n"
+msgstr ""
+
+#: elf/sotruss.ksh:56
+msgid "%s: option requires an argument -- '%s'\\n"
+msgstr ""
+
+#: elf/sotruss.ksh:57 elf/sotruss.ksh:68 elf/sotruss.ksh:134
+msgid "Try \\`%s --help' or \\`%s --usage' for more information.\\n"
+msgstr ""
+
+#: elf/sotruss.ksh:62
+msgid "%s: option is ambiguous; possibilities:"
+msgstr ""
+
+#: elf/sotruss.ksh:80
+msgid "Written by %s.\\n"
+msgstr ""
+
+#: elf/sotruss.ksh:87
+msgid ""
+"Usage: %s [-ef] [-F FROMLIST] [-o FILENAME] [-T TOLIST] [--exit]\n"
+"\t [--follow] [--from FROMLIST] [--output FILENAME] [--to TOLIST]\\n"
+msgstr ""
+
+#: elf/sotruss.ksh:133
+msgid "%s: unrecognized option '%c%s'\\n"
+msgstr ""
+
#: elf/sprof.c:77
msgid "Output selection:"
msgstr ""
@@ -1065,92 +1127,92 @@ msgstr ""
msgid "SHOBJ [PROFDATA]"
msgstr ""
-#: elf/sprof.c:420
+#: elf/sprof.c:431
#, c-format
msgid "failed to load shared object `%s'"
msgstr ""
-#: elf/sprof.c:429
+#: elf/sprof.c:440
#, c-format
msgid "cannot create internal descriptors"
msgstr ""
-#: elf/sprof.c:548
+#: elf/sprof.c:559
#, c-format
msgid "Reopening shared object `%s' failed"
msgstr ""
-#: elf/sprof.c:555 elf/sprof.c:649
+#: elf/sprof.c:566 elf/sprof.c:660
#, c-format
msgid "reading of section headers failed"
msgstr ""
-#: elf/sprof.c:563 elf/sprof.c:657
+#: elf/sprof.c:574 elf/sprof.c:668
#, c-format
msgid "reading of section header string table failed"
msgstr ""
-#: elf/sprof.c:589
+#: elf/sprof.c:600
#, c-format
msgid "*** Cannot read debuginfo file name: %m\n"
msgstr ""
-#: elf/sprof.c:609
+#: elf/sprof.c:620
#, c-format
msgid "cannot determine file name"
msgstr ""
-#: elf/sprof.c:642
+#: elf/sprof.c:653
#, c-format
msgid "reading of ELF header failed"
msgstr ""
-#: elf/sprof.c:678
+#: elf/sprof.c:689
#, c-format
msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
msgstr ""
-#: elf/sprof.c:708
+#: elf/sprof.c:719
#, c-format
msgid "failed to load symbol data"
msgstr ""
-#: elf/sprof.c:775
+#: elf/sprof.c:784
#, c-format
msgid "cannot load profiling data"
msgstr ""
-#: elf/sprof.c:784
+#: elf/sprof.c:793
#, c-format
msgid "while stat'ing profiling data file"
msgstr ""
-#: elf/sprof.c:792
+#: elf/sprof.c:801
#, c-format
msgid "profiling data file `%s' does not match shared object `%s'"
msgstr ""
-#: elf/sprof.c:803
+#: elf/sprof.c:812
#, c-format
msgid "failed to mmap the profiling data file"
msgstr ""
-#: elf/sprof.c:811
+#: elf/sprof.c:820
#, c-format
msgid "error while closing the profiling data file"
msgstr ""
-#: elf/sprof.c:820 elf/sprof.c:890
+#: elf/sprof.c:829 elf/sprof.c:927
#, c-format
msgid "cannot create internal descriptor"
msgstr ""
-#: elf/sprof.c:866
+#: elf/sprof.c:903
#, c-format
msgid "`%s' is no correct profile data file for `%s'"
msgstr ""
-#: elf/sprof.c:1047 elf/sprof.c:1105
+#: elf/sprof.c:1084 elf/sprof.c:1142
#, c-format
msgid "cannot allocate symbol data"
msgstr ""
@@ -1336,68 +1398,68 @@ msgstr ""
msgid "cannot generate output file"
msgstr ""
-#: inet/rcmd.c:157
+#: inet/rcmd.c:163
msgid "rcmd: Cannot allocate memory\n"
msgstr ""
-#: inet/rcmd.c:172
+#: inet/rcmd.c:178
msgid "rcmd: socket: All ports in use\n"
msgstr ""
-#: inet/rcmd.c:200
+#: inet/rcmd.c:206
#, c-format
msgid "connect to address %s: "
msgstr ""
-#: inet/rcmd.c:213
+#: inet/rcmd.c:219
#, c-format
msgid "Trying %s...\n"
msgstr ""
-#: inet/rcmd.c:249
+#: inet/rcmd.c:255
#, c-format
msgid "rcmd: write (setting up stderr): %m\n"
msgstr ""
-#: inet/rcmd.c:265
+#: inet/rcmd.c:271
#, c-format
msgid "rcmd: poll (setting up stderr): %m\n"
msgstr ""
-#: inet/rcmd.c:268
+#: inet/rcmd.c:274
msgid "poll: protocol failure in circuit setup\n"
msgstr ""
-#: inet/rcmd.c:301
+#: inet/rcmd.c:306
msgid "socket: protocol failure in circuit setup\n"
msgstr ""
-#: inet/rcmd.c:325
+#: inet/rcmd.c:330
#, c-format
msgid "rcmd: %s: short read"
msgstr ""
-#: inet/rcmd.c:481
+#: inet/rcmd.c:486
msgid "lstat failed"
msgstr ""
-#: inet/rcmd.c:488
+#: inet/rcmd.c:493
msgid "cannot open"
msgstr ""
-#: inet/rcmd.c:490
+#: inet/rcmd.c:495
msgid "fstat failed"
msgstr ""
-#: inet/rcmd.c:492
+#: inet/rcmd.c:497
msgid "bad owner"
msgstr ""
-#: inet/rcmd.c:494
+#: inet/rcmd.c:499
msgid "writeable by other than owner"
msgstr ""
-#: inet/rcmd.c:496
+#: inet/rcmd.c:501
msgid "hard linked somewhere"
msgstr ""
@@ -1518,8 +1580,8 @@ msgid "no symbolic name given for end of range"
msgstr ""
#: locale/programs/charmap.c:610 locale/programs/ld-address.c:602
-#: locale/programs/ld-collate.c:2767 locale/programs/ld-collate.c:3924
-#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
+#: locale/programs/ld-collate.c:2769 locale/programs/ld-collate.c:3927
+#: locale/programs/ld-ctype.c:2257 locale/programs/ld-ctype.c:3009
#: locale/programs/ld-identification.c:452
#: locale/programs/ld-measurement.c:238 locale/programs/ld-messages.c:332
#: locale/programs/ld-monetary.c:943 locale/programs/ld-name.c:307
@@ -1545,8 +1607,8 @@ msgid "%s: error in state machine"
msgstr ""
#: locale/programs/charmap.c:850 locale/programs/ld-address.c:618
-#: locale/programs/ld-collate.c:2764 locale/programs/ld-collate.c:4117
-#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
+#: locale/programs/ld-collate.c:2766 locale/programs/ld-collate.c:4120
+#: locale/programs/ld-ctype.c:2254 locale/programs/ld-ctype.c:3026
#: locale/programs/ld-identification.c:468
#: locale/programs/ld-measurement.c:254 locale/programs/ld-messages.c:348
#: locale/programs/ld-monetary.c:959 locale/programs/ld-name.c:323
@@ -1569,7 +1631,7 @@ msgid ""
"same: %d vs %d"
msgstr ""
-#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3044
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:3046
#: locale/programs/repertoire.c:419
msgid "invalid names for character range"
msgstr ""
@@ -1591,8 +1653,8 @@ msgstr ""
msgid "resulting bytes for range not representable."
msgstr ""
-#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1556
-#: locale/programs/ld-ctype.c:420 locale/programs/ld-identification.c:133
+#: locale/programs/ld-address.c:135 locale/programs/ld-collate.c:1558
+#: locale/programs/ld-ctype.c:421 locale/programs/ld-identification.c:133
#: locale/programs/ld-measurement.c:94 locale/programs/ld-messages.c:97
#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94
#: locale/programs/ld-numeric.c:98 locale/programs/ld-paper.c:91
@@ -1656,7 +1718,7 @@ msgid "%s: numeric country code `%d' not valid"
msgstr ""
#: locale/programs/ld-address.c:510 locale/programs/ld-address.c:547
-#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2608
+#: locale/programs/ld-address.c:585 locale/programs/ld-ctype.c:2633
#: locale/programs/ld-identification.c:364
#: locale/programs/ld-measurement.c:221 locale/programs/ld-messages.c:301
#: locale/programs/ld-monetary.c:701 locale/programs/ld-monetary.c:736
@@ -1678,8 +1740,8 @@ msgstr ""
msgid "%s: unknown character in field `%s'"
msgstr ""
-#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3922
-#: locale/programs/ld-ctype.c:2981 locale/programs/ld-identification.c:449
+#: locale/programs/ld-address.c:599 locale/programs/ld-collate.c:3925
+#: locale/programs/ld-ctype.c:3006 locale/programs/ld-identification.c:449
#: locale/programs/ld-measurement.c:235 locale/programs/ld-messages.c:330
#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:305
#: locale/programs/ld-numeric.c:366 locale/programs/ld-paper.c:239
@@ -1688,12 +1750,12 @@ msgstr ""
msgid "%s: incomplete `END' line"
msgstr ""
-#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:542
-#: locale/programs/ld-collate.c:594 locale/programs/ld-collate.c:890
-#: locale/programs/ld-collate.c:903 locale/programs/ld-collate.c:2733
-#: locale/programs/ld-collate.c:2754 locale/programs/ld-collate.c:4107
-#: locale/programs/ld-ctype.c:1960 locale/programs/ld-ctype.c:2219
-#: locale/programs/ld-ctype.c:2806 locale/programs/ld-ctype.c:2992
+#: locale/programs/ld-address.c:609 locale/programs/ld-collate.c:544
+#: locale/programs/ld-collate.c:596 locale/programs/ld-collate.c:892
+#: locale/programs/ld-collate.c:905 locale/programs/ld-collate.c:2735
+#: locale/programs/ld-collate.c:2756 locale/programs/ld-collate.c:4110
+#: locale/programs/ld-ctype.c:1985 locale/programs/ld-ctype.c:2244
+#: locale/programs/ld-ctype.c:2831 locale/programs/ld-ctype.c:3017
#: locale/programs/ld-identification.c:459
#: locale/programs/ld-measurement.c:245 locale/programs/ld-messages.c:339
#: locale/programs/ld-monetary.c:950 locale/programs/ld-name.c:314
@@ -1703,485 +1765,485 @@ msgstr ""
msgid "%s: syntax error"
msgstr ""
-#: locale/programs/ld-collate.c:417
+#: locale/programs/ld-collate.c:419
#, c-format
msgid "`%.*s' already defined in charmap"
msgstr ""
-#: locale/programs/ld-collate.c:426
+#: locale/programs/ld-collate.c:428
#, c-format
msgid "`%.*s' already defined in repertoire"
msgstr ""
-#: locale/programs/ld-collate.c:433
+#: locale/programs/ld-collate.c:435
#, c-format
msgid "`%.*s' already defined as collating symbol"
msgstr ""
-#: locale/programs/ld-collate.c:440
+#: locale/programs/ld-collate.c:442
#, c-format
msgid "`%.*s' already defined as collating element"
msgstr ""
-#: locale/programs/ld-collate.c:471 locale/programs/ld-collate.c:497
+#: locale/programs/ld-collate.c:473 locale/programs/ld-collate.c:499
#, c-format
msgid "%s: `forward' and `backward' are mutually excluding each other"
msgstr ""
-#: locale/programs/ld-collate.c:481 locale/programs/ld-collate.c:507
-#: locale/programs/ld-collate.c:523
+#: locale/programs/ld-collate.c:483 locale/programs/ld-collate.c:509
+#: locale/programs/ld-collate.c:525
#, c-format
msgid "%s: `%s' mentioned more than once in definition of weight %d"
msgstr ""
-#: locale/programs/ld-collate.c:579
+#: locale/programs/ld-collate.c:581
#, c-format
msgid "%s: too many rules; first entry only had %d"
msgstr ""
-#: locale/programs/ld-collate.c:615
+#: locale/programs/ld-collate.c:617
#, c-format
msgid "%s: not enough sorting rules"
msgstr ""
-#: locale/programs/ld-collate.c:780
+#: locale/programs/ld-collate.c:782
#, c-format
msgid "%s: empty weight string not allowed"
msgstr ""
-#: locale/programs/ld-collate.c:875
+#: locale/programs/ld-collate.c:877
#, c-format
msgid "%s: weights must use the same ellipsis symbol as the name"
msgstr ""
-#: locale/programs/ld-collate.c:931
+#: locale/programs/ld-collate.c:933
#, c-format
msgid "%s: too many values"
msgstr ""
-#: locale/programs/ld-collate.c:1051 locale/programs/ld-collate.c:1226
+#: locale/programs/ld-collate.c:1053 locale/programs/ld-collate.c:1228
#, c-format
msgid "order for `%.*s' already defined at %s:%Zu"
msgstr ""
-#: locale/programs/ld-collate.c:1101
+#: locale/programs/ld-collate.c:1103
#, c-format
msgid "%s: the start and the end symbol of a range must stand for characters"
msgstr ""
-#: locale/programs/ld-collate.c:1128
+#: locale/programs/ld-collate.c:1130
#, c-format
msgid ""
"%s: byte sequences of first and last character must have the same length"
msgstr ""
-#: locale/programs/ld-collate.c:1170
+#: locale/programs/ld-collate.c:1172
#, c-format
msgid ""
"%s: byte sequence of first character of range is not lower than that of the "
"last character"
msgstr ""
-#: locale/programs/ld-collate.c:1295
+#: locale/programs/ld-collate.c:1297
#, c-format
msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
msgstr ""
-#: locale/programs/ld-collate.c:1299
+#: locale/programs/ld-collate.c:1301
#, c-format
msgid ""
"%s: symbolic range ellipsis must not be directly followed by `order_end'"
msgstr ""
-#: locale/programs/ld-collate.c:1319 locale/programs/ld-ctype.c:1477
+#: locale/programs/ld-collate.c:1321 locale/programs/ld-ctype.c:1502
#, c-format
msgid "`%s' and `%.*s' are not valid names for symbolic range"
msgstr ""
-#: locale/programs/ld-collate.c:1369 locale/programs/ld-collate.c:3858
+#: locale/programs/ld-collate.c:1371 locale/programs/ld-collate.c:3861
#, c-format
msgid "%s: order for `%.*s' already defined at %s:%Zu"
msgstr ""
-#: locale/programs/ld-collate.c:1378
+#: locale/programs/ld-collate.c:1380
#, c-format
msgid "%s: `%s' must be a character"
msgstr ""
-#: locale/programs/ld-collate.c:1573
+#: locale/programs/ld-collate.c:1575
#, c-format
msgid ""
"%s: `position' must be used for a specific level in all sections or none"
msgstr ""
-#: locale/programs/ld-collate.c:1598
+#: locale/programs/ld-collate.c:1600
#, c-format
msgid "symbol `%s' not defined"
msgstr ""
-#: locale/programs/ld-collate.c:1674 locale/programs/ld-collate.c:1780
+#: locale/programs/ld-collate.c:1676 locale/programs/ld-collate.c:1782
#, c-format
msgid "symbol `%s' has the same encoding as"
msgstr ""
-#: locale/programs/ld-collate.c:1678 locale/programs/ld-collate.c:1784
+#: locale/programs/ld-collate.c:1680 locale/programs/ld-collate.c:1786
#, c-format
msgid "symbol `%s'"
msgstr ""
-#: locale/programs/ld-collate.c:1826
+#: locale/programs/ld-collate.c:1828
#, c-format
msgid "no definition of `UNDEFINED'"
msgstr ""
-#: locale/programs/ld-collate.c:1855
+#: locale/programs/ld-collate.c:1857
#, c-format
msgid "too many errors; giving up"
msgstr ""
-#: locale/programs/ld-collate.c:2659 locale/programs/ld-collate.c:4046
+#: locale/programs/ld-collate.c:2661 locale/programs/ld-collate.c:4049
#, c-format
msgid "%s: nested conditionals not supported"
msgstr ""
-#: locale/programs/ld-collate.c:2677
+#: locale/programs/ld-collate.c:2679
#, c-format
msgid "%s: more then one 'else'"
msgstr ""
-#: locale/programs/ld-collate.c:2852
+#: locale/programs/ld-collate.c:2854
#, c-format
msgid "%s: duplicate definition of `%s'"
msgstr ""
-#: locale/programs/ld-collate.c:2888
+#: locale/programs/ld-collate.c:2890
#, c-format
msgid "%s: duplicate declaration of section `%s'"
msgstr ""
-#: locale/programs/ld-collate.c:3024
+#: locale/programs/ld-collate.c:3026
#, c-format
msgid "%s: unknown character in collating symbol name"
msgstr ""
-#: locale/programs/ld-collate.c:3153
+#: locale/programs/ld-collate.c:3155
#, c-format
msgid "%s: unknown character in equivalent definition name"
msgstr ""
-#: locale/programs/ld-collate.c:3164
+#: locale/programs/ld-collate.c:3166
#, c-format
msgid "%s: unknown character in equivalent definition value"
msgstr ""
-#: locale/programs/ld-collate.c:3174
+#: locale/programs/ld-collate.c:3176
#, c-format
msgid "%s: unknown symbol `%s' in equivalent definition"
msgstr ""
-#: locale/programs/ld-collate.c:3183
+#: locale/programs/ld-collate.c:3185
msgid "error while adding equivalent collating symbol"
msgstr ""
-#: locale/programs/ld-collate.c:3221
+#: locale/programs/ld-collate.c:3223
#, c-format
msgid "duplicate definition of script `%s'"
msgstr ""
-#: locale/programs/ld-collate.c:3269
+#: locale/programs/ld-collate.c:3271
#, c-format
msgid "%s: unknown section name `%.*s'"
msgstr ""
-#: locale/programs/ld-collate.c:3298
+#: locale/programs/ld-collate.c:3300
#, c-format
msgid "%s: multiple order definitions for section `%s'"
msgstr ""
-#: locale/programs/ld-collate.c:3326
+#: locale/programs/ld-collate.c:3328
#, c-format
msgid "%s: invalid number of sorting rules"
msgstr ""
-#: locale/programs/ld-collate.c:3353
+#: locale/programs/ld-collate.c:3355
#, c-format
msgid "%s: multiple order definitions for unnamed section"
msgstr ""
-#: locale/programs/ld-collate.c:3407 locale/programs/ld-collate.c:3537
-#: locale/programs/ld-collate.c:3900
+#: locale/programs/ld-collate.c:3410 locale/programs/ld-collate.c:3540
+#: locale/programs/ld-collate.c:3903
#, c-format
msgid "%s: missing `order_end' keyword"
msgstr ""
-#: locale/programs/ld-collate.c:3470
+#: locale/programs/ld-collate.c:3473
#, c-format
msgid "%s: order for collating symbol %.*s not yet defined"
msgstr ""
-#: locale/programs/ld-collate.c:3488
+#: locale/programs/ld-collate.c:3491
#, c-format
msgid "%s: order for collating element %.*s not yet defined"
msgstr ""
-#: locale/programs/ld-collate.c:3499
+#: locale/programs/ld-collate.c:3502
#, c-format
msgid "%s: cannot reorder after %.*s: symbol not known"
msgstr ""
-#: locale/programs/ld-collate.c:3551 locale/programs/ld-collate.c:3912
+#: locale/programs/ld-collate.c:3554 locale/programs/ld-collate.c:3915
#, c-format
msgid "%s: missing `reorder-end' keyword"
msgstr ""
-#: locale/programs/ld-collate.c:3585 locale/programs/ld-collate.c:3783
+#: locale/programs/ld-collate.c:3588 locale/programs/ld-collate.c:3786
#, c-format
msgid "%s: section `%.*s' not known"
msgstr ""
-#: locale/programs/ld-collate.c:3650
+#: locale/programs/ld-collate.c:3653
#, c-format
msgid "%s: bad symbol <%.*s>"
msgstr ""
-#: locale/programs/ld-collate.c:3846
+#: locale/programs/ld-collate.c:3849
#, c-format
msgid "%s: cannot have `%s' as end of ellipsis range"
msgstr ""
-#: locale/programs/ld-collate.c:3896
+#: locale/programs/ld-collate.c:3899
#, c-format
msgid "%s: empty category description not allowed"
msgstr ""
-#: locale/programs/ld-collate.c:3915
+#: locale/programs/ld-collate.c:3918
#, c-format
msgid "%s: missing `reorder-sections-end' keyword"
msgstr ""
-#: locale/programs/ld-collate.c:4079
+#: locale/programs/ld-collate.c:4082
#, c-format
msgid "%s: '%s' without matching 'ifdef' or 'ifndef'"
msgstr ""
-#: locale/programs/ld-collate.c:4097
+#: locale/programs/ld-collate.c:4100
#, c-format
msgid "%s: 'endif' without matching 'ifdef' or 'ifndef'"
msgstr ""
-#: locale/programs/ld-ctype.c:439
+#: locale/programs/ld-ctype.c:440
#, c-format
msgid "No character set name specified in charmap"
msgstr ""
-#: locale/programs/ld-ctype.c:468
+#: 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:483
+#: 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:497 locale/programs/ld-ctype.c:555
+#: 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:526
+#: 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:542
+#: 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:572 locale/programs/ld-ctype.c:610
+#: 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:584 locale/programs/ld-ctype.c:621
+#: 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:599
+#: locale/programs/ld-ctype.c:600
#, c-format
msgid "character <SP> not defined in character map"
msgstr ""
-#: locale/programs/ld-ctype.c:714
+#: locale/programs/ld-ctype.c:736
#, c-format
msgid "`digit' category has not entries in groups of ten"
msgstr ""
-#: locale/programs/ld-ctype.c:763
+#: locale/programs/ld-ctype.c:785
#, c-format
msgid "no input digits defined and none of the standard names in the charmap"
msgstr ""
-#: locale/programs/ld-ctype.c:828
+#: locale/programs/ld-ctype.c:850
#, c-format
msgid "not all characters used in `outdigit' are available in the charmap"
msgstr ""
-#: locale/programs/ld-ctype.c:845
+#: locale/programs/ld-ctype.c:867
#, c-format
msgid "not all characters used in `outdigit' are available in the repertoire"
msgstr ""
-#: locale/programs/ld-ctype.c:1245
+#: locale/programs/ld-ctype.c:1270
#, c-format
msgid "character class `%s' already defined"
msgstr ""
-#: locale/programs/ld-ctype.c:1251
+#: locale/programs/ld-ctype.c:1276
#, c-format
msgid "implementation limit: no more than %Zd character classes allowed"
msgstr ""
-#: locale/programs/ld-ctype.c:1277
+#: locale/programs/ld-ctype.c:1302
#, c-format
msgid "character map `%s' already defined"
msgstr ""
-#: locale/programs/ld-ctype.c:1283
+#: locale/programs/ld-ctype.c:1308
#, c-format
msgid "implementation limit: no more than %d character maps allowed"
msgstr ""
-#: locale/programs/ld-ctype.c:1548 locale/programs/ld-ctype.c:1673
-#: locale/programs/ld-ctype.c:1779 locale/programs/ld-ctype.c:2471
-#: locale/programs/ld-ctype.c:3467
+#: locale/programs/ld-ctype.c:1573 locale/programs/ld-ctype.c:1698
+#: locale/programs/ld-ctype.c:1804 locale/programs/ld-ctype.c:2496
+#: locale/programs/ld-ctype.c:3492
#, c-format
msgid "%s: field `%s' does not contain exactly ten entries"
msgstr ""
-#: locale/programs/ld-ctype.c:1576 locale/programs/ld-ctype.c:2150
+#: locale/programs/ld-ctype.c:1601 locale/programs/ld-ctype.c:2175
#, c-format
msgid "to-value <U%0*X> of range is smaller than from-value <U%0*X>"
msgstr ""
-#: locale/programs/ld-ctype.c:1703
+#: locale/programs/ld-ctype.c:1728
msgid "start and end character sequence of range must have the same length"
msgstr ""
-#: locale/programs/ld-ctype.c:1710
+#: locale/programs/ld-ctype.c:1735
msgid "to-value character sequence is smaller than from-value sequence"
msgstr ""
-#: locale/programs/ld-ctype.c:2070 locale/programs/ld-ctype.c:2121
+#: locale/programs/ld-ctype.c:2095 locale/programs/ld-ctype.c:2146
msgid "premature end of `translit_ignore' definition"
msgstr ""
-#: locale/programs/ld-ctype.c:2076 locale/programs/ld-ctype.c:2127
-#: locale/programs/ld-ctype.c:2169
+#: locale/programs/ld-ctype.c:2101 locale/programs/ld-ctype.c:2152
+#: locale/programs/ld-ctype.c:2194
msgid "syntax error"
msgstr ""
-#: locale/programs/ld-ctype.c:2303
+#: locale/programs/ld-ctype.c:2328
#, c-format
msgid "%s: syntax error in definition of new character class"
msgstr ""
-#: locale/programs/ld-ctype.c:2318
+#: locale/programs/ld-ctype.c:2343
#, c-format
msgid "%s: syntax error in definition of new character map"
msgstr ""
-#: locale/programs/ld-ctype.c:2493
+#: locale/programs/ld-ctype.c:2518
msgid "ellipsis range must be marked by two operands of same type"
msgstr ""
-#: locale/programs/ld-ctype.c:2502
+#: locale/programs/ld-ctype.c:2527
msgid ""
"with symbolic name range values the absolute ellipsis `...' must not be used"
msgstr ""
-#: locale/programs/ld-ctype.c:2517
+#: locale/programs/ld-ctype.c:2542
msgid ""
"with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
msgstr ""
-#: locale/programs/ld-ctype.c:2531
+#: locale/programs/ld-ctype.c:2556
msgid ""
"with character code range values one must use the absolute ellipsis `...'"
msgstr ""
-#: locale/programs/ld-ctype.c:2682
+#: locale/programs/ld-ctype.c:2707
#, c-format
msgid "duplicated definition for mapping `%s'"
msgstr ""
-#: locale/programs/ld-ctype.c:2768 locale/programs/ld-ctype.c:2912
+#: locale/programs/ld-ctype.c:2793 locale/programs/ld-ctype.c:2937
#, c-format
msgid "%s: `translit_start' section does not end with `translit_end'"
msgstr ""
-#: locale/programs/ld-ctype.c:2863
+#: locale/programs/ld-ctype.c:2888
#, c-format
msgid "%s: duplicate `default_missing' definition"
msgstr ""
-#: locale/programs/ld-ctype.c:2868
+#: locale/programs/ld-ctype.c:2893
msgid "previous definition was here"
msgstr ""
-#: locale/programs/ld-ctype.c:2890
+#: locale/programs/ld-ctype.c:2915
#, c-format
msgid "%s: no representable `default_missing' definition found"
msgstr ""
-#: locale/programs/ld-ctype.c:3043 locale/programs/ld-ctype.c:3127
-#: locale/programs/ld-ctype.c:3147 locale/programs/ld-ctype.c:3168
-#: locale/programs/ld-ctype.c:3189 locale/programs/ld-ctype.c:3210
-#: locale/programs/ld-ctype.c:3231 locale/programs/ld-ctype.c:3271
-#: locale/programs/ld-ctype.c:3292 locale/programs/ld-ctype.c:3359
-#: locale/programs/ld-ctype.c:3401 locale/programs/ld-ctype.c:3426
+#: locale/programs/ld-ctype.c:3068 locale/programs/ld-ctype.c:3152
+#: locale/programs/ld-ctype.c:3172 locale/programs/ld-ctype.c:3193
+#: locale/programs/ld-ctype.c:3214 locale/programs/ld-ctype.c:3235
+#: locale/programs/ld-ctype.c:3256 locale/programs/ld-ctype.c:3296
+#: locale/programs/ld-ctype.c:3317 locale/programs/ld-ctype.c:3384
+#: locale/programs/ld-ctype.c:3426 locale/programs/ld-ctype.c:3451
#, c-format
msgid "%s: character `%s' not defined while needed as default value"
msgstr ""
-#: locale/programs/ld-ctype.c:3048 locale/programs/ld-ctype.c:3132
-#: locale/programs/ld-ctype.c:3152 locale/programs/ld-ctype.c:3173
-#: locale/programs/ld-ctype.c:3194 locale/programs/ld-ctype.c:3215
-#: locale/programs/ld-ctype.c:3236 locale/programs/ld-ctype.c:3276
-#: locale/programs/ld-ctype.c:3297 locale/programs/ld-ctype.c:3364
+#: locale/programs/ld-ctype.c:3073 locale/programs/ld-ctype.c:3157
+#: locale/programs/ld-ctype.c:3177 locale/programs/ld-ctype.c:3198
+#: locale/programs/ld-ctype.c:3219 locale/programs/ld-ctype.c:3240
+#: locale/programs/ld-ctype.c:3261 locale/programs/ld-ctype.c:3301
+#: locale/programs/ld-ctype.c:3322 locale/programs/ld-ctype.c:3389
#, c-format
msgid "%s: character `%s' in charmap not representable with one byte"
msgstr ""
-#: locale/programs/ld-ctype.c:3408 locale/programs/ld-ctype.c:3433
+#: locale/programs/ld-ctype.c:3433 locale/programs/ld-ctype.c:3458
#, c-format
msgid ""
"%s: character `%s' needed as default value not representable with one byte"
msgstr ""
-#: locale/programs/ld-ctype.c:3489
+#: locale/programs/ld-ctype.c:3514
#, c-format
msgid "no output digits defined and none of the standard names in the charmap"
msgstr ""
-#: locale/programs/ld-ctype.c:3780
+#: locale/programs/ld-ctype.c:3805
#, c-format
msgid "%s: transliteration data from locale `%s' not available"
msgstr ""
-#: locale/programs/ld-ctype.c:3881
+#: locale/programs/ld-ctype.c:3906
#, c-format
msgid "%s: table for class \"%s\": %lu bytes\n"
msgstr ""
-#: locale/programs/ld-ctype.c:3950
+#: locale/programs/ld-ctype.c:3975
#, c-format
msgid "%s: table for map \"%s\": %lu bytes\n"
msgstr ""
-#: locale/programs/ld-ctype.c:4083
+#: locale/programs/ld-ctype.c:4108
#, c-format
msgid "%s: table for width: %lu bytes\n"
msgstr ""
@@ -2378,6 +2440,11 @@ msgstr ""
msgid "symbol `%.*s' not in repertoire map"
msgstr ""
+#: locale/programs/locale-spec.c:131
+#, c-format
+msgid "unknown name \"%s\""
+msgstr ""
+
#: locale/programs/locale.c:74
msgid "System information:"
msgstr ""
@@ -2545,8 +2612,8 @@ msgstr ""
#, c-format
msgid ""
"System's directory for character maps : %s\n"
-" repertoire maps: %s\n"
-" locale path : %s\n"
+"\t\t repertoire maps: %s\n"
+"\t\t locale path : %s\n"
"%s"
msgstr ""
@@ -2560,130 +2627,135 @@ msgstr ""
msgid "cannot add already read locale `%s' a second time"
msgstr ""
-#: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
+#: locale/programs/locarchive.c:92 locale/programs/locarchive.c:338
#, c-format
msgid "cannot create temporary file"
msgstr ""
-#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:307
+#: locale/programs/locarchive.c:122 locale/programs/locarchive.c:384
#, c-format
msgid "cannot initialize archive file"
msgstr ""
-#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:314
+#: locale/programs/locarchive.c:129 locale/programs/locarchive.c:391
#, c-format
msgid "cannot resize archive file"
msgstr ""
-#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:323
-#: locale/programs/locarchive.c:527
+#: locale/programs/locarchive.c:152 locale/programs/locarchive.c:414
+#: locale/programs/locarchive.c:633
#, c-format
msgid "cannot map archive header"
msgstr ""
-#: locale/programs/locarchive.c:156
+#: locale/programs/locarchive.c:174
#, c-format
msgid "failed to create new locale archive"
msgstr ""
-#: locale/programs/locarchive.c:168
+#: locale/programs/locarchive.c:186
#, c-format
msgid "cannot change mode of new locale archive"
msgstr ""
-#: locale/programs/locarchive.c:255
+#: locale/programs/locarchive.c:285
+#, c-format
+msgid "cannot read data from locale archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:318
#, c-format
msgid "cannot map locale archive file"
msgstr ""
-#: locale/programs/locarchive.c:331
+#: locale/programs/locarchive.c:422
#, c-format
msgid "cannot lock new archive"
msgstr ""
-#: locale/programs/locarchive.c:396
+#: locale/programs/locarchive.c:488
#, c-format
msgid "cannot extend locale archive file"
msgstr ""
-#: locale/programs/locarchive.c:405
+#: locale/programs/locarchive.c:497
#, c-format
msgid "cannot change mode of resized locale archive"
msgstr ""
-#: locale/programs/locarchive.c:413
+#: locale/programs/locarchive.c:505
#, c-format
msgid "cannot rename new archive"
msgstr ""
-#: locale/programs/locarchive.c:466
+#: locale/programs/locarchive.c:558
#, c-format
msgid "cannot open locale archive \"%s\""
msgstr ""
-#: locale/programs/locarchive.c:471
+#: locale/programs/locarchive.c:563
#, c-format
msgid "cannot stat locale archive \"%s\""
msgstr ""
-#: locale/programs/locarchive.c:490
+#: locale/programs/locarchive.c:582
#, c-format
msgid "cannot lock locale archive \"%s\""
msgstr ""
-#: locale/programs/locarchive.c:513
+#: locale/programs/locarchive.c:605
#, c-format
msgid "cannot read archive header"
msgstr ""
-#: locale/programs/locarchive.c:573
+#: locale/programs/locarchive.c:680
#, c-format
msgid "locale '%s' already exists"
msgstr ""
-#: locale/programs/locarchive.c:804 locale/programs/locarchive.c:819
-#: locale/programs/locarchive.c:831 locale/programs/locarchive.c:843
+#: locale/programs/locarchive.c:942 locale/programs/locarchive.c:957
+#: locale/programs/locarchive.c:969 locale/programs/locarchive.c:981
#: locale/programs/locfile.c:344
#, c-format
msgid "cannot add to locale archive"
msgstr ""
-#: locale/programs/locarchive.c:998
+#: locale/programs/locarchive.c:1139
#, c-format
msgid "locale alias file `%s' not found"
msgstr ""
-#: locale/programs/locarchive.c:1142
+#: locale/programs/locarchive.c:1289
#, c-format
msgid "Adding %s\n"
msgstr ""
-#: locale/programs/locarchive.c:1148
+#: locale/programs/locarchive.c:1295
#, c-format
msgid "stat of \"%s\" failed: %s: ignored"
msgstr ""
-#: locale/programs/locarchive.c:1154
+#: locale/programs/locarchive.c:1301
#, c-format
msgid "\"%s\" is no directory; ignored"
msgstr ""
-#: locale/programs/locarchive.c:1161
+#: locale/programs/locarchive.c:1308
#, c-format
msgid "cannot open directory \"%s\": %s: ignored"
msgstr ""
-#: locale/programs/locarchive.c:1233
+#: locale/programs/locarchive.c:1380
#, c-format
msgid "incomplete set of locale files in \"%s\""
msgstr ""
-#: locale/programs/locarchive.c:1297
+#: locale/programs/locarchive.c:1444
#, c-format
msgid "cannot read all files in \"%s\": ignored"
msgstr ""
-#: locale/programs/locarchive.c:1367
+#: locale/programs/locarchive.c:1514
#, c-format
msgid "locale \"%s\" not in archive"
msgstr ""
@@ -2749,7 +2821,7 @@ msgstr ""
msgid "repertoire map file `%s' not found"
msgstr ""
-#: login/programs/pt_chown.c:74
+#: login/programs/pt_chown.c:78
#, c-format
msgid ""
"Set the owner, group and access permission of the slave pseudo terminal "
@@ -2758,7 +2830,7 @@ msgid ""
"to be run directly from the command line.\n"
msgstr ""
-#: login/programs/pt_chown.c:84
+#: login/programs/pt_chown.c:88
#, c-format
msgid ""
"The owner is set to the current user, the group is set to `%s', and the "
@@ -2767,42 +2839,38 @@ msgid ""
"%s"
msgstr ""
-#: login/programs/pt_chown.c:161
+#: login/programs/pt_chown.c:192
#, c-format
msgid "too many arguments"
msgstr ""
-#: login/programs/pt_chown.c:169
+#: login/programs/pt_chown.c:200
#, c-format
msgid "needs to be installed setuid `root'"
msgstr ""
-#: malloc/mcheck.c:330
+#: malloc/mcheck.c:350
msgid "memory is consistent, library is buggy\n"
msgstr ""
-#: malloc/mcheck.c:333
+#: malloc/mcheck.c:353
msgid "memory clobbered before allocated block\n"
msgstr ""
-#: malloc/mcheck.c:336
+#: malloc/mcheck.c:356
msgid "memory clobbered past end of allocated block\n"
msgstr ""
-#: malloc/mcheck.c:339
+#: malloc/mcheck.c:359
msgid "block freed twice\n"
msgstr ""
-#: malloc/mcheck.c:342
+#: malloc/mcheck.c:362
msgid "bogus mcheck_status, library is buggy\n"
msgstr ""
-#: malloc/memusage.sh:27
-msgid "Try \\`memusage --help' for more information."
-msgstr ""
-
#: malloc/memusage.sh:33
-msgid "memusage: option \\`$1' requires an argument"
+msgid "%s: option '%s' requires an argument\\n"
msgstr ""
#: malloc/memusage.sh:39
@@ -2840,9 +2908,9 @@ msgstr ""
msgid ""
"Syntax: memusage [--data=FILE] [--progname=NAME] [--png=FILE] [--"
"unbuffered]\n"
-" [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
-" [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
-" PROGRAM [PROGRAMOPTION]..."
+"\t [--buffer=SIZE] [--no-timer] [--time-based] [--total]\n"
+"\t [--title=STRING] [--x-size=SIZE] [--y-size=SIZE]\n"
+"\t PROGRAM [PROGRAMOPTION]..."
msgstr ""
#: malloc/memusage.sh:193
@@ -2899,7 +2967,7 @@ msgstr ""
msgid "unable to free arguments"
msgstr ""
-#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:133
+#: nis/nis_error.h:1 nis/ypclnt.c:833 nis/ypclnt.c:921 posix/regcomp.c:132
#: sysdeps/gnu/errlist.c:20
msgid "Success"
msgstr ""
@@ -3528,12 +3596,12 @@ msgstr ""
msgid "yp_update: cannot get server address\n"
msgstr ""
-#: nscd/aicache.c:82 nscd/hstcache.c:481
+#: nscd/aicache.c:83 nscd/hstcache.c:492
#, c-format
msgid "Haven't found \"%s\" in hosts cache!"
msgstr ""
-#: nscd/aicache.c:84 nscd/hstcache.c:483
+#: nscd/aicache.c:85 nscd/hstcache.c:494
#, c-format
msgid "Reloading \"%s\" in hosts cache!"
msgstr ""
@@ -3547,266 +3615,266 @@ msgstr ""
msgid " (first)"
msgstr ""
-#: nscd/cache.c:286 nscd/connections.c:866
+#: nscd/cache.c:276 nscd/connections.c:861
#, c-format
msgid "cannot stat() file `%s': %s"
msgstr ""
-#: nscd/cache.c:328
+#: nscd/cache.c:318
#, c-format
msgid "pruning %s cache; time %ld"
msgstr ""
-#: nscd/cache.c:357
+#: nscd/cache.c:347
#, c-format
msgid "considering %s entry \"%s\", timeout %<PRIu64>"
msgstr ""
-#: nscd/connections.c:570
+#: nscd/connections.c:565
#, c-format
msgid "invalid persistent database file \"%s\": %s"
msgstr ""
-#: nscd/connections.c:578
+#: nscd/connections.c:573
msgid "uninitialized header"
msgstr ""
-#: nscd/connections.c:583
+#: nscd/connections.c:578
msgid "header size does not match"
msgstr ""
-#: nscd/connections.c:593
+#: nscd/connections.c:588
msgid "file size does not match"
msgstr ""
-#: nscd/connections.c:610
+#: nscd/connections.c:605
msgid "verification failed"
msgstr ""
-#: nscd/connections.c:624
+#: nscd/connections.c:619
#, c-format
msgid ""
"suggested size of table for database %s larger than the persistent "
"database's table"
msgstr ""
-#: nscd/connections.c:635 nscd/connections.c:720
+#: nscd/connections.c:630 nscd/connections.c:715
#, c-format
msgid "cannot create read-only descriptor for \"%s\"; no mmap"
msgstr ""
-#: nscd/connections.c:651
+#: nscd/connections.c:646
#, c-format
msgid "cannot access '%s'"
msgstr ""
-#: nscd/connections.c:699
+#: nscd/connections.c:694
#, c-format
msgid ""
"database for %s corrupted or simultaneously used; remove %s manually if "
"necessary and restart"
msgstr ""
-#: nscd/connections.c:706
+#: nscd/connections.c:701
#, c-format
msgid "cannot create %s; no persistent database used"
msgstr ""
-#: nscd/connections.c:709
+#: nscd/connections.c:704
#, c-format
msgid "cannot create %s; no sharing possible"
msgstr ""
-#: nscd/connections.c:780
+#: nscd/connections.c:775
#, c-format
msgid "cannot write to database file %s: %s"
msgstr ""
-#: nscd/connections.c:819
+#: nscd/connections.c:814
#, c-format
msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:902
+#: nscd/connections.c:897
#, c-format
msgid "cannot open socket: %s"
msgstr ""
-#: nscd/connections.c:922
+#: nscd/connections.c:917
#, c-format
msgid "cannot change socket to nonblocking mode: %s"
msgstr ""
-#: nscd/connections.c:930
+#: nscd/connections.c:925
#, c-format
msgid "cannot set socket to close on exec: %s"
msgstr ""
-#: nscd/connections.c:943
+#: nscd/connections.c:938
#, c-format
msgid "cannot enable socket to accept connections: %s"
msgstr ""
-#: nscd/connections.c:1043
+#: nscd/connections.c:1039
#, c-format
msgid "provide access to FD %d, for %s"
msgstr ""
-#: nscd/connections.c:1055
+#: nscd/connections.c:1051
#, c-format
msgid "cannot handle old request version %d; current version is %d"
msgstr ""
-#: nscd/connections.c:1077
+#: nscd/connections.c:1073
#, c-format
msgid "request from %ld not handled due to missing permission"
msgstr ""
-#: nscd/connections.c:1082
+#: nscd/connections.c:1078
#, c-format
msgid "request from '%s' [%ld] not handled due to missing permission"
msgstr ""
-#: nscd/connections.c:1087
+#: nscd/connections.c:1083
msgid "request not handled due to missing permission"
msgstr ""
-#: nscd/connections.c:1125 nscd/connections.c:1178
+#: nscd/connections.c:1121 nscd/connections.c:1174
#, c-format
msgid "cannot write result: %s"
msgstr ""
-#: nscd/connections.c:1261
+#: nscd/connections.c:1257
#, c-format
msgid "error getting caller's id: %s"
msgstr ""
-#: nscd/connections.c:1320
+#: nscd/connections.c:1316
#, c-format
msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1334
+#: nscd/connections.c:1330
#, c-format
msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1374
+#: nscd/connections.c:1370
#, c-format
msgid "cannot change to old UID: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1384
+#: nscd/connections.c:1380
#, c-format
msgid "cannot change to old GID: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1397
+#: nscd/connections.c:1393
#, c-format
msgid "cannot change to old working directory: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1429
+#: nscd/connections.c:1439
#, c-format
msgid "re-exec failed: %s; disabling paranoia mode"
msgstr ""
-#: nscd/connections.c:1438
+#: nscd/connections.c:1448
#, c-format
msgid "cannot change current working directory to \"/\": %s"
msgstr ""
-#: nscd/connections.c:1644
+#: nscd/connections.c:1641
#, c-format
msgid "short read while reading request: %s"
msgstr ""
-#: nscd/connections.c:1677
+#: nscd/connections.c:1674
#, c-format
msgid "key length in request too long: %d"
msgstr ""
-#: nscd/connections.c:1690
+#: nscd/connections.c:1687
#, c-format
msgid "short read while reading request key: %s"
msgstr ""
-#: nscd/connections.c:1699
+#: nscd/connections.c:1696
#, c-format
msgid "handle_request: request received (Version = %d) from PID %ld"
msgstr ""
-#: nscd/connections.c:1704
+#: nscd/connections.c:1701
#, c-format
msgid "handle_request: request received (Version = %d)"
msgstr ""
-#: nscd/connections.c:1903 nscd/connections.c:2101
+#: nscd/connections.c:1901 nscd/connections.c:2099
#, c-format
msgid "disabled inotify after read error %d"
msgstr ""
-#: nscd/connections.c:2230
+#: nscd/connections.c:2228
msgid "could not initialize conditional variable"
msgstr ""
-#: nscd/connections.c:2238
+#: nscd/connections.c:2236
msgid "could not start clean-up thread; terminating"
msgstr ""
-#: nscd/connections.c:2252
+#: nscd/connections.c:2250
msgid "could not start any worker thread; terminating"
msgstr ""
-#: nscd/connections.c:2303 nscd/connections.c:2304 nscd/connections.c:2321
-#: nscd/connections.c:2330 nscd/connections.c:2348 nscd/connections.c:2359
-#: nscd/connections.c:2370
+#: nscd/connections.c:2301 nscd/connections.c:2302 nscd/connections.c:2319
+#: nscd/connections.c:2328 nscd/connections.c:2346 nscd/connections.c:2357
+#: nscd/connections.c:2368
#, c-format
msgid "Failed to run nscd as user '%s'"
msgstr ""
-#: nscd/connections.c:2322
+#: nscd/connections.c:2320
#, c-format
msgid "initial getgrouplist failed"
msgstr ""
-#: nscd/connections.c:2331
+#: nscd/connections.c:2329
#, c-format
msgid "getgrouplist failed"
msgstr ""
-#: nscd/connections.c:2349
+#: nscd/connections.c:2347
#, c-format
msgid "setgroups failed"
msgstr ""
-#: nscd/grpcache.c:395 nscd/hstcache.c:430 nscd/initgrcache.c:416
-#: nscd/pwdcache.c:400 nscd/servicescache.c:343
+#: nscd/grpcache.c:383 nscd/hstcache.c:439 nscd/initgrcache.c:406
+#: nscd/pwdcache.c:378 nscd/servicescache.c:332
#, c-format
msgid "short write in %s: %s"
msgstr ""
-#: nscd/grpcache.c:438 nscd/initgrcache.c:78
+#: nscd/grpcache.c:428 nscd/initgrcache.c:78
#, c-format
msgid "Haven't found \"%s\" in group cache!"
msgstr ""
-#: nscd/grpcache.c:440 nscd/initgrcache.c:80
+#: nscd/grpcache.c:430 nscd/initgrcache.c:80
#, c-format
msgid "Reloading \"%s\" in group cache!"
msgstr ""
-#: nscd/grpcache.c:517
+#: nscd/grpcache.c:509
#, c-format
msgid "Invalid numeric gid \"%s\"!"
msgstr ""
-#: nscd/mem.c:457
+#: nscd/mem.c:431
#, c-format
msgid "freed %zu bytes in %s cache"
msgstr ""
-#: nscd/mem.c:594
+#: nscd/mem.c:574
#, c-format
msgid "no more memory for database '%s'"
msgstr ""
@@ -3855,7 +3923,7 @@ msgstr ""
msgid "Name Service Cache Daemon."
msgstr ""
-#: nscd/nscd.c:147 nss/getent.c:876 nss/makedb.c:123
+#: nscd/nscd.c:147 nss/getent.c:952 nss/makedb.c:123
#, c-format
msgid "wrong number of arguments"
msgstr ""
@@ -3884,7 +3952,7 @@ msgstr ""
msgid "Could not create log file"
msgstr ""
-#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:172
+#: nscd/nscd.c:305 nscd/nscd.c:330 nscd/nscd_stat.c:174
#, c-format
msgid "Only root is allowed to use this option!"
msgstr ""
@@ -3894,7 +3962,7 @@ msgstr ""
msgid "'%s' is not a known database"
msgstr ""
-#: nscd/nscd.c:370 nscd/nscd_stat.c:191
+#: nscd/nscd.c:370 nscd/nscd_stat.c:193
#, c-format
msgid "write incomplete"
msgstr ""
@@ -3959,35 +4027,35 @@ msgstr ""
msgid "maximum file size for %s database too small"
msgstr ""
-#: nscd/nscd_stat.c:141
+#: nscd/nscd_stat.c:143
#, c-format
msgid "cannot write statistics: %s"
msgstr ""
-#: nscd/nscd_stat.c:156
+#: nscd/nscd_stat.c:158
msgid "yes"
msgstr ""
-#: nscd/nscd_stat.c:157
+#: nscd/nscd_stat.c:159
msgid "no"
msgstr ""
-#: nscd/nscd_stat.c:168
+#: nscd/nscd_stat.c:170
#, c-format
msgid "Only root or %s is allowed to use this option!"
msgstr ""
-#: nscd/nscd_stat.c:179
+#: nscd/nscd_stat.c:181
#, c-format
msgid "nscd not running!\n"
msgstr ""
-#: nscd/nscd_stat.c:203
+#: nscd/nscd_stat.c:205
#, c-format
msgid "cannot read statistics data"
msgstr ""
-#: nscd/nscd_stat.c:206
+#: nscd/nscd_stat.c:208
#, c-format
msgid ""
"nscd configuration:\n"
@@ -3995,27 +4063,27 @@ msgid ""
"%15d server debug level\n"
msgstr ""
-#: nscd/nscd_stat.c:230
+#: nscd/nscd_stat.c:232
#, c-format
msgid "%3ud %2uh %2um %2lus server runtime\n"
msgstr ""
-#: nscd/nscd_stat.c:233
+#: nscd/nscd_stat.c:235
#, c-format
msgid " %2uh %2um %2lus server runtime\n"
msgstr ""
-#: nscd/nscd_stat.c:235
+#: nscd/nscd_stat.c:237
#, c-format
msgid " %2um %2lus server runtime\n"
msgstr ""
-#: nscd/nscd_stat.c:237
+#: nscd/nscd_stat.c:239
#, c-format
msgid " %2lus server runtime\n"
msgstr ""
-#: nscd/nscd_stat.c:239
+#: nscd/nscd_stat.c:241
#, c-format
msgid ""
"%15d current number of threads\n"
@@ -4023,9 +4091,10 @@ msgid ""
"%15lu number of times clients had to wait\n"
"%15s paranoia mode enabled\n"
"%15lu restart internal\n"
+"%15u reload count\n"
msgstr ""
-#: nscd/nscd_stat.c:273
+#: nscd/nscd_stat.c:276
#, c-format
msgid ""
"\n"
@@ -4053,17 +4122,17 @@ msgid ""
"%15s check /etc/%s for changes\n"
msgstr ""
-#: nscd/pwdcache.c:443
+#: nscd/pwdcache.c:423
#, c-format
msgid "Haven't found \"%s\" in password cache!"
msgstr ""
-#: nscd/pwdcache.c:445
+#: nscd/pwdcache.c:425
#, c-format
msgid "Reloading \"%s\" in password cache!"
msgstr ""
-#: nscd/pwdcache.c:523
+#: nscd/pwdcache.c:506
#, c-format
msgid "Invalid numeric uid \"%s\"!"
msgstr ""
@@ -4159,43 +4228,47 @@ msgid ""
"%15u CAV misses\n"
msgstr ""
-#: nscd/servicescache.c:390
+#: nscd/servicescache.c:381
#, c-format
msgid "Haven't found \"%s\" in services cache!"
msgstr ""
-#: nscd/servicescache.c:392
+#: nscd/servicescache.c:383
#, c-format
msgid "Reloading \"%s\" in services cache!"
msgstr ""
-#: nss/getent.c:52
+#: nss/getent.c:54
msgid "database [key ...]"
msgstr ""
-#: nss/getent.c:57
+#: nss/getent.c:59
msgid "Service configuration to be used"
msgstr ""
-#: nss/getent.c:62
+#: nss/getent.c:60
+msgid "disable IDN encoding"
+msgstr ""
+
+#: nss/getent.c:65
msgid "Get entries from administrative database."
msgstr ""
-#: nss/getent.c:143 nss/getent.c:408
+#: nss/getent.c:149 nss/getent.c:479
#, c-format
msgid "Enumeration not supported on %s\n"
msgstr ""
-#: nss/getent.c:794
+#: nss/getent.c:866
#, c-format
msgid "Unknown database name"
msgstr ""
-#: nss/getent.c:820
+#: nss/getent.c:896
msgid "Supported databases:\n"
msgstr ""
-#: nss/getent.c:886
+#: nss/getent.c:962
#, c-format
msgid "Unknown database: %s\n"
msgstr ""
@@ -4256,17 +4329,17 @@ msgstr ""
msgid "while reading database"
msgstr ""
-#: posix/getconf.c:945
+#: posix/getconf.c:1036
#, c-format
msgid "Usage: %s [-v specification] variable_name [pathname]\n"
msgstr ""
-#: posix/getconf.c:948
+#: posix/getconf.c:1039
#, c-format
msgid " %s -a [pathname]\n"
msgstr ""
-#: posix/getconf.c:1023
+#: posix/getconf.c:1115
#, c-format
msgid ""
"Usage: getconf [-v SPEC] VAR\n"
@@ -4278,142 +4351,146 @@ msgid ""
"\n"
msgstr ""
-#: posix/getconf.c:1081
+#: posix/getconf.c:1173
#, c-format
msgid "unknown specification \"%s\""
msgstr ""
-#: posix/getconf.c:1109
+#: posix/getconf.c:1225
#, c-format
msgid "Couldn't execute %s"
msgstr ""
-#: posix/getconf.c:1149 posix/getconf.c:1165
+#: posix/getconf.c:1269 posix/getconf.c:1285
msgid "undefined"
msgstr ""
-#: posix/getconf.c:1187
+#: posix/getconf.c:1307
#, c-format
msgid "Unrecognized variable `%s'"
msgstr ""
-#: posix/getopt.c:570 posix/getopt.c:586
+#: posix/getopt.c:594 posix/getopt.c:623
#, c-format
-msgid "%s: option '%s' is ambiguous\n"
+msgid "%s: option '%s' is ambiguous; possibilities:"
msgstr ""
-#: posix/getopt.c:619 posix/getopt.c:623
+#: posix/getopt.c:664 posix/getopt.c:668
#, c-format
msgid "%s: option '--%s' doesn't allow an argument\n"
msgstr ""
-#: posix/getopt.c:632 posix/getopt.c:637
+#: posix/getopt.c:677 posix/getopt.c:682
#, c-format
msgid "%s: option '%c%s' doesn't allow an argument\n"
msgstr ""
-#: posix/getopt.c:680 posix/getopt.c:699 posix/getopt.c:1002
-#: posix/getopt.c:1021
+#: posix/getopt.c:725 posix/getopt.c:744
#, c-format
-msgid "%s: option '%s' requires an argument\n"
+msgid "%s: option '--%s' requires an argument\n"
msgstr ""
-#: posix/getopt.c:737 posix/getopt.c:740
+#: posix/getopt.c:782 posix/getopt.c:785
#, c-format
msgid "%s: unrecognized option '--%s'\n"
msgstr ""
-#: posix/getopt.c:748 posix/getopt.c:751
+#: posix/getopt.c:793 posix/getopt.c:796
#, c-format
msgid "%s: unrecognized option '%c%s'\n"
msgstr ""
-#: posix/getopt.c:800 posix/getopt.c:803
+#: posix/getopt.c:845 posix/getopt.c:848
#, c-format
msgid "%s: invalid option -- '%c'\n"
msgstr ""
-#: posix/getopt.c:853 posix/getopt.c:870 posix/getopt.c:1073
-#: posix/getopt.c:1091
+#: posix/getopt.c:898 posix/getopt.c:915 posix/getopt.c:1123
+#: posix/getopt.c:1141
#, c-format
msgid "%s: option requires an argument -- '%c'\n"
msgstr ""
-#: posix/getopt.c:923 posix/getopt.c:939
+#: posix/getopt.c:971 posix/getopt.c:987
#, c-format
msgid "%s: option '-W %s' is ambiguous\n"
msgstr ""
-#: posix/getopt.c:963 posix/getopt.c:981
+#: posix/getopt.c:1011 posix/getopt.c:1029
#, c-format
msgid "%s: option '-W %s' doesn't allow an argument\n"
msgstr ""
-#: posix/regcomp.c:136
+#: posix/getopt.c:1050 posix/getopt.c:1068
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr ""
+
+#: posix/regcomp.c:135
msgid "No match"
msgstr ""
-#: posix/regcomp.c:139
+#: posix/regcomp.c:138
msgid "Invalid regular expression"
msgstr ""
-#: posix/regcomp.c:142
+#: posix/regcomp.c:141
msgid "Invalid collation character"
msgstr ""
-#: posix/regcomp.c:145
+#: posix/regcomp.c:144
msgid "Invalid character class name"
msgstr ""
-#: posix/regcomp.c:148
+#: posix/regcomp.c:147
msgid "Trailing backslash"
msgstr ""
-#: posix/regcomp.c:151
+#: posix/regcomp.c:150
msgid "Invalid back reference"
msgstr ""
-#: posix/regcomp.c:154
+#: posix/regcomp.c:153
msgid "Unmatched [ or [^"
msgstr ""
-#: posix/regcomp.c:157
+#: posix/regcomp.c:156
msgid "Unmatched ( or \\("
msgstr ""
-#: posix/regcomp.c:160
+#: posix/regcomp.c:159
msgid "Unmatched \\{"
msgstr ""
-#: posix/regcomp.c:163
+#: posix/regcomp.c:162
msgid "Invalid content of \\{\\}"
msgstr ""
-#: posix/regcomp.c:166
+#: posix/regcomp.c:165
msgid "Invalid range end"
msgstr ""
-#: posix/regcomp.c:169
+#: posix/regcomp.c:168
msgid "Memory exhausted"
msgstr ""
-#: posix/regcomp.c:172
+#: posix/regcomp.c:171
msgid "Invalid preceding regular expression"
msgstr ""
-#: posix/regcomp.c:175
+#: posix/regcomp.c:174
msgid "Premature end of regular expression"
msgstr ""
-#: posix/regcomp.c:178
+#: posix/regcomp.c:177
msgid "Regular expression too big"
msgstr ""
-#: posix/regcomp.c:181
+#: posix/regcomp.c:180
msgid "Unmatched ) or \\)"
msgstr ""
-#: posix/regcomp.c:681
+#: posix/regcomp.c:680
msgid "No previous regular expression"
msgstr ""
@@ -4474,6 +4551,188 @@ msgstr ""
msgid "%s: line %d: ignoring trailing garbage `%s'\n"
msgstr ""
+#: stdio-common/psiginfo-data.h:2
+msgid "Illegal opcode"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:3
+msgid "Illegal operand"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:4
+msgid "Illegal addressing mode"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:5
+msgid "Illegal trap"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:6
+msgid "Privileged opcode"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:7
+msgid "Privileged register"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:8
+msgid "Coprocessor error"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:9
+msgid "Internal stack error"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:12
+msgid "Integer divide by zero"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:13
+msgid "Integer overflow"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:14
+msgid "Floating-point divide by zero"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:15
+msgid "Floating-point overflow"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:16
+msgid "Floating-point underflow"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:17
+msgid "Floating-poing inexact result"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:18
+msgid "Invalid floating-point operation"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:19
+msgid "Subscript out of range"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:22
+msgid "Address not mapped to object"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:23
+msgid "Invalid permissions for mapped object"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:26
+msgid "Invalid address alignment"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:27
+msgid "Nonexisting physical address"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:28
+msgid "Object-specific hardware error"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:31
+msgid "Process breakpoint"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:32
+msgid "Process trace trap"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:35
+msgid "Child has exited"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:36
+msgid "Child has terminated abnormally and did not create a core file"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:37
+msgid "Child hat terminated abnormally and created a core file"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:38
+msgid "Traced child has trapped"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:39
+msgid "Child has stopped"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:40
+msgid "Stopped child has continued"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:43
+msgid "Data input available"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:44
+msgid "Output buffers available"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:45
+msgid "Input message available"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:46
+msgid "I/O error"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:47
+msgid "High priority input available"
+msgstr ""
+
+#: stdio-common/psiginfo-data.h:48
+msgid "Device disconnected"
+msgstr ""
+
+#: stdio-common/psiginfo.c:145
+msgid "Signal sent by kill()"
+msgstr ""
+
+#: stdio-common/psiginfo.c:148
+msgid "Signal sent by sigqueue()"
+msgstr ""
+
+#: stdio-common/psiginfo.c:151
+msgid "Signal generated by the expiration of a timer"
+msgstr ""
+
+#: stdio-common/psiginfo.c:154
+msgid "Signal generated by the completion of an asynchronous I/O request"
+msgstr ""
+
+#: stdio-common/psiginfo.c:158
+msgid "Signal generated by the arrival of a message on an empty message queue"
+msgstr ""
+
+#: stdio-common/psiginfo.c:163
+msgid "Signal sent by tkill()"
+msgstr ""
+
+#: stdio-common/psiginfo.c:168
+msgid ""
+"Signal generated by the completion of an asynchronous name lookup request"
+msgstr ""
+
+#: stdio-common/psiginfo.c:174
+msgid "Signal generated by the completion of an I/O request"
+msgstr ""
+
+#: stdio-common/psiginfo.c:180
+msgid "Signal sent by the kernel"
+msgstr ""
+
+#: stdio-common/psiginfo.c:204
+#, c-format
+msgid "Unknown signal %d\n"
+msgstr ""
+
#: stdio-common/psignal.c:51
#, c-format
msgid "%s%sUnknown signal %d\n"
@@ -4483,7 +4742,7 @@ msgstr ""
msgid "Unknown signal"
msgstr ""
-#: string/_strerror.c:45 sysdeps/mach/_strerror.c:87
+#: string/_strerror.c:47 sysdeps/mach/_strerror.c:87
msgid "Unknown error "
msgstr ""
@@ -4501,597 +4760,597 @@ msgstr ""
msgid "Unknown signal %d"
msgstr ""
-#: sunrpc/auth_unix.c:114 sunrpc/clnt_tcp.c:131 sunrpc/clnt_udp.c:143
-#: sunrpc/clnt_unix.c:128 sunrpc/svc_tcp.c:179 sunrpc/svc_tcp.c:218
-#: sunrpc/svc_udp.c:153 sunrpc/svc_unix.c:176 sunrpc/svc_unix.c:215
-#: sunrpc/xdr.c:566 sunrpc/xdr.c:718 sunrpc/xdr_array.c:106
-#: sunrpc/xdr_rec.c:156 sunrpc/xdr_ref.c:85
+#: sunrpc/auth_unix.c:113 sunrpc/clnt_tcp.c:125 sunrpc/clnt_udp.c:136
+#: sunrpc/clnt_unix.c:126 sunrpc/svc_tcp.c:173 sunrpc/svc_tcp.c:218
+#: sunrpc/svc_udp.c:147 sunrpc/svc_unix.c:174 sunrpc/svc_unix.c:215
+#: sunrpc/xdr.c:632 sunrpc/xdr.c:792 sunrpc/xdr_array.c:100
+#: sunrpc/xdr_rec.c:154 sunrpc/xdr_ref.c:79
msgid "out of memory\n"
msgstr ""
-#: sunrpc/auth_unix.c:350
+#: sunrpc/auth_unix.c:351
msgid "auth_unix.c: Fatal marshalling problem"
msgstr ""
-#: sunrpc/clnt_perr.c:105 sunrpc/clnt_perr.c:121
+#: sunrpc/clnt_perr.c:98 sunrpc/clnt_perr.c:114
#, c-format
msgid "%s: %s; low version = %lu, high version = %lu"
msgstr ""
-#: sunrpc/clnt_perr.c:112
+#: sunrpc/clnt_perr.c:105
#, c-format
msgid "%s: %s; why = %s\n"
msgstr ""
-#: sunrpc/clnt_perr.c:114
+#: sunrpc/clnt_perr.c:107
#, c-format
msgid "%s: %s; why = (unknown authentication error - %d)\n"
msgstr ""
-#: sunrpc/clnt_perr.c:159
+#: sunrpc/clnt_perr.c:156
msgid "RPC: Success"
msgstr ""
-#: sunrpc/clnt_perr.c:162
+#: sunrpc/clnt_perr.c:159
msgid "RPC: Can't encode arguments"
msgstr ""
-#: sunrpc/clnt_perr.c:166
+#: sunrpc/clnt_perr.c:163
msgid "RPC: Can't decode result"
msgstr ""
-#: sunrpc/clnt_perr.c:170
+#: sunrpc/clnt_perr.c:167
msgid "RPC: Unable to send"
msgstr ""
-#: sunrpc/clnt_perr.c:174
+#: sunrpc/clnt_perr.c:171
msgid "RPC: Unable to receive"
msgstr ""
-#: sunrpc/clnt_perr.c:178
+#: sunrpc/clnt_perr.c:175
msgid "RPC: Timed out"
msgstr ""
-#: sunrpc/clnt_perr.c:182
+#: sunrpc/clnt_perr.c:179
msgid "RPC: Incompatible versions of RPC"
msgstr ""
-#: sunrpc/clnt_perr.c:186
+#: sunrpc/clnt_perr.c:183
msgid "RPC: Authentication error"
msgstr ""
-#: sunrpc/clnt_perr.c:190
+#: sunrpc/clnt_perr.c:187
msgid "RPC: Program unavailable"
msgstr ""
-#: sunrpc/clnt_perr.c:194
+#: sunrpc/clnt_perr.c:191
msgid "RPC: Program/version mismatch"
msgstr ""
-#: sunrpc/clnt_perr.c:198
+#: sunrpc/clnt_perr.c:195
msgid "RPC: Procedure unavailable"
msgstr ""
-#: sunrpc/clnt_perr.c:202
+#: sunrpc/clnt_perr.c:199
msgid "RPC: Server can't decode arguments"
msgstr ""
-#: sunrpc/clnt_perr.c:206
+#: sunrpc/clnt_perr.c:203
msgid "RPC: Remote system error"
msgstr ""
-#: sunrpc/clnt_perr.c:210
+#: sunrpc/clnt_perr.c:207
msgid "RPC: Unknown host"
msgstr ""
-#: sunrpc/clnt_perr.c:214
+#: sunrpc/clnt_perr.c:211
msgid "RPC: Unknown protocol"
msgstr ""
-#: sunrpc/clnt_perr.c:218
+#: sunrpc/clnt_perr.c:215
msgid "RPC: Port mapper failure"
msgstr ""
-#: sunrpc/clnt_perr.c:222
+#: sunrpc/clnt_perr.c:219
msgid "RPC: Program not registered"
msgstr ""
-#: sunrpc/clnt_perr.c:226
+#: sunrpc/clnt_perr.c:223
msgid "RPC: Failed (unspecified error)"
msgstr ""
-#: sunrpc/clnt_perr.c:267
+#: sunrpc/clnt_perr.c:264
msgid "RPC: (unknown error code)"
msgstr ""
-#: sunrpc/clnt_perr.c:330
+#: sunrpc/clnt_perr.c:336
msgid "Authentication OK"
msgstr ""
-#: sunrpc/clnt_perr.c:333
+#: sunrpc/clnt_perr.c:339
msgid "Invalid client credential"
msgstr ""
-#: sunrpc/clnt_perr.c:337
+#: sunrpc/clnt_perr.c:343
msgid "Server rejected credential"
msgstr ""
-#: sunrpc/clnt_perr.c:341
+#: sunrpc/clnt_perr.c:347
msgid "Invalid client verifier"
msgstr ""
-#: sunrpc/clnt_perr.c:345
+#: sunrpc/clnt_perr.c:351
msgid "Server rejected verifier"
msgstr ""
-#: sunrpc/clnt_perr.c:349
+#: sunrpc/clnt_perr.c:355
msgid "Client credential too weak"
msgstr ""
-#: sunrpc/clnt_perr.c:353
+#: sunrpc/clnt_perr.c:359
msgid "Invalid server verifier"
msgstr ""
-#: sunrpc/clnt_perr.c:357
+#: sunrpc/clnt_perr.c:363
msgid "Failed (unspecified error)"
msgstr ""
-#: sunrpc/clnt_raw.c:117
+#: sunrpc/clnt_raw.c:115
msgid "clnt_raw.c: fatal header serialization error"
msgstr ""
-#: sunrpc/pm_getmaps.c:83
+#: sunrpc/pm_getmaps.c:77
msgid "pmap_getmaps.c: rpc problem"
msgstr ""
-#: sunrpc/pmap_clnt.c:129
+#: sunrpc/pmap_clnt.c:127
msgid "Cannot register service"
msgstr ""
-#: sunrpc/pmap_rmt.c:248
+#: sunrpc/pmap_rmt.c:243
msgid "Cannot create socket for broadcast rpc"
msgstr ""
-#: sunrpc/pmap_rmt.c:255
+#: sunrpc/pmap_rmt.c:250
msgid "Cannot set socket option SO_BROADCAST"
msgstr ""
-#: sunrpc/pmap_rmt.c:307
+#: sunrpc/pmap_rmt.c:302
msgid "Cannot send broadcast packet"
msgstr ""
-#: sunrpc/pmap_rmt.c:332
+#: sunrpc/pmap_rmt.c:327
msgid "Broadcast poll problem"
msgstr ""
-#: sunrpc/pmap_rmt.c:345
+#: sunrpc/pmap_rmt.c:340
msgid "Cannot receive reply to broadcast"
msgstr ""
-#: sunrpc/rpc_main.c:290
+#: sunrpc/rpc_main.c:288
#, c-format
msgid "%s: output would overwrite %s\n"
msgstr ""
-#: sunrpc/rpc_main.c:297
+#: sunrpc/rpc_main.c:295
#, c-format
msgid "%s: unable to open %s: %m\n"
msgstr ""
-#: sunrpc/rpc_main.c:309
+#: sunrpc/rpc_main.c:307
#, c-format
msgid "%s: while writing output %s: %m"
msgstr ""
-#: sunrpc/rpc_main.c:344
+#: sunrpc/rpc_main.c:342
#, c-format
msgid "cannot find C preprocessor: %s \n"
msgstr ""
-#: sunrpc/rpc_main.c:352
+#: sunrpc/rpc_main.c:350
msgid "cannot find any C preprocessor (cpp)\n"
msgstr ""
-#: sunrpc/rpc_main.c:421
+#: sunrpc/rpc_main.c:419
#, c-format
msgid "%s: C preprocessor failed with signal %d\n"
msgstr ""
-#: sunrpc/rpc_main.c:424
+#: sunrpc/rpc_main.c:422
#, c-format
msgid "%s: C preprocessor failed with exit code %d\n"
msgstr ""
-#: sunrpc/rpc_main.c:464
+#: sunrpc/rpc_main.c:462
#, c-format
msgid "illegal nettype: `%s'\n"
msgstr ""
-#: sunrpc/rpc_main.c:1130
+#: sunrpc/rpc_main.c:1128
#, c-format
msgid "rpcgen: too many defines\n"
msgstr ""
-#: sunrpc/rpc_main.c:1142
+#: sunrpc/rpc_main.c:1140
#, c-format
msgid "rpcgen: arglist coding error\n"
msgstr ""
#. TRANS: the file will not be removed; this is an
#. TRANS: informative message.
-#: sunrpc/rpc_main.c:1175
+#: sunrpc/rpc_main.c:1173
#, c-format
msgid "file `%s' already exists and may be overwritten\n"
msgstr ""
-#: sunrpc/rpc_main.c:1220
+#: sunrpc/rpc_main.c:1218
#, c-format
msgid "Cannot specify more than one input file!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1394
+#: sunrpc/rpc_main.c:1392
#, c-format
msgid "This implementation doesn't support newstyle or MT-safe code!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1403
+#: sunrpc/rpc_main.c:1401
#, c-format
msgid "Cannot use netid flag with inetd flag!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1415
+#: sunrpc/rpc_main.c:1413
#, c-format
msgid "Cannot use netid flag without TIRPC!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1422
+#: sunrpc/rpc_main.c:1420
#, c-format
msgid "Cannot use table flags with newstyle!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1441
+#: sunrpc/rpc_main.c:1439
#, c-format
msgid "\"infile\" is required for template generation flags.\n"
msgstr ""
-#: sunrpc/rpc_main.c:1446
+#: sunrpc/rpc_main.c:1444
#, c-format
msgid "Cannot have more than one file generation flag!\n"
msgstr ""
-#: sunrpc/rpc_main.c:1455
+#: sunrpc/rpc_main.c:1453
#, c-format
msgid "usage: %s infile\n"
msgstr ""
-#: sunrpc/rpc_main.c:1456
+#: sunrpc/rpc_main.c:1454
#, c-format
msgid ""
"\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] "
"infile\n"
msgstr ""
-#: sunrpc/rpc_main.c:1458
+#: sunrpc/rpc_main.c:1456
#, c-format
msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
msgstr ""
-#: sunrpc/rpc_main.c:1460
+#: sunrpc/rpc_main.c:1458
#, c-format
msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
msgstr ""
-#: sunrpc/rpc_main.c:1461
+#: sunrpc/rpc_main.c:1459
#, c-format
msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
msgstr ""
-#: sunrpc/rpc_main.c:1469
+#: sunrpc/rpc_main.c:1467
#, c-format
msgid "options:\n"
msgstr ""
-#: sunrpc/rpc_main.c:1470
+#: sunrpc/rpc_main.c:1468
#, c-format
msgid "-a\t\tgenerate all files, including samples\n"
msgstr ""
-#: sunrpc/rpc_main.c:1471
+#: sunrpc/rpc_main.c:1469
#, c-format
msgid "-b\t\tbackward compatibility mode (generates code for SunOS 4.1)\n"
msgstr ""
-#: sunrpc/rpc_main.c:1472
+#: sunrpc/rpc_main.c:1470
#, c-format
msgid "-c\t\tgenerate XDR routines\n"
msgstr ""
-#: sunrpc/rpc_main.c:1473
+#: sunrpc/rpc_main.c:1471
#, c-format
msgid "-C\t\tANSI C mode\n"
msgstr ""
-#: sunrpc/rpc_main.c:1474
+#: sunrpc/rpc_main.c:1472
#, c-format
msgid "-Dname[=value]\tdefine a symbol (same as #define)\n"
msgstr ""
-#: sunrpc/rpc_main.c:1475
+#: sunrpc/rpc_main.c:1473
#, c-format
msgid "-h\t\tgenerate header file\n"
msgstr ""
-#: sunrpc/rpc_main.c:1476
+#: sunrpc/rpc_main.c:1474
#, c-format
msgid "-i size\t\tsize at which to start generating inline code\n"
msgstr ""
-#: sunrpc/rpc_main.c:1477
+#: sunrpc/rpc_main.c:1475
#, c-format
msgid "-I\t\tgenerate code for inetd support in server (for SunOS 4.1)\n"
msgstr ""
-#: sunrpc/rpc_main.c:1478
+#: sunrpc/rpc_main.c:1476
#, c-format
msgid "-K seconds\tserver exits after K seconds of inactivity\n"
msgstr ""
-#: sunrpc/rpc_main.c:1479
+#: sunrpc/rpc_main.c:1477
#, c-format
msgid "-l\t\tgenerate client side stubs\n"
msgstr ""
-#: sunrpc/rpc_main.c:1480
+#: sunrpc/rpc_main.c:1478
#, c-format
msgid "-L\t\tserver errors will be printed to syslog\n"
msgstr ""
-#: sunrpc/rpc_main.c:1481
+#: sunrpc/rpc_main.c:1479
#, c-format
msgid "-m\t\tgenerate server side stubs\n"
msgstr ""
-#: sunrpc/rpc_main.c:1482
+#: sunrpc/rpc_main.c:1480
#, c-format
msgid "-M\t\tgenerate MT-safe code\n"
msgstr ""
-#: sunrpc/rpc_main.c:1483
+#: sunrpc/rpc_main.c:1481
#, c-format
msgid "-n netid\tgenerate server code that supports named netid\n"
msgstr ""
-#: sunrpc/rpc_main.c:1484
+#: sunrpc/rpc_main.c:1482
#, c-format
msgid "-N\t\tsupports multiple arguments and call-by-value\n"
msgstr ""
-#: sunrpc/rpc_main.c:1485
+#: sunrpc/rpc_main.c:1483
#, c-format
msgid "-o outfile\tname of the output file\n"
msgstr ""
-#: sunrpc/rpc_main.c:1486
+#: sunrpc/rpc_main.c:1484
#, c-format
msgid "-s nettype\tgenerate server code that supports named nettype\n"
msgstr ""
-#: sunrpc/rpc_main.c:1487
+#: sunrpc/rpc_main.c:1485
#, c-format
msgid "-Sc\t\tgenerate sample client code that uses remote procedures\n"
msgstr ""
-#: sunrpc/rpc_main.c:1488
+#: sunrpc/rpc_main.c:1486
#, c-format
msgid "-Ss\t\tgenerate sample server code that defines remote procedures\n"
msgstr ""
-#: sunrpc/rpc_main.c:1489
+#: sunrpc/rpc_main.c:1487
#, c-format
msgid "-Sm \t\tgenerate makefile template \n"
msgstr ""
-#: sunrpc/rpc_main.c:1490
+#: sunrpc/rpc_main.c:1488
#, c-format
msgid "-t\t\tgenerate RPC dispatch table\n"
msgstr ""
-#: sunrpc/rpc_main.c:1491
+#: sunrpc/rpc_main.c:1489
#, c-format
msgid "-T\t\tgenerate code to support RPC dispatch tables\n"
msgstr ""
-#: sunrpc/rpc_main.c:1492
+#: sunrpc/rpc_main.c:1490
#, c-format
msgid "-Y path\t\tdirectory name to find C preprocessor (cpp)\n"
msgstr ""
-#: sunrpc/rpc_scan.c:114
+#: sunrpc/rpc_scan.c:112
msgid "constant or identifier expected"
msgstr ""
-#: sunrpc/rpc_scan.c:310
+#: sunrpc/rpc_scan.c:308
msgid "illegal character in file: "
msgstr ""
-#: sunrpc/rpc_scan.c:349 sunrpc/rpc_scan.c:375
+#: sunrpc/rpc_scan.c:347 sunrpc/rpc_scan.c:373
msgid "unterminated string constant"
msgstr ""
-#: sunrpc/rpc_scan.c:381
+#: sunrpc/rpc_scan.c:379
msgid "empty char string"
msgstr ""
-#: sunrpc/rpc_scan.c:523 sunrpc/rpc_scan.c:533
+#: sunrpc/rpc_scan.c:521 sunrpc/rpc_scan.c:531
msgid "preprocessor error"
msgstr ""
-#: sunrpc/rpcinfo.c:254 sunrpc/rpcinfo.c:400
+#: sunrpc/rpcinfo.c:246 sunrpc/rpcinfo.c:392
#, c-format
msgid "program %lu is not available\n"
msgstr ""
-#: sunrpc/rpcinfo.c:281 sunrpc/rpcinfo.c:327 sunrpc/rpcinfo.c:350
-#: sunrpc/rpcinfo.c:424 sunrpc/rpcinfo.c:470 sunrpc/rpcinfo.c:493
-#: sunrpc/rpcinfo.c:527
+#: sunrpc/rpcinfo.c:273 sunrpc/rpcinfo.c:319 sunrpc/rpcinfo.c:342
+#: sunrpc/rpcinfo.c:416 sunrpc/rpcinfo.c:462 sunrpc/rpcinfo.c:485
+#: sunrpc/rpcinfo.c:519
#, c-format
msgid "program %lu version %lu is not available\n"
msgstr ""
-#: sunrpc/rpcinfo.c:532
+#: sunrpc/rpcinfo.c:524
#, c-format
msgid "program %lu version %lu ready and waiting\n"
msgstr ""
-#: sunrpc/rpcinfo.c:573 sunrpc/rpcinfo.c:580
+#: sunrpc/rpcinfo.c:565 sunrpc/rpcinfo.c:572
msgid "rpcinfo: can't contact portmapper"
msgstr ""
-#: sunrpc/rpcinfo.c:587
+#: sunrpc/rpcinfo.c:579
msgid "No remote programs registered.\n"
msgstr ""
-#: sunrpc/rpcinfo.c:591
+#: sunrpc/rpcinfo.c:583
msgid " program vers proto port\n"
msgstr ""
-#: sunrpc/rpcinfo.c:630
+#: sunrpc/rpcinfo.c:622
msgid "(unknown)"
msgstr ""
-#: sunrpc/rpcinfo.c:654
+#: sunrpc/rpcinfo.c:646
#, c-format
msgid "rpcinfo: broadcast failed: %s\n"
msgstr ""
-#: sunrpc/rpcinfo.c:675
+#: sunrpc/rpcinfo.c:667
msgid "Sorry. You are not root\n"
msgstr ""
-#: sunrpc/rpcinfo.c:682
+#: sunrpc/rpcinfo.c:674
#, c-format
msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
msgstr ""
-#: sunrpc/rpcinfo.c:691
+#: sunrpc/rpcinfo.c:683
msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
msgstr ""
-#: sunrpc/rpcinfo.c:693
+#: sunrpc/rpcinfo.c:685
msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
msgstr ""
-#: sunrpc/rpcinfo.c:695
+#: sunrpc/rpcinfo.c:687
msgid " rpcinfo -p [ host ]\n"
msgstr ""
-#: sunrpc/rpcinfo.c:696
+#: sunrpc/rpcinfo.c:688
msgid " rpcinfo -b prognum versnum\n"
msgstr ""
-#: sunrpc/rpcinfo.c:697
+#: sunrpc/rpcinfo.c:689
msgid " rpcinfo -d prognum versnum\n"
msgstr ""
-#: sunrpc/rpcinfo.c:722
+#: sunrpc/rpcinfo.c:714
#, c-format
msgid "rpcinfo: %s is unknown service\n"
msgstr ""
-#: sunrpc/rpcinfo.c:759
+#: sunrpc/rpcinfo.c:751
#, c-format
msgid "rpcinfo: %s is unknown host\n"
msgstr ""
-#: sunrpc/svc_run.c:70
+#: sunrpc/svc_run.c:71
msgid "svc_run: - out of memory"
msgstr ""
-#: sunrpc/svc_run.c:90
+#: sunrpc/svc_run.c:91
msgid "svc_run: - poll failed"
msgstr ""
-#: sunrpc/svc_simple.c:87
+#: sunrpc/svc_simple.c:81
#, c-format
msgid "can't reassign procedure number %ld\n"
msgstr ""
-#: sunrpc/svc_simple.c:97
+#: sunrpc/svc_simple.c:91
msgid "couldn't create an rpc server\n"
msgstr ""
-#: sunrpc/svc_simple.c:105
+#: sunrpc/svc_simple.c:99
#, c-format
msgid "couldn't register prog %ld vers %ld\n"
msgstr ""
-#: sunrpc/svc_simple.c:113
+#: sunrpc/svc_simple.c:107
msgid "registerrpc: out of memory\n"
msgstr ""
-#: sunrpc/svc_simple.c:173
+#: sunrpc/svc_simple.c:168
#, c-format
msgid "trouble replying to prog %d\n"
msgstr ""
-#: sunrpc/svc_simple.c:182
+#: sunrpc/svc_simple.c:177
#, c-format
msgid "never registered prog %d\n"
msgstr ""
-#: sunrpc/svc_tcp.c:155
+#: sunrpc/svc_tcp.c:149
msgid "svc_tcp.c - tcp socket creation problem"
msgstr ""
-#: sunrpc/svc_tcp.c:170
+#: sunrpc/svc_tcp.c:164
msgid "svc_tcp.c - cannot getsockname or listen"
msgstr ""
-#: sunrpc/svc_udp.c:128
+#: sunrpc/svc_udp.c:122
msgid "svcudp_create: socket creation problem"
msgstr ""
-#: sunrpc/svc_udp.c:142
+#: sunrpc/svc_udp.c:136
msgid "svcudp_create - cannot getsockname"
msgstr ""
-#: sunrpc/svc_udp.c:175
+#: sunrpc/svc_udp.c:168
msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
msgstr ""
-#: sunrpc/svc_udp.c:475
+#: sunrpc/svc_udp.c:476
msgid "enablecache: cache already enabled"
msgstr ""
-#: sunrpc/svc_udp.c:481
+#: sunrpc/svc_udp.c:482
msgid "enablecache: could not allocate cache"
msgstr ""
-#: sunrpc/svc_udp.c:490
+#: sunrpc/svc_udp.c:491
msgid "enablecache: could not allocate cache data"
msgstr ""
-#: sunrpc/svc_udp.c:498
+#: sunrpc/svc_udp.c:499
msgid "enablecache: could not allocate cache fifo"
msgstr ""
-#: sunrpc/svc_udp.c:533
+#: sunrpc/svc_udp.c:535
msgid "cache_set: victim not found"
msgstr ""
-#: sunrpc/svc_udp.c:544
+#: sunrpc/svc_udp.c:546
msgid "cache_set: victim alloc failed"
msgstr ""
-#: sunrpc/svc_udp.c:551
+#: sunrpc/svc_udp.c:553
msgid "cache_set: could not allocate new rpc_buffer"
msgstr ""
-#: sunrpc/svc_unix.c:150
+#: sunrpc/svc_unix.c:148
msgid "svc_unix.c - AF_UNIX socket creation problem"
msgstr ""
-#: sunrpc/svc_unix.c:166
+#: sunrpc/svc_unix.c:164
msgid "svc_unix.c - cannot getsockname or listen"
msgstr ""
@@ -6066,6 +6325,10 @@ msgstr ""
msgid "State not recoverable"
msgstr ""
+#: sysdeps/gnu/errlist.c:1461
+msgid "Operation not possible due to RF-kill"
+msgstr ""
+
#: sysdeps/mach/_strerror.c:57
msgid "Error in unknown error system: "
msgstr ""
@@ -6173,43 +6436,46 @@ msgstr ""
msgid "cannot read header from `%s'"
msgstr ""
-#: timezone/zdump.c:210
+#: timezone/zdump.c:215
msgid "lacks alphabetic at start"
msgstr ""
-#: timezone/zdump.c:212
+#: timezone/zdump.c:217
msgid "has fewer than 3 alphabetics"
msgstr ""
-#: timezone/zdump.c:214
+#: timezone/zdump.c:219
msgid "has more than 6 alphabetics"
msgstr ""
-#: timezone/zdump.c:222
+#: timezone/zdump.c:227
msgid "differs from POSIX standard"
msgstr ""
-#: timezone/zdump.c:228
+#: timezone/zdump.c:233
#, c-format
msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
msgstr ""
-#: timezone/zdump.c:279
+#: timezone/zdump.c:242
#, c-format
msgid ""
-"%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
+"%s: usage is %s [ --version ] [ --help ] [ -v ] [ -c [loyear,]hiyear ] "
+"zonename ...\n"
+"\n"
+"Report bugs to tz@elsie.nci.nih.gov.\n"
msgstr ""
-#: timezone/zdump.c:296
+#: timezone/zdump.c:311
#, c-format
msgid "%s: wild -c argument %s\n"
msgstr ""
-#: timezone/zdump.c:387
+#: timezone/zdump.c:398
msgid "Error writing to standard output"
msgstr ""
-#: timezone/zdump.c:410
+#: timezone/zdump.c:421
#, c-format
msgid ""
"%s: use of -v on system with floating time_t other than float or double\n"
@@ -6237,341 +6503,344 @@ msgstr ""
#: timezone/zic.c:459
#, c-format
msgid ""
-"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+"%s: usage is %s [ --version ] [ --help ] [ -v ] [ -l localtime ] [ -p "
+"posixrules ] \\\n"
"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
+"\n"
+"Report bugs to tz@elsie.nci.nih.gov.\n"
msgstr ""
-#: timezone/zic.c:494
+#: timezone/zic.c:496
msgid "wild compilation-time specification of zic_t"
msgstr ""
-#: timezone/zic.c:511
+#: timezone/zic.c:515
#, c-format
msgid "%s: More than one -d option specified\n"
msgstr ""
-#: timezone/zic.c:521
+#: timezone/zic.c:525
#, c-format
msgid "%s: More than one -l option specified\n"
msgstr ""
-#: timezone/zic.c:531
+#: timezone/zic.c:535
#, c-format
msgid "%s: More than one -p option specified\n"
msgstr ""
-#: timezone/zic.c:541
+#: timezone/zic.c:545
#, c-format
msgid "%s: More than one -y option specified\n"
msgstr ""
-#: timezone/zic.c:551
+#: timezone/zic.c:555
#, c-format
msgid "%s: More than one -L option specified\n"
msgstr ""
-#: timezone/zic.c:600
+#: timezone/zic.c:604
msgid "link to link"
msgstr ""
-#: timezone/zic.c:665
+#: timezone/zic.c:669
msgid "hard link failed, symbolic link used"
msgstr ""
-#: timezone/zic.c:673
+#: timezone/zic.c:677
#, c-format
msgid "%s: Can't link from %s to %s: %s\n"
msgstr ""
-#: timezone/zic.c:745 timezone/zic.c:747
+#: timezone/zic.c:749 timezone/zic.c:751
msgid "same rule name in multiple files"
msgstr ""
-#: timezone/zic.c:788
+#: timezone/zic.c:792
msgid "unruly zone"
msgstr ""
-#: timezone/zic.c:795
+#: timezone/zic.c:799
#, c-format
msgid "%s in ruleless zone"
msgstr ""
-#: timezone/zic.c:816
+#: timezone/zic.c:820
msgid "standard input"
msgstr ""
-#: timezone/zic.c:821
+#: timezone/zic.c:825
#, c-format
msgid "%s: Can't open %s: %s\n"
msgstr ""
-#: timezone/zic.c:832
+#: timezone/zic.c:836
msgid "line too long"
msgstr ""
-#: timezone/zic.c:852
+#: timezone/zic.c:856
msgid "input line of unknown type"
msgstr ""
-#: timezone/zic.c:868
+#: timezone/zic.c:872
#, c-format
msgid "%s: Leap line in non leap seconds file %s\n"
msgstr ""
-#: timezone/zic.c:875 timezone/zic.c:1312 timezone/zic.c:1334
+#: timezone/zic.c:879 timezone/zic.c:1316 timezone/zic.c:1338
#, c-format
msgid "%s: panic: Invalid l_value %d\n"
msgstr ""
-#: timezone/zic.c:883
+#: timezone/zic.c:887
#, c-format
msgid "%s: Error reading %s\n"
msgstr ""
-#: timezone/zic.c:890
+#: timezone/zic.c:894
#, c-format
msgid "%s: Error closing %s: %s\n"
msgstr ""
-#: timezone/zic.c:895
+#: timezone/zic.c:899
msgid "expected continuation line not found"
msgstr ""
-#: timezone/zic.c:939 timezone/zic.c:2476 timezone/zic.c:2495
+#: timezone/zic.c:943 timezone/zic.c:2480 timezone/zic.c:2499
msgid "time overflow"
msgstr ""
-#: timezone/zic.c:943
+#: timezone/zic.c:947
msgid "24:00 not handled by pre-1998 versions of zic"
msgstr ""
-#: timezone/zic.c:946
+#: timezone/zic.c:950
msgid "values over 24 hours not handled by pre-2007 versions of zic"
msgstr ""
-#: timezone/zic.c:959
+#: timezone/zic.c:963
msgid "wrong number of fields on Rule line"
msgstr ""
-#: timezone/zic.c:963
+#: timezone/zic.c:967
msgid "nameless rule"
msgstr ""
-#: timezone/zic.c:968
+#: timezone/zic.c:972
msgid "invalid saved time"
msgstr ""
-#: timezone/zic.c:989
+#: timezone/zic.c:993
msgid "wrong number of fields on Zone line"
msgstr ""
-#: timezone/zic.c:995
+#: timezone/zic.c:999
#, c-format
msgid "\"Zone %s\" line and -l option are mutually exclusive"
msgstr ""
-#: timezone/zic.c:1003
+#: timezone/zic.c:1007
#, c-format
msgid "\"Zone %s\" line and -p option are mutually exclusive"
msgstr ""
-#: timezone/zic.c:1015
+#: timezone/zic.c:1019
#, c-format
msgid "duplicate zone name %s (file \"%s\", line %d)"
msgstr ""
-#: timezone/zic.c:1031
+#: timezone/zic.c:1035
msgid "wrong number of fields on Zone continuation line"
msgstr ""
-#: timezone/zic.c:1071
+#: timezone/zic.c:1075
msgid "invalid UTC offset"
msgstr ""
-#: timezone/zic.c:1074
+#: timezone/zic.c:1078
msgid "invalid abbreviation format"
msgstr ""
-#: timezone/zic.c:1103
+#: timezone/zic.c:1107
msgid "Zone continuation line end time is not after end time of previous line"
msgstr ""
-#: timezone/zic.c:1131
+#: timezone/zic.c:1135
msgid "wrong number of fields on Leap line"
msgstr ""
-#: timezone/zic.c:1140
+#: timezone/zic.c:1144
msgid "invalid leaping year"
msgstr ""
-#: timezone/zic.c:1160 timezone/zic.c:1266
+#: timezone/zic.c:1164 timezone/zic.c:1270
msgid "invalid month name"
msgstr ""
-#: timezone/zic.c:1173 timezone/zic.c:1379 timezone/zic.c:1393
+#: timezone/zic.c:1177 timezone/zic.c:1383 timezone/zic.c:1397
msgid "invalid day of month"
msgstr ""
-#: timezone/zic.c:1178
+#: timezone/zic.c:1182
msgid "time before zero"
msgstr ""
-#: timezone/zic.c:1182
+#: timezone/zic.c:1186
msgid "time too small"
msgstr ""
-#: timezone/zic.c:1186
+#: timezone/zic.c:1190
msgid "time too large"
msgstr ""
-#: timezone/zic.c:1190 timezone/zic.c:1295
+#: timezone/zic.c:1194 timezone/zic.c:1299
msgid "invalid time of day"
msgstr ""
-#: timezone/zic.c:1209
+#: timezone/zic.c:1213
msgid "illegal CORRECTION field on Leap line"
msgstr ""
-#: timezone/zic.c:1214
+#: timezone/zic.c:1218
msgid "illegal Rolling/Stationary field on Leap line"
msgstr ""
-#: timezone/zic.c:1230
+#: timezone/zic.c:1234
msgid "wrong number of fields on Link line"
msgstr ""
-#: timezone/zic.c:1234
+#: timezone/zic.c:1238
msgid "blank FROM field on Link line"
msgstr ""
-#: timezone/zic.c:1238
+#: timezone/zic.c:1242
msgid "blank TO field on Link line"
msgstr ""
-#: timezone/zic.c:1316
+#: timezone/zic.c:1320
msgid "invalid starting year"
msgstr ""
-#: timezone/zic.c:1338
+#: timezone/zic.c:1342
msgid "invalid ending year"
msgstr ""
-#: timezone/zic.c:1342
+#: timezone/zic.c:1346
msgid "starting year greater than ending year"
msgstr ""
-#: timezone/zic.c:1349
+#: timezone/zic.c:1353
msgid "typed single year"
msgstr ""
-#: timezone/zic.c:1384
+#: timezone/zic.c:1388
msgid "invalid weekday name"
msgstr ""
-#: timezone/zic.c:1562
+#: timezone/zic.c:1566
#, c-format
msgid "%s: Can't remove %s: %s\n"
msgstr ""
-#: timezone/zic.c:1572
+#: timezone/zic.c:1576
#, c-format
msgid "%s: Can't create %s: %s\n"
msgstr ""
-#: timezone/zic.c:1722
+#: timezone/zic.c:1726
#, c-format
msgid "%s: Error writing %s\n"
msgstr ""
-#: timezone/zic.c:2015
+#: timezone/zic.c:2019
msgid "no POSIX environment variable for zone"
msgstr ""
-#: timezone/zic.c:2172
+#: timezone/zic.c:2176
msgid "can't determine time zone abbreviation to use just after until time"
msgstr ""
-#: timezone/zic.c:2218
+#: timezone/zic.c:2222
msgid "too many transitions?!"
msgstr ""
-#: timezone/zic.c:2237
+#: timezone/zic.c:2241
msgid "internal error - addtype called with bad isdst"
msgstr ""
-#: timezone/zic.c:2241
+#: timezone/zic.c:2245
msgid "internal error - addtype called with bad ttisstd"
msgstr ""
-#: timezone/zic.c:2245
+#: timezone/zic.c:2249
msgid "internal error - addtype called with bad ttisgmt"
msgstr ""
-#: timezone/zic.c:2264
+#: timezone/zic.c:2268
msgid "too many local time types"
msgstr ""
-#: timezone/zic.c:2268
+#: timezone/zic.c:2272
msgid "UTC offset out of range"
msgstr ""
-#: timezone/zic.c:2296
+#: timezone/zic.c:2300
msgid "too many leap seconds"
msgstr ""
-#: timezone/zic.c:2302
+#: timezone/zic.c:2306
msgid "repeated leap second moment"
msgstr ""
-#: timezone/zic.c:2354
+#: timezone/zic.c:2358
msgid "Wild result from command execution"
msgstr ""
-#: timezone/zic.c:2355
+#: timezone/zic.c:2359
#, c-format
msgid "%s: command was '%s', result was %d\n"
msgstr ""
-#: timezone/zic.c:2453
+#: timezone/zic.c:2457
msgid "Odd number of quotation marks"
msgstr ""
-#: timezone/zic.c:2542
+#: timezone/zic.c:2546
msgid "use of 2/29 in non leap-year"
msgstr ""
-#: timezone/zic.c:2577
+#: timezone/zic.c:2581
msgid ""
"rule goes past start/end of month--will not work with pre-2004 versions of "
"zic"
msgstr ""
-#: timezone/zic.c:2609
+#: timezone/zic.c:2613
msgid "time zone abbreviation lacks alphabetic at start"
msgstr ""
-#: timezone/zic.c:2611
+#: timezone/zic.c:2615
msgid "time zone abbreviation has more than 3 alphabetics"
msgstr ""
-#: timezone/zic.c:2613
+#: timezone/zic.c:2617
msgid "time zone abbreviation has too many alphabetics"
msgstr ""
-#: timezone/zic.c:2623
+#: timezone/zic.c:2627
msgid "time zone abbreviation differs from POSIX standard"
msgstr ""
-#: timezone/zic.c:2635
+#: timezone/zic.c:2639
msgid "too many, or too long, time zone abbreviations"
msgstr ""
-#: timezone/zic.c:2676
+#: timezone/zic.c:2680
#, c-format
msgid "%s: Can't create directory %s: %s\n"
msgstr ""
-#: timezone/zic.c:2698
+#: timezone/zic.c:2702
#, c-format
msgid "%s: %d did not sign extend correctly\n"
msgstr ""
diff --git a/libc/posix/Makefile b/libc/posix/Makefile
index 72cba3be6..85128beae 100644
--- a/libc/posix/Makefile
+++ b/libc/posix/Makefile
@@ -108,7 +108,7 @@ tests := tstgetopt testfnm runtests \
bug-getopt5 tst-getopt_long1
tests-$(OPTION_EGLIBC_LOCALE_CODE) \
+= tst-fnmatch tst-regexloc bug-regex1 bug-regex5 \
- bug-regex23 bug-regex25
+ bug-regex23 bug-regex25 bug-regex32
tests-$(OPTION_EGLIBC_INET) \
+= tst-getaddrinfo bug-ga1 tst-getaddrinfo2 \
tst-rfc3484 tst-rfc3484-2 tst-rfc3484-3 tst-getaddrinfo3
diff --git a/libc/posix/bug-regex32.c b/libc/posix/bug-regex32.c
new file mode 100644
index 000000000..525232c69
--- /dev/null
+++ b/libc/posix/bug-regex32.c
@@ -0,0 +1,36 @@
+// BZ 12811
+#include <regex.h>
+#include <stdio.h>
+#include <locale.h>
+
+static int
+do_test (void)
+{
+ char buf[1000];
+ regex_t preg;
+ if (setlocale (LC_CTYPE, "de_DE.UTF-8") == NULL)
+ {
+ puts ("setlocale failed");
+ return 1;
+ }
+
+ int e = regcomp (&preg, ".*ab", REG_ICASE);
+ if (e != 0)
+ {
+ regerror (e, &preg, buf, sizeof (buf));
+ printf ("regcomp = %d \"%s\"\n", e, buf);
+ return 1;
+ }
+
+ // Incomplete character at the end of the buffer
+ e = regexec (&preg, "aaaaaaaaaaaa\xc4", 0, NULL, 0);
+
+ regfree (&preg);
+ regerror (e, &preg, buf, sizeof (buf));
+ printf ("regexec = %d \"%s\"\n", e, buf);
+
+ return e != REG_NOMATCH;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
diff --git a/libc/posix/glob.c b/libc/posix/glob.c
index df0861f6e..4900c6899 100644
--- a/libc/posix/glob.c
+++ b/libc/posix/glob.c
@@ -767,7 +767,6 @@ glob (pattern, flags, errfunc, pglob)
char *end_name = strchr (dirname, '/');
char *user_name;
int malloc_user_name = 0;
- const char *home_dir;
char *unescape = NULL;
if (!(flags & GLOB_NOESCAPE))
diff --git a/libc/posix/regex_internal.c b/libc/posix/regex_internal.c
index c481d2fdb..a7d528ff6 100644
--- a/libc/posix/regex_internal.c
+++ b/libc/posix/regex_internal.c
@@ -237,13 +237,8 @@ build_wcs_buffer (re_string_t *pstr)
else
p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + byte_idx;
mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
- if (BE (mbclen == (size_t) -2, 0))
- {
- /* The buffer doesn't have enough space, finish to build. */
- pstr->cur_state = prev_st;
- break;
- }
- else if (BE (mbclen == (size_t) -1 || mbclen == 0, 0))
+ if (BE (mbclen == (size_t) -1 || mbclen == 0
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len), 0))
{
/* We treat these cases as a singlebyte character. */
mbclen = 1;
@@ -252,6 +247,12 @@ build_wcs_buffer (re_string_t *pstr)
wc = pstr->trans[wc];
pstr->cur_state = prev_st;
}
+ else if (BE (mbclen == (size_t) -2, 0))
+ {
+ /* The buffer doesn't have enough space, finish to build. */
+ pstr->cur_state = prev_st;
+ break;
+ }
/* Write wide character and padding. */
pstr->wcs[byte_idx++] = wc;
@@ -334,9 +335,11 @@ build_wcs_upper_buffer (re_string_t *pstr)
for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
pstr->wcs[byte_idx++] = WEOF;
}
- else if (mbclen == (size_t) -1 || mbclen == 0)
+ else if (mbclen == (size_t) -1 || mbclen == 0
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len))
{
- /* It is an invalid character or '\0'. Just use the byte. */
+ /* It is an invalid character, an incomplete character
+ at the end of the string, or '\0'. Just use the byte. */
int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
pstr->mbs[byte_idx] = ch;
/* And also cast it to wide char. */
@@ -449,7 +452,8 @@ build_wcs_upper_buffer (re_string_t *pstr)
for (remain_len = byte_idx + mbclen - 1; byte_idx < remain_len ;)
pstr->wcs[byte_idx++] = WEOF;
}
- else if (mbclen == (size_t) -1 || mbclen == 0)
+ else if (mbclen == (size_t) -1 || mbclen == 0
+ || (mbclen == (size_t) -2 && pstr->bufs_len >= pstr->len))
{
/* It is an invalid character or '\0'. Just use the byte. */
int ch = pstr->raw_mbs[pstr->raw_mbs_idx + src_idx];
diff --git a/libc/posix/regexec.c b/libc/posix/regexec.c
index d9c577489..e5da4622c 100644
--- a/libc/posix/regexec.c
+++ b/libc/posix/regexec.c
@@ -1,5 +1,5 @@
/* Extended regular expression matching and search library.
- Copyright (C) 2002-2005, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2002-2005,2007,2009,2010,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Isamu Hasegawa <isamu@yamato.ibm.com>.
@@ -1142,7 +1142,8 @@ check_matching (re_match_context_t *mctx, int fl_longest_match,
re_dfastate_t *old_state = cur_state;
int next_char_idx = re_string_cur_idx (&mctx->input) + 1;
- if (BE (next_char_idx >= mctx->input.bufs_len, 0)
+ if ((BE (next_char_idx >= mctx->input.bufs_len, 0)
+ && mctx->input.bufs_len < mctx->input.len)
|| (BE (next_char_idx >= mctx->input.valid_len, 0)
&& mctx->input.valid_len < mctx->input.len))
{
@@ -1718,7 +1719,8 @@ clean_state_log_if_needed (re_match_context_t *mctx, int next_state_log_idx)
{
int top = mctx->state_log_top;
- if (next_state_log_idx >= mctx->input.bufs_len
+ if ((next_state_log_idx >= mctx->input.bufs_len
+ && mctx->input.bufs_len < mctx->input.len)
|| (next_state_log_idx >= mctx->input.valid_len
&& mctx->input.valid_len < mctx->input.len))
{
@@ -4105,7 +4107,7 @@ extend_buffers (re_match_context_t *mctx)
return REG_ESPACE;
/* Double the lengthes of the buffers. */
- ret = re_string_realloc_buffers (pstr, pstr->bufs_len * 2);
+ ret = re_string_realloc_buffers (pstr, MIN (pstr->len, pstr->bufs_len * 2));
if (BE (ret != REG_NOERROR, 0))
return ret;
diff --git a/libc/resolv/res_init.c b/libc/resolv/res_init.c
index 7588432b2..64934b0e5 100644
--- a/libc/resolv/res_init.c
+++ b/libc/resolv/res_init.c
@@ -521,37 +521,42 @@ res_setoptions(res_state statp, const char *options, const char *source) {
}
printf(";;\tdebug\n");
#endif
- } else if (!strncmp(cp, "inet6", sizeof("inet6") - 1)) {
- statp->options |= RES_USE_INET6;
- } else if (!strncmp(cp, "ip6-bytestring",
- sizeof("ip6-bytestring") - 1)) {
- statp->options |= RES_USEBSTRING;
- } else if (!strncmp(cp, "no-ip6-dotint",
- sizeof("no-ip6-dotint") - 1)) {
- statp->options |= RES_NOIP6DOTINT;
- } else if (!strncmp(cp, "ip6-dotint",
- sizeof("ip6-dotint") - 1)) {
- statp->options &= ~RES_NOIP6DOTINT;
- } else if (!strncmp(cp, "rotate", sizeof("rotate") - 1)) {
- statp->options |= RES_ROTATE;
- } else if (!strncmp(cp, "no-check-names",
- sizeof("no-check-names") - 1)) {
- statp->options |= RES_NOCHECKNAME;
- } else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
- statp->options |= RES_USE_EDNS0;
- } else if (!strncmp(cp, "single-request-reopen",
- sizeof("single-request-reopen") - 1)) {
- statp->options |= RES_SNGLKUPREOP;
- } else if (!strncmp(cp, "single-request",
- sizeof("single-request") - 1)) {
- statp->options |= RES_SNGLKUP;
- } else if (!strncmp(cp, "no_tld_query",
- sizeof("no_tld_query") - 1) ||
- !strncmp(cp, "no-tld-query",
- sizeof("no-tld-query") - 1)) {
- statp->options |= RES_NOTLDQUERY;
} else {
- /* XXX - print a warning here? */
+ static const struct
+ {
+ char str[22];
+ uint8_t len;
+ uint8_t clear;
+ unsigned long int flag;
+ } options[] = {
+#define STRnLEN(str) str, sizeof (str) - 1
+ { STRnLEN ("inet6"), 0, RES_USE_INET6 },
+ { STRnLEN ("ip6-bytestring"), 0, RES_USEBSTRING },
+ { STRnLEN ("no-ip6-dotint"), 0, RES_NOIP6DOTINT },
+ { STRnLEN ("ip6-dotint"), 1, ~RES_NOIP6DOTINT },
+ { STRnLEN ("rotate"), 0, RES_ROTATE },
+ { STRnLEN ("no-check-names"), 0, RES_NOCHECKNAME },
+ { STRnLEN ("edns0"), 0, RES_USE_EDNS0 },
+ { STRnLEN ("single-request-reopen"), 0, RES_SNGLKUPREOP },
+ { STRnLEN ("single-request"), 0, RES_SNGLKUP },
+ { STRnLEN ("no_tld_query"), 0, RES_NOTLDQUERY },
+ { STRnLEN ("no-tld-query"), 0, RES_NOTLDQUERY },
+ { STRnLEN ("use-vc"), 0, RES_USEVC }
+ };
+#define noptions (sizeof (options) / sizeof (options[0]))
+ int i;
+ for (i = 0; i < noptions; ++i)
+ if (strncmp (cp, options[i].str, options[i].len) == 0)
+ {
+ if (options[i].clear)
+ statp->options &= options[i].flag;
+ else
+ statp->options |= options[i].flag;
+ break;
+ }
+ if (i == noptions) {
+ /* XXX - print a warning here? */
+ }
}
/* skip to next run of spaces */
while (*cp && *cp != ' ' && *cp != '\t')
diff --git a/libc/resolv/res_send.c b/libc/resolv/res_send.c
index 845b658e3..97142b7dd 100644
--- a/libc/resolv/res_send.c
+++ b/libc/resolv/res_send.c
@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
ns, ansp, ansp2, nansp2, resplen2);
if (n < 0)
return (-1);
- if (n == 0)
+ if (n == 0 && (buf2 == NULL || resplen2 == 0))
goto next_ns;
} else {
/* Use datagrams. */
@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
ansp2, nansp2, resplen2);
if (n < 0)
return (-1);
- if (n == 0)
+ if (n == 0 && (buf2 == NULL || resplen2 == 0))
goto next_ns;
if (v_circuit)
// XXX Check whether both requests failed or
@@ -1275,10 +1275,14 @@ send_dg(res_state statp,
(*thisresplenp > *thisanssizp)
? *thisanssizp : *thisresplenp);
- if (recvresp1 || (buf2 != NULL && recvresp2))
+ if (recvresp1 || (buf2 != NULL && recvresp2)) {
+ *resplen2 = 0;
return resplen;
+ }
if (buf2 != NULL)
{
+ /* No data from the first reply. */
+ resplen = 0;
/* We are waiting for a possible second reply. */
if (hp->id == anhp->id)
recvresp1 = 1;
@@ -1344,7 +1348,7 @@ send_dg(res_state statp,
goto err_out;
}
else {
- /* poll should not have returned > 0 in this case. */
+ /* poll should not have returned > 0 in this case. */
abort ();
}
}
diff --git a/libc/rt/bits/mqueue2.h b/libc/rt/bits/mqueue2.h
index 4c90609e8..a6d081572 100644
--- a/libc/rt/bits/mqueue2.h
+++ b/libc/rt/bits/mqueue2.h
@@ -1,5 +1,5 @@
/* Checking macros for mq functions.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2011 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
@@ -25,16 +25,18 @@
parameter. */
extern mqd_t mq_open (__const char *__name, int __oflag, ...)
__THROW __nonnull ((1));
-extern mqd_t __mq_open_2 (__const char *__name, int __oflag) __nonnull ((1));
-extern mqd_t __REDIRECT (__mq_open_alias, (__const char *__name, int __oflag, ...),
- mq_open) __nonnull ((1));
+extern mqd_t __mq_open_2 (__const char *__name, int __oflag)
+ __THROW __nonnull ((1));
+extern mqd_t __REDIRECT_NTH (__mq_open_alias, (__const char *__name,
+ int __oflag, ...), mq_open)
+ __nonnull ((1));
__errordecl (__mq_open_wrong_number_of_args,
"mq_open can be called either with 2 or 4 arguments");
__errordecl (__mq_open_missing_mode_and_attr,
"mq_open with O_CREAT in second argument needs 4 arguments");
__extern_always_inline mqd_t
-mq_open (__const char *__name, int __oflag, ...)
+__NTH (mq_open (__const char *__name, int __oflag, ...))
{
if (__va_arg_pack_len () != 0 && __va_arg_pack_len () != 2)
__mq_open_wrong_number_of_args ();
diff --git a/libc/shadow/sgetspent_r.c b/libc/shadow/sgetspent_r.c
index 5599ee4ec..5db4aec7a 100644
--- a/libc/shadow/sgetspent_r.c
+++ b/libc/shadow/sgetspent_r.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 2005, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1996-1998, 2005, 2009, 2011 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,11 +52,11 @@ LINE_PARSER
else
{
STRING_FIELD (result->sp_pwdp, ISCOLON, 0);
- INT_FIELD_MAYBE_NULL (result->sp_lstchg, ISCOLON, 0, 10, (long int),
+ INT_FIELD_MAYBE_NULL (result->sp_lstchg, ISCOLON, 0, 10, (long int) (int),
(long int) -1);
- INT_FIELD_MAYBE_NULL (result->sp_min, ISCOLON, 0, 10, (long int),
+ INT_FIELD_MAYBE_NULL (result->sp_min, ISCOLON, 0, 10, (long int) (int),
(long int) -1);
- INT_FIELD_MAYBE_NULL (result->sp_max, ISCOLON, 0, 10, (long int),
+ INT_FIELD_MAYBE_NULL (result->sp_max, ISCOLON, 0, 10, (long int) (int),
(long int) -1);
while (isspace (*line))
++line;
@@ -70,12 +70,12 @@ LINE_PARSER
}
else
{
- INT_FIELD_MAYBE_NULL (result->sp_warn, ISCOLON, 0, 10, (long int),
- (long int) -1);
- INT_FIELD_MAYBE_NULL (result->sp_inact, ISCOLON, 0, 10, (long int),
- (long int) -1);
- INT_FIELD_MAYBE_NULL (result->sp_expire, ISCOLON, 0, 10, (long int),
- (long int) -1);
+ INT_FIELD_MAYBE_NULL (result->sp_warn, ISCOLON, 0, 10,
+ (long int) (int), (long int) -1);
+ INT_FIELD_MAYBE_NULL (result->sp_inact, ISCOLON, 0, 10,
+ (long int) (int), (long int) -1);
+ INT_FIELD_MAYBE_NULL (result->sp_expire, ISCOLON, 0, 10,
+ (long int) (int), (long int) -1);
if (*line != '\0')
INT_FIELD_MAYBE_NULL (result->sp_flag, FALSEP, 0, 10,
(unsigned long int), ~0ul)
diff --git a/libc/stdlib/longlong.h b/libc/stdlib/longlong.h
index 5937a4855..1bab76db3 100644
--- a/libc/stdlib/longlong.h
+++ b/libc/stdlib/longlong.h
@@ -349,7 +349,7 @@ UDItype __umulsidi3 (USItype, USItype);
__asm__ ("mr\t%%r0,%3" \
: "=r" (r0), "=r" (r1) \
: "r" (r1), "r" (m1)); \
- (xh) = r1; (xl) = r0; \
+ (xh) = r0; (xl) = r1; \
} while (0)
#define sdiv_qrnnd(q, r, n1, n0, d) \
do { \
diff --git a/libc/sysdeps/posix/getaddrinfo.c b/libc/sysdeps/posix/getaddrinfo.c
index 5ddda889c..1e017b2ed 100644
--- a/libc/sysdeps/posix/getaddrinfo.c
+++ b/libc/sysdeps/posix/getaddrinfo.c
@@ -207,7 +207,7 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp,
if (herrno == NETDB_INTERNAL) \
{ \
__set_h_errno (herrno); \
- _res.options = old_res_options; \
+ _res.options |= old_res_options & RES_USE_INET6; \
return -EAI_SYSTEM; \
} \
if (herrno == TRY_AGAIN) \
@@ -1015,7 +1015,7 @@ gaih_inet (const char *name, const struct gaih_service *service,
nip = nip->next;
}
- _res.options = old_res_options;
+ _res.options |= old_res_options & RES_USE_INET6;
if (no_data != 0 && no_inet6_data != 0)
{
diff --git a/libc/sysdeps/sparc/sparc32/dl-irel.h b/libc/sysdeps/sparc/sparc32/dl-irel.h
index 1891938d6..2753fb4ce 100644
--- a/libc/sysdeps/sparc/sparc32/dl-irel.h
+++ b/libc/sysdeps/sparc/sparc32/dl-irel.h
@@ -24,6 +24,7 @@
#include <stdio.h>
#include <unistd.h>
#include <dl-plt.h>
+#include <ldsodefs.h>
#define ELF_MACHINE_IRELA 1
@@ -36,13 +37,13 @@ elf_irela (const Elf32_Rela *reloc)
if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1))
{
Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
- Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) ();
+ Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
*reloc_addr = value;
}
else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1))
{
Elf32_Addr *const reloc_addr = (void *) reloc->r_offset;
- Elf32_Addr value = ((Elf32_Addr (*) (void)) reloc->r_addend) ();
+ Elf32_Addr value = ((Elf32_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
sparc_fixup_plt (reloc, reloc_addr, value, 0, 1);
}
diff --git a/libc/sysdeps/sparc/sparc32/dl-machine.h b/libc/sysdeps/sparc/sparc32/dl-machine.h
index 9631db32e..f8e8fe417 100644
--- a/libc/sysdeps/sparc/sparc32/dl-machine.h
+++ b/libc/sysdeps/sparc/sparc32/dl-machine.h
@@ -399,7 +399,7 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
&& __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
&& __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
{
- value = ((Elf32_Addr (*) (void)) value) ();
+ value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
}
switch (r_type)
@@ -430,11 +430,11 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
*reloc_addr = value;
break;
case R_SPARC_IRELATIVE:
- value = ((Elf32_Addr (*) (void)) value) ();
+ value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
*reloc_addr = value;
break;
case R_SPARC_JMP_IREL:
- value = ((Elf32_Addr (*) (void)) value) ();
+ value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
/* Fall thru */
case R_SPARC_JMP_SLOT:
{
@@ -562,7 +562,7 @@ elf_machine_lazy_rel (struct link_map *map,
else if (r_type == R_SPARC_JMP_IREL)
{
Elf32_Addr value = map->l_addr + reloc->r_addend;
- value = ((Elf32_Addr (*) (void)) value) ();
+ value = ((Elf32_Addr (*) (int)) value) (GLRO(dl_hwcap));
sparc_fixup_plt (reloc, reloc_addr, value, 1, 1);
}
else if (r_type == R_SPARC_NONE)
diff --git a/libc/sysdeps/sparc/sparc64/dl-irel.h b/libc/sysdeps/sparc/sparc64/dl-irel.h
index 1a2a0a3dd..0d70e2a44 100644
--- a/libc/sysdeps/sparc/sparc64/dl-irel.h
+++ b/libc/sysdeps/sparc/sparc64/dl-irel.h
@@ -24,6 +24,7 @@
#include <stdio.h>
#include <unistd.h>
#include <dl-plt.h>
+#include <ldsodefs.h>
#define ELF_MACHINE_IRELA 1
@@ -36,13 +37,13 @@ elf_irela (const Elf64_Rela *reloc)
if (__builtin_expect (r_type == R_SPARC_IRELATIVE, 1))
{
Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
- Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
+ Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
*reloc_addr = value;
}
else if (__builtin_expect (r_type == R_SPARC_JMP_IREL, 1))
{
Elf64_Addr *const reloc_addr = (void *) reloc->r_offset;
- Elf64_Addr value = ((Elf64_Addr (*) (void)) reloc->r_addend) ();
+ Elf64_Addr value = ((Elf64_Addr (*) (int)) reloc->r_addend) (GLRO(dl_hwcap));
struct link_map map = { .l_addr = 0 };
/* 'high' is always zero, for large PLT entries the linker
diff --git a/libc/sysdeps/sparc/sparc64/dl-machine.h b/libc/sysdeps/sparc/sparc64/dl-machine.h
index 82ab5a454..aaa22d654 100644
--- a/libc/sysdeps/sparc/sparc64/dl-machine.h
+++ b/libc/sysdeps/sparc/sparc64/dl-machine.h
@@ -430,7 +430,7 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
if (sym != NULL
&& __builtin_expect (ELFW(ST_TYPE) (sym->st_info) == STT_GNU_IFUNC, 0)
&& __builtin_expect (sym->st_shndx != SHN_UNDEF, 1))
- value = ((Elf64_Addr (*) (void)) value) ();
+ value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
switch (r_type)
{
@@ -460,11 +460,11 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
*reloc_addr = value;
break;
case R_SPARC_IRELATIVE:
- value = ((Elf64_Addr (*) (void)) value) ();
+ value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
*reloc_addr = value;
break;
case R_SPARC_JMP_IREL:
- value = ((Elf64_Addr (*) (void)) value) ();
+ value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
/* Fall thru */
case R_SPARC_JMP_SLOT:
#ifdef RESOLVE_CONFLICT_FIND_MAP
@@ -658,7 +658,7 @@ elf_machine_lazy_rel (struct link_map *map,
|| r_type == R_SPARC_IRELATIVE)
{
Elf64_Addr value = map->l_addr + reloc->r_addend;
- value = ((Elf64_Addr (*) (void)) value) ();
+ value = ((Elf64_Addr (*) (int)) value) (GLRO(dl_hwcap));
if (r_type == R_SPARC_JMP_IREL)
{
/* 'high' is always zero, for large PLT entries the linker
diff --git a/libc/sysdeps/sparc/sparc64/multiarch/memcpy.S b/libc/sysdeps/sparc/sparc64/multiarch/memcpy.S
index a708de10e..c12dc3bbe 100644
--- a/libc/sysdeps/sparc/sparc64/multiarch/memcpy.S
+++ b/libc/sysdeps/sparc/sparc64/multiarch/memcpy.S
@@ -32,26 +32,10 @@ ENTRY(memcpy)
or %o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
1: add %o7, %o3, %o3
mov %o5, %o7
- sethi %hi(_rtld_global_ro), %o2
- or %o2, %lo(_rtld_global_ro), %o2
-# ifdef __arch64__
- ldx [%o3 + %o2], %o2
- ldx [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
-# else
- ld [%o3 + %o2], %o2
- ld [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
-# endif
-# else
- set _dl_hwcap, %o3
-# ifdef __arch64__
- ldx [%o3], %o2
-# else
- ld [%o3 + 4], %o2
-# endif
# endif
- andcc %o2, 0x80, %g0 ! HWCAP_SPARC_N2
+ andcc %o0, 0x80, %g0 ! HWCAP_SPARC_N2
be 1f
- andcc %o2, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
+ andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
# ifdef SHARED
sethi %gdop_hix22(__memcpy_niagara2), %o1
xor %o1, %gdop_lox10(__memcpy_niagara2), %o1
@@ -61,7 +45,7 @@ ENTRY(memcpy)
ba 10f
nop
1: be 1f
- andcc %o2, 0x20, %g0 ! HWCAP_SPARC_ULTRA3
+ andcc %o0, 0x20, %g0 ! HWCAP_SPARC_ULTRA3
# ifdef SHARED
sethi %gdop_hix22(__memcpy_niagara1), %o1
xor %o1, %gdop_lox10(__memcpy_niagara1), %o1
diff --git a/libc/sysdeps/sparc/sparc64/multiarch/memset.S b/libc/sysdeps/sparc/sparc64/multiarch/memset.S
index befd7edc8..2e2744874 100644
--- a/libc/sysdeps/sparc/sparc64/multiarch/memset.S
+++ b/libc/sysdeps/sparc/sparc64/multiarch/memset.S
@@ -32,24 +32,8 @@ ENTRY(memset)
or %o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
1: add %o7, %o3, %o3
mov %o5, %o7
- sethi %hi(_rtld_global_ro), %o2
- or %o2, %lo(_rtld_global_ro), %o2
-# ifdef __arch64__
- ldx [%o3 + %o2], %o2
- ldx [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
-# else
- ld [%o3 + %o2], %o2
- ld [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
-# endif
-# else
- set _dl_hwcap, %o3
-# ifdef __arch64__
- ldx [%o3], %o2
-# else
- ld [%o3 + 4], %o2
-# endif
# endif
- andcc %o2, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
+ andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
be 9f
nop
# ifdef SHARED
@@ -84,24 +68,8 @@ ENTRY(__bzero)
or %o3, %lo(_GLOBAL_OFFSET_TABLE_+4), %o3
1: add %o7, %o3, %o3
mov %o5, %o7
- sethi %hi(_rtld_global_ro), %o2
- or %o2, %lo(_rtld_global_ro), %o2
-# ifdef __arch64__
- ldx [%o3 + %o2], %o2
- ldx [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET], %o2
-# else
- ld [%o3 + %o2], %o2
- ld [%o2 + RTLD_GLOBAL_RO_DL_HWCAP_OFFSET + 4], %o2
-# endif
-# else
- set _dl_hwcap, %o3
-# ifdef __arch64__
- ldx [%o3], %o2
-# else
- ld [%o3 + 4], %o2
-# endif
# endif
- andcc %o2, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
+ andcc %o0, 0x40, %g0 ! HWCAP_SPARC_BLKINIT
be 9f
nop
# ifdef SHARED
diff --git a/libc/sysdeps/unix/sysv/linux/Makefile b/libc/sysdeps/unix/sysv/linux/Makefile
index 4e69d22f4..55e92c7b4 100644
--- a/libc/sysdeps/unix/sysv/linux/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/Makefile
@@ -12,7 +12,8 @@ CFLAGS-malloc.c += -DMORECORE_CLEARS=2
endif
ifeq ($(subdir),socket)
-sysdep_routines += internal_accept4 recvmmsg internal_recvmmsg
+sysdep_routines += internal_accept4 recvmmsg internal_recvmmsg sendmmsg \
+ internal_sendmmsg
endif
ifeq ($(subdir),misc)
diff --git a/libc/sysdeps/unix/sysv/linux/Versions b/libc/sysdeps/unix/sysv/linux/Versions
index 29099dc5c..3a3e8e8c2 100644
--- a/libc/sysdeps/unix/sysv/linux/Versions
+++ b/libc/sysdeps/unix/sysv/linux/Versions
@@ -158,6 +158,10 @@ libc {
clock_adjtime;
name_to_handle_at; open_by_handle_at;
+
+ setns;
+
+ sendmmsg;
}
GLIBC_PRIVATE {
# functions used in other libraries
diff --git a/libc/sysdeps/unix/sysv/linux/bits/sched.h b/libc/sysdeps/unix/sysv/linux/bits/sched.h
index 8ba9eed6f..b222fb211 100644
--- a/libc/sysdeps/unix/sysv/linux/bits/sched.h
+++ b/libc/sysdeps/unix/sysv/linux/bits/sched.h
@@ -1,6 +1,6 @@
/* Definitions of constants and data structure for POSIX 1003.1b-1993
scheduling interface.
- Copyright (C) 1996-1999,2001-2003,2005,2006,2007,2008,2009
+ Copyright (C) 1996-1999,2001-2003,2005,2006,2007,2008,2009,2011
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -37,7 +37,7 @@
# define SCHED_RESET_ON_FORK 0x40000000
#endif
-#ifdef __USE_MISC
+#ifdef __USE_GNU
/* Cloning flags. */
# define CSIGNAL 0x000000ff /* Signal mask to be sent at exit. */
# define CLONE_VM 0x00000100 /* Set if VM shared between processes. */
@@ -78,7 +78,7 @@ struct sched_param
__BEGIN_DECLS
-#ifdef __USE_MISC
+#ifdef __USE_GNU
/* Clone current process. */
extern int clone (int (*__fn) (void *__arg), void *__child_stack,
int __flags, void *__arg, ...) __THROW;
@@ -88,8 +88,12 @@ extern int unshare (int __flags) __THROW;
/* Get index of currently used CPU. */
extern int sched_getcpu (void) __THROW;
+
+/* Switch process to namespace of type NSTYPE indicated by FD. */
+extern int setns (int __fd, int __nstype) __THROW;
#endif
+
__END_DECLS
#endif /* need schedparam */
diff --git a/libc/sysdeps/unix/sysv/linux/bits/siginfo.h b/libc/sysdeps/unix/sysv/linux/bits/siginfo.h
index 4ce319dc9..d3dd4c21d 100644
--- a/libc/sysdeps/unix/sysv/linux/bits/siginfo.h
+++ b/libc/sysdeps/unix/sysv/linux/bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. Linux version.
- Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997-2002, 2003, 2011 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
@@ -142,7 +142,7 @@ enum
# define SI_TIMER SI_TIMER
SI_QUEUE, /* Sent by sigqueue. */
# define SI_QUEUE SI_QUEUE
- SI_USER, /* Sent by kill, sigsend, raise. */
+ SI_USER, /* Sent by kill, sigsend. */
# define SI_USER SI_USER
SI_KERNEL = 0x80 /* Send by kernel. */
#define SI_KERNEL SI_KERNEL
diff --git a/libc/sysdeps/unix/sysv/linux/bits/socket.h b/libc/sysdeps/unix/sysv/linux/bits/socket.h
index 637375791..96d9fed03 100644
--- a/libc/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/libc/sysdeps/unix/sysv/linux/bits/socket.h
@@ -421,7 +421,7 @@ struct linger
__BEGIN_DECLS
-/* Receive a message as described by MESSAGE from socket FD.
+/* Receive up to VLEN messages as described by VMESSAGES from socket FD.
Returns the number of bytes read or -1 for errors.
This function is a cancellation point and therefore not marked with
@@ -430,6 +430,13 @@ extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
unsigned int __vlen, int __flags,
__const struct timespec *__tmo);
+/* Send a VLEN messages as described by VMESSAGES to socket FD.
+ Return the number of datagrams successfully written or -1 for errors.
+This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int sendmmsg (int __fd, struct mmsghdr *__vmessages,
+ unsigned int __vlen, int __flags);
+
__END_DECLS
#endif /* bits/socket.h */
diff --git a/libc/sysdeps/unix/sysv/linux/dl-osinfo.h b/libc/sysdeps/unix/sysv/linux/dl-osinfo.h
index eb7fedc07..28fce4f8e 100644
--- a/libc/sysdeps/unix/sysv/linux/dl-osinfo.h
+++ b/libc/sysdeps/unix/sysv/linux/dl-osinfo.h
@@ -81,7 +81,7 @@ _dl_setup_stack_chk_guard (void *dl_random)
{
ssize_t reslen = read_not_cancel (fd, ret.bytes + 1, filllen);
close_not_cancel_no_status (fd);
- if (reslen == (ssize_) filllen)
+ if (reslen == (ssize_t) filllen)
return ret.num;
}
# endif
diff --git a/libc/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h b/libc/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
index 240ebbc9e..fea5af7fb 100644
--- a/libc/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
+++ b/libc/sysdeps/unix/sysv/linux/ia64/bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. Linux/ia64 version.
- Copyright (C) 2000-2004, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2000-2004, 2009, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger-Tang <davidm@hpl.hp.com>.
@@ -146,7 +146,7 @@ enum
# define SI_TIMER SI_TIMER
SI_QUEUE, /* Sent by sigqueue. */
# define SI_QUEUE SI_QUEUE
- SI_USER, /* Sent by kill, sigsend, raise. */
+ SI_USER, /* Sent by kill, sigsend. */
# define SI_USER SI_USER
SI_KERNEL = 0x80 /* Send by kernel. */
#define SI_KERNEL SI_KERNEL
diff --git a/libc/sysdeps/unix/sysv/linux/internal_sendmmsg.S b/libc/sysdeps/unix/sysv/linux/internal_sendmmsg.S
new file mode 100644
index 000000000..f5152c9f1
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/internal_sendmmsg.S
@@ -0,0 +1,14 @@
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#if !defined __NR_sendmmsg && defined __NR_socketcall
+# define socket sendmmsg
+# ifdef __ASSUME_SENDMMSG
+# define __socket sendmmsg
+# else
+# define __socket __internal_sendmmsg
+# endif
+# define NARGS 4
+# define NEED_CANCELLATION
+# define NO_WEAK_ALIAS
+# include <socket.S>
+#endif
diff --git a/libc/sysdeps/unix/sysv/linux/kernel-features.h b/libc/sysdeps/unix/sysv/linux/kernel-features.h
index d78f1015d..d91f581a9 100644
--- a/libc/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/libc/sysdeps/unix/sysv/linux/kernel-features.h
@@ -541,3 +541,8 @@
#if __LINUX_KERNEL_VERSION >= 0x020624
# define __ASSUME_PRLIMIT64 1
#endif
+
+/* sendmmsg is available in 2.6.39. */
+#if __LINUX_KERNEL_VERSION >= 0x020627
+# define __ASSUME_SENDMMSG 1
+#endif
diff --git a/libc/sysdeps/unix/sysv/linux/s390/bits/siginfo.h b/libc/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
index 55b3f88c0..70d91b470 100644
--- a/libc/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
+++ b/libc/sysdeps/unix/sysv/linux/s390/bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. S/390 version.
- Copyright (C) 2001, 2002, 2003, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2003, 2009, 2011 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
@@ -144,7 +144,7 @@ enum
# define SI_TIMER SI_TIMER
SI_QUEUE, /* Sent by sigqueue. */
# define SI_QUEUE SI_QUEUE
- SI_USER, /* Sent by kill, sigsend, raise. */
+ SI_USER, /* Sent by kill, sigsend. */
# define SI_USER SI_USER
SI_KERNEL = 0x80 /* Send by kernel. */
#define SI_KERNEL SI_KERNEL
diff --git a/libc/sysdeps/unix/sysv/linux/sendmmsg.c b/libc/sysdeps/unix/sysv/linux/sendmmsg.c
new file mode 100644
index 000000000..d8099878a
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/sendmmsg.c
@@ -0,0 +1,96 @@
+/* Copyright (C) 2011 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gmail.com>, 2011.
+
+ 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 <sys/socket.h>
+
+#include <sysdep-cancel.h>
+#include <sys/syscall.h>
+#include <kernel-features.h>
+
+
+#ifdef __NR_sendmmsg
+int
+sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags)
+{
+ if (SINGLE_THREAD_P)
+ return INLINE_SYSCALL (sendmmsg, 4, fd, vmessages, vlen, flags);
+
+ int oldtype = LIBC_CANCEL_ASYNC ();
+
+ int result = INLINE_SYSCALL (sendmmsg, 4, fd, vmessages, vlen, flags);
+
+ LIBC_CANCEL_RESET (oldtype);
+
+ return result;
+}
+#elif defined __NR_socketcall
+# ifndef __ASSUME_SENDMMSG
+extern int __internal_sendmmsg (int fd, struct mmsghdr *vmessages,
+ unsigned int vlen, int flags)
+ attribute_hidden;
+
+static int have_sendmmsg;
+
+int
+sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags)
+{
+ if (__builtin_expect (have_sendmmsg >= 0, 1))
+ {
+ int ret = __internal_sendmmsg (fd, vmessages, vlen, flags);
+ /* The kernel returns -EINVAL for unknown socket operations.
+ We need to convert that error to an ENOSYS error. */
+ if (__builtin_expect (ret < 0, 0)
+ && have_sendmmsg == 0
+ && errno == EINVAL)
+ {
+ /* Try another call, this time with an invalid file
+ descriptor and all other parameters cleared. This call
+ will not cause any harm and it will return
+ immediately. */
+ ret = __internal_sendmmsg (-1, 0, 0, 0);
+ if (errno == EINVAL)
+ {
+ have_sendmmsg = -1;
+ __set_errno (ENOSYS);
+ }
+ else
+ {
+ have_sendmmsg = 1;
+ __set_errno (EINVAL);
+ }
+ return -1;
+ }
+ return ret;
+ }
+ __set_errno (ENOSYS);
+ return -1;
+}
+# else
+/* When __ASSUME_SENDMMSG sendmmsg is defined in internal_sendmmsg.S. */
+# endif
+#else
+int
+sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags)
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (sendmmsg)
+#endif
diff --git a/libc/sysdeps/unix/sysv/linux/socketcall.h b/libc/sysdeps/unix/sysv/linux/socketcall.h
index bab4e4a51..73d4cb9de 100644
--- a/libc/sysdeps/unix/sysv/linux/socketcall.h
+++ b/libc/sysdeps/unix/sysv/linux/socketcall.h
@@ -1,5 +1,5 @@
/* ID for functions called via socketcall system call.
- Copyright (C) 1995, 1996, 2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1996, 2008, 2009, 2011 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
@@ -45,5 +45,6 @@
#define SOCKOP_recvmsg 17
#define SOCKOP_accept4 18
#define SOCKOP_recvmmsg 19
+#define SOCKOP_sendmmsg 20
#endif /* sys/socketcall.h */
diff --git a/libc/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h b/libc/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
index c0f98f607..aeba3fb35 100644
--- a/libc/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
+++ b/libc/sysdeps/unix/sysv/linux/sparc/bits/siginfo.h
@@ -1,5 +1,5 @@
/* siginfo_t, sigevent and constants. Linux/SPARC version.
- Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1997-2002, 2003, 2011 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
@@ -144,7 +144,7 @@ enum
# define SI_TIMER SI_TIMER
SI_QUEUE, /* Sent by sigqueue. */
# define SI_QUEUE SI_QUEUE
- SI_USER, /* Sent by kill, sigsend, raise. */
+ SI_USER, /* Sent by kill, sigsend. */
# define SI_USER SI_USER
SI_KERNEL = 0x80 /* Send by kernel. */
#define SI_KERNEL SI_KERNEL
diff --git a/libc/sysdeps/unix/sysv/linux/syscalls.list b/libc/sysdeps/unix/sysv/linux/syscalls.list
index 051303f07..2bed9e99e 100644
--- a/libc/sysdeps/unix/sysv/linux/syscalls.list
+++ b/libc/sysdeps/unix/sysv/linux/syscalls.list
@@ -107,3 +107,5 @@ fanotify_init EXTRA fanotify_init i:ii fanotify_init
name_to_handle_at EXTRA name_to_handle_at i:isppi name_to_handle_at
open_by_handle_at EXTRA open_by_handle_at Ci:ipi open_by_handle_at
+
+setns EXTRA setns i:ii setns
diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/init-first.c b/libc/sysdeps/unix/sysv/linux/x86_64/init-first.c
index ead7dbcc3..e676f623e 100644
--- a/libc/sysdeps/unix/sysv/linux/x86_64/init-first.c
+++ b/libc/sysdeps/unix/sysv/linux/x86_64/init-first.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2011 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
@@ -26,6 +26,10 @@ long int (*__vdso_clock_gettime) (clockid_t, struct timespec *)
__attribute__ ((nocommon));
strong_alias (__vdso_clock_gettime, __GI___vdso_clock_gettime attribute_hidden)
+long int (*__vdso_getcpu) (unsigned *, unsigned *, void *);
+
+long int (*__vdso_time) (time_t *) attribute_hidden;
+
static inline void
_libc_vdso_platform_setup (void)
@@ -43,6 +47,22 @@ _libc_vdso_platform_setup (void)
p = _dl_vdso_vsym ("clock_gettime", &linux26);
PTR_MANGLE (p);
__GI___vdso_clock_gettime = p;
+
+ p = _dl_vdso_vsym ("getcpu", &linux26);
+ /* If the vDSO is not available we fall back on the old vsyscall. */
+#define VSYSCALL_ADDR_vgetcpu 0xffffffffff600800
+ if (p == NULL)
+ p = (void *) VSYSCALL_ADDR_vgetcpu;
+ PTR_MANGLE (p);
+ __vdso_getcpu = p;
+
+ p = _dl_vdso_vsym ("time", &linux26);
+ /* If the vDSO is not available we fall back on the old vsyscall. */
+#define VSYSCALL_ADDR_vtime 0xffffffffff600400
+ if (p == NULL)
+ p = (void *) VSYSCALL_ADDR_vtime;
+ PTR_MANGLE (p);
+ __vdso_time = p;
}
# define VDSO_SETUP _libc_vdso_platform_setup
diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S b/libc/sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S
index a95099062..8ec7d3fcd 100644
--- a/libc/sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S
+++ b/libc/sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2007, 2011 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
@@ -35,7 +35,12 @@ ENTRY (sched_getcpu)
movl $VGETCPU_CACHE_OFFSET, %edx
addq %fs:0, %rdx
+#ifdef SHARED
+ movq __vdso_getcpu(%rip), %rax
+ PTR_DEMANGLE (%rax)
+#else
movq $VSYSCALL_ADDR_vgetcpu, %rax
+#endif
callq *%rax
cmpq $-4095, %rax
diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/time.S b/libc/sysdeps/unix/sysv/linux/x86_64/time.S
index e3f326876..66d7498ce 100644
--- a/libc/sysdeps/unix/sysv/linux/x86_64/time.S
+++ b/libc/sysdeps/unix/sysv/linux/x86_64/time.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001,02, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001,02, 2003, 2011 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
@@ -32,7 +32,12 @@ ENTRY (time)
sub $0x8, %rsp
cfi_adjust_cfa_offset(8)
+#ifdef SHARED
+ movq __vdso_time(%rip), %rax
+ PTR_DEMANGLE (%rax)
+#else
movq $VSYSCALL_ADDR_vtime, %rax
+#endif
callq *%rax
add $0x8, %rsp
diff --git a/libc/sysdeps/x86_64/multiarch/init-arch.c b/libc/sysdeps/x86_64/multiarch/init-arch.c
index 34ec2df2d..809d105c7 100644
--- a/libc/sysdeps/x86_64/multiarch/init-arch.c
+++ b/libc/sysdeps/x86_64/multiarch/init-arch.c
@@ -74,6 +74,7 @@ __init_cpu_features (void)
}
else if (family == 0x06)
{
+ ecx = __cpu_features.cpuid[COMMON_CPUID_INDEX_1].ecx;
model += extended_model;
switch (model)
{
@@ -83,6 +84,12 @@ __init_cpu_features (void)
__cpu_features.feature[index_Slow_BSF] |= bit_Slow_BSF;
break;
+ default:
+ /* Unknown family 0x06 processors. Assuming this is one
+ of Core i3/i5/i7 processors if AVX is available. */
+ if ((ecx & bit_AVX) == 0)
+ break;
+
case 0x1a:
case 0x1e:
case 0x1f:
diff --git a/libc/version.h b/libc/version.h
index b6f9fcc4b..a5408b322 100644
--- a/libc/version.h
+++ b/libc/version.h
@@ -1,4 +1,4 @@
/* This file just defines the current version number of libc. */
-#define RELEASE "development"
-#define VERSION "2.13.90"
+#define RELEASE "stable"
+#define VERSION "2.14"