diff options
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 @@ -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" |