summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog41
-rw-r--r--elf/dl-misc.c8
-rw-r--r--fedora/branch.mk4
-rw-r--r--fedora/glibc.spec.in25
-rw-r--r--nptl/ChangeLog75
-rw-r--r--nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h28
-rw-r--r--nptl/sysdeps/unix/sysv/linux/lowlevellock.c2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h60
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S54
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S96
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S76
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S113
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S8
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S4
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/internaltypes.h16
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c (renamed from nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c)60
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sem_post.c69
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sem_timedwait.c112
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sem_wait.c117
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c9
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c51
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c100
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c16
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c127
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c1
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c2
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c2
-rw-r--r--po/bg.po6464
-rw-r--r--stdlib/strtold_l.c10
-rw-r--r--sysdeps/ieee754/ldbl-64-128/strtold_l.c11
-rw-r--r--sysdeps/sparc/fpu/feholdexcpt.c6
-rw-r--r--sysdeps/sparc/fpu/fraiseexcpt.c8
-rw-r--r--sysdeps/sparc/sparc32/dl-machine.h54
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/clone.S6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/clone.S6
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sysdep.h5
41 files changed, 7634 insertions, 230 deletions
diff --git a/ChangeLog b/ChangeLog
index 819ac7e399..31270d220c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,44 @@
+2007-08-15 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/sparc/fpu/fraiseexcpt.c (__feraiseexcept): Fix raising
+ FE_UNDERFLOW on Niagara CPUs.
+
+ * sysdeps/sparc/fpu/feholdexcpt.c (feholdexcept): Clear all
+ exceptions.
+
+2007-08-14 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_runtime_setup): No
+ need to check GLRO(dl_hwcap) & HWCAP_SPARC_FLUSH on sparcv9.
+ (sparc_fixup_plt): Add do_flush argument instead of figuring whether
+ flush should be used or not inside of the function.
+ (elf_machine_fixup_plt, elf_machine_rela): Adjust caller.
+
+ * sysdeps/unix/sysv/linux/sparc/sparc32/clone.S (__clone,
+ __thread_start): Use HIDDEN_JUMPTARGET.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/clone.S (__clone,
+ __thread_start): Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sysdep.h (JUMPTARGET): Define.
+
+ * sysdeps/ieee754/ldbl-64-128/strtold_l.c (__STRTOF): Declare.
+ Add libc_hidden_proto.
+ (STRTOF): Add libc_hidden_proto.
+ (___new_strtold_l, ___new_wcstold_l): New weak aliases.
+ (strtold_l, wcstold_l): Use them as second argument for
+ long_double_symbol.
+
+2007-08-14 Ulrich Drepper <drepper@redhat.com>
+
+ * elf/dl-misc.c: Undo last change. The kernel won't allow it.
+
+2007-08-13 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * stdlib/strtold_l.c: Include wchar.h if needed. Add libc_hidden_def.
+
+2007-08-14 Ulrich Drepper <drepper@redhat.com>
+
+ * po/bg.po: New file. From the translation team.
+
2007-08-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_PSELECT,
diff --git a/elf/dl-misc.c b/elf/dl-misc.c
index 41da98d729..6da1e2e4aa 100644
--- a/elf/dl-misc.c
+++ b/elf/dl-misc.c
@@ -1,5 +1,5 @@
/* Miscellaneous support functions for dynamic linker
- Copyright (C) 1997-2004, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 1997-2002, 2003, 2004, 2006 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
@@ -55,11 +55,7 @@ _dl_sysdep_read_whole_file (const char *file, size_t *sizep, int prot)
{
void *result = MAP_FAILED;
struct stat64 st;
- int oflags = O_RDONLY;
-#ifdef O_NOATIME
- oflags |= O_NOATIME;
-#endif
- int fd = __open (file, oflags);
+ int fd = __open (file, O_RDONLY);
if (fd >= 0)
{
if (__fxstat64 (_STAT_VER, fd, &st) >= 0)
diff --git a/fedora/branch.mk b/fedora/branch.mk
index 22e86bb507..293333c941 100644
--- a/fedora/branch.mk
+++ b/fedora/branch.mk
@@ -3,5 +3,5 @@ glibc-branch := fedora
glibc-base := HEAD
DIST_BRANCH := devel
COLLECTION := dist-f8
-fedora-sync-date := 2007-08-14 07:25 UTC
-fedora-sync-tag := fedora-glibc-20070814T0725
+fedora-sync-date := 2007-08-15 20:49 UTC
+fedora-sync-tag := fedora-glibc-20070815T2049
diff --git a/fedora/glibc.spec.in b/fedora/glibc.spec.in
index 535cfc6a4f..0410094832 100644
--- a/fedora/glibc.spec.in
+++ b/fedora/glibc.spec.in
@@ -1,6 +1,6 @@
-%define glibcrelease 9
+%define glibcrelease 10
%define run_glibc_tests 1
-%define auxarches i586 i686 athlon sparcv9 alphaev6
+%define auxarches i586 i686 athlon sparcv9v sparc64v alphaev6
%define xenarches i686 athlon
%ifarch %{xenarches}
%define buildxen 1
@@ -15,7 +15,7 @@
%define buildpower6 0
%endif
%define rtkaioarches %{ix86} x86_64 ia64 ppc ppc64 s390 s390x
-%define debuginfocommonarches %{ix86} alpha alphaev6 sparc sparcv9
+%define debuginfocommonarches %{ix86} alpha alphaev6 sparc sparcv9 sparcv9v sparc64 sparc64v
%define _unpackaged_files_terminate_build 0
Summary: The GNU libc libraries.
Name: glibc
@@ -256,6 +256,8 @@ package or when debugging this package.
# memmove. The memcpy implementation below is not tolerant at
# all.
rm -f sysdeps/alpha/alphaev6/memcpy.S
+mv sysdeps/sparc/sparc32/{,sparcv9/}sparcv9b
+mv sysdeps/sparc/sparc32/{,sparcv9/}sparcv9v
find . -type f -size 0 -o -name "*.orig" -exec rm -f {} \;
cat > find_provides.sh <<EOF
@@ -295,11 +297,21 @@ BuildFlags="-mcpu=ultrasparc -fcall-used-g6"
GCC="gcc -m32"
GXX="g++ -m32"
%endif
+%ifarch sparcv9v
+BuildFlags="-mcpu=niagara -fcall-used-g6"
+GCC="gcc -m32"
+GXX="g++ -m32"
+%endif
%ifarch sparc64
BuildFlags="-mcpu=ultrasparc -mvis -fcall-used-g6"
GCC="gcc -m64"
GXX="g++ -m64"
%endif
+%ifarch sparc64v
+BuildFlags="-mcpu=niagara -mvis -fcall-used-g6"
+GCC="gcc -m64"
+GXX="g++ -m64"
+%endif
%ifarch ppc64
BuildFlags="-mno-minimal-toc"
GCC="gcc -m64"
@@ -1000,6 +1012,13 @@ rm -f *.filelist*
%endif
%changelog
+* Wed Aug 15 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-10
+- don't open /etc/ld.so.{cache,preload} with O_NOATIME (#252146)
+- s390{,x}, alpha and sparc fixes
+- sparcv9 is no longer an aux arch, as we expect
+ to not build sparc.rpm glibc any longer, only sparcv9.rpm,
+ sparc64.rpm and new two aux arches sparcv9v.rpm and sparc64v.rpm
+
* Tue Aug 14 2007 Jakub Jelinek <jakub@redhat.com> 2.6.90-9
- private futex even for mutexes and condvars
- some further O_CLOEXEC changes
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index f46f53af3b..3e4ca2333e 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,78 @@
+2007-08-15 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/sparc/internaltypes.h (sparc_new_sem,
+ sparc_old_sem): New structs.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
+ (__sem_wait_cleanup): New function.
+ (__new_sem_wait): Use sparc_new_sem structure. Bump and afterwards
+ decrease nwaiters. Register __sem_wait_cleanup as cleanup handler.
+ Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
+ lll_futex_wait.
+ (__old_sem_wait): New function.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c: Include
+ nptl/sysdeps/unix/sysv/linux/sparc version.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c:
+ Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
+ (__new_sem_trywait): Use sparc_old_sem structure.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
+ (sem_timedwait): Use sparc_new_sem structure. Bump and afterwards
+ decrease nwaiters. Register __sem_wait_cleanup as cleanup handler.
+ Pass isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
+ lll_futex_timed_wait.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c (__new_sem_post):
+ Use sparc_new_sem structure. Only wake if nwaiters > 0. Pass
+ isem->private ^ FUTEX_PRIVATE_FLAG as last argument to
+ lll_futex_wake.
+ (__old_sem_post): New function.
+ * sysdeps/unix/sysv/linux/sparc/sem_wait.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sem_init.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sem_timedwait.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sem_post.c: New file.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c: Remove.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c: Remove.
+
+2007-08-14 Kaz Kojima <kkojima@rr.iij4u.or.jp>
+
+ * sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
+ (__pthread_cond_broadcast): Pass LLL_PRIVATE to lll_* and or
+ FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
+ Don't use FUTEX_CMP_REQUEUE if dep_mutex is not process private.
+ * sysdeps/unix/sysv/linux/shpthread_cond_signal.S
+ (__pthread_cond_signal): Pass LLL_PRIVATE to lll_* and or
+ FUTEX_PRIVATE_FLAG into SYS_futex op if cv is process private.
+ Use FUTEX_WAKE_OP.
+ * sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S: Include
+ kernel-features.h and tcb-offsets.h.
+ (__pthread_cond_wait, __condvar_w_cleanup): Pass LLL_PRIVATE to
+ lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
+ process private.
+ * sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S: Include
+ tcb-offsets.h.
+ (__pthread_cond_timedwait, __condvar_tw_cleanup): Pass LLL_PRIVATE
+ to lll_* and or FUTEX_PRIVATE_FLAG into SYS_futex op if cv is
+ process private.
+ * sysdeps/unix/sysv/linux/sh/pthread_once.S: Use #ifdef
+ __ASSUME_PRIVATE_FUTEX instead of #if __ASSUME_PRIVATE_FUTEX.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S: Likewise.
+ * sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S: Likewise.
+
+2007-08-14 Jakub Jelinek <jakub@redhat.com>
+
+ * sysdeps/unix/sysv/linux/lowlevellock.c: Comment fix.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
+ (__lll_timedwait_tid): Pass LLL_SHARED as 4th argument to
+ lll_futex_timed_wait.
+
+ * sysdeps/unix/sysv/linux/alpha/lowlevellock.h (__lll_unlock,
+ __lll_robust_unlock): Rewrite as macros instead of inline functions.
+ * sysdeps/unix/sysv/linux/s390/lowlevellock.h (__lll_unlock,
+ __lll_robust_unlock, __lll_wait_tid): Likewise.
+
2007-08-13 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/i386/lowlevellock.h (__lll_private_flag):
diff --git a/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
index 4f6796449a..4487607bb3 100644
--- a/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/alpha/lowlevellock.h
@@ -226,23 +226,23 @@ __lll_robust_timedlock (int *futex, const struct timespec *abstime,
__lll_robust_timedlock (&(futex), abstime, id, private)
-static inline void __attribute__ ((always_inline))
-__lll_unlock (int *futex, int private)
-{
- int val = atomic_exchange_rel (futex, 0);
- if (__builtin_expect (val > 1, 0))
- lll_futex_wake (futex, 1, private);
-}
+#define __lll_unlock(futex, private) \
+ (void) \
+ ({ int *__futex = (futex); \
+ ({ int __oldval = atomic_exchange_rel (__futex, 0); \
+ if (__builtin_expect (__oldval > 1, 0)) \
+ lll_futex_wake (__futex, 1, private); \
+ })
#define lll_unlock(futex, private) __lll_unlock(&(futex), private)
-static inline void __attribute__ ((always_inline))
-__lll_robust_unlock (int *futex, int private)
-{
- int val = atomic_exchange_rel (futex, 0);
- if (__builtin_expect (val & FUTEX_WAITERS, 0))
- lll_futex_wake (futex, 1, private);
-}
+#define __lll_robust_unlock(futex, private) \
+ (void) \
+ ({ int *__futex = (futex); \
+ int __oldval = atomic_exchange_rel (__futex, 0); \
+ if (__builtin_expect (__oldval & FUTEX_WAITERS, 0)) \
+ lll_futex_wake (__futex, 1, private); \
+ })
#define lll_robust_unlock(futex, private) \
__lll_robust_unlock(&(futex), private)
diff --git a/nptl/sysdeps/unix/sysv/linux/lowlevellock.c b/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
index 1187800148..f0e42957c2 100644
--- a/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
+++ b/nptl/sysdeps/unix/sysv/linux/lowlevellock.c
@@ -37,7 +37,7 @@ __lll_lock_wait_private (int *futex)
}
-/* These functions doesn't get included in libc.so */
+/* These functions don't get included in libc.so */
#ifdef IS_IN_libpthread
void
__lll_lock_wait (int *futex, int private)
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
index 7fee435f12..c9347e98b2 100644
--- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h
@@ -291,31 +291,29 @@ __lll_robust_timedlock (int *futex, const struct timespec *abstime,
__lll_robust_timedlock (&(futex), abstime, id, private)
-static inline void
-__attribute__ ((always_inline))
-__lll_unlock (int *futex, int private)
-{
- int oldval;
- int newval = 0;
-
- lll_compare_and_swap (futex, oldval, newval, "slr %2,%2");
- if (__builtin_expect (oldval > 1, 0))
- lll_futex_wake (futex, 1, private);
-}
+#define __lll_unlock(futex, private) \
+ (void) \
+ ({ int __oldval; \
+ int __newval = 0; \
+ int *__futexp = (futex); \
+ \
+ lll_compare_and_swap (__futexp, __oldval, __newval, "slr %2,%2"); \
+ if (__builtin_expect (__oldval > 1, 0)) \
+ lll_futex_wake (__futexp, 1, private); \
+ })
#define lll_unlock(futex, private) __lll_unlock(&(futex), private)
-static inline void
-__attribute__ ((always_inline))
-__lll_robust_unlock (int *futex, int private)
-{
- int oldval;
- int newval = 0;
-
- lll_compare_and_swap (futex, oldval, newval, "slr %2,%2");
- if (__builtin_expect (oldval & FUTEX_WAITERS, 0))
- lll_futex_wake (futex, 1, private);
-}
+#define __lll_robust_unlock(futex, private) \
+ (void) \
+ ({ int __oldval; \
+ int __newval = 0; \
+ int *__futexp = (futex); \
+ \
+ lll_compare_and_swap (__futexp, __oldval, __newval, "slr %2,%2"); \
+ if (__builtin_expect (__oldval & FUTEX_WAITERS, 0)) \
+ lll_futex_wake (__futexp, 1, private); \
+ })
#define lll_robust_unlock(futex, private) \
__lll_robust_unlock(&(futex), private)
@@ -331,15 +329,15 @@ __lll_robust_unlock (int *futex, int private)
wakeup when the clone terminates. The memory location contains the
thread ID while the clone is running and is reset to zero
afterwards. */
-static inline void
-__attribute__ ((always_inline))
-__lll_wait_tid (int *ptid)
-{
- int tid;
-
- while ((tid = *ptid) != 0)
- lll_futex_wait (ptid, tid, LLL_SHARED);
-}
+#define __lll_wait_tid(ptid) \
+ do \
+ { \
+ int __tid; \
+ \
+ while ((__tid = *ptid) != 0) \
+ lll_futex_wait (ptid, __tid, LLL_SHARED); \
+ } \
+ while (0)
#define lll_wait_tid(tid) __lll_wait_tid(&(tid))
extern int __lll_timedwait_tid (int *, const struct timespec *)
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
index b173f2d8bf..7dff15ac52 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
@@ -93,13 +93,24 @@ __pthread_cond_broadcast:
bt/s 9f
add #cond_futex, r4
- /* XXX: The kernel so far doesn't support requeue to PI futex. */
+ /* XXX: The kernel only supports FUTEX_CMP_REQUEUE to the same
+ type of futex (private resp. shared). */
mov.l @(MUTEX_KIND,r9), r0
- tst #PI_BIT, r0
+ tst #(PI_BIT|PS_BIT), r0
bf 9f
/* Wake up all threads. */
- mov #FUTEX_CMP_REQUEUE, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_CMP_REQUEUE|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_CMP_REQUEUE, r0
+ or r0, r5
+#endif
mov #1, r6
mov #-1, r7
shlr r7 /* r7 = 0x7fffffff */
@@ -156,7 +167,12 @@ __pthread_cond_broadcast:
#if cond_lock != 0
add #cond_lock, r5
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r6
mov #LLL_SHARED, r6
+99:
extu.b r6, r6
mov.l .Lwait5, r1
bsrf r1
@@ -171,7 +187,12 @@ __pthread_cond_broadcast:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lwake5, r1
bsrf r1
extu.b r5, r5
@@ -185,7 +206,12 @@ __pthread_cond_broadcast:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov #-1, r0
+ cmp/eq r0, r9
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lwake6, r1
bsrf r1
extu.b r5, r5
@@ -194,7 +220,22 @@ __pthread_cond_broadcast:
nop
9:
- mov #FUTEX_WAKE, r5
+ mov #-1, r0
+ cmp/eq r0, r9
+ bt/s 99f
+ mov #FUTEX_WAKE, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_WAKE, r0
+ or r0, r5
+#endif
+99:
mov #-1, r6
shlr r6 /* r6 = 0x7fffffff */
mov #0, r7
@@ -205,6 +246,11 @@ __pthread_cond_broadcast:
bra 10b
nop
+#ifndef __ASSUME_PRIVATE_FUTEX
+.Lpfoff:
+ .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
+#endif
+
.align 2
.Lwait5:
.long __lll_lock_wait-.Lwait5b
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
index 3ef2d6ee14..9cb73a233c 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_signal.S
@@ -74,14 +74,63 @@ __pthread_cond_signal:
/* Wake up one thread. */
mov r8, r4
add #cond_futex, r4
- mov #FUTEX_WAKE, r5
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bt/s 99f
+ mov #FUTEX_WAKE_OP, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_WAKE_OP, r0
+ or r0, r5
+#endif
+99:
mov #1, r6
mov #0, r7
+ mov r8, r0
+ add #cond_lock, r0
+ mov.l .Lfutexop, r1
mov #SYS_futex, r3
extu.b r3, r3
trapa #0x14
SYSCALL_INST_PAD
+ /* For any kind of error, we try again with WAKE.
+ The general test also covers running on old kernels. */
+ mov r0, r1
+ mov #-12, r2
+ shad r2, r1
+ not r1, r1
+ tst r1, r1
+ bt 7f
+
+6:
+ mov #0, r0
+ lds.l @r15+, pr
+ rts
+ mov.l @r15+, r8
+
+#ifndef __ASSUME_PRIVATE_FUTEX
+.Lpfoff:
+ .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
+#endif
+ .align 2
+.Lfutexop:
+ .long FUTEX_OP_CLEAR_WAKE_IF_GT_ONE
+
+7:
+ /* r5 should be either FUTEX_WAKE_OP or
+ FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG from the previous syscall. */
+ mov #(FUTEX_WAKE ^ FUTEX_WAKE_OP), r0
+ xor r0, r5
+ trapa #0x14
+ SYSCALL_INST_PAD
+
4:
/* Unlock. */
#if cond_lock != 0
@@ -90,12 +139,26 @@ __pthread_cond_signal:
DEC (@r8, r2)
#endif
tst r2, r2
- bf 5f
-6:
- mov #0, r0
- lds.l @r15+, pr
- rts
- mov.l @r15+, r8
+ bt 6b
+
+5:
+ /* Unlock in loop requires wakeup. */
+ mov r8, r4
+#if cond_lock != 0
+ add #cond_lock, r4
+#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
+ mov #LLL_SHARED, r5
+99:
+ mov.l .Lwake4, r1
+ bsrf r1
+ extu.b r5, r5
+.Lwake4b:
+ bra 6b
+ nop
1:
/* Initial locking failed. */
@@ -103,7 +166,12 @@ __pthread_cond_signal:
#if cond_lock != 0
add #cond_lock, r5
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r6
mov #LLL_SHARED, r6
+99:
extu.b r6, r6
mov.l .Lwait4, r1
bsrf r1
@@ -112,20 +180,6 @@ __pthread_cond_signal:
bra 2b
nop
-5:
- /* Unlock in loop requires wakeup. */
- mov r8, r4
-#if cond_lock != 0
- add #cond_lock, r4
-#endif
- mov #LLL_SHARED, r5
- mov.l .Lwake4, r1
- bsrf r1
- extu.b r5, r5
-.Lwake4b:
- bra 6b
- nop
-
.align 2
.Lwait4:
.long __lll_lock_wait-.Lwait4b
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
index fde4f57b2a..4cf0ac45c5 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_timedwait.S
@@ -21,8 +21,9 @@
#include <lowlevellock.h>
#include <lowlevelcond.h>
#include <pthread-errnos.h>
-#include "lowlevel-atomic.h"
#include <kernel-features.h>
+#include <tcb-offsets.h>
+#include "lowlevel-atomic.h"
.text
@@ -230,7 +231,22 @@ __pthread_cond_timedwait:
mov r15, r7
add #16, r7
- mov #FUTEX_WAIT, r5
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bt/s 99f
+ mov #FUTEX_WAIT, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_WAIT|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_WAIT, r0
+ or r0, r5
+#endif
+99:
mov.l @(8,r15), r6
mov r8, r4
add #cond_futex, r4
@@ -339,7 +355,22 @@ __pthread_cond_timedwait:
mov r8, r4
add #cond_nwaiters, r4
- mov #FUTEX_WAKE, r5
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bt/s 99f
+ mov #FUTEX_WAKE, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_WAKE, r0
+ or r0, r5
+#endif
+99:
mov #1, r6
mov #0, r7
mov #SYS_futex, r3
@@ -379,6 +410,10 @@ __pthread_cond_timedwait:
rts
mov.l @r15+, r8
+#ifndef __ASSUME_PRIVATE_FUTEX
+.Lpfoff:
+ .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
+#endif
.L1k:
.word 1000
.align 2
@@ -399,7 +434,12 @@ __pthread_cond_timedwait:
#if cond_lock != 0
add #cond_lock, r5
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r6
mov #LLL_SHARED, r6
+99:
extu.b r6, r6
mov.l .Lwait2, r1
bsrf r1
@@ -414,7 +454,12 @@ __pthread_cond_timedwait:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lmwait2, r1
bsrf r1
extu.b r5, r5
@@ -428,7 +473,12 @@ __pthread_cond_timedwait:
#if cond_lock != 0
add #cond_lock, r5
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r6
mov #LLL_SHARED, r6
+99:
extu.b r6, r6
mov.l .Lwait3, r1
bsrf r1
@@ -443,7 +493,12 @@ __pthread_cond_timedwait:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lmwait3, r1
bsrf r1
extu.b r5, r5
@@ -466,7 +521,12 @@ __pthread_cond_timedwait:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lmwait4, r1
bsrf r1
extu.b r5, r5
@@ -510,7 +570,12 @@ __condvar_tw_cleanup:
#if cond_lock != 0
add #cond_lock, r5
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r6
mov #LLL_SHARED, r6
+99:
extu.b r6, r6
mov.l .Lwait5, r1
bsrf r1
@@ -605,7 +670,12 @@ __condvar_tw_cleanup:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lmwait5, r1
bsrf r1
extu.b r5, r5
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
index 9ca4c35edc..eddf4c95a7 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_wait.S
@@ -20,6 +20,8 @@
#include <shlib-compat.h>
#include <lowlevellock.h>
#include <lowlevelcond.h>
+#include <tcb-offsets.h>
+#include <kernel-features.h>
#include "lowlevel-atomic.h"
.text
@@ -135,7 +137,22 @@ __pthread_cond_wait:
mov.l r0, @r15
mov #0, r7
- mov #FUTEX_WAIT, r5
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bt/s 99f
+ mov #FUTEX_WAIT, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_WAIT|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff0, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_WAIT, r0
+ or r0, r5
+#endif
+99:
mov.l @(8,r15), r6
mov r8, r4
add #cond_futex, r4
@@ -213,7 +230,22 @@ __pthread_cond_wait:
mov r8, r4
add #cond_nwaiters, r4
- mov #FUTEX_WAKE, r5
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bt/s 99f
+ mov #FUTEX_WAKE, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff0, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_WAKE, r0
+ or r0, r5
+#endif
+99:
mov #1, r6
mov #0, r7
mov #SYS_futex, r3
@@ -247,6 +279,10 @@ __pthread_cond_wait:
rts
mov.l @r15+, r8
+#ifndef __ASSUME_PRIVATE_FUTEX
+.Lpfoff0:
+ .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
+#endif
.align 2
.Lmunlock0:
.long __pthread_mutex_unlock_usercnt-.Lmunlock0b
@@ -263,7 +299,12 @@ __pthread_cond_wait:
#if cond_lock != 0
add #cond_lock, r5
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r6
mov #LLL_SHARED, r6
+99:
extu.b r6, r6
mov.l .Lwait0, r1
bsrf r1
@@ -277,7 +318,12 @@ __pthread_cond_wait:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lwake0, r1
bsrf r1
extu.b r5, r5
@@ -291,7 +337,12 @@ __pthread_cond_wait:
#if cond_lock != 0
add #cond_lock, r5
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r6
mov #LLL_SHARED, r6
+99:
extu.b r6, r6
mov.l .Lwait1, r1
bsrf r1
@@ -306,7 +357,12 @@ __pthread_cond_wait:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lwake1, r1
bsrf r1
extu.b r5, r5
@@ -329,7 +385,12 @@ __pthread_cond_wait:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lwake2, r1
bsrf r1
extu.b r5, r5
@@ -374,7 +435,12 @@ __condvar_w_cleanup:
#if cond_lock != 0
add #cond_lock, r5
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r6
mov #LLL_SHARED, r6
+99:
extu.b r6, r6
mov.l .Lwait3, r1
bsrf r1
@@ -447,7 +513,22 @@ __condvar_w_cleanup:
mov r8, r4
add #cond_nwaiters, r4
- mov #FUTEX_WAKE, r5
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bt/s 99f
+ mov #FUTEX_WAKE, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff1, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_WAKE, r0
+ or r0, r5
+#endif
+99:
mov #1, r6
mov #0, r7
mov #SYS_futex, r3
@@ -469,7 +550,12 @@ __condvar_w_cleanup:
#if cond_lock != 0
add #cond_lock, r4
#endif
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bf/s 99f
+ mov #LLL_PRIVATE, r5
mov #LLL_SHARED, r5
+99:
mov.l .Lwake3, r1
bsrf r1
extu.b r5, r5
@@ -481,7 +567,22 @@ __condvar_w_cleanup:
bf/s 5f
mov r8, r4
add #cond_futex, r4
- mov #FUTEX_WAKE, r5
+ mov.l @(dep_mutex,r8), r0
+ cmp/eq #-1, r0
+ bt/s 99f
+ mov #FUTEX_WAKE, r5
+#ifdef __ASSUME_PRIVATE_FUTEX
+ mov #(FUTEX_WAKE|FUTEX_PRIVATE_FLAG), r5
+ extu.b r5, r5
+#else
+ stc gbr, r1
+ mov.w .Lpfoff1, r2
+ add r2, r1
+ mov.l @r1, r5
+ mov #FUTEX_WAKE, r0
+ or r0, r5
+#endif
+99:
mov #-1, r6
shlr r6 /* r6 = 0x7fffffff */
mov #0, r7
@@ -505,6 +606,10 @@ __condvar_w_cleanup:
mov r11, r4
sleep
+#ifndef __ASSUME_PRIVATE_FUTEX
+.Lpfoff1:
+ .word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
+#endif
.align 2
.Lwait3:
.long __lll_lock_wait-.Lwait3b
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S
index 439907502a..0830cab246 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_once.S
@@ -94,7 +94,7 @@ __pthread_once:
bf 3f /* Different for generation -> run initializer. */
/* Somebody else got here first. Wait. */
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
mov #(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r5
extu.b r5, r5
#else
@@ -168,7 +168,7 @@ __pthread_once:
INC (@r9, r2)
/* Wake up all other threads. */
mov r9, r4
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
mov #(FUTEX_PRIVATE_FLAG|FUTEX_WAKE), r5
extu.b r5, r5
#else
@@ -213,7 +213,7 @@ __pthread_once:
mov #0, r7
mov.l r7, @r9
mov r9, r4
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
mov #(FUTEX_PRIVATE_FLAG|FUTEX_WAKE), r5
#else
stc gbr, r1
@@ -239,7 +239,7 @@ __pthread_once:
sleep
cfi_endproc
-#if !__ASSUME_PRIVATE_FUTEX
+#ifndef __ASSUME_PRIVATE_FUTEX
.Lpfoff:
.word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
index 9e4ba959b5..b71be1d974 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_rdlock.S
@@ -74,7 +74,7 @@ __pthread_rwlock_rdlock:
tst r2, r2
bf 10f
11:
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
mov #PSHARED, r0
mov.b @(r0,r8), r5
mov #(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r0
@@ -142,7 +142,7 @@ __pthread_rwlock_rdlock:
rts
mov r3, r0
-#if !__ASSUME_PRIVATE_FUTEX
+#ifndef __ASSUME_PRIVATE_FUTEX
.Lpfoff:
.word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
index b06fd960cf..e40771de0f 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedrdlock.S
@@ -115,7 +115,7 @@ pthread_rwlock_timedrdlock:
/* Futex call. */
mov r15, r7
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
mov #PSHARED, r0
mov.b @(r0,r8), r5
mov #(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r0
@@ -193,7 +193,7 @@ pthread_rwlock_timedrdlock:
rts
mov r3, r0
-#if !__ASSUME_PRIVATE_FUTEX
+#ifndef __ASSUME_PRIVATE_FUTEX
.Lpfoff:
.word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
index 4591309ecc..dfe137973c 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_timedwrlock.S
@@ -111,7 +111,7 @@ pthread_rwlock_timedwrlock:
/* Futex call. */
mov r15, r7
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
mov #PSHARED, r0
mov.b @(r0,r8), r5
mov #(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r0
@@ -191,7 +191,7 @@ pthread_rwlock_timedwrlock:
rts
mov r3, r0
-#if !__ASSUME_PRIVATE_FUTEX
+#ifndef __ASSUME_PRIVATE_FUTEX
.Lpfoff:
.word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
index 1504c1aed1..045b8b3b33 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_unlock.S
@@ -85,7 +85,7 @@ __pthread_rwlock_unlock:
bf 7f
8:
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
mov #PSHARED, r0
mov.b @(r0,r8), r5
mov #(FUTEX_PRIVATE_FLAG|FUTEX_WAKE), r0
@@ -177,7 +177,7 @@ __pthread_rwlock_unlock:
bra 8b
mov.l @r15+, r4
-#if !__ASSUME_PRIVATE_FUTEX
+#ifndef __ASSUME_PRIVATE_FUTEX
.Lpfoff:
.word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
index 25dffe4bf9..6de65cc640 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_rwlock_wrlock.S
@@ -72,7 +72,7 @@ __pthread_rwlock_wrlock:
11:
mov r8, r4
add #WRITERS_WAKEUP, r4
-#if __ASSUME_PRIVATE_FUTEX
+#ifdef __ASSUME_PRIVATE_FUTEX
mov #PSHARED, r0
mov.b @(r0,r8), r5
mov #(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r0
@@ -174,7 +174,7 @@ __pthread_rwlock_wrlock:
bra 7b
mov #0, r3
-#if !__ASSUME_PRIVATE_FUTEX
+#ifndef __ASSUME_PRIVATE_FUTEX
.Lpfoff:
.word PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/internaltypes.h b/nptl/sysdeps/unix/sysv/linux/sparc/internaltypes.h
index 4d0ea51723..4f400a3fe3 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/internaltypes.h
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/internaltypes.h
@@ -15,4 +15,20 @@ union sparc_pthread_barrier
} s;
};
+struct sparc_new_sem
+{
+ unsigned int value;
+ unsigned char lock;
+ unsigned char private;
+ unsigned char pad[2];
+ unsigned long int nwaiters;
+};
+
+struct sparc_old_sem
+{
+ unsigned int value;
+ unsigned char lock;
+ unsigned char private;
+};
+
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c b/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c
index dffd8c7efa..840032a08c 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_init.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sem_init.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -18,20 +18,50 @@
02111-1307 USA. */
#include <errno.h>
+#include <string.h>
#include <semaphore.h>
#include <lowlevellock.h>
#include <shlib-compat.h>
#include "semaphoreP.h"
+#include <kernel-features.h>
-struct sparc_sem
+
+int
+__new_sem_init (sem, pshared, value)
+ sem_t *sem;
+ int pshared;
+ unsigned int value;
{
- struct sem s;
- unsigned char lock;
-};
+ /* Parameter sanity check. */
+ if (__builtin_expect (value > SEM_VALUE_MAX, 0))
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+ /* Map to the internal type. */
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
+ /* Use the values the user provided. */
+ memset (isem, '\0', sizeof (*isem));
+ isem->value = value;
+#ifdef __ASSUME_PRIVATE_FUTEX
+ isem->private = pshared ? 0 : FUTEX_PRIVATE_FLAG;
+#else
+ isem->private = pshared ? 0 : THREAD_GETMEM (THREAD_SELF,
+ header.private_futex);
+#endif
+
+ return 0;
+}
+versioned_symbol (libpthread, __new_sem_init, sem_init, GLIBC_2_1);
+
+
+
+#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
int
-__new_sem_init (sem, pshared, value)
+attribute_compat_text_section
+__old_sem_init (sem, pshared, value)
sem_t *sem;
int pshared;
unsigned int value;
@@ -44,20 +74,20 @@ __new_sem_init (sem, pshared, value)
}
/* Map to the internal type. */
- struct sparc_sem *isem = (struct sparc_sem *) sem;
+ struct sparc_old_sem *isem = (struct sparc_old_sem *) sem;
/* Use the value the user provided. */
- isem->s.count = value;
-
- isem->lock = 0;
+ memset (isem, '\0', sizeof (*isem));
+ isem->value = value;
- /* We can completely ignore the PSHARED parameter since inter-process
- use needs no special preparation. */
+#ifdef __ASSUME_PRIVATE_FUTEX
+ isem->private = pshared ? 0 : FUTEX_PRIVATE_FLAG;
+#else
+ isem->private = pshared ? 0 : THREAD_GETMEM (THREAD_SELF,
+ header.private_futex);
+#endif
return 0;
}
-versioned_symbol (libpthread, __new_sem_init, sem_init, GLIBC_2_1);
-#if SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)
-strong_alias (__new_sem_init, __old_sem_init)
compat_symbol (libpthread, __old_sem_init, sem_init, GLIBC_2_0);
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sem_post.c b/nptl/sysdeps/unix/sysv/linux/sparc/sem_post.c
new file mode 100644
index 0000000000..95964d0744
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sem_post.c
@@ -0,0 +1,69 @@
+/* sem_post -- post to a POSIX semaphore. SPARC version.
+ Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
+
+ 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 <sysdep.h>
+#include <lowlevellock.h>
+#include <internaltypes.h>
+#include <semaphore.h>
+
+#include <shlib-compat.h>
+
+int
+__new_sem_post (sem_t *sem)
+{
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
+
+ int nr = atomic_increment_val (&isem->value);
+ atomic_full_barrier ();
+ if (isem->nwaiters > 0)
+ {
+ int err = lll_futex_wake (&isem->value, 1,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
+ if (__builtin_expect (err, 0) < 0)
+ {
+ __set_errno (-err);
+ return -1;
+ }
+ }
+ return 0;
+}
+versioned_symbol (libpthread, __new_sem_post, sem_post, GLIBC_2_1);
+
+
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
+int
+attribute_compat_text_section
+__old_sem_post (sem_t *sem)
+{
+ struct sparc_old_sem *isem = (struct sparc_old_sem *) sem;
+
+ int nr = atomic_increment_val (&isem->value);
+ int err = lll_futex_wake (&isem->value, 1,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
+ if (__builtin_expect (err, 0) < 0)
+ {
+ __set_errno (-err);
+ return -1;
+ }
+ return 0;
+}
+compat_symbol (libpthread, __old_sem_post, sem_post, GLIBC_2_0);
+#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sem_timedwait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sem_timedwait.c
new file mode 100644
index 0000000000..01952f3f9a
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sem_timedwait.c
@@ -0,0 +1,112 @@
+/* sem_timedwait -- wait on a semaphore. Generic futex-using version.
+ Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
+
+ 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 <sysdep.h>
+#include <lowlevellock.h>
+#include <internaltypes.h>
+#include <semaphore.h>
+
+#include <pthreadP.h>
+#include <shlib-compat.h>
+
+
+extern void __sem_wait_cleanup (void *arg) attribute_hidden;
+
+
+int
+sem_timedwait (sem_t *sem, const struct timespec *abstime)
+{
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
+ int err;
+
+ if (atomic_decrement_if_positive (&isem->value) > 0)
+ return 0;
+
+ if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ atomic_increment (&isem->nwaiters);
+
+ pthread_cleanup_push (__sem_wait_cleanup, isem);
+
+ while (1)
+ {
+ struct timeval tv;
+ struct timespec rt;
+ int sec, nsec;
+
+ /* Get the current time. */
+ __gettimeofday (&tv, NULL);
+
+ /* Compute relative timeout. */
+ sec = abstime->tv_sec - tv.tv_sec;
+ nsec = abstime->tv_nsec - tv.tv_usec * 1000;
+ if (nsec < 0)
+ {
+ nsec += 1000000000;
+ --sec;
+ }
+
+ /* Already timed out? */
+ err = -ETIMEDOUT;
+ if (sec < 0)
+ {
+ __set_errno (ETIMEDOUT);
+ err = -1;
+ break;
+ }
+
+ /* Do wait. */
+ rt.tv_sec = sec;
+ rt.tv_nsec = nsec;
+
+ /* Enable asynchronous cancellation. Required by the standard. */
+ int oldtype = __pthread_enable_asynccancel ();
+
+ err = lll_futex_timed_wait (&isem->value, 0, &rt,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
+
+ /* Disable asynchronous cancellation. */
+ __pthread_disable_asynccancel (oldtype);
+
+ if (err != 0 && err != -EWOULDBLOCK)
+ {
+ __set_errno (-err);
+ err = -1;
+ break;
+ }
+
+ if (atomic_decrement_if_positive (&isem->value) > 0)
+ {
+ err = 0;
+ break;
+ }
+ }
+
+ pthread_cleanup_pop (0);
+
+ atomic_decrement (&isem->nwaiters);
+
+ return err;
+}
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sem_wait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sem_wait.c
new file mode 100644
index 0000000000..a846f20601
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sem_wait.c
@@ -0,0 +1,117 @@
+/* sem_wait -- wait on a semaphore. Generic futex-using version.
+ Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
+
+ 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 <sysdep.h>
+#include <lowlevellock.h>
+#include <internaltypes.h>
+#include <semaphore.h>
+
+#include <pthreadP.h>
+#include <shlib-compat.h>
+
+
+void
+attribute_hidden
+__sem_wait_cleanup (void *arg)
+{
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) arg;
+
+ atomic_decrement (&isem->nwaiters);
+}
+
+
+int
+__new_sem_wait (sem_t *sem)
+{
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
+ int err;
+
+ if (atomic_decrement_if_positive (&isem->value) > 0)
+ return 0;
+
+ atomic_increment (&isem->nwaiters);
+
+ pthread_cleanup_push (__sem_wait_cleanup, isem);
+
+ while (1)
+ {
+ /* Enable asynchronous cancellation. Required by the standard. */
+ int oldtype = __pthread_enable_asynccancel ();
+
+ err = lll_futex_wait (&isem->value, 0,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
+
+ /* Disable asynchronous cancellation. */
+ __pthread_disable_asynccancel (oldtype);
+
+ if (err != 0 && err != -EWOULDBLOCK)
+ {
+ __set_errno (-err);
+ err = -1;
+ break;
+ }
+
+ if (atomic_decrement_if_positive (&isem->value) > 0)
+ {
+ err = 0;
+ break;
+ }
+ }
+
+ pthread_cleanup_pop (0);
+
+ atomic_decrement (&isem->nwaiters);
+
+ return err;
+}
+versioned_symbol (libpthread, __new_sem_wait, sem_wait, GLIBC_2_1);
+
+
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
+int
+attribute_compat_text_section
+__old_sem_wait (sem_t *sem)
+{
+ struct sparc_old_sem *isem = (struct sparc_old_sem *) sem;
+ int err;
+
+ do
+ {
+ if (atomic_decrement_if_positive (&isem->value) > 0)
+ return 0;
+
+ /* Enable asynchronous cancellation. Required by the standard. */
+ int oldtype = __pthread_enable_asynccancel ();
+
+ err = lll_futex_wait (&isem->value, 0,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
+
+ /* Disable asynchronous cancellation. */
+ __pthread_disable_asynccancel (oldtype);
+ }
+ while (err == 0 || err == -EWOULDBLOCK);
+
+ __set_errno (-err);
+ return -1;
+}
+
+compat_symbol (libpthread, __old_sem_wait, sem_wait, GLIBC_2_0);
+#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
index 1ee9b4737b..682307eef1 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/lowlevellock.c
@@ -36,9 +36,9 @@ __lll_lock_wait_private (int *futex)
while (atomic_compare_and_exchange_val_24_acq (futex, 2, 0) != 0);
}
-#ifdef IS_IN_libpthread
-/* These functions don't get included in libc.so */
+/* These functions don't get included in libc.so */
+#ifdef IS_IN_libpthread
void
__lll_lock_wait (int *futex, int private)
{
@@ -121,8 +121,9 @@ __lll_timedwait_tid (int *tidp, const struct timespec *abstime)
if (rt.tv_sec < 0)
return ETIMEDOUT;
- /* Wait until thread terminates. */
- if (lll_futex_timed_wait (tidp, tid, &rt) == -ETIMEDOUT)
+ /* Wait until thread terminates. The kernel so far does not use
+ the private futex operations for this. */
+ if (lll_futex_timed_wait (tidp, tid, &rt, LLL_SHARED) == -ETIMEDOUT)
return ETIMEDOUT;
}
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c
index 527aedfdc7..dbd34f2210 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_post.c
@@ -29,19 +29,51 @@
int
__new_sem_post (sem_t *sem)
{
- int *futex = (int *) sem, nr;
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
+ int nr;
if (__atomic_is_v9)
- nr = atomic_increment_val (futex);
+ nr = atomic_increment_val (&isem->value);
else
{
- __sparc32_atomic_do_lock24 (futex + 1);
- nr = ++*futex;
- __sparc32_atomic_do_unlock24 (futex + 1);
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ nr = ++(isem->value);
+ __sparc32_atomic_do_unlock24 (&isem->lock);
}
- int err = lll_futex_wake (futex, nr,
- // XYZ check mutex flag
- LLL_SHARED);
+ atomic_full_barrier ();
+ if (isem->nwaiters > 0)
+ {
+ int err = lll_futex_wake (&isem->value, 1,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
+ if (__builtin_expect (err, 0) < 0)
+ {
+ __set_errno (-err);
+ return -1;
+ }
+ }
+ return 0;
+}
+versioned_symbol (libpthread, __new_sem_post, sem_post, GLIBC_2_1);
+
+
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
+int
+attribute_compat_text_section
+__old_sem_post (sem_t *sem)
+{
+ struct sparc_old_sem *isem = (struct sparc_old_sem *) sem;
+ int nr;
+
+ if (__atomic_is_v9)
+ nr = atomic_increment_val (&isem->value);
+ else
+ {
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ nr = ++(isem->value);
+ __sparc32_atomic_do_unlock24 (&isem->lock);
+ }
+ int err = lll_futex_wake (&isem->value, 1,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
if (__builtin_expect (err, 0) < 0)
{
__set_errno (-err);
@@ -49,8 +81,5 @@ __new_sem_post (sem_t *sem)
}
return 0;
}
-versioned_symbol (libpthread, __new_sem_post, sem_post, GLIBC_2_1);
-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
-strong_alias (__new_sem_post, __old_sem_post)
compat_symbol (libpthread, __old_sem_post, sem_post, GLIBC_2_0);
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
index efcc9e9aa8..55f3e2e075 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_timedwait.c
@@ -1,5 +1,5 @@
/* sem_timedwait -- wait on a semaphore. SPARC version.
- Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
@@ -28,37 +28,48 @@
#include <shlib-compat.h>
+extern void __sem_wait_cleanup (void *arg) attribute_hidden;
+
+
int
sem_timedwait (sem_t *sem, const struct timespec *abstime)
{
- /* First check for cancellation. */
- CANCELLATION_P (THREAD_SELF);
-
- int *futex = (int *) sem;
- int val;
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
int err;
+ int val;
- if (*futex > 0)
+ if (__atomic_is_v9)
+ val = atomic_decrement_if_positive (&isem->value);
+ else
{
- if (__atomic_is_v9)
- val = atomic_decrement_if_positive (futex);
- else
- {
- __sparc32_atomic_do_lock24 (futex + 1);
- val = *futex;
- if (val > 0)
- *futex = val - 1;
- __sparc32_atomic_do_unlock24 (futex + 1);
- }
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ val = isem->value;
if (val > 0)
- return 0;
+ isem->value = val - 1;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
}
- err = -EINVAL;
+ if (val > 0)
+ return 0;
+
if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
- goto error_return;
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ if (__atomic_is_v9)
+ atomic_increment (&isem->nwaiters);
+ else
+ {
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ isem->nwaiters++;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
+ }
- do
+ pthread_cleanup_push (__sem_wait_cleanup, isem);
+
+ while (1)
{
struct timeval tv;
struct timespec rt;
@@ -79,7 +90,11 @@ sem_timedwait (sem_t *sem, const struct timespec *abstime)
/* Already timed out? */
err = -ETIMEDOUT;
if (sec < 0)
- goto error_return;
+ {
+ __set_errno (ETIMEDOUT);
+ err = -1;
+ break;
+ }
/* Do wait. */
rt.tv_sec = sec;
@@ -88,30 +103,47 @@ sem_timedwait (sem_t *sem, const struct timespec *abstime)
/* Enable asynchronous cancellation. Required by the standard. */
int oldtype = __pthread_enable_asynccancel ();
- err = lll_futex_timed_wait (futex, 0, &rt);
+ err = lll_futex_timed_wait (&isem->value, 0, &rt,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
/* Disable asynchronous cancellation. */
__pthread_disable_asynccancel (oldtype);
if (err != 0 && err != -EWOULDBLOCK)
- goto error_return;
+ {
+ __set_errno (-err);
+ err = -1;
+ break;
+ }
if (__atomic_is_v9)
- val = atomic_decrement_if_positive (futex);
+ val = atomic_decrement_if_positive (&isem->value);
else
{
- __sparc32_atomic_do_lock24 (futex + 1);
- val = *futex;
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ val = isem->value;
if (val > 0)
- *futex = val - 1;
- __sparc32_atomic_do_unlock24 (futex + 1);
+ isem->value = val - 1;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
+ }
+
+ if (val > 0)
+ {
+ err = 0;
+ break;
}
}
- while (val <= 0);
- return 0;
+ pthread_cleanup_pop (0);
+
+ if (__atomic_is_v9)
+ atomic_decrement (&isem->nwaiters);
+ else
+ {
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ isem->nwaiters--;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
+ }
- error_return:
- __set_errno (-err);
- return -1;
+ return err;
}
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
index 429494e257..4db89727a7 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_trywait.c
@@ -1,5 +1,5 @@
/* sem_trywait -- wait on a semaphore. SPARC version.
- Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2006, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
@@ -30,20 +30,20 @@
int
__new_sem_trywait (sem_t *sem)
{
- int *futex = (int *) sem;
+ struct sparc_old_sem *isem = (struct sparc_old_sem *) sem;
int val;
- if (*futex > 0)
+ if (isem->value > 0)
{
if (__atomic_is_v9)
- val = atomic_decrement_if_positive (futex);
+ val = atomic_decrement_if_positive (&isem->value);
else
{
- __sparc32_atomic_do_lock24 (futex + 1);
- val = *futex;
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ val = isem->value;
if (val > 0)
- *futex = val - 1;
- __sparc32_atomic_do_unlock24 (futex + 1);
+ isem->value = val - 1;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
}
if (val > 0)
return 0;
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
index d9fcdcd4ee..3c71c969b8 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sem_wait.c
@@ -1,5 +1,5 @@
-/* sem_wait -- wait on a semaphore. SPARC version.
- Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+/* sem_wait -- wait on a semaphore. Generic futex-using version.
+ Copyright (C) 2003, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
@@ -28,35 +28,135 @@
#include <shlib-compat.h>
+void
+attribute_hidden
+__sem_wait_cleanup (void *arg)
+{
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) arg;
+
+ if (__atomic_is_v9)
+ atomic_decrement (&isem->nwaiters);
+ else
+ {
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ isem->nwaiters--;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
+ }
+}
+
+
int
__new_sem_wait (sem_t *sem)
{
- /* First check for cancellation. */
- CANCELLATION_P (THREAD_SELF);
+ struct sparc_new_sem *isem = (struct sparc_new_sem *) sem;
+ int err;
+ int val;
+
+ if (__atomic_is_v9)
+ val = atomic_decrement_if_positive (&isem->value);
+ else
+ {
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ val = isem->value;
+ if (val > 0)
+ isem->value = val - 1;
+ else
+ isem->nwaiters++;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
+ }
+
+ if (val > 0)
+ return 0;
+
+ if (__atomic_is_v9)
+ atomic_increment (&isem->nwaiters);
+ else
+ /* Already done above while still holding isem->lock. */;
+
+ pthread_cleanup_push (__sem_wait_cleanup, isem);
+
+ while (1)
+ {
+ /* Enable asynchronous cancellation. Required by the standard. */
+ int oldtype = __pthread_enable_asynccancel ();
+
+ err = lll_futex_wait (&isem->value, 0,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
+
+ /* Disable asynchronous cancellation. */
+ __pthread_disable_asynccancel (oldtype);
+
+ if (err != 0 && err != -EWOULDBLOCK)
+ {
+ __set_errno (-err);
+ err = -1;
+ break;
+ }
+
+ if (__atomic_is_v9)
+ val = atomic_decrement_if_positive (&isem->value);
+ else
+ {
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ val = isem->value;
+ if (val > 0)
+ isem->value = val - 1;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
+ }
+
+ if (val > 0)
+ {
+ err = 0;
+ break;
+ }
+ }
+
+ pthread_cleanup_pop (0);
- int *futex = (int *) sem;
+ if (__atomic_is_v9)
+ atomic_decrement (&isem->nwaiters);
+ else
+ {
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ isem->nwaiters--;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
+ }
+
+ return err;
+}
+versioned_symbol (libpthread, __new_sem_wait, sem_wait, GLIBC_2_1);
+
+
+#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
+int
+attribute_compat_text_section
+__old_sem_wait (sem_t *sem)
+{
+ struct sparc_old_sem *isem = (struct sparc_old_sem *) sem;
int err;
+ int val;
do
{
- int val;
if (__atomic_is_v9)
- val = atomic_decrement_if_positive (futex);
+ val = atomic_decrement_if_positive (&isem->value);
else
{
- __sparc32_atomic_do_lock24 (futex + 1);
- val = *futex;
+ __sparc32_atomic_do_lock24 (&isem->lock);
+ val = isem->value;
if (val > 0)
- *futex = val - 1;
- __sparc32_atomic_do_unlock24 (futex + 1);
+ isem->value = val - 1;
+ __sparc32_atomic_do_unlock24 (&isem->lock);
}
+
if (val > 0)
return 0;
/* Enable asynchronous cancellation. Required by the standard. */
int oldtype = __pthread_enable_asynccancel ();
- err = lll_futex_wait (futex, 0);
+ err = lll_futex_wait (futex, 0,
+ isem->private ^ FUTEX_PRIVATE_FLAG);
/* Disable asynchronous cancellation. */
__pthread_disable_asynccancel (oldtype);
@@ -67,8 +167,5 @@ __new_sem_wait (sem_t *sem)
return -1;
}
-versioned_symbol (libpthread, __new_sem_wait, sem_wait, GLIBC_2_1);
-#if SHLIB_COMPAT (libpthread, GLIBC_2_0, GLIBC_2_1)
-strong_alias (__new_sem_wait, __old_sem_wait)
compat_symbol (libpthread, __old_sem_wait, sem_wait, GLIBC_2_0);
#endif
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c
deleted file mode 100644
index b2ebc4cbb5..0000000000
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_init.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../../../../../sem_init.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c
index 4a6eac88f5..73d7c56675 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_post.c
@@ -1 +1 @@
-#include "../../../sem_post.c"
+#include "../../sem_post.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c
index b2526db02c..03945b7279 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_timedwait.c
@@ -1 +1 @@
-#include "../../../sem_timedwait.c"
+#include "../../sem_timedwait.c"
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c
index 31157f636f..a5dbc5a4b8 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/sem_wait.c
@@ -1 +1 @@
-#include "../../../sem_wait.c"
+#include "../../sem_wait.c"
diff --git a/po/bg.po b/po/bg.po
new file mode 100644
index 0000000000..279476dd29
--- /dev/null
+++ b/po/bg.po
@@ -0,0 +1,6464 @@
+# translation of libc.bg.po to Bulgarian
+# Copyright (C) 2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the glibc package
+# Anton Zinoviev <zinoviev@debian.org>, 2007
+#
+# I have translated only the messages in sysdeps/gnu/errlist.c
+#
+# This file should be sent to robot@translationproject.org with the
+# following subject line: TP-Robot libc-2.6.1.bg.po
+msgid ""
+msgstr ""
+"Project-Id-Version: libc 2.6.1\n"
+"POT-Creation-Date: 2007-08-04 11:37+0200\n"
+"PO-Revision-Date: 2007-08-14 10:01+0300\n"
+"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
+"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: argp/argp-help.c:228
+#, c-format
+msgid "%.*s: ARGP_HELP_FMT parameter requires a value"
+msgstr ""
+
+#: argp/argp-help.c:238
+#, c-format
+msgid "%.*s: Unknown ARGP_HELP_FMT parameter"
+msgstr ""
+
+#: argp/argp-help.c:251
+#, c-format
+msgid "Garbage in ARGP_HELP_FMT: %s"
+msgstr ""
+
+#: argp/argp-help.c:1215
+msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options."
+msgstr ""
+
+#: argp/argp-help.c:1601
+msgid "Usage:"
+msgstr ""
+
+#: argp/argp-help.c:1605
+msgid " or: "
+msgstr ""
+
+#: argp/argp-help.c:1617
+msgid " [OPTION...]"
+msgstr ""
+
+#: argp/argp-help.c:1644
+#, c-format
+msgid "Try `%s --help' or `%s --usage' for more information.\n"
+msgstr ""
+
+#: argp/argp-help.c:1672
+#, c-format
+msgid "Report bugs to %s.\n"
+msgstr ""
+
+#: argp/argp-parse.c:102
+msgid "Give this help list"
+msgstr ""
+
+#: argp/argp-parse.c:103
+msgid "Give a short usage message"
+msgstr ""
+
+#: argp/argp-parse.c:104
+msgid "Set the program name"
+msgstr ""
+
+#: argp/argp-parse.c:106
+msgid "Hang for SECS seconds (default 3600)"
+msgstr ""
+
+#: argp/argp-parse.c:167
+#, fuzzy
+msgid "Print program version"
+msgstr "Неправилна версия на RPC-програма"
+
+#: argp/argp-parse.c:183
+msgid "(PROGRAM ERROR) No version known!?"
+msgstr ""
+
+#: argp/argp-parse.c:623
+#, fuzzy, c-format
+msgid "%s: Too many arguments\n"
+msgstr "Твърде много потребители"
+
+#: argp/argp-parse.c:766
+msgid "(PROGRAM ERROR) Option should have been recognized!?"
+msgstr ""
+
+#: assert/assert-perr.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
+msgstr ""
+
+#: assert/assert.c:57
+#, c-format
+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
+msgstr ""
+
+#: catgets/gencat.c:110 catgets/gencat.c:114 nscd/nscd.c:97 nss/makedb.c:61
+msgid "NAME"
+msgstr ""
+
+#: catgets/gencat.c:111
+msgid "Create C header file NAME containing symbol definitions"
+msgstr ""
+
+#: catgets/gencat.c:113
+msgid "Do not use existing catalog, force new output file"
+msgstr ""
+
+#: catgets/gencat.c:114 nss/makedb.c:61
+msgid "Write output to file NAME"
+msgstr ""
+
+#: catgets/gencat.c:119
+msgid ""
+"Generate message catalog.\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n"
+"is -, output is written to standard output.\n"
+msgstr ""
+
+#: catgets/gencat.c:124
+msgid ""
+"-o OUTPUT-FILE [INPUT-FILE]...\n"
+"[OUTPUT-FILE [INPUT-FILE]...]"
+msgstr ""
+
+#: catgets/gencat.c:232 debug/pcprofiledump.c:199 iconv/iconv_prog.c:411
+#: iconv/iconvconfig.c:380 locale/programs/localedef.c:371
+#: login/programs/pt_chown.c:88 malloc/memusagestat.c:526 nss/makedb.c:231
+msgid ""
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+
+#: catgets/gencat.c:246 debug/xtrace.sh:64 elf/ldconfig.c:287
+#: elf/ldd.bash.in:39 elf/sprof.c:355 iconv/iconv_prog.c:426
+#: iconv/iconvconfig.c:395 locale/programs/locale.c:275
+#: locale/programs/localedef.c:387 login/programs/pt_chown.c:59
+#: malloc/memusage.sh:71 nscd/nscd.c:406 nss/getent.c:83 nss/makedb.c:245
+#: posix/getconf.c:1012
+#, c-format
+msgid ""
+"Copyright (C) %s Free Software Foundation, Inc.\n"
+"This is free software; see the source for copying conditions. There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+
+#: catgets/gencat.c:251 debug/xtrace.sh:68 elf/ldconfig.c:292 elf/sprof.c:361
+#: iconv/iconv_prog.c:431 iconv/iconvconfig.c:400 locale/programs/locale.c:280
+#: locale/programs/localedef.c:392 malloc/memusage.sh:75 nscd/nscd.c:411
+#: nss/getent.c:88 nss/makedb.c:250 posix/getconf.c:1017
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#: catgets/gencat.c:282
+msgid "*standard input*"
+msgstr ""
+
+#: catgets/gencat.c:288 iconv/iconv_charmap.c:158 iconv/iconv_prog.c:298
+#: nss/makedb.c:170
+#, c-format
+msgid "cannot open input file `%s'"
+msgstr ""
+
+#: catgets/gencat.c:417 catgets/gencat.c:494
+#, fuzzy
+msgid "illegal set number"
+msgstr "Неправилно позициониране"
+
+#: catgets/gencat.c:444
+msgid "duplicate set definition"
+msgstr ""
+
+#: catgets/gencat.c:446 catgets/gencat.c:623 catgets/gencat.c:677
+msgid "this is the first definition"
+msgstr ""
+
+#: catgets/gencat.c:522
+#, c-format
+msgid "unknown set `%s'"
+msgstr ""
+
+#: catgets/gencat.c:563
+#, fuzzy
+msgid "invalid quote character"
+msgstr "Неправилен обмен"
+
+#: catgets/gencat.c:576
+#, c-format
+msgid "unknown directive `%s': line ignored"
+msgstr ""
+
+#: catgets/gencat.c:621
+msgid "duplicated message number"
+msgstr ""
+
+#: catgets/gencat.c:674
+msgid "duplicated message identifier"
+msgstr ""
+
+#: catgets/gencat.c:731
+msgid "invalid character: message ignored"
+msgstr ""
+
+#: catgets/gencat.c:774
+#, fuzzy
+msgid "invalid line"
+msgstr "Неправилен слот"
+
+#: catgets/gencat.c:828
+msgid "malformed line ignored"
+msgstr ""
+
+#: catgets/gencat.c:992 catgets/gencat.c:1033 nss/makedb.c:183
+#, c-format
+msgid "cannot open output file `%s'"
+msgstr ""
+
+#: catgets/gencat.c:1195 locale/programs/linereader.c:560
+#, fuzzy
+msgid "invalid escape sequence"
+msgstr "Неправилен обмен"
+
+#: catgets/gencat.c:1217
+#, fuzzy
+msgid "unterminated message"
+msgstr "Лошо съобщение"
+
+#: catgets/gencat.c:1241
+#, c-format
+msgid "while opening old catalog file"
+msgstr ""
+
+#: catgets/gencat.c:1332
+#, fuzzy, c-format
+msgid "conversion modules not available"
+msgstr "Недостъпен протокол"
+
+#: catgets/gencat.c:1358
+#, c-format
+msgid "cannot determine escape character"
+msgstr ""
+
+#: debug/pcprofiledump.c:52
+msgid "Don't buffer output"
+msgstr ""
+
+#: debug/pcprofiledump.c:57
+msgid "Dump information generated by PC profiling."
+msgstr ""
+
+#: debug/pcprofiledump.c:60
+msgid "[FILE]"
+msgstr ""
+
+#: debug/pcprofiledump.c:100
+#, c-format
+msgid "cannot open input file"
+msgstr ""
+
+#: debug/pcprofiledump.c:106
+#, c-format
+msgid "cannot read header"
+msgstr ""
+
+#: debug/pcprofiledump.c:170
+#, c-format
+msgid "invalid pointer size"
+msgstr ""
+
+#: debug/xtrace.sh:27 debug/xtrace.sh:45
+msgid "Usage: xtrace [OPTION]... PROGRAM [PROGRAMOPTION]...\\n"
+msgstr ""
+
+#: debug/xtrace.sh:33
+msgid "Try \\`xtrace --help' for more information.\\n"
+msgstr ""
+
+#: debug/xtrace.sh:39
+msgid "xtrace: option \\`$1' requires an argument.\\n"
+msgstr ""
+
+#: debug/xtrace.sh:46
+msgid ""
+"Trace execution of program by printing currently executed function.\n"
+"\n"
+" --data=FILE Don't run the program, just print the data from FILE.\n"
+"\n"
+" -?,--help Print this help and exit\n"
+" --usage Give a short usage message\n"
+" -V,--version Print version information and exit\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\\n"
+msgstr ""
+
+#: debug/xtrace.sh:125
+msgid "xtrace: unrecognized option \\`$1'\\n"
+msgstr ""
+
+#: debug/xtrace.sh:138
+msgid "No program name given\\n"
+msgstr ""
+
+#: debug/xtrace.sh:146
+#, sh-format
+msgid "executable \\`$program' not found\\n"
+msgstr ""
+
+#: debug/xtrace.sh:150
+#, sh-format
+msgid "\\`$program' is no executable\\n"
+msgstr ""
+
+#: dlfcn/dlinfo.c:64
+msgid "RTLD_SELF used in code not dynamically loaded"
+msgstr ""
+
+#: dlfcn/dlinfo.c:73
+msgid "unsupported dlinfo request"
+msgstr ""
+
+#: dlfcn/dlmopen.c:64
+#, fuzzy
+msgid "invalid namespace"
+msgstr "Неправилен аргумент"
+
+#: dlfcn/dlmopen.c:69
+#, fuzzy
+msgid "invalid mode"
+msgstr "Неправилен слот"
+
+#: dlfcn/dlopen.c:64
+#, fuzzy
+msgid "invalid mode parameter"
+msgstr "Неправилен аргумент"
+
+#: elf/cache.c:68
+msgid "unknown"
+msgstr ""
+
+#: elf/cache.c:111
+msgid "Unknown OS"
+msgstr ""
+
+#: elf/cache.c:116
+#, c-format
+msgid ", OS ABI: %s %d.%d.%d"
+msgstr ""
+
+#: elf/cache.c:142 elf/ldconfig.c:1236
+#, c-format
+msgid "Can't open cache file %s\n"
+msgstr ""
+
+#: elf/cache.c:154
+#, c-format
+msgid "mmap of cache file failed.\n"
+msgstr ""
+
+#: elf/cache.c:158 elf/cache.c:168
+#, c-format
+msgid "File is not a cache file.\n"
+msgstr ""
+
+#: elf/cache.c:201 elf/cache.c:211
+#, c-format
+msgid "%d libs found in cache `%s'\n"
+msgstr ""
+
+#: elf/cache.c:410
+#, c-format
+msgid "Can't remove old temporary cache file %s"
+msgstr ""
+
+#: elf/cache.c:417
+#, c-format
+msgid "Can't create temporary cache file %s"
+msgstr ""
+
+#: elf/cache.c:425 elf/cache.c:435 elf/cache.c:439 elf/cache.c:443
+#, c-format
+msgid "Writing of cache data failed"
+msgstr ""
+
+#: elf/cache.c:450
+#, c-format
+msgid "Changing access rights of %s to %#o failed"
+msgstr ""
+
+#: elf/cache.c:455
+#, c-format
+msgid "Renaming of %s to %s failed"
+msgstr ""
+
+#: elf/dl-close.c:378 elf/dl-open.c:460
+msgid "cannot create scope list"
+msgstr ""
+
+#: elf/dl-close.c:724
+msgid "shared object not open"
+msgstr ""
+
+#: elf/dl-deps.c:112
+msgid "DST not allowed in SUID/SGID programs"
+msgstr ""
+
+#: elf/dl-deps.c:125 elf/dl-open.c:282
+msgid "empty dynamic string token substitution"
+msgstr ""
+
+#: elf/dl-deps.c:131
+#, c-format
+msgid "cannot load auxiliary `%s' because of empty dynamic string token substitution\n"
+msgstr ""
+
+#: elf/dl-deps.c:472
+#, fuzzy
+msgid "cannot allocate dependency list"
+msgstr "Не може да се задели памет"
+
+#: elf/dl-deps.c:505 elf/dl-deps.c:560
+#, fuzzy
+msgid "cannot allocate symbol search list"
+msgstr "Не може да се задели памет"
+
+#: elf/dl-deps.c:545
+msgid "Filters not supported with LD_TRACE_PRELINKING"
+msgstr ""
+
+#: elf/dl-error.c:77
+msgid "DYNAMIC LINKER BUG!!!"
+msgstr ""
+
+#: elf/dl-error.c:124
+#, fuzzy
+msgid "error while loading shared libraries"
+msgstr "Опитва се свързване в твърде много споделени библиотеки"
+
+#: elf/dl-fptr.c:88
+msgid "cannot map pages for fdesc table"
+msgstr ""
+
+#: elf/dl-fptr.c:192
+msgid "cannot map pages for fptr table"
+msgstr ""
+
+#: elf/dl-fptr.c:221
+msgid "internal error: symidx out of range of fptr table"
+msgstr ""
+
+#: elf/dl-load.c:372
+#, fuzzy
+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
+msgid "cannot create cache for search path"
+msgstr ""
+
+#: elf/dl-load.c:565
+msgid "cannot create RUNPATH/RPATH copy"
+msgstr ""
+
+#: elf/dl-load.c:653
+msgid "cannot create search path array"
+msgstr ""
+
+#: elf/dl-load.c:864
+#, fuzzy
+msgid "cannot stat shared object"
+msgstr "Не може да се изпълнява директно споделена библиотека"
+
+#: elf/dl-load.c:934
+msgid "cannot open zero fill device"
+msgstr ""
+
+#: elf/dl-load.c:979 elf/dl-load.c:2224
+msgid "cannot create shared object descriptor"
+msgstr ""
+
+#: elf/dl-load.c:998 elf/dl-load.c:1656 elf/dl-load.c:1748
+msgid "cannot read file data"
+msgstr ""
+
+#: elf/dl-load.c:1042
+msgid "ELF load command alignment not page-aligned"
+msgstr ""
+
+#: elf/dl-load.c:1049
+msgid "ELF load command address/offset not properly aligned"
+msgstr ""
+
+#: elf/dl-load.c:1132
+msgid "cannot allocate TLS data structures for initial thread"
+msgstr ""
+
+#: elf/dl-load.c:1155
+msgid "cannot handle TLS data"
+msgstr ""
+
+#: elf/dl-load.c:1174
+msgid "object file has no loadable segments"
+msgstr ""
+
+#: elf/dl-load.c:1210
+msgid "failed to map segment from shared object"
+msgstr ""
+
+#: elf/dl-load.c:1236
+msgid "cannot dynamically load executable"
+msgstr ""
+
+#: elf/dl-load.c:1298
+msgid "cannot change memory protections"
+msgstr ""
+
+#: elf/dl-load.c:1317
+msgid "cannot map zero-fill pages"
+msgstr ""
+
+#: elf/dl-load.c:1331
+msgid "object file has no dynamic section"
+msgstr ""
+
+#: elf/dl-load.c:1354
+msgid "shared object cannot be dlopen()ed"
+msgstr ""
+
+#: elf/dl-load.c:1367
+#, fuzzy
+msgid "cannot allocate memory for program header"
+msgstr "Не може да се задели памет"
+
+#: elf/dl-load.c:1384 elf/dl-open.c:218
+#, fuzzy
+msgid "invalid caller"
+msgstr "Неправилен обмен"
+
+#: elf/dl-load.c:1423
+msgid "cannot enable executable stack as shared object requires"
+msgstr ""
+
+#: elf/dl-load.c:1436
+#, fuzzy
+msgid "cannot close file descriptor"
+msgstr "Неправилен файлов дескриптор"
+
+#: elf/dl-load.c:1478
+msgid "cannot create searchlist"
+msgstr ""
+
+#: elf/dl-load.c:1656
+#, fuzzy
+msgid "file too short"
+msgstr "Твърде голям файл"
+
+#: elf/dl-load.c:1685
+msgid "invalid ELF header"
+msgstr ""
+
+#: elf/dl-load.c:1697
+msgid "ELF file data encoding not big-endian"
+msgstr ""
+
+#: elf/dl-load.c:1699
+msgid "ELF file data encoding not little-endian"
+msgstr ""
+
+#: elf/dl-load.c:1703
+msgid "ELF file version ident does not match current one"
+msgstr ""
+
+#: elf/dl-load.c:1707
+msgid "ELF file OS ABI invalid"
+msgstr ""
+
+#: elf/dl-load.c:1709
+msgid "ELF file ABI version invalid"
+msgstr ""
+
+#: elf/dl-load.c:1712
+msgid "internal error"
+msgstr ""
+
+#: elf/dl-load.c:1719
+msgid "ELF file version does not match current one"
+msgstr ""
+
+#: elf/dl-load.c:1727
+msgid "only ET_DYN and ET_EXEC can be loaded"
+msgstr ""
+
+#: elf/dl-load.c:1733
+msgid "ELF file's phentsize not the expected size"
+msgstr ""
+
+#: elf/dl-load.c:2240
+msgid "wrong ELF class: ELFCLASS64"
+msgstr ""
+
+#: elf/dl-load.c:2241
+msgid "wrong ELF class: ELFCLASS32"
+msgstr ""
+
+#: elf/dl-load.c:2244
+msgid "cannot open shared object file"
+msgstr ""
+
+#: elf/dl-lookup.c:261
+#, fuzzy
+msgid "relocation error"
+msgstr "Грешка при удостоверяване (authentication)"
+
+#: elf/dl-lookup.c:289
+msgid "symbol lookup error"
+msgstr ""
+
+#: elf/dl-open.c:114
+msgid "cannot extend global scope"
+msgstr ""
+
+#: elf/dl-open.c:512
+msgid "TLS generation counter wrapped! Please report this."
+msgstr ""
+
+#: elf/dl-open.c:549
+msgid "invalid mode for dlopen()"
+msgstr ""
+
+#: elf/dl-open.c:566
+msgid "no more namespaces available for dlmopen()"
+msgstr ""
+
+#: elf/dl-open.c:579
+msgid "invalid target namespace in dlmopen()"
+msgstr ""
+
+#: elf/dl-reloc.c:54
+#, fuzzy
+msgid "cannot allocate memory in static TLS block"
+msgstr "Не може да се задели памет"
+
+#: elf/dl-reloc.c:196
+msgid "cannot make segment writable for relocation"
+msgstr ""
+
+#: elf/dl-reloc.c:277
+#, c-format
+msgid "%s: no PLTREL found in object %s\n"
+msgstr ""
+
+#: elf/dl-reloc.c:288
+#, c-format
+msgid "%s: out of memory to store relocation results for %s\n"
+msgstr ""
+
+#: elf/dl-reloc.c:304
+msgid "cannot restore segment prot after reloc"
+msgstr ""
+
+#: elf/dl-reloc.c:329
+msgid "cannot apply additional memory protection after relocation"
+msgstr ""
+
+#: elf/dl-sym.c:161
+msgid "RTLD_NEXT used in code not dynamically loaded"
+msgstr ""
+
+#: elf/dl-sysdep.c:474 elf/dl-sysdep.c:486
+msgid "cannot create capability list"
+msgstr ""
+
+#: elf/dl-tls.c:825
+msgid "cannot create TLS data structures"
+msgstr ""
+
+#: elf/dl-version.c:303
+msgid "cannot allocate version reference table"
+msgstr ""
+
+#: elf/ldconfig.c:135
+msgid "Print cache"
+msgstr ""
+
+#: elf/ldconfig.c:136
+msgid "Generate verbose messages"
+msgstr ""
+
+#: elf/ldconfig.c:137
+msgid "Don't build cache"
+msgstr ""
+
+#: elf/ldconfig.c:138
+msgid "Don't generate links"
+msgstr ""
+
+#: elf/ldconfig.c:139
+msgid "Change to and use ROOT as root directory"
+msgstr ""
+
+#: elf/ldconfig.c:139
+msgid "ROOT"
+msgstr ""
+
+#: elf/ldconfig.c:140
+msgid "CACHE"
+msgstr ""
+
+#: elf/ldconfig.c:140
+msgid "Use CACHE as cache file"
+msgstr ""
+
+#: elf/ldconfig.c:141
+msgid "CONF"
+msgstr ""
+
+#: elf/ldconfig.c:141
+msgid "Use CONF as configuration file"
+msgstr ""
+
+#: elf/ldconfig.c:142
+msgid "Only process directories specified on the command line. Don't build cache."
+msgstr ""
+
+#: elf/ldconfig.c:143
+msgid "Manually link individual libraries."
+msgstr ""
+
+#: elf/ldconfig.c:144
+msgid "FORMAT"
+msgstr ""
+
+#: elf/ldconfig.c:144
+msgid "Format to use: new, old or compat (default)"
+msgstr ""
+
+#: elf/ldconfig.c:152
+msgid "Configure Dynamic Linker Run Time Bindings."
+msgstr ""
+
+#: elf/ldconfig.c:310
+#, c-format
+msgid "Path `%s' given more than once"
+msgstr ""
+
+#: elf/ldconfig.c:350
+#, c-format
+msgid "%s is not a known library type"
+msgstr ""
+
+#: elf/ldconfig.c:375
+#, c-format
+msgid "Can't stat %s"
+msgstr ""
+
+#: elf/ldconfig.c:449
+#, c-format
+msgid "Can't stat %s\n"
+msgstr ""
+
+#: elf/ldconfig.c:459
+#, fuzzy, c-format
+msgid "%s is not a symbolic link\n"
+msgstr "Твърде много нива от символни връзки"
+
+#: elf/ldconfig.c:478
+#, c-format
+msgid "Can't unlink %s"
+msgstr ""
+
+#: elf/ldconfig.c:484
+#, c-format
+msgid "Can't link %s to %s"
+msgstr ""
+
+#: elf/ldconfig.c:490
+msgid " (changed)\n"
+msgstr ""
+
+#: elf/ldconfig.c:492
+msgid " (SKIPPED)\n"
+msgstr ""
+
+#: elf/ldconfig.c:547
+#, c-format
+msgid "Can't find %s"
+msgstr ""
+
+#: elf/ldconfig.c:563 elf/ldconfig.c:737 elf/ldconfig.c:784
+#, c-format
+msgid "Cannot lstat %s"
+msgstr ""
+
+#: elf/ldconfig.c:570
+#, c-format
+msgid "Ignored file %s since it is not a regular file."
+msgstr ""
+
+#: elf/ldconfig.c:578
+#, c-format
+msgid "No link created since soname could not be found for %s"
+msgstr ""
+
+#: elf/ldconfig.c:669
+#, fuzzy, c-format
+msgid "Can't open directory %s"
+msgstr "Не е директория"
+
+#: elf/ldconfig.c:749
+#, c-format
+msgid "Cannot stat %s"
+msgstr ""
+
+#: elf/ldconfig.c:806 elf/readlib.c:91
+#, c-format
+msgid "Input file %s not found.\n"
+msgstr ""
+
+#: elf/ldconfig.c:857
+#, c-format
+msgid "libc5 library %s in wrong directory"
+msgstr ""
+
+#: elf/ldconfig.c:860
+#, c-format
+msgid "libc6 library %s in wrong directory"
+msgstr ""
+
+#: elf/ldconfig.c:863
+#, c-format
+msgid "libc4 library %s in wrong directory"
+msgstr ""
+
+#: elf/ldconfig.c:890
+#, c-format
+msgid "libraries %s and %s in directory %s have same soname but different type."
+msgstr ""
+
+#: elf/ldconfig.c:997
+#, c-format
+msgid "Can't open configuration file %s"
+msgstr ""
+
+#: elf/ldconfig.c:1061
+#, c-format
+msgid "%s:%u: bad syntax in hwcap line"
+msgstr ""
+
+#: elf/ldconfig.c:1067
+#, c-format
+msgid "%s:%u: hwcap index %lu above maximum %u"
+msgstr ""
+
+#: elf/ldconfig.c:1074 elf/ldconfig.c:1082
+#, c-format
+msgid "%s:%u: hwcap index %lu already defined as %s"
+msgstr ""
+
+#: elf/ldconfig.c:1085
+#, c-format
+msgid "%s:%u: duplicate hwcap %lu %s"
+msgstr ""
+
+#: elf/ldconfig.c:1107
+#, c-format
+msgid "need absolute file name for configuration file when using -r"
+msgstr ""
+
+#: elf/ldconfig.c:1114 locale/programs/xmalloc.c:70 malloc/obstack.c:434
+#: malloc/obstack.c:436 posix/getconf.c:985 posix/getconf.c:1163
+#, c-format
+msgid "memory exhausted"
+msgstr ""
+
+#: elf/ldconfig.c:1144
+#, fuzzy, c-format
+msgid "%s:%u: cannot read directory %s"
+msgstr "Не е директория"
+
+#: elf/ldconfig.c:1189
+#, c-format
+msgid "relative path `%s' used to build cache"
+msgstr ""
+
+#: elf/ldconfig.c:1215
+#, c-format
+msgid "Can't chdir to /"
+msgstr ""
+
+#: elf/ldconfig.c:1257
+#, fuzzy, c-format
+msgid "Can't open cache file directory %s\n"
+msgstr "Няма такъв файл или директория"
+
+#: elf/ldd.bash.in:43
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#: elf/ldd.bash.in:48
+msgid ""
+"Usage: ldd [OPTION]... FILE...\n"
+" --help print this help and exit\n"
+" --version print version information and exit\n"
+" -d, --data-relocs process data relocations\n"
+" -r, --function-relocs process data and function relocations\n"
+" -u, --unused print unused direct dependencies\n"
+" -v, --verbose print all information\n"
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>."
+msgstr ""
+
+#: elf/ldd.bash.in:80
+msgid "ldd: option \\`$1' is ambiguous"
+msgstr ""
+
+#: elf/ldd.bash.in:87
+msgid "unrecognized option"
+msgstr ""
+
+#: elf/ldd.bash.in:88 elf/ldd.bash.in:126
+msgid "Try \\`ldd --help' for more information."
+msgstr ""
+
+#: elf/ldd.bash.in:125
+msgid "missing file arguments"
+msgstr ""
+
+#. TRANS No such file or directory. This is a ``file doesn't exist'' error
+#. TRANS for ordinary files that are referenced in contexts where they are
+#. TRANS expected to already exist.
+#: elf/ldd.bash.in:148 sysdeps/gnu/errlist.c:36
+msgid "No such file or directory"
+msgstr "Няма такъв файл или директория"
+
+#: elf/ldd.bash.in:151 inet/rcmd.c:483
+msgid "not regular file"
+msgstr ""
+
+#: elf/ldd.bash.in:154
+msgid "warning: you do not have execution permission for"
+msgstr ""
+
+#: elf/ldd.bash.in:183
+msgid "\tnot a dynamic executable"
+msgstr ""
+
+#: elf/ldd.bash.in:191
+msgid "exited with unknown exit code"
+msgstr ""
+
+#: elf/ldd.bash.in:196
+msgid "error: you do not have read permission for"
+msgstr ""
+
+#: elf/readelflib.c:35
+#, c-format
+msgid "file %s is truncated\n"
+msgstr ""
+
+#: elf/readelflib.c:67
+#, c-format
+msgid "%s is a 32 bit ELF file.\n"
+msgstr ""
+
+#: elf/readelflib.c:69
+#, c-format
+msgid "%s is a 64 bit ELF file.\n"
+msgstr ""
+
+#: elf/readelflib.c:71
+#, c-format
+msgid "Unknown ELFCLASS in file %s.\n"
+msgstr ""
+
+#: elf/readelflib.c:78
+#, c-format
+msgid "%s is not a shared object file (Type: %d).\n"
+msgstr ""
+
+#: elf/readelflib.c:109
+#, c-format
+msgid "more than one dynamic segment\n"
+msgstr ""
+
+#: elf/readlib.c:97
+#, c-format
+msgid "Cannot fstat file %s.\n"
+msgstr ""
+
+#: elf/readlib.c:108
+#, c-format
+msgid "File %s is empty, not checked."
+msgstr ""
+
+#: elf/readlib.c:114
+#, c-format
+msgid "File %s is too small, not checked."
+msgstr ""
+
+#: elf/readlib.c:124
+#, c-format
+msgid "Cannot mmap file %s.\n"
+msgstr ""
+
+#: elf/readlib.c:162
+#, c-format
+msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n"
+msgstr ""
+
+#: elf/sprof.c:77
+msgid "Output selection:"
+msgstr ""
+
+#: elf/sprof.c:79
+msgid "print list of count paths and their number of use"
+msgstr ""
+
+#: elf/sprof.c:81
+msgid "generate flat profile with counts and ticks"
+msgstr ""
+
+#: elf/sprof.c:82
+msgid "generate call graph"
+msgstr ""
+
+#: elf/sprof.c:89
+msgid ""
+"Read and display shared object profiling data.\vFor bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+
+#: elf/sprof.c:94
+msgid "SHOBJ [PROFDATA]"
+msgstr ""
+
+#: elf/sprof.c:400
+#, c-format
+msgid "failed to load shared object `%s'"
+msgstr ""
+
+#: elf/sprof.c:409
+#, c-format
+msgid "cannot create internal descriptors"
+msgstr ""
+
+#: elf/sprof.c:528
+#, c-format
+msgid "Reopening shared object `%s' failed"
+msgstr ""
+
+#: elf/sprof.c:535 elf/sprof.c:629
+#, c-format
+msgid "reading of section headers failed"
+msgstr ""
+
+#: elf/sprof.c:543 elf/sprof.c:637
+#, c-format
+msgid "reading of section header string table failed"
+msgstr ""
+
+#: elf/sprof.c:569
+#, c-format
+msgid "*** Cannot read debuginfo file name: %m\n"
+msgstr ""
+
+#: elf/sprof.c:589
+#, c-format
+msgid "cannot determine file name"
+msgstr ""
+
+#: elf/sprof.c:622
+#, c-format
+msgid "reading of ELF header failed"
+msgstr ""
+
+#: elf/sprof.c:658
+#, c-format
+msgid "*** The file `%s' is stripped: no detailed analysis possible\n"
+msgstr ""
+
+#: elf/sprof.c:688
+#, c-format
+msgid "failed to load symbol data"
+msgstr ""
+
+#: elf/sprof.c:755
+#, c-format
+msgid "cannot load profiling data"
+msgstr ""
+
+#: elf/sprof.c:764
+#, c-format
+msgid "while stat'ing profiling data file"
+msgstr ""
+
+#: elf/sprof.c:772
+#, c-format
+msgid "profiling data file `%s' does not match shared object `%s'"
+msgstr ""
+
+#: elf/sprof.c:783
+#, c-format
+msgid "failed to mmap the profiling data file"
+msgstr ""
+
+#: elf/sprof.c:791
+#, c-format
+msgid "error while closing the profiling data file"
+msgstr ""
+
+#: elf/sprof.c:800 elf/sprof.c:870
+#, c-format
+msgid "cannot create internal descriptor"
+msgstr ""
+
+#: elf/sprof.c:846
+#, c-format
+msgid "`%s' is no correct profile data file for `%s'"
+msgstr ""
+
+#: elf/sprof.c:1027 elf/sprof.c:1085
+#, fuzzy, c-format
+msgid "cannot allocate symbol data"
+msgstr "Не може да се задели памет"
+
+#: iconv/iconv_charmap.c:176 iconv/iconv_prog.c:316
+#, c-format
+msgid "error while closing input `%s'"
+msgstr ""
+
+#: iconv/iconv_charmap.c:450
+#, c-format
+msgid "illegal input sequence at position %Zd"
+msgstr ""
+
+#: iconv/iconv_charmap.c:469 iconv/iconv_prog.c:526
+#, c-format
+msgid "incomplete character or shift sequence at end of buffer"
+msgstr ""
+
+#: iconv/iconv_charmap.c:514 iconv/iconv_charmap.c:550 iconv/iconv_prog.c:569
+#: iconv/iconv_prog.c:605
+#, c-format
+msgid "error while reading the input"
+msgstr ""
+
+#: iconv/iconv_charmap.c:532 iconv/iconv_prog.c:587
+#, c-format
+msgid "unable to allocate buffer for input"
+msgstr ""
+
+#: iconv/iconv_prog.c:60
+msgid "Input/Output format specification:"
+msgstr ""
+
+#: iconv/iconv_prog.c:61
+msgid "encoding of original text"
+msgstr ""
+
+#: iconv/iconv_prog.c:62
+msgid "encoding for output"
+msgstr ""
+
+#: iconv/iconv_prog.c:63
+msgid "Information:"
+msgstr ""
+
+#: iconv/iconv_prog.c:64
+msgid "list all known coded character sets"
+msgstr ""
+
+#: iconv/iconv_prog.c:65 locale/programs/localedef.c:127
+msgid "Output control:"
+msgstr ""
+
+#: iconv/iconv_prog.c:66
+msgid "omit invalid characters from output"
+msgstr ""
+
+#: iconv/iconv_prog.c:67
+msgid "output file"
+msgstr ""
+
+#: iconv/iconv_prog.c:68
+msgid "suppress warnings"
+msgstr ""
+
+#: iconv/iconv_prog.c:69
+msgid "print progress information"
+msgstr ""
+
+#: iconv/iconv_prog.c:74
+msgid "Convert encoding of given files from one encoding to another."
+msgstr ""
+
+#: iconv/iconv_prog.c:78
+msgid "[FILE...]"
+msgstr ""
+
+#: iconv/iconv_prog.c:200
+#, c-format
+msgid "cannot open output file"
+msgstr ""
+
+#: iconv/iconv_prog.c:242
+#, c-format
+msgid "conversions from `%s' and to `%s' are not supported"
+msgstr ""
+
+#: iconv/iconv_prog.c:247
+#, fuzzy, c-format
+msgid "conversion from `%s' is not supported"
+msgstr "Неподдържана операция"
+
+#: iconv/iconv_prog.c:254
+#, fuzzy, c-format
+msgid "conversion to `%s' is not supported"
+msgstr "Неподдържана операция"
+
+#: iconv/iconv_prog.c:258
+#, c-format
+msgid "conversion from `%s' to `%s' is not supported"
+msgstr ""
+
+#: iconv/iconv_prog.c:268
+#, c-format
+msgid "failed to start conversion processing"
+msgstr ""
+
+#: iconv/iconv_prog.c:362
+#, c-format
+msgid "error while closing output file"
+msgstr ""
+
+#: iconv/iconv_prog.c:471 iconv/iconv_prog.c:497
+#, c-format
+msgid "conversion stopped due to problem in writing the output"
+msgstr ""
+
+#: iconv/iconv_prog.c:522
+#, c-format
+msgid "illegal input sequence at position %ld"
+msgstr ""
+
+#: iconv/iconv_prog.c:530
+#, c-format
+msgid "internal error (illegal descriptor)"
+msgstr ""
+
+#: iconv/iconv_prog.c:533
+#, c-format
+msgid "unknown iconv() error %d"
+msgstr ""
+
+#: iconv/iconv_prog.c:779
+msgid ""
+"The following list contain all the coded character sets known. This does\n"
+"not necessarily mean that all combinations of these names can be used for\n"
+"the FROM and TO command line parameters. One coded character set can be\n"
+"listed with several different names (aliases).\n"
+"\n"
+" "
+msgstr ""
+
+#: iconv/iconvconfig.c:110
+msgid "Create fastloading iconv module configuration file."
+msgstr ""
+
+#: iconv/iconvconfig.c:114
+msgid "[DIR...]"
+msgstr ""
+
+#: iconv/iconvconfig.c:127
+msgid "Prefix used for all file accesses"
+msgstr ""
+
+#: iconv/iconvconfig.c:128
+msgid "Put output in FILE instead of installed location (--prefix does not apply to FILE)"
+msgstr ""
+
+#: iconv/iconvconfig.c:132
+msgid "Do not search standard directories, only those on the command line"
+msgstr ""
+
+#: iconv/iconvconfig.c:301
+#, c-format
+msgid "Directory arguments required when using --nostdlib"
+msgstr ""
+
+#: iconv/iconvconfig.c:343 locale/programs/localedef.c:291
+#, c-format
+msgid "no output file produced because warnings were issued"
+msgstr ""
+
+#: iconv/iconvconfig.c:429
+#, c-format
+msgid "while inserting in search tree"
+msgstr ""
+
+#: iconv/iconvconfig.c:1238
+#, c-format
+msgid "cannot generate output file"
+msgstr ""
+
+#: inet/rcmd.c:157
+#, fuzzy
+msgid "rcmd: Cannot allocate memory\n"
+msgstr "Не може да се задели памет"
+
+#: inet/rcmd.c:172
+msgid "rcmd: socket: All ports in use\n"
+msgstr ""
+
+#: inet/rcmd.c:200
+#, c-format
+msgid "connect to address %s: "
+msgstr ""
+
+#: inet/rcmd.c:213
+#, c-format
+msgid "Trying %s...\n"
+msgstr ""
+
+#: inet/rcmd.c:249
+#, c-format
+msgid "rcmd: write (setting up stderr): %m\n"
+msgstr ""
+
+#: inet/rcmd.c:265
+#, c-format
+msgid "rcmd: poll (setting up stderr): %m\n"
+msgstr ""
+
+#: inet/rcmd.c:268
+msgid "poll: protocol failure in circuit setup\n"
+msgstr ""
+
+#: inet/rcmd.c:301
+msgid "socket: protocol failure in circuit setup\n"
+msgstr ""
+
+#: inet/rcmd.c:325
+#, c-format
+msgid "rcmd: %s: short read"
+msgstr ""
+
+#: inet/rcmd.c:481
+msgid "lstat failed"
+msgstr ""
+
+#: inet/rcmd.c:488
+msgid "cannot open"
+msgstr ""
+
+#: inet/rcmd.c:490
+msgid "fstat failed"
+msgstr ""
+
+#: inet/rcmd.c:492
+msgid "bad owner"
+msgstr ""
+
+#: inet/rcmd.c:494
+msgid "writeable by other than owner"
+msgstr ""
+
+#: inet/rcmd.c:496
+msgid "hard linked somewhere"
+msgstr ""
+
+#: inet/ruserpass.c:170 inet/ruserpass.c:193
+#, fuzzy
+msgid "out of memory"
+msgstr "Не може да се задели памет"
+
+#: inet/ruserpass.c:184
+msgid "Error: .netrc file is readable by others."
+msgstr ""
+
+#: inet/ruserpass.c:185
+msgid "Remove password or make file unreadable by others."
+msgstr ""
+
+#: inet/ruserpass.c:277
+#, c-format
+msgid "Unknown .netrc keyword %s"
+msgstr ""
+
+#: libidn/nfkc.c:464
+#, fuzzy
+msgid "Character out of range for UTF-8"
+msgstr "Номер на канал извън диапазона"
+
+#: locale/programs/charmap-dir.c:58
+#, c-format
+msgid "cannot read character map directory `%s'"
+msgstr ""
+
+#: locale/programs/charmap.c:138
+#, c-format
+msgid "character map file `%s' not found"
+msgstr ""
+
+#: locale/programs/charmap.c:195
+#, c-format
+msgid "default character map file `%s' not found"
+msgstr ""
+
+#: locale/programs/charmap.c:258
+#, c-format
+msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n"
+msgstr ""
+
+#: locale/programs/charmap.c:337
+#, c-format
+msgid "%s: <mb_cur_max> must be greater than <mb_cur_min>\n"
+msgstr ""
+
+#: locale/programs/charmap.c:357 locale/programs/charmap.c:374
+#: locale/programs/repertoire.c:175
+#, c-format
+msgid "syntax error in prolog: %s"
+msgstr ""
+
+#: locale/programs/charmap.c:358
+msgid "invalid definition"
+msgstr ""
+
+#: locale/programs/charmap.c:375 locale/programs/locfile.c:126
+#: locale/programs/locfile.c:153 locale/programs/repertoire.c:176
+#, fuzzy
+msgid "bad argument"
+msgstr "Неправилен аргумент"
+
+#: locale/programs/charmap.c:403
+#, c-format
+msgid "duplicate definition of <%s>"
+msgstr ""
+
+#: locale/programs/charmap.c:410
+#, c-format
+msgid "value for <%s> must be 1 or greater"
+msgstr ""
+
+#: locale/programs/charmap.c:422
+#, c-format
+msgid "value of <%s> must be greater or equal than the value of <%s>"
+msgstr ""
+
+#: locale/programs/charmap.c:445 locale/programs/repertoire.c:184
+#, c-format
+msgid "argument to <%s> must be a single character"
+msgstr ""
+
+#: locale/programs/charmap.c:471
+msgid "character sets with locking states are not supported"
+msgstr ""
+
+#: locale/programs/charmap.c:498 locale/programs/charmap.c:552
+#: locale/programs/charmap.c:584 locale/programs/charmap.c:678
+#: locale/programs/charmap.c:733 locale/programs/charmap.c:774
+#: locale/programs/charmap.c:815
+#, c-format
+msgid "syntax error in %s definition: %s"
+msgstr ""
+
+#: locale/programs/charmap.c:499 locale/programs/charmap.c:679
+#: locale/programs/charmap.c:775 locale/programs/repertoire.c:231
+msgid "no symbolic name given"
+msgstr ""
+
+#: locale/programs/charmap.c:553
+#, fuzzy
+msgid "invalid encoding given"
+msgstr "Неправилен обмен"
+
+#: locale/programs/charmap.c:562
+msgid "too few bytes in character encoding"
+msgstr ""
+
+#: locale/programs/charmap.c:564
+msgid "too many bytes in character encoding"
+msgstr ""
+
+#: locale/programs/charmap.c:586 locale/programs/charmap.c:734
+#: locale/programs/charmap.c:817 locale/programs/repertoire.c:297
+msgid "no symbolic name given for end of range"
+msgstr ""
+
+#: locale/programs/charmap.c:610 locale/programs/ld-address.c:600
+#: locale/programs/ld-collate.c:2677 locale/programs/ld-collate.c:3828
+#: locale/programs/ld-ctype.c:2232 locale/programs/ld-ctype.c:2984
+#: 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
+#: locale/programs/ld-numeric.c:368 locale/programs/ld-paper.c:241
+#: locale/programs/ld-telephone.c:313 locale/programs/ld-time.c:1221
+#: locale/programs/repertoire.c:314
+#, c-format
+msgid "%1$s: definition does not end with `END %1$s'"
+msgstr ""
+
+#: locale/programs/charmap.c:643
+msgid "only WIDTH definitions are allowed to follow the CHARMAP definition"
+msgstr ""
+
+#: locale/programs/charmap.c:651 locale/programs/charmap.c:714
+#, c-format
+msgid "value for %s must be an integer"
+msgstr ""
+
+#: locale/programs/charmap.c:842
+#, c-format
+msgid "%s: error in state machine"
+msgstr ""
+
+#: locale/programs/charmap.c:850 locale/programs/ld-address.c:616
+#: locale/programs/ld-collate.c:2674 locale/programs/ld-collate.c:3844
+#: locale/programs/ld-ctype.c:2229 locale/programs/ld-ctype.c:3001
+#: 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
+#: locale/programs/ld-numeric.c:384 locale/programs/ld-paper.c:257
+#: locale/programs/ld-telephone.c:329 locale/programs/ld-time.c:1237
+#: locale/programs/locfile.c:826 locale/programs/repertoire.c:325
+#, c-format
+msgid "%s: premature end of file"
+msgstr ""
+
+#: locale/programs/charmap.c:869 locale/programs/charmap.c:880
+#, c-format
+msgid "unknown character `%s'"
+msgstr ""
+
+#: locale/programs/charmap.c:888
+#, c-format
+msgid "number of bytes for byte sequence of beginning and end of range not the same: %d vs %d"
+msgstr ""
+
+#: locale/programs/charmap.c:993 locale/programs/ld-collate.c:2957
+#: locale/programs/repertoire.c:420
+msgid "invalid names for character range"
+msgstr ""
+
+#: locale/programs/charmap.c:1005 locale/programs/repertoire.c:432
+msgid "hexadecimal range format should use only capital characters"
+msgstr ""
+
+#: locale/programs/charmap.c:1023 locale/programs/repertoire.c:450
+#, c-format
+msgid "<%s> and <%s> are invalid names for range"
+msgstr ""
+
+#: locale/programs/charmap.c:1029 locale/programs/repertoire.c:457
+msgid "upper limit in range is smaller than lower limit"
+msgstr ""
+
+#: locale/programs/charmap.c:1087
+msgid "resulting bytes for range not representable."
+msgstr ""
+
+#: locale/programs/ld-address.c:133 locale/programs/ld-collate.c:1536
+#: locale/programs/ld-ctype.c:420 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
+#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:159
+#, c-format
+msgid "No definition for %s category found"
+msgstr ""
+
+#: locale/programs/ld-address.c:144 locale/programs/ld-address.c:182
+#: locale/programs/ld-address.c:200 locale/programs/ld-address.c:229
+#: locale/programs/ld-address.c:301 locale/programs/ld-address.c:320
+#: locale/programs/ld-address.c:333 locale/programs/ld-identification.c:146
+#: locale/programs/ld-measurement.c:105 locale/programs/ld-monetary.c:206
+#: locale/programs/ld-monetary.c:250 locale/programs/ld-monetary.c:266
+#: locale/programs/ld-monetary.c:278 locale/programs/ld-name.c:105
+#: locale/programs/ld-name.c:142 locale/programs/ld-numeric.c:112
+#: locale/programs/ld-numeric.c:126 locale/programs/ld-paper.c:102
+#: locale/programs/ld-paper.c:111 locale/programs/ld-telephone.c:105
+#: locale/programs/ld-telephone.c:162 locale/programs/ld-time.c:175
+#: locale/programs/ld-time.c:196
+#, c-format
+msgid "%s: field `%s' not defined"
+msgstr ""
+
+#: locale/programs/ld-address.c:156 locale/programs/ld-address.c:208
+#: locale/programs/ld-address.c:238 locale/programs/ld-address.c:276
+#: locale/programs/ld-name.c:117 locale/programs/ld-telephone.c:117
+#, c-format
+msgid "%s: field `%s' must not be empty"
+msgstr ""
+
+#: locale/programs/ld-address.c:168
+#, c-format
+msgid "%s: invalid escape `%%%c' sequence in field `%s'"
+msgstr ""
+
+#: locale/programs/ld-address.c:219
+#, c-format
+msgid "%s: terminology language code `%s' not defined"
+msgstr ""
+
+#: locale/programs/ld-address.c:244
+#, c-format
+msgid "%s: field `%s' must not be defined"
+msgstr ""
+
+#: locale/programs/ld-address.c:258 locale/programs/ld-address.c:287
+#, c-format
+msgid "%s: language abbreviation `%s' not defined"
+msgstr ""
+
+#: locale/programs/ld-address.c:265 locale/programs/ld-address.c:293
+#: locale/programs/ld-address.c:327 locale/programs/ld-address.c:339
+#, c-format
+msgid "%s: `%s' value does not match `%s' value"
+msgstr ""
+
+#: locale/programs/ld-address.c:312
+#, c-format
+msgid "%s: numeric country code `%d' not valid"
+msgstr ""
+
+#: locale/programs/ld-address.c:508 locale/programs/ld-address.c:545
+#: locale/programs/ld-address.c:583 locale/programs/ld-ctype.c:2608
+#: 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
+#: locale/programs/ld-monetary.c:777 locale/programs/ld-name.c:280
+#: locale/programs/ld-numeric.c:263 locale/programs/ld-paper.c:224
+#: locale/programs/ld-telephone.c:288 locale/programs/ld-time.c:1126
+#: locale/programs/ld-time.c:1168
+#, c-format
+msgid "%s: field `%s' declared more than once"
+msgstr ""
+
+#: locale/programs/ld-address.c:512 locale/programs/ld-address.c:550
+#: locale/programs/ld-identification.c:368 locale/programs/ld-messages.c:311
+#: locale/programs/ld-monetary.c:705 locale/programs/ld-monetary.c:740
+#: locale/programs/ld-name.c:284 locale/programs/ld-numeric.c:267
+#: locale/programs/ld-telephone.c:292 locale/programs/ld-time.c:1020
+#: locale/programs/ld-time.c:1089 locale/programs/ld-time.c:1131
+#, c-format
+msgid "%s: unknown character in field `%s'"
+msgstr ""
+
+#: locale/programs/ld-address.c:597 locale/programs/ld-collate.c:3826
+#: locale/programs/ld-ctype.c:2981 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
+#: locale/programs/ld-telephone.c:311 locale/programs/ld-time.c:1219
+#, c-format
+msgid "%s: incomplete `END' line"
+msgstr ""
+
+#: locale/programs/ld-address.c:607 locale/programs/ld-collate.c:522
+#: locale/programs/ld-collate.c:574 locale/programs/ld-collate.c:870
+#: locale/programs/ld-collate.c:883 locale/programs/ld-collate.c:2664
+#: locale/programs/ld-collate.c:3835 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-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
+#: locale/programs/ld-numeric.c:375 locale/programs/ld-paper.c:248
+#: locale/programs/ld-telephone.c:320 locale/programs/ld-time.c:1228
+#, c-format
+msgid "%s: syntax error"
+msgstr ""
+
+#: locale/programs/ld-collate.c:397
+#, c-format
+msgid "`%.*s' already defined in charmap"
+msgstr ""
+
+#: locale/programs/ld-collate.c:406
+#, c-format
+msgid "`%.*s' already defined in repertoire"
+msgstr ""
+
+#: locale/programs/ld-collate.c:413
+#, c-format
+msgid "`%.*s' already defined as collating symbol"
+msgstr ""
+
+#: locale/programs/ld-collate.c:420
+#, c-format
+msgid "`%.*s' already defined as collating element"
+msgstr ""
+
+#: locale/programs/ld-collate.c:451 locale/programs/ld-collate.c:477
+#, c-format
+msgid "%s: `forward' and `backward' are mutually excluding each other"
+msgstr ""
+
+#: locale/programs/ld-collate.c:461 locale/programs/ld-collate.c:487
+#: locale/programs/ld-collate.c:503
+#, c-format
+msgid "%s: `%s' mentioned more than once in definition of weight %d"
+msgstr ""
+
+#: locale/programs/ld-collate.c:559
+#, c-format
+msgid "%s: too many rules; first entry only had %d"
+msgstr ""
+
+#: locale/programs/ld-collate.c:595
+#, c-format
+msgid "%s: not enough sorting rules"
+msgstr ""
+
+#: locale/programs/ld-collate.c:760
+#, c-format
+msgid "%s: empty weight string not allowed"
+msgstr ""
+
+#: locale/programs/ld-collate.c:855
+#, c-format
+msgid "%s: weights must use the same ellipsis symbol as the name"
+msgstr ""
+
+#: locale/programs/ld-collate.c:911
+#, fuzzy, c-format
+msgid "%s: too many values"
+msgstr "Твърде много потребители"
+
+#: locale/programs/ld-collate.c:1031 locale/programs/ld-collate.c:1206
+#, c-format
+msgid "order for `%.*s' already defined at %s:%Zu"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1081
+#, c-format
+msgid "%s: the start and the end symbol of a range must stand for characters"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1108
+#, c-format
+msgid "%s: byte sequences of first and last character must have the same length"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1150
+#, 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:1275
+#, c-format
+msgid "%s: symbolic range ellipsis must not directly follow `order_start'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1279
+#, c-format
+msgid "%s: symbolic range ellipsis must not be directly followed by `order_end'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1299 locale/programs/ld-ctype.c:1477
+#, c-format
+msgid "`%s' and `%.*s' are not valid names for symbolic range"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1349 locale/programs/ld-collate.c:3763
+#, c-format
+msgid "%s: order for `%.*s' already defined at %s:%Zu"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1358
+#, c-format
+msgid "%s: `%s' must be a character"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1552
+#, c-format
+msgid "%s: `position' must be used for a specific level in all sections or none"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1577
+#, c-format
+msgid "symbol `%s' not defined"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1653 locale/programs/ld-collate.c:1759
+#, c-format
+msgid "symbol `%s' has the same encoding as"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1657 locale/programs/ld-collate.c:1763
+#, c-format
+msgid "symbol `%s'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1805
+#, c-format
+msgid "no definition of `UNDEFINED'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:1834
+#, c-format
+msgid "too many errors; giving up"
+msgstr ""
+
+#: locale/programs/ld-collate.c:2762
+#, c-format
+msgid "%s: duplicate definition of `%s'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:2798
+#, c-format
+msgid "%s: duplicate declaration of section `%s'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:2937
+#, c-format
+msgid "%s: unknown character in collating symbol name"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3069
+#, c-format
+msgid "%s: unknown character in equivalent definition name"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3082
+#, c-format
+msgid "%s: unknown character in equivalent definition value"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3092
+#, c-format
+msgid "%s: unknown symbol `%s' in equivalent definition"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3101
+msgid "error while adding equivalent collating symbol"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3131
+#, c-format
+msgid "duplicate definition of script `%s'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3179
+#, c-format
+msgid "%s: unknown section name `%.*s'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3208
+#, c-format
+msgid "%s: multiple order definitions for section `%s'"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3233
+#, c-format
+msgid "%s: invalid number of sorting rules"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3260
+#, c-format
+msgid "%s: multiple order definitions for unnamed section"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3314 locale/programs/ld-collate.c:3442
+#: locale/programs/ld-collate.c:3804
+#, c-format
+msgid "%s: missing `order_end' keyword"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3375
+#, c-format
+msgid "%s: order for collating symbol %.*s not yet defined"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3393
+#, c-format
+msgid "%s: order for collating element %.*s not yet defined"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3404
+#, c-format
+msgid "%s: cannot reorder after %.*s: symbol not known"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3456 locale/programs/ld-collate.c:3816
+#, c-format
+msgid "%s: missing `reorder-end' keyword"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3490 locale/programs/ld-collate.c:3688
+#, c-format
+msgid "%s: section `%.*s' not known"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3555
+#, c-format
+msgid "%s: bad symbol <%.*s>"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3751
+#, c-format
+msgid "%s: cannot have `%s' as end of ellipsis range"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3800
+#, c-format
+msgid "%s: empty category description not allowed"
+msgstr ""
+
+#: locale/programs/ld-collate.c:3819
+#, c-format
+msgid "%s: missing `reorder-sections-end' keyword"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:439
+#, c-format
+msgid "No character set name specified in charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:468
+#, c-format
+msgid "character L'\\u%0*x' in class `%s' must be in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:483
+#, 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
+#, c-format
+msgid "internal error in %s, line %u"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:526
+#, c-format
+msgid "character '%s' in class `%s' must be in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:542
+#, 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
+#, c-format
+msgid "<SP> character not in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:584 locale/programs/ld-ctype.c:621
+#, c-format
+msgid "<SP> character must not be in class `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:599
+#, c-format
+msgid "character <SP> not defined in character map"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:714
+#, c-format
+msgid "`digit' category has not entries in groups of ten"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:763
+#, c-format
+msgid "no input digits defined and none of the standard names in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:828
+#, c-format
+msgid "not all characters used in `outdigit' are available in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:845
+#, c-format
+msgid "not all characters used in `outdigit' are available in the repertoire"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1245
+#, c-format
+msgid "character class `%s' already defined"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1251
+#, c-format
+msgid "implementation limit: no more than %Zd character classes allowed"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1277
+#, c-format
+msgid "character map `%s' already defined"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1283
+#, 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
+#, 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
+#, 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
+msgid "start and end character sequence of range must have the same length"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:1710
+msgid "to-value character sequence is smaller than from-value sequence"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2070 locale/programs/ld-ctype.c:2121
+msgid "premature end of `translit_ignore' definition"
+msgstr ""
+
+# TODO
+#: locale/programs/ld-ctype.c:2076 locale/programs/ld-ctype.c:2127
+#: locale/programs/ld-ctype.c:2169
+#, fuzzy
+msgid "syntax error"
+msgstr "Грешка при srmount"
+
+#: locale/programs/ld-ctype.c:2303
+#, c-format
+msgid "%s: syntax error in definition of new character class"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2318
+#, c-format
+msgid "%s: syntax error in definition of new character map"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2493
+msgid "ellipsis range must be marked by two operands of same type"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2502
+msgid "with symbolic name range values the absolute ellipsis `...' must not be used"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2517
+msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2531
+msgid "with character code range values one must use the absolute ellipsis `...'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2682
+#, c-format
+msgid "duplicated definition for mapping `%s'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2768 locale/programs/ld-ctype.c:2912
+#, c-format
+msgid "%s: `translit_start' section does not end with `translit_end'"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2863
+#, c-format
+msgid "%s: duplicate `default_missing' definition"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2868
+msgid "previous definition was here"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:2890
+#, 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
+#, 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
+#, 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
+#, c-format
+msgid "%s: character `%s' needed as default value not representable with one byte"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3489
+#, c-format
+msgid "no output digits defined and none of the standard names in the charmap"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3780
+#, c-format
+msgid "%s: transliteration data from locale `%s' not available"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3881
+#, c-format
+msgid "%s: table for class \"%s\": %lu bytes\n"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:3950
+#, c-format
+msgid "%s: table for map \"%s\": %lu bytes\n"
+msgstr ""
+
+#: locale/programs/ld-ctype.c:4083
+#, c-format
+msgid "%s: table for width: %lu bytes\n"
+msgstr ""
+
+#: locale/programs/ld-identification.c:170
+#, c-format
+msgid "%s: no identification for category `%s'"
+msgstr ""
+
+#: locale/programs/ld-identification.c:435
+#, c-format
+msgid "%s: duplicate category version definition"
+msgstr ""
+
+#: locale/programs/ld-measurement.c:113
+#, c-format
+msgid "%s: invalid value for field `%s'"
+msgstr ""
+
+#: locale/programs/ld-messages.c:114 locale/programs/ld-messages.c:148
+#, c-format
+msgid "%s: field `%s' undefined"
+msgstr ""
+
+#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:155
+#: locale/programs/ld-monetary.c:256 locale/programs/ld-numeric.c:118
+#, c-format
+msgid "%s: value for field `%s' must not be an empty string"
+msgstr ""
+
+#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:171
+#, c-format
+msgid "%s: no correct regular expression for field `%s': %s"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:224
+#, c-format
+msgid "%s: value of field `int_curr_symbol' has wrong length"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:237
+#, c-format
+msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:285 locale/programs/ld-monetary.c:315
+#, c-format
+msgid "%s: value for field `%s' must be in range %d...%d"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:747 locale/programs/ld-numeric.c:274
+#, c-format
+msgid "%s: value for field `%s' must be a single character"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:844 locale/programs/ld-numeric.c:318
+#, c-format
+msgid "%s: `-1' must be last entry in `%s' field"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:866 locale/programs/ld-numeric.c:335
+#, c-format
+msgid "%s: values for field `%s' must be smaller than 127"
+msgstr ""
+
+#: locale/programs/ld-monetary.c:909
+msgid "conversion rate value cannot be zero"
+msgstr ""
+
+#: locale/programs/ld-name.c:129 locale/programs/ld-telephone.c:126
+#: locale/programs/ld-telephone.c:149
+#, c-format
+msgid "%s: invalid escape sequence in field `%s'"
+msgstr ""
+
+#: locale/programs/ld-time.c:247
+#, c-format
+msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'"
+msgstr ""
+
+#: locale/programs/ld-time.c:258
+#, c-format
+msgid "%s: direction flag in string %Zd in `era' field is not a single character"
+msgstr ""
+
+#: locale/programs/ld-time.c:271
+#, c-format
+msgid "%s: invalid number for offset in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:279
+#, c-format
+msgid "%s: garbage at end of offset value in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:330
+#, c-format
+msgid "%s: invalid starting date in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:339
+#, c-format
+msgid "%s: garbage at end of starting date in string %Zd in `era' field "
+msgstr ""
+
+#: locale/programs/ld-time.c:358
+#, c-format
+msgid "%s: starting date is invalid in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:407
+#, c-format
+msgid "%s: invalid stopping date in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:416
+#, c-format
+msgid "%s: garbage at end of stopping date in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:435
+#, c-format
+msgid "%s: stopping date is invalid in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:444
+#, c-format
+msgid "%s: missing era name in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:456
+#, c-format
+msgid "%s: missing era format in string %Zd in `era' field"
+msgstr ""
+
+#: locale/programs/ld-time.c:497
+#, c-format
+msgid "%s: third operand for value of field `%s' must not be larger than %d"
+msgstr ""
+
+#: locale/programs/ld-time.c:505 locale/programs/ld-time.c:513
+#: locale/programs/ld-time.c:521
+#, c-format
+msgid "%s: values for field `%s' must not be larger than %d"
+msgstr ""
+
+#: locale/programs/ld-time.c:1004
+#, c-format
+msgid "%s: too few values for field `%s'"
+msgstr ""
+
+#: locale/programs/ld-time.c:1049
+msgid "extra trailing semicolon"
+msgstr ""
+
+#: locale/programs/ld-time.c:1052
+#, c-format
+msgid "%s: too many values for field `%s'"
+msgstr ""
+
+#: locale/programs/linereader.c:130
+msgid "trailing garbage at end of line"
+msgstr ""
+
+#: locale/programs/linereader.c:298
+msgid "garbage at end of number"
+msgstr ""
+
+#: locale/programs/linereader.c:410
+msgid "garbage at end of character code specification"
+msgstr ""
+
+#: locale/programs/linereader.c:496
+msgid "unterminated symbolic name"
+msgstr ""
+
+#: locale/programs/linereader.c:623
+msgid "illegal escape sequence at end of string"
+msgstr ""
+
+#: locale/programs/linereader.c:627 locale/programs/linereader.c:855
+msgid "unterminated string"
+msgstr ""
+
+#: locale/programs/linereader.c:669
+msgid "non-symbolic character value should not be used"
+msgstr ""
+
+#: locale/programs/linereader.c:816
+#, c-format
+msgid "symbol `%.*s' not in charmap"
+msgstr ""
+
+#: locale/programs/linereader.c:837
+#, c-format
+msgid "symbol `%.*s' not in repertoire map"
+msgstr ""
+
+#: locale/programs/locale.c:74
+msgid "System information:"
+msgstr ""
+
+#: locale/programs/locale.c:76
+msgid "Write names of available locales"
+msgstr ""
+
+#: locale/programs/locale.c:78
+msgid "Write names of available charmaps"
+msgstr ""
+
+#: locale/programs/locale.c:79
+msgid "Modify output format:"
+msgstr ""
+
+#: locale/programs/locale.c:80
+msgid "Write names of selected categories"
+msgstr ""
+
+#: locale/programs/locale.c:81
+msgid "Write names of selected keywords"
+msgstr ""
+
+#: locale/programs/locale.c:82
+msgid "Print more information"
+msgstr ""
+
+#: locale/programs/locale.c:87
+msgid ""
+"Get locale-specific information.\vFor bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+
+#: locale/programs/locale.c:92
+msgid ""
+"NAME\n"
+"[-a|-m]"
+msgstr ""
+
+#: locale/programs/locale.c:193
+#, c-format
+msgid "Cannot set LC_CTYPE to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:195
+#, c-format
+msgid "Cannot set LC_MESSAGES to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:208
+#, c-format
+msgid "Cannot set LC_COLLATE to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:224
+#, c-format
+msgid "Cannot set LC_ALL to default locale"
+msgstr ""
+
+#: locale/programs/locale.c:500
+#, c-format
+msgid "while preparing output"
+msgstr ""
+
+#: locale/programs/localedef.c:120
+msgid "Input Files:"
+msgstr ""
+
+#: locale/programs/localedef.c:122
+msgid "Symbolic character names defined in FILE"
+msgstr ""
+
+#: locale/programs/localedef.c:123
+msgid "Source definitions are found in FILE"
+msgstr ""
+
+#: locale/programs/localedef.c:125
+msgid "FILE contains mapping from symbolic names to UCS4 values"
+msgstr ""
+
+#: locale/programs/localedef.c:129
+msgid "Create output even if warning messages were issued"
+msgstr ""
+
+#: locale/programs/localedef.c:130
+msgid "Create old-style tables"
+msgstr ""
+
+#: locale/programs/localedef.c:131
+msgid "Optional output file prefix"
+msgstr ""
+
+#: locale/programs/localedef.c:132
+msgid "Be strictly POSIX conform"
+msgstr ""
+
+#: locale/programs/localedef.c:134
+msgid "Suppress warnings and information messages"
+msgstr ""
+
+#: locale/programs/localedef.c:135
+msgid "Print more messages"
+msgstr ""
+
+#: locale/programs/localedef.c:136
+msgid "Archive control:"
+msgstr ""
+
+#: locale/programs/localedef.c:138
+msgid "Don't add new data to archive"
+msgstr ""
+
+#: locale/programs/localedef.c:140
+msgid "Add locales named by parameters to archive"
+msgstr ""
+
+#: locale/programs/localedef.c:141
+msgid "Replace existing archive content"
+msgstr ""
+
+#: locale/programs/localedef.c:143
+msgid "Remove locales named by parameters from archive"
+msgstr ""
+
+#: locale/programs/localedef.c:144
+msgid "List content of archive"
+msgstr ""
+
+#: locale/programs/localedef.c:146
+msgid "locale.alias file to consult when making archive"
+msgstr ""
+
+#: locale/programs/localedef.c:151
+msgid "Compile locale specification"
+msgstr ""
+
+#: locale/programs/localedef.c:154
+msgid ""
+"NAME\n"
+"[--add-to-archive|--delete-from-archive] FILE...\n"
+"--list-archive [FILE]"
+msgstr ""
+
+#: locale/programs/localedef.c:232
+#, c-format
+msgid "cannot create directory for output files"
+msgstr ""
+
+#: locale/programs/localedef.c:243
+#, c-format
+msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'"
+msgstr ""
+
+#: locale/programs/localedef.c:257 locale/programs/localedef.c:273
+#: locale/programs/localedef.c:599 locale/programs/localedef.c:619
+#, c-format
+msgid "cannot open locale definition file `%s'"
+msgstr ""
+
+#: locale/programs/localedef.c:285
+#, c-format
+msgid "cannot write output files to `%s'"
+msgstr ""
+
+#: locale/programs/localedef.c:366
+#, c-format
+msgid ""
+"System's directory for character maps : %s\n"
+" repertoire maps: %s\n"
+" locale path : %s\n"
+"%s"
+msgstr ""
+
+#: locale/programs/localedef.c:567
+#, c-format
+msgid "circular dependencies between locale definitions"
+msgstr ""
+
+#: locale/programs/localedef.c:573
+#, c-format
+msgid "cannot add already read locale `%s' a second time"
+msgstr ""
+
+#: locale/programs/locarchive.c:88 locale/programs/locarchive.c:261
+#, fuzzy, c-format
+msgid "cannot create temporary file"
+msgstr "Не може да се задели памет"
+
+#: locale/programs/locarchive.c:118 locale/programs/locarchive.c:307
+#, c-format
+msgid "cannot initialize archive file"
+msgstr ""
+
+#: locale/programs/locarchive.c:125 locale/programs/locarchive.c:314
+#, c-format
+msgid "cannot resize archive file"
+msgstr ""
+
+#: locale/programs/locarchive.c:134 locale/programs/locarchive.c:323
+#: locale/programs/locarchive.c:527
+#, c-format
+msgid "cannot map archive header"
+msgstr ""
+
+#: locale/programs/locarchive.c:156
+#, c-format
+msgid "failed to create new locale archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:168
+#, c-format
+msgid "cannot change mode of new locale archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:255
+#, c-format
+msgid "cannot map locale archive file"
+msgstr ""
+
+#: locale/programs/locarchive.c:331
+#, c-format
+msgid "cannot lock new archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:396
+#, c-format
+msgid "cannot extend locale archive file"
+msgstr ""
+
+#: locale/programs/locarchive.c:405
+#, c-format
+msgid "cannot change mode of resized locale archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:413
+#, c-format
+msgid "cannot rename new archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:466
+#, c-format
+msgid "cannot open locale archive \"%s\""
+msgstr ""
+
+#: locale/programs/locarchive.c:471
+#, c-format
+msgid "cannot stat locale archive \"%s\""
+msgstr ""
+
+#: locale/programs/locarchive.c:490
+#, c-format
+msgid "cannot lock locale archive \"%s\""
+msgstr ""
+
+#: locale/programs/locarchive.c:513
+#, c-format
+msgid "cannot read archive header"
+msgstr ""
+
+#: locale/programs/locarchive.c:573
+#, 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/locfile.c:344
+#, c-format
+msgid "cannot add to locale archive"
+msgstr ""
+
+#: locale/programs/locarchive.c:998
+#, c-format
+msgid "locale alias file `%s' not found"
+msgstr ""
+
+#: locale/programs/locarchive.c:1142
+#, c-format
+msgid "Adding %s\n"
+msgstr ""
+
+#: locale/programs/locarchive.c:1148
+#, c-format
+msgid "stat of \"%s\" failed: %s: ignored"
+msgstr ""
+
+#: locale/programs/locarchive.c:1154
+#, c-format
+msgid "\"%s\" is no directory; ignored"
+msgstr ""
+
+#: locale/programs/locarchive.c:1161
+#, c-format
+msgid "cannot open directory \"%s\": %s: ignored"
+msgstr ""
+
+#: locale/programs/locarchive.c:1233
+#, c-format
+msgid "incomplete set of locale files in \"%s\""
+msgstr ""
+
+#: locale/programs/locarchive.c:1297
+#, c-format
+msgid "cannot read all files in \"%s\": ignored"
+msgstr ""
+
+#: locale/programs/locarchive.c:1367
+#, c-format
+msgid "locale \"%s\" not in archive"
+msgstr ""
+
+#: locale/programs/locfile.c:132
+#, c-format
+msgid "argument to `%s' must be a single character"
+msgstr ""
+
+#: locale/programs/locfile.c:252
+msgid "syntax error: not inside a locale definition section"
+msgstr ""
+
+#: locale/programs/locfile.c:626
+#, c-format
+msgid "cannot open output file `%s' for category `%s'"
+msgstr ""
+
+#: locale/programs/locfile.c:650
+#, c-format
+msgid "failure while writing data for category `%s'"
+msgstr ""
+
+#: locale/programs/locfile.c:746
+#, c-format
+msgid "cannot create output file `%s' for category `%s'"
+msgstr ""
+
+#: locale/programs/locfile.c:782
+msgid "expect string argument for `copy'"
+msgstr ""
+
+#: locale/programs/locfile.c:786
+msgid "locale name should consist only of portable characters"
+msgstr ""
+
+#: locale/programs/locfile.c:805
+msgid "no other keyword shall be specified when `copy' is used"
+msgstr ""
+
+#: locale/programs/locfile.c:819
+#, c-format
+msgid "`%1$s' definition does not end with `END %1$s'"
+msgstr ""
+
+#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271
+#: locale/programs/repertoire.c:296
+#, c-format
+msgid "syntax error in repertoire map definition: %s"
+msgstr ""
+
+#: locale/programs/repertoire.c:272
+msgid "no <Uxxxx> or <Uxxxxxxxx> value given"
+msgstr ""
+
+#: locale/programs/repertoire.c:332
+#, c-format
+msgid "cannot save new repertoire map"
+msgstr ""
+
+#: locale/programs/repertoire.c:343
+#, c-format
+msgid "repertoire map file `%s' not found"
+msgstr ""
+
+#: login/programs/pt_chown.c:74
+#, c-format
+msgid "Set the owner, group and access permission of the slave pseudo terminal corresponding to the master pseudo terminal passed on file descriptor `%d'. This is the helper program for the `grantpt' function. It is not intended to be run directly from the command line.\n"
+msgstr ""
+
+#: login/programs/pt_chown.c:84
+#, c-format
+msgid ""
+"The owner is set to the current user, the group is set to `%s', and the access permission is set to `%o'.\n"
+"\n"
+"%s"
+msgstr ""
+
+#: login/programs/pt_chown.c:161
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Твърде много потребители"
+
+#: login/programs/pt_chown.c:169
+#, c-format
+msgid "needs to be installed setuid `root'"
+msgstr ""
+
+#: malloc/mcheck.c:330
+msgid "memory is consistent, library is buggy\n"
+msgstr ""
+
+#: malloc/mcheck.c:333
+msgid "memory clobbered before allocated block\n"
+msgstr ""
+
+#: malloc/mcheck.c:336
+msgid "memory clobbered past end of allocated block\n"
+msgstr ""
+
+#: malloc/mcheck.c:339
+msgid "block freed twice\n"
+msgstr ""
+
+#: malloc/mcheck.c:342
+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"
+msgstr ""
+
+#: malloc/memusage.sh:39
+msgid ""
+"Usage: memusage [OPTION]... PROGRAM [PROGRAMOPTION]...\n"
+"Profile memory usage of PROGRAM.\n"
+"\n"
+" -n,--progname=NAME Name of the program file to profile\n"
+" -p,--png=FILE Generate PNG graphic and store it in FILE\n"
+" -d,--data=FILE Generate binary data file and store it in FILE\n"
+" -u,--unbuffered Don't buffer output\n"
+" -b,--buffer=SIZE Collect SIZE entries before writing them out\n"
+" --no-timer Don't collect additional information through timer\n"
+" -m,--mmap Also trace mmap & friends\n"
+"\n"
+" -?,--help Print this help and exit\n"
+" --usage Give a short usage message\n"
+" -V,--version Print version information and exit\n"
+"\n"
+" The following options only apply when generating graphical output:\n"
+" -t,--time-based Make graph linear in time\n"
+" -T,--total Also draw graph of total memory use\n"
+" --title=STRING Use STRING as title of the graph\n"
+" -x,--x-size=SIZE Make graphic SIZE pixels wide\n"
+" -y,--y-size=SIZE Make graphic SIZE pixels high\n"
+"\n"
+"Mandatory arguments to long options are also mandatory for any corresponding\n"
+"short options.\n"
+"\n"
+"For bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>."
+msgstr ""
+
+#: malloc/memusage.sh:99
+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]..."
+msgstr ""
+
+#: malloc/memusage.sh:191
+msgid "memusage: option \\`${1##*=}' is ambiguous"
+msgstr ""
+
+#: malloc/memusage.sh:200
+msgid "memusage: unrecognized option \\`$1'"
+msgstr ""
+
+#: malloc/memusage.sh:213
+msgid "No program name given"
+msgstr ""
+
+#: malloc/memusagestat.c:54
+#, fuzzy
+msgid "Name output file"
+msgstr "Именован типов файл е"
+
+#: malloc/memusagestat.c:55
+msgid "Title string used in output graphic"
+msgstr ""
+
+#: malloc/memusagestat.c:56
+msgid "Generate output linear to time (default is linear to number of function calls)"
+msgstr ""
+
+#: malloc/memusagestat.c:58
+msgid "Also draw graph for total memory consumption"
+msgstr ""
+
+#: malloc/memusagestat.c:59
+msgid "Make output graphic VALUE pixels wide"
+msgstr ""
+
+#: malloc/memusagestat.c:60
+msgid "Make output graphic VALUE pixels high"
+msgstr ""
+
+#: malloc/memusagestat.c:65
+msgid "Generate graphic from memory profiling data"
+msgstr ""
+
+#: malloc/memusagestat.c:68
+msgid "DATAFILE [OUTFILE]"
+msgstr ""
+
+#: misc/error.c:118 timezone/zic.c:417
+msgid "Unknown system error"
+msgstr ""
+
+#: nis/nis_callback.c:189
+#, fuzzy
+msgid "unable to free arguments"
+msgstr "Неправилен аргумент"
+
+#: nis/nis_error.h:1 nis/ypclnt.c:822 nis/ypclnt.c:910 posix/regcomp.c:132
+#: sysdeps/gnu/errlist.c:20
+msgid "Success"
+msgstr "Успешно"
+
+#: nis/nis_error.h:2
+msgid "Probable success"
+msgstr ""
+
+#: nis/nis_error.h:3
+#, fuzzy
+msgid "Not found"
+msgstr "Не е открит носител"
+
+#: nis/nis_error.h:4
+msgid "Probably not found"
+msgstr ""
+
+#: nis/nis_error.h:5
+#, fuzzy
+msgid "Cache expired"
+msgstr "Изтекъл таймер"
+
+# TODO
+#: nis/nis_error.h:6
+#, fuzzy
+msgid "NIS+ servers unreachable"
+msgstr "Мрежата е недостъпна"
+
+#: nis/nis_error.h:7
+msgid "Unknown object"
+msgstr ""
+
+#: nis/nis_error.h:8
+msgid "Server busy, try again"
+msgstr ""
+
+# TODO
+#: nis/nis_error.h:9
+#, fuzzy
+msgid "Generic system error"
+msgstr "Грешка при осведомяване"
+
+#: nis/nis_error.h:10
+msgid "First/next chain broken"
+msgstr ""
+
+#. TRANS Permission denied; the file permissions do not allow the attempted operation.
+#: nis/nis_error.h:11 nis/ypclnt.c:867 sysdeps/gnu/errlist.c:157
+msgid "Permission denied"
+msgstr "Отказан достъп"
+
+#: nis/nis_error.h:12
+msgid "Not owner"
+msgstr ""
+
+#: nis/nis_error.h:13
+msgid "Name not served by this server"
+msgstr ""
+
+#: nis/nis_error.h:14
+msgid "Server out of memory"
+msgstr ""
+
+#: nis/nis_error.h:15
+msgid "Object with same name exists"
+msgstr ""
+
+#: nis/nis_error.h:16
+msgid "Not master server for this domain"
+msgstr ""
+
+#: nis/nis_error.h:17
+msgid "Invalid object for operation"
+msgstr ""
+
+#: nis/nis_error.h:18
+msgid "Malformed name, or illegal name"
+msgstr ""
+
+#: nis/nis_error.h:19
+msgid "Unable to create callback"
+msgstr ""
+
+#: nis/nis_error.h:20
+msgid "Results sent to callback proc"
+msgstr ""
+
+#: nis/nis_error.h:21
+msgid "Not found, no such name"
+msgstr ""
+
+#: nis/nis_error.h:22
+msgid "Name/entry isn't unique"
+msgstr ""
+
+#: nis/nis_error.h:23
+msgid "Modification failed"
+msgstr ""
+
+#: nis/nis_error.h:24
+msgid "Database for table does not exist"
+msgstr ""
+
+#: nis/nis_error.h:25
+msgid "Entry/table type mismatch"
+msgstr ""
+
+#: nis/nis_error.h:26
+msgid "Link points to illegal name"
+msgstr ""
+
+#: nis/nis_error.h:27
+msgid "Partial success"
+msgstr ""
+
+#: nis/nis_error.h:28
+#, fuzzy
+msgid "Too many attributes"
+msgstr "Твърде много потребители"
+
+#: nis/nis_error.h:29
+msgid "Error in RPC subsystem"
+msgstr ""
+
+#: nis/nis_error.h:30
+msgid "Missing or malformed attribute"
+msgstr ""
+
+# TODO
+#: nis/nis_error.h:31
+#, fuzzy
+msgid "Named object is not searchable"
+msgstr "Мрежата е недостъпна"
+
+#: nis/nis_error.h:32
+msgid "Error while talking to callback proc"
+msgstr ""
+
+#: nis/nis_error.h:33
+msgid "Non NIS+ namespace encountered"
+msgstr ""
+
+#: nis/nis_error.h:34
+msgid "Illegal object type for operation"
+msgstr ""
+
+#: nis/nis_error.h:35
+msgid "Passed object is not the same object on server"
+msgstr ""
+
+#: nis/nis_error.h:36
+#, fuzzy
+msgid "Modify operation failed"
+msgstr "Отменена операция"
+
+#: nis/nis_error.h:37
+msgid "Query illegal for named table"
+msgstr ""
+
+#: nis/nis_error.h:38
+msgid "Attempt to remove a non-empty table"
+msgstr ""
+
+#: nis/nis_error.h:39
+msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?"
+msgstr ""
+
+#: nis/nis_error.h:40
+#, fuzzy
+msgid "Full resync required for directory"
+msgstr "Няма такъв файл или директория"
+
+#: nis/nis_error.h:41
+#, fuzzy
+msgid "NIS+ operation failed"
+msgstr "Отменена операция"
+
+#: nis/nis_error.h:42
+msgid "NIS+ service is unavailable or not installed"
+msgstr ""
+
+#: nis/nis_error.h:43
+msgid "Yes, 42 is the meaning of life"
+msgstr ""
+
+#: nis/nis_error.h:44
+msgid "Unable to authenticate NIS+ server"
+msgstr ""
+
+#: nis/nis_error.h:45
+msgid "Unable to authenticate NIS+ client"
+msgstr ""
+
+#: nis/nis_error.h:46
+#, fuzzy
+msgid "No file space on server"
+msgstr "Няма свободно място на устройството"
+
+#: nis/nis_error.h:47
+msgid "Unable to create process on server"
+msgstr ""
+
+#: nis/nis_error.h:48
+msgid "Master server busy, full dump rescheduled."
+msgstr ""
+
+#: nis/nis_local_names.c:122
+#, c-format
+msgid "LOCAL entry for UID %d in directory %s not unique\n"
+msgstr ""
+
+#: nis/nis_print.c:51
+msgid "UNKNOWN"
+msgstr ""
+
+#: nis/nis_print.c:109
+msgid "BOGUS OBJECT\n"
+msgstr ""
+
+#: nis/nis_print.c:112
+msgid "NO OBJECT\n"
+msgstr ""
+
+#: nis/nis_print.c:115
+msgid "DIRECTORY\n"
+msgstr ""
+
+#: nis/nis_print.c:118
+msgid "GROUP\n"
+msgstr ""
+
+#: nis/nis_print.c:121
+msgid "TABLE\n"
+msgstr ""
+
+#: nis/nis_print.c:124
+msgid "ENTRY\n"
+msgstr ""
+
+#: nis/nis_print.c:127
+msgid "LINK\n"
+msgstr ""
+
+#: nis/nis_print.c:130
+msgid "PRIVATE\n"
+msgstr ""
+
+#: nis/nis_print.c:133
+msgid "(Unknown object)\n"
+msgstr ""
+
+#: nis/nis_print.c:167
+#, c-format
+msgid "Name : `%s'\n"
+msgstr ""
+
+#: nis/nis_print.c:168
+#, c-format
+msgid "Type : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:173
+msgid "Master Server :\n"
+msgstr ""
+
+#: nis/nis_print.c:175
+msgid "Replicate :\n"
+msgstr ""
+
+#: nis/nis_print.c:176
+#, c-format
+msgid "\tName : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:177
+msgid "\tPublic Key : "
+msgstr ""
+
+#: nis/nis_print.c:181
+msgid "None.\n"
+msgstr ""
+
+#: nis/nis_print.c:184
+#, c-format
+msgid "Diffie-Hellmann (%d bits)\n"
+msgstr ""
+
+#: nis/nis_print.c:189
+#, c-format
+msgid "RSA (%d bits)\n"
+msgstr ""
+
+#: nis/nis_print.c:192
+msgid "Kerberos.\n"
+msgstr ""
+
+#: nis/nis_print.c:195
+#, c-format
+msgid "Unknown (type = %d, bits = %d)\n"
+msgstr ""
+
+#: nis/nis_print.c:206
+#, c-format
+msgid "\tUniversal addresses (%u)\n"
+msgstr ""
+
+#: nis/nis_print.c:228
+msgid "Time to live : "
+msgstr ""
+
+#: nis/nis_print.c:230
+msgid "Default Access rights :\n"
+msgstr ""
+
+#: nis/nis_print.c:239
+#, c-format
+msgid "\tType : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:240
+msgid "\tAccess rights: "
+msgstr ""
+
+#: nis/nis_print.c:254
+msgid "Group Flags :"
+msgstr ""
+
+#: nis/nis_print.c:257
+msgid ""
+"\n"
+"Group Members :\n"
+msgstr ""
+
+#: nis/nis_print.c:269
+#, c-format
+msgid "Table Type : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:270
+#, c-format
+msgid "Number of Columns : %d\n"
+msgstr ""
+
+#: nis/nis_print.c:271
+#, c-format
+msgid "Character Separator : %c\n"
+msgstr ""
+
+#: nis/nis_print.c:272
+#, c-format
+msgid "Search Path : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:273
+msgid "Columns :\n"
+msgstr ""
+
+#: nis/nis_print.c:276
+#, c-format
+msgid "\t[%d]\tName : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:278
+msgid "\t\tAttributes : "
+msgstr ""
+
+#: nis/nis_print.c:280
+msgid "\t\tAccess Rights : "
+msgstr ""
+
+#: nis/nis_print.c:290
+msgid "Linked Object Type : "
+msgstr ""
+
+#: nis/nis_print.c:292
+#, c-format
+msgid "Linked to : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:302
+#, c-format
+msgid "\tEntry data of type %s\n"
+msgstr ""
+
+#: nis/nis_print.c:305
+#, c-format
+msgid "\t[%u] - [%u bytes] "
+msgstr ""
+
+#: nis/nis_print.c:308
+msgid "Encrypted data\n"
+msgstr ""
+
+#: nis/nis_print.c:310
+msgid "Binary data\n"
+msgstr ""
+
+#: nis/nis_print.c:326
+#, c-format
+msgid "Object Name : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:327
+#, c-format
+msgid "Directory : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:328
+#, c-format
+msgid "Owner : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:329
+#, c-format
+msgid "Group : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:330
+msgid "Access Rights : "
+msgstr ""
+
+#: nis/nis_print.c:332
+#, c-format
+msgid ""
+"\n"
+"Time to Live : "
+msgstr ""
+
+#: nis/nis_print.c:335
+#, c-format
+msgid "Creation Time : %s"
+msgstr ""
+
+#: nis/nis_print.c:337
+#, c-format
+msgid "Mod. Time : %s"
+msgstr ""
+
+#: nis/nis_print.c:338
+msgid "Object Type : "
+msgstr ""
+
+#: nis/nis_print.c:358
+#, c-format
+msgid " Data Length = %u\n"
+msgstr ""
+
+#: nis/nis_print.c:372
+#, c-format
+msgid "Status : %s\n"
+msgstr ""
+
+#: nis/nis_print.c:373
+#, c-format
+msgid "Number of objects : %u\n"
+msgstr ""
+
+#: nis/nis_print.c:377
+#, c-format
+msgid "Object #%d:\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:117
+#, c-format
+msgid "Group entry for \"%s.%s\" group:\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:125
+msgid " Explicit members:\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:130
+msgid " No explicit members\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:133
+msgid " Implicit members:\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:138
+msgid " No implicit members\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:141
+msgid " Recursive members:\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:146
+msgid " No recursive members\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:149
+msgid " Explicit nonmembers:\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:154
+msgid " No explicit nonmembers\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:157
+msgid " Implicit nonmembers:\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:162
+msgid " No implicit nonmembers\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:165
+msgid " Recursive nonmembers:\n"
+msgstr ""
+
+#: nis/nis_print_group_entry.c:170
+msgid " No recursive nonmembers\n"
+msgstr ""
+
+#: nis/nss_nisplus/nisplus-publickey.c:101
+#: nis/nss_nisplus/nisplus-publickey.c:183
+#, c-format
+msgid "DES entry for netname %s not unique\n"
+msgstr ""
+
+#: nis/nss_nisplus/nisplus-publickey.c:220
+#, c-format
+msgid "netname2user: missing group id list in `%s'"
+msgstr ""
+
+#: nis/nss_nisplus/nisplus-publickey.c:302
+#: nis/nss_nisplus/nisplus-publickey.c:308
+#: nis/nss_nisplus/nisplus-publickey.c:373
+#: nis/nss_nisplus/nisplus-publickey.c:382
+#, c-format
+msgid "netname2user: (nis+ lookup): %s\n"
+msgstr ""
+
+#: nis/nss_nisplus/nisplus-publickey.c:321
+#, c-format
+msgid "netname2user: DES entry for %s in directory %s not unique"
+msgstr ""
+
+#: nis/nss_nisplus/nisplus-publickey.c:339
+#, c-format
+msgid "netname2user: principal name `%s' too long"
+msgstr ""
+
+#: nis/nss_nisplus/nisplus-publickey.c:395
+#, c-format
+msgid "netname2user: LOCAL entry for %s in directory %s not unique"
+msgstr ""
+
+#: nis/nss_nisplus/nisplus-publickey.c:402
+msgid "netname2user: should not have uid 0"
+msgstr ""
+
+#: nis/ypclnt.c:825
+msgid "Request arguments bad"
+msgstr ""
+
+#: nis/ypclnt.c:828
+msgid "RPC failure on NIS operation"
+msgstr ""
+
+#: nis/ypclnt.c:831
+msgid "Can't bind to server which serves this domain"
+msgstr ""
+
+#: nis/ypclnt.c:834
+msgid "No such map in server's domain"
+msgstr ""
+
+#: nis/ypclnt.c:837
+#, fuzzy
+msgid "No such key in map"
+msgstr "Няма такова устройство"
+
+#: nis/ypclnt.c:840
+msgid "Internal NIS error"
+msgstr ""
+
+#: nis/ypclnt.c:843
+msgid "Local resource allocation failure"
+msgstr ""
+
+#: nis/ypclnt.c:846
+msgid "No more records in map database"
+msgstr ""
+
+#: nis/ypclnt.c:849
+msgid "Can't communicate with portmapper"
+msgstr ""
+
+#: nis/ypclnt.c:852
+msgid "Can't communicate with ypbind"
+msgstr ""
+
+#: nis/ypclnt.c:855
+msgid "Can't communicate with ypserv"
+msgstr ""
+
+#: nis/ypclnt.c:858
+msgid "Local domain name not set"
+msgstr ""
+
+#: nis/ypclnt.c:861
+msgid "NIS map database is bad"
+msgstr ""
+
+#: nis/ypclnt.c:864
+msgid "NIS client/server version mismatch - can't supply service"
+msgstr ""
+
+#: nis/ypclnt.c:870
+msgid "Database is busy"
+msgstr ""
+
+#: nis/ypclnt.c:873
+msgid "Unknown NIS error code"
+msgstr ""
+
+#: nis/ypclnt.c:913
+#, fuzzy
+msgid "Internal ypbind error"
+msgstr "Канална грешка при потоци"
+
+#: nis/ypclnt.c:916
+msgid "Domain not bound"
+msgstr ""
+
+#: nis/ypclnt.c:919
+msgid "System resource allocation failure"
+msgstr ""
+
+#: nis/ypclnt.c:922
+msgid "Unknown ypbind error"
+msgstr ""
+
+#: nis/ypclnt.c:963
+msgid "yp_update: cannot convert host to netname\n"
+msgstr ""
+
+#: nis/ypclnt.c:981
+msgid "yp_update: cannot get server address\n"
+msgstr ""
+
+#: nscd/aicache.c:77 nscd/hstcache.c:462
+#, c-format
+msgid "Haven't found \"%s\" in hosts cache!"
+msgstr ""
+
+#: nscd/aicache.c:79 nscd/hstcache.c:464
+#, c-format
+msgid "Reloading \"%s\" in hosts cache!"
+msgstr ""
+
+#: nscd/cache.c:146
+#, c-format
+msgid "add new entry \"%s\" of type %s for %s to cache%s"
+msgstr ""
+
+#: nscd/cache.c:148
+msgid " (first)"
+msgstr ""
+
+#: nscd/cache.c:256 nscd/connections.c:786
+#, c-format
+msgid "cannot stat() file `%s': %s"
+msgstr ""
+
+#: nscd/cache.c:285
+#, c-format
+msgid "pruning %s cache; time %ld"
+msgstr ""
+
+#: nscd/cache.c:312
+#, c-format
+msgid "considering %s entry \"%s\", timeout %<PRIu64>"
+msgstr ""
+
+#: nscd/connections.c:505 nscd/connections.c:517 nscd/connections.c:529
+#: nscd/connections.c:548
+#, c-format
+msgid "invalid persistent database file \"%s\": %s"
+msgstr ""
+
+#: nscd/connections.c:519
+msgid "header size does not match"
+msgstr ""
+
+#: nscd/connections.c:531
+msgid "file size does not match"
+msgstr ""
+
+#: nscd/connections.c:550
+#, fuzzy
+msgid "verification failed"
+msgstr "Отменена операция"
+
+#: nscd/connections.c:564
+#, c-format
+msgid "suggested size of table for database %s larger than the persistent database's table"
+msgstr ""
+
+#: nscd/connections.c:574 nscd/connections.c:655
+#, c-format
+msgid "cannot create read-only descriptor for \"%s\"; no mmap"
+msgstr ""
+
+#: nscd/connections.c:634
+#, c-format
+msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
+msgstr ""
+
+#: nscd/connections.c:641
+#, c-format
+msgid "cannot create %s; no persistent database used"
+msgstr ""
+
+#: nscd/connections.c:644
+#, c-format
+msgid "cannot create %s; no sharing possible"
+msgstr ""
+
+#: nscd/connections.c:715
+#, c-format
+msgid "cannot write to database file %s: %s"
+msgstr ""
+
+#: nscd/connections.c:749
+#, c-format
+msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:799
+#, c-format
+msgid "cannot open socket: %s"
+msgstr ""
+
+#: nscd/connections.c:816
+#, c-format
+msgid "cannot change socket to nonblocking mode: %s"
+msgstr ""
+
+#: nscd/connections.c:824
+#, c-format
+msgid "cannot set socket to close on exec: %s"
+msgstr ""
+
+#: nscd/connections.c:835
+#, c-format
+msgid "cannot enable socket to accept connections: %s"
+msgstr ""
+
+#: nscd/connections.c:926
+#, c-format
+msgid "provide access to FD %d, for %s"
+msgstr ""
+
+#: nscd/connections.c:938
+#, c-format
+msgid "cannot handle old request version %d; current version is %d"
+msgstr ""
+
+#: nscd/connections.c:980 nscd/connections.c:1033
+#, c-format
+msgid "cannot write result: %s"
+msgstr ""
+
+#: nscd/connections.c:1116
+#, c-format
+msgid "error getting caller's id: %s"
+msgstr ""
+
+#: nscd/connections.c:1175
+#, c-format
+msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:1189
+#, c-format
+msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:1229
+#, c-format
+msgid "cannot change to old UID: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:1239
+#, c-format
+msgid "cannot change to old GID: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:1252
+#, c-format
+msgid "cannot change to old working directory: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:1280
+#, c-format
+msgid "re-exec failed: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/connections.c:1289
+#, c-format
+msgid "cannot change current working directory to \"/\": %s"
+msgstr ""
+
+#: nscd/connections.c:1407
+#, c-format
+msgid "short read while reading request: %s"
+msgstr ""
+
+#: nscd/connections.c:1438
+#, c-format
+msgid "key length in request too long: %d"
+msgstr ""
+
+#: nscd/connections.c:1451
+#, c-format
+msgid "short read while reading request key: %s"
+msgstr ""
+
+#: nscd/connections.c:1460
+#, c-format
+msgid "handle_request: request received (Version = %d) from PID %ld"
+msgstr ""
+
+#: nscd/connections.c:1465
+#, c-format
+msgid "handle_request: request received (Version = %d)"
+msgstr ""
+
+#: nscd/connections.c:1826
+#, c-format
+msgid "could only start %d threads; terminating"
+msgstr ""
+
+#: nscd/connections.c:1874 nscd/connections.c:1875 nscd/connections.c:1892
+#: nscd/connections.c:1901 nscd/connections.c:1919 nscd/connections.c:1930
+#: nscd/connections.c:1941
+#, c-format
+msgid "Failed to run nscd as user '%s'"
+msgstr ""
+
+#: nscd/connections.c:1893
+#, c-format
+msgid "initial getgrouplist failed"
+msgstr ""
+
+#: nscd/connections.c:1902
+#, c-format
+msgid "getgrouplist failed"
+msgstr ""
+
+#: nscd/connections.c:1920
+#, c-format
+msgid "setgroups failed"
+msgstr ""
+
+#: nscd/grpcache.c:402 nscd/hstcache.c:412 nscd/initgrcache.c:412
+#: nscd/pwdcache.c:397 nscd/servicescache.c:342
+#, c-format
+msgid "short write in %s: %s"
+msgstr ""
+
+#: nscd/grpcache.c:445 nscd/initgrcache.c:78
+#, c-format
+msgid "Haven't found \"%s\" in group cache!"
+msgstr ""
+
+#: nscd/grpcache.c:447 nscd/initgrcache.c:80
+#, c-format
+msgid "Reloading \"%s\" in group cache!"
+msgstr ""
+
+#: nscd/grpcache.c:524
+#, c-format
+msgid "Invalid numeric gid \"%s\"!"
+msgstr ""
+
+#: nscd/mem.c:383
+#, c-format
+msgid "freed %zu bytes in %s cache"
+msgstr ""
+
+#: nscd/mem.c:512
+#, c-format
+msgid "no more memory for database '%s'"
+msgstr ""
+
+#: nscd/nscd.c:98
+msgid "Read configuration data from NAME"
+msgstr ""
+
+#: nscd/nscd.c:100
+msgid "Do not fork and display messages on the current tty"
+msgstr ""
+
+#: nscd/nscd.c:101
+msgid "NUMBER"
+msgstr ""
+
+#: nscd/nscd.c:101
+msgid "Start NUMBER threads"
+msgstr ""
+
+#: nscd/nscd.c:102
+msgid "Shut the server down"
+msgstr ""
+
+#: nscd/nscd.c:103
+msgid "Print current configuration statistic"
+msgstr ""
+
+#: nscd/nscd.c:104
+msgid "TABLE"
+msgstr ""
+
+#: nscd/nscd.c:105
+msgid "Invalidate the specified cache"
+msgstr ""
+
+#: nscd/nscd.c:106
+msgid "TABLE,yes"
+msgstr ""
+
+#: nscd/nscd.c:107
+msgid "Use separate cache for each user"
+msgstr ""
+
+#: nscd/nscd.c:112
+msgid "Name Service Cache Daemon."
+msgstr ""
+
+#: nscd/nscd.c:144 nss/getent.c:858 nss/makedb.c:123
+#, fuzzy, c-format
+msgid "wrong number of arguments"
+msgstr "Номер на връзка извън диапазона"
+
+#: nscd/nscd.c:154
+#, c-format
+msgid "failure while reading configuration file; this is fatal"
+msgstr ""
+
+#: nscd/nscd.c:163
+#, c-format
+msgid "already running"
+msgstr ""
+
+#: nscd/nscd.c:178 nscd/nscd.c:233
+#, c-format
+msgid "cannot fork"
+msgstr ""
+
+#: nscd/nscd.c:241
+#, c-format
+msgid "cannot change current working directory to \"/\""
+msgstr ""
+
+#: nscd/nscd.c:249
+msgid "Could not create log file"
+msgstr ""
+
+#: nscd/nscd.c:302 nscd/nscd.c:327 nscd/nscd_stat.c:172
+#, c-format
+msgid "Only root is allowed to use this option!"
+msgstr ""
+
+#: nscd/nscd.c:364 nscd/nscd_stat.c:191
+#, c-format
+msgid "write incomplete"
+msgstr ""
+
+#: nscd/nscd.c:375
+#, c-format
+msgid "cannot read invalidate ACK"
+msgstr ""
+
+#: nscd/nscd.c:381
+#, c-format
+msgid "invalidation failed"
+msgstr ""
+
+#: nscd/nscd.c:391
+#, c-format
+msgid "secure services not implemented anymore"
+msgstr ""
+
+#: nscd/nscd_conf.c:57
+#, fuzzy, c-format
+msgid "database %s is not supported"
+msgstr "Неподдържана операция"
+
+# TODO
+#: nscd/nscd_conf.c:108
+#, fuzzy, c-format
+msgid "Parse error: %s"
+msgstr "Грешка при осведомяване"
+
+#: nscd/nscd_conf.c:193
+#, c-format
+msgid "Must specify user name for server-user option"
+msgstr ""
+
+#: nscd/nscd_conf.c:200
+#, c-format
+msgid "Must specify user name for stat-user option"
+msgstr ""
+
+#: nscd/nscd_conf.c:244
+#, c-format
+msgid "invalid value for 'reload-count': %u"
+msgstr ""
+
+#: nscd/nscd_conf.c:259
+#, c-format
+msgid "Must specify value for restart-interval option"
+msgstr ""
+
+#: nscd/nscd_conf.c:273
+#, c-format
+msgid "Unknown option: %s %s %s"
+msgstr ""
+
+#: nscd/nscd_conf.c:286
+#, c-format
+msgid "cannot get current working directory: %s; disabling paranoia mode"
+msgstr ""
+
+#: nscd/nscd_conf.c:306
+#, c-format
+msgid "maximum file size for %s database too small"
+msgstr ""
+
+#: nscd/nscd_stat.c:141
+#, c-format
+msgid "cannot write statistics: %s"
+msgstr ""
+
+#: nscd/nscd_stat.c:156
+msgid "yes"
+msgstr ""
+
+#: nscd/nscd_stat.c:157
+msgid "no"
+msgstr ""
+
+#: nscd/nscd_stat.c:168
+#, c-format
+msgid "Only root or %s is allowed to use this option!"
+msgstr ""
+
+#: nscd/nscd_stat.c:179
+#, c-format
+msgid "nscd not running!\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:203
+#, c-format
+msgid "cannot read statistics data"
+msgstr ""
+
+#: nscd/nscd_stat.c:206
+#, c-format
+msgid ""
+"nscd configuration:\n"
+"\n"
+"%15d server debug level\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:230
+#, c-format
+msgid "%3ud %2uh %2um %2lus server runtime\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:233
+#, c-format
+msgid " %2uh %2um %2lus server runtime\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:235
+#, c-format
+msgid " %2um %2lus server runtime\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:237
+#, c-format
+msgid " %2lus server runtime\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:239
+#, c-format
+msgid ""
+"%15d current number of threads\n"
+"%15d maximum number of threads\n"
+"%15lu number of times clients had to wait\n"
+"%15s paranoia mode enabled\n"
+"%15lu restart internal\n"
+msgstr ""
+
+#: nscd/nscd_stat.c:273
+#, c-format
+msgid ""
+"\n"
+"%s cache:\n"
+"\n"
+"%15s cache is enabled\n"
+"%15s cache is persistent\n"
+"%15s cache is shared\n"
+"%15zu suggested size\n"
+"%15zu total data pool size\n"
+"%15zu used data pool size\n"
+"%15lu seconds time to live for positive entries\n"
+"%15lu seconds time to live for negative entries\n"
+"%15<PRIuMAX> cache hits on positive entries\n"
+"%15<PRIuMAX> cache hits on negative entries\n"
+"%15<PRIuMAX> cache misses on positive entries\n"
+"%15<PRIuMAX> cache misses on negative entries\n"
+"%15lu%% cache hit rate\n"
+"%15zu current number of cached values\n"
+"%15zu maximum number of cached values\n"
+"%15zu maximum chain length searched\n"
+"%15<PRIuMAX> number of delays on rdlock\n"
+"%15<PRIuMAX> number of delays on wrlock\n"
+"%15<PRIuMAX> memory allocations failed\n"
+"%15s check /etc/%s for changes\n"
+msgstr ""
+
+#: nscd/pwdcache.c:440
+#, c-format
+msgid "Haven't found \"%s\" in password cache!"
+msgstr ""
+
+#: nscd/pwdcache.c:442
+#, c-format
+msgid "Reloading \"%s\" in password cache!"
+msgstr ""
+
+#: nscd/pwdcache.c:520
+#, c-format
+msgid "Invalid numeric uid \"%s\"!"
+msgstr ""
+
+#: nscd/selinux.c:156
+#, c-format
+msgid "Failed opening connection to the audit subsystem: %m"
+msgstr ""
+
+#: nscd/selinux.c:177
+msgid "Failed to set keep-capabilities"
+msgstr ""
+
+#: nscd/selinux.c:178 nscd/selinux.c:241
+#, c-format
+msgid "prctl(KEEPCAPS) failed"
+msgstr ""
+
+#: nscd/selinux.c:192
+msgid "Failed to initialize drop of capabilities"
+msgstr ""
+
+#: nscd/selinux.c:193
+#, c-format
+msgid "cap_init failed"
+msgstr ""
+
+#: nscd/selinux.c:214 nscd/selinux.c:231
+msgid "Failed to drop capabilities"
+msgstr ""
+
+#: nscd/selinux.c:215 nscd/selinux.c:232
+#, c-format
+msgid "cap_set_proc failed"
+msgstr ""
+
+#: nscd/selinux.c:240
+msgid "Failed to unset keep-capabilities"
+msgstr ""
+
+#: nscd/selinux.c:256
+msgid "Failed to determine if kernel supports SELinux"
+msgstr ""
+
+#: nscd/selinux.c:271
+#, c-format
+msgid "Failed to start AVC thread"
+msgstr ""
+
+#: nscd/selinux.c:293
+#, c-format
+msgid "Failed to create AVC lock"
+msgstr ""
+
+#: nscd/selinux.c:333
+#, fuzzy, c-format
+msgid "Failed to start AVC"
+msgstr "Твърде голям файл"
+
+#: nscd/selinux.c:335
+msgid "Access Vector Cache (AVC) started"
+msgstr ""
+
+#: nscd/selinux.c:356
+msgid "Error getting context of socket peer"
+msgstr ""
+
+#: nscd/selinux.c:361
+msgid "Error getting context of nscd"
+msgstr ""
+
+#: nscd/selinux.c:367
+msgid "Error getting sid from context"
+msgstr ""
+
+#: nscd/selinux.c:399
+#, c-format
+msgid ""
+"\n"
+"SELinux AVC Statistics:\n"
+"\n"
+"%15u entry lookups\n"
+"%15u entry hits\n"
+"%15u entry misses\n"
+"%15u entry discards\n"
+"%15u CAV lookups\n"
+"%15u CAV hits\n"
+"%15u CAV probes\n"
+"%15u CAV misses\n"
+msgstr ""
+
+#: nscd/servicescache.c:389
+#, c-format
+msgid "Haven't found \"%s\" in services cache!"
+msgstr ""
+
+#: nscd/servicescache.c:391
+#, c-format
+msgid "Reloading \"%s\" in services cache!"
+msgstr ""
+
+#: nss/getent.c:52
+msgid "database [key ...]"
+msgstr ""
+
+#: nss/getent.c:57
+msgid "Service configuration to be used"
+msgstr ""
+
+#: nss/getent.c:62
+msgid ""
+"Get entries from administrative database.\vFor bug reporting instructions, please see:\n"
+"<http://www.gnu.org/software/libc/bugs.html>.\n"
+msgstr ""
+
+#: nss/getent.c:145 nss/getent.c:394
+#, fuzzy, c-format
+msgid "Enumeration not supported on %s\n"
+msgstr "Неподдържана операция"
+
+#: nss/getent.c:782
+#, c-format
+msgid "Unknown database name"
+msgstr ""
+
+#: nss/getent.c:808
+msgid "Supported databases:\n"
+msgstr ""
+
+#: nss/getent.c:868
+#, c-format
+msgid "Unknown database: %s\n"
+msgstr ""
+
+#: nss/makedb.c:60
+msgid "Convert key to lower case"
+msgstr ""
+
+#: nss/makedb.c:63
+msgid "Do not print messages while building database"
+msgstr ""
+
+#: nss/makedb.c:65
+msgid "Print content of database file, one entry a line"
+msgstr ""
+
+#: nss/makedb.c:70
+msgid "Create simple DB database from textual input."
+msgstr ""
+
+#: nss/makedb.c:73
+msgid ""
+"INPUT-FILE OUTPUT-FILE\n"
+"-o OUTPUT-FILE INPUT-FILE\n"
+"-u INPUT-FILE"
+msgstr ""
+
+#: nss/makedb.c:142
+#, c-format
+msgid "No usable database library found."
+msgstr ""
+
+#: nss/makedb.c:149
+#, c-format
+msgid "cannot open database file `%s': %s"
+msgstr ""
+
+#: nss/makedb.c:151
+msgid "incorrectly formatted file"
+msgstr ""
+
+#: nss/makedb.c:331
+msgid "duplicate key"
+msgstr ""
+
+#: nss/makedb.c:337
+#, c-format
+msgid "while writing database file"
+msgstr ""
+
+#: nss/makedb.c:348
+#, c-format
+msgid "problems while reading `%s'"
+msgstr ""
+
+#: nss/makedb.c:368 nss/makedb.c:385
+#, c-format
+msgid "while reading database"
+msgstr ""
+
+#: posix/getconf.c:945
+#, c-format
+msgid "Usage: %s [-v specification] variable_name [pathname]\n"
+msgstr ""
+
+#: posix/getconf.c:948
+#, c-format
+msgid " %s -a [pathname]\n"
+msgstr ""
+
+#: posix/getconf.c:1067
+#, c-format
+msgid "unknown specification \"%s\""
+msgstr ""
+
+#: posix/getconf.c:1095
+#, c-format
+msgid "Couldn't execute %s"
+msgstr ""
+
+#: posix/getconf.c:1135 posix/getconf.c:1151
+msgid "undefined"
+msgstr ""
+
+#: posix/getconf.c:1173
+#, c-format
+msgid "Unrecognized variable `%s'"
+msgstr ""
+
+#: posix/getopt.c:571 posix/getopt.c:587
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: posix/getopt.c:620 posix/getopt.c:624
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: posix/getopt.c:633 posix/getopt.c:638
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: posix/getopt.c:681 posix/getopt.c:700 posix/getopt.c:1016
+#: posix/getopt.c:1035
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: posix/getopt.c:738 posix/getopt.c:741
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: posix/getopt.c:749 posix/getopt.c:752
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: posix/getopt.c:804 posix/getopt.c:807
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: posix/getopt.c:813 posix/getopt.c:816
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: posix/getopt.c:868 posix/getopt.c:884 posix/getopt.c:1088
+#: posix/getopt.c:1106
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: posix/getopt.c:937 posix/getopt.c:953
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: posix/getopt.c:977 posix/getopt.c:995
+#, c-format
+msgid "%s: option `-W %s' doesn't allow an argument\n"
+msgstr ""
+
+#: posix/regcomp.c:135
+msgid "No match"
+msgstr ""
+
+#: posix/regcomp.c:138
+#, fuzzy
+msgid "Invalid regular expression"
+msgstr "Неправилен аргумент"
+
+#: posix/regcomp.c:141
+#, fuzzy
+msgid "Invalid collation character"
+msgstr "Неправилен или непълен многобайтов или широк писмен знак"
+
+#: posix/regcomp.c:144
+msgid "Invalid character class name"
+msgstr ""
+
+#: posix/regcomp.c:147
+msgid "Trailing backslash"
+msgstr ""
+
+#: posix/regcomp.c:150
+#, fuzzy
+msgid "Invalid back reference"
+msgstr "Неправилен аргумент"
+
+#: posix/regcomp.c:153
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: posix/regcomp.c:156
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: posix/regcomp.c:159
+msgid "Unmatched \\{"
+msgstr ""
+
+#: posix/regcomp.c:162
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: posix/regcomp.c:165
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Неправилен аргумент"
+
+#: posix/regcomp.c:168
+msgid "Memory exhausted"
+msgstr ""
+
+#: posix/regcomp.c:171
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: posix/regcomp.c:174
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: posix/regcomp.c:177
+msgid "Regular expression too big"
+msgstr ""
+
+#: posix/regcomp.c:180
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: posix/regcomp.c:660
+msgid "No previous regular expression"
+msgstr ""
+
+#: posix/wordexp.c:1798
+msgid "parameter null or not set"
+msgstr ""
+
+#: resolv/herror.c:68
+msgid "Resolver Error 0 (no error)"
+msgstr ""
+
+#: resolv/herror.c:69
+msgid "Unknown host"
+msgstr ""
+
+#: resolv/herror.c:70
+msgid "Host name lookup failure"
+msgstr ""
+
+#: resolv/herror.c:71
+msgid "Unknown server error"
+msgstr ""
+
+#: resolv/herror.c:72
+msgid "No address associated with name"
+msgstr ""
+
+#: resolv/herror.c:107
+msgid "Resolver internal error"
+msgstr ""
+
+#: resolv/herror.c:110
+msgid "Unknown resolver error"
+msgstr ""
+
+#: resolv/res_hconf.c:124
+#, c-format
+msgid "%s: line %d: cannot specify more than %d trim domains"
+msgstr ""
+
+#: resolv/res_hconf.c:145
+#, c-format
+msgid "%s: line %d: list delimiter not followed by domain"
+msgstr ""
+
+#: resolv/res_hconf.c:204
+#, c-format
+msgid "%s: line %d: expected `on' or `off', found `%s'\n"
+msgstr ""
+
+#: resolv/res_hconf.c:247
+#, c-format
+msgid "%s: line %d: bad command `%s'\n"
+msgstr ""
+
+#: resolv/res_hconf.c:282
+#, c-format
+msgid "%s: line %d: ignoring trailing garbage `%s'\n"
+msgstr ""
+
+#: stdio-common/psignal.c:51
+#, c-format
+msgid "%s%sUnknown signal %d\n"
+msgstr ""
+
+#: stdio-common/psignal.c:52
+msgid "Unknown signal"
+msgstr ""
+
+#: string/_strerror.c:45 sysdeps/mach/_strerror.c:87
+msgid "Unknown error "
+msgstr ""
+
+# TODO
+#: string/strerror.c:43
+#, fuzzy
+msgid "Unknown error"
+msgstr "Грешка при srmount"
+
+#: string/strsignal.c:65
+#, c-format
+msgid "Real-time signal %d"
+msgstr ""
+
+#: string/strsignal.c:69
+#, c-format
+msgid "Unknown signal %d"
+msgstr ""
+
+#: sunrpc/auth_unix.c:114
+msgid "authunix_create: out of memory\n"
+msgstr ""
+
+#: sunrpc/auth_unix.c:350
+msgid "auth_unix.c: Fatal marshalling problem"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:118 sunrpc/clnt_perr.c:139
+#, c-format
+msgid "; low version = %lu, high version = %lu"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:125
+msgid "; why = "
+msgstr ""
+
+#: sunrpc/clnt_perr.c:132
+#, fuzzy, c-format
+msgid "(unknown authentication error - %d)"
+msgstr "Грешка при удостоверяване (authentication)"
+
+#: sunrpc/clnt_perr.c:172
+#, fuzzy
+msgid "RPC: Success"
+msgstr "Успешно"
+
+#: sunrpc/clnt_perr.c:175
+msgid "RPC: Can't encode arguments"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:179
+msgid "RPC: Can't decode result"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:183
+msgid "RPC: Unable to send"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:187
+msgid "RPC: Unable to receive"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:191
+msgid "RPC: Timed out"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:195
+msgid "RPC: Incompatible versions of RPC"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:199
+#, fuzzy
+msgid "RPC: Authentication error"
+msgstr "Грешка при удостоверяване (authentication)"
+
+#: sunrpc/clnt_perr.c:203
+#, fuzzy
+msgid "RPC: Program unavailable"
+msgstr "Недостъпна RPC-програма"
+
+#: sunrpc/clnt_perr.c:207
+#, fuzzy
+msgid "RPC: Program/version mismatch"
+msgstr "Неправилна версия на RPC-програма"
+
+#: sunrpc/clnt_perr.c:211
+#, fuzzy
+msgid "RPC: Procedure unavailable"
+msgstr "Недостъпна RPC-програма"
+
+#: sunrpc/clnt_perr.c:215
+msgid "RPC: Server can't decode arguments"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:219
+#, fuzzy
+msgid "RPC: Remote system error"
+msgstr "Отдалечена входно-изходна грешка"
+
+#: sunrpc/clnt_perr.c:223
+msgid "RPC: Unknown host"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:227
+msgid "RPC: Unknown protocol"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:231
+msgid "RPC: Port mapper failure"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:235
+#, fuzzy
+msgid "RPC: Program not registered"
+msgstr "Недостъпна RPC-програма"
+
+#: sunrpc/clnt_perr.c:239
+#, fuzzy
+msgid "RPC: Failed (unspecified error)"
+msgstr "RFS-грешка"
+
+#: sunrpc/clnt_perr.c:280
+msgid "RPC: (unknown error code)"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:342
+#, fuzzy
+msgid "Authentication OK"
+msgstr "Грешка при удостоверяване (authentication)"
+
+#: sunrpc/clnt_perr.c:345
+#, fuzzy
+msgid "Invalid client credential"
+msgstr "Неправилен код на заявка"
+
+#: sunrpc/clnt_perr.c:349
+msgid "Server rejected credential"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:353
+#, fuzzy
+msgid "Invalid client verifier"
+msgstr "Неправилен дескриптор на заявка"
+
+#: sunrpc/clnt_perr.c:357
+msgid "Server rejected verifier"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:361
+msgid "Client credential too weak"
+msgstr ""
+
+#: sunrpc/clnt_perr.c:365
+#, fuzzy
+msgid "Invalid server verifier"
+msgstr "Неправилен дескриптор на заявка"
+
+#: sunrpc/clnt_perr.c:369
+#, fuzzy
+msgid "Failed (unspecified error)"
+msgstr "RFS-грешка"
+
+#: sunrpc/clnt_raw.c:117
+msgid "clnt_raw.c: fatal header serialization error"
+msgstr ""
+
+#: sunrpc/clnt_tcp.c:131
+msgid "clnttcp_create: out of memory\n"
+msgstr ""
+
+#: sunrpc/clnt_udp.c:139
+msgid "clntudp_create: out of memory\n"
+msgstr ""
+
+#: sunrpc/clnt_unix.c:128
+msgid "clntunix_create: out of memory\n"
+msgstr ""
+
+#: sunrpc/pm_getmaps.c:83
+msgid "pmap_getmaps.c: rpc problem"
+msgstr ""
+
+#: sunrpc/pmap_clnt.c:129
+msgid "Cannot register service"
+msgstr ""
+
+#: sunrpc/pmap_rmt.c:248
+msgid "Cannot create socket for broadcast rpc"
+msgstr ""
+
+#: sunrpc/pmap_rmt.c:255
+msgid "Cannot set socket option SO_BROADCAST"
+msgstr ""
+
+#: sunrpc/pmap_rmt.c:307
+msgid "Cannot send broadcast packet"
+msgstr ""
+
+#: sunrpc/pmap_rmt.c:332
+msgid "Broadcast poll problem"
+msgstr ""
+
+#: sunrpc/pmap_rmt.c:345
+msgid "Cannot receive reply to broadcast"
+msgstr ""
+
+#: sunrpc/rpc_main.c:286
+#, c-format
+msgid "%s: output would overwrite %s\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:293
+#, c-format
+msgid "%s: unable to open %s: %m\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:305
+#, c-format
+msgid "%s: while writing output %s: %m"
+msgstr ""
+
+#: sunrpc/rpc_main.c:340
+#, c-format
+msgid "cannot find C preprocessor: %s \n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:348
+msgid "cannot find any C preprocessor (cpp)\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:417
+#, c-format
+msgid "%s: C preprocessor failed with signal %d\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:420
+#, c-format
+msgid "%s: C preprocessor failed with exit code %d\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:460
+#, c-format
+msgid "illegal nettype: `%s'\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1122
+#, c-format
+msgid "rpcgen: too many defines\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1134
+#, 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:1167
+#, c-format
+msgid "file `%s' already exists and may be overwritten\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1212
+#, c-format
+msgid "Cannot specify more than one input file!\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1382
+msgid "This implementation doesn't support newstyle or MT-safe code!\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1391
+#, c-format
+msgid "Cannot use netid flag with inetd flag!\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1403
+msgid "Cannot use netid flag without TIRPC!\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1410
+msgid "Cannot use table flags with newstyle!\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1429
+#, c-format
+msgid "\"infile\" is required for template generation flags.\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1434
+#, c-format
+msgid "Cannot have more than one file generation flag!\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1443
+#, c-format
+msgid "usage: %s infile\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1444
+#, c-format
+msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1446
+#, c-format
+msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1448
+#, c-format
+msgid "\t%s [-s nettype]* [-o outfile] [infile]\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:1449
+#, c-format
+msgid "\t%s [-n netid]* [-o outfile] [infile]\n"
+msgstr ""
+
+#: sunrpc/rpc_scan.c:114
+msgid "constant or identifier expected"
+msgstr ""
+
+#: sunrpc/rpc_scan.c:310
+msgid "illegal character in file: "
+msgstr ""
+
+#: sunrpc/rpc_scan.c:349 sunrpc/rpc_scan.c:375
+msgid "unterminated string constant"
+msgstr ""
+
+#: sunrpc/rpc_scan.c:381
+msgid "empty char string"
+msgstr ""
+
+#: sunrpc/rpc_scan.c:523 sunrpc/rpc_scan.c:533
+#, fuzzy
+msgid "preprocessor error"
+msgstr "Протоколна грешка"
+
+#: sunrpc/rpcinfo.c:237 sunrpc/rpcinfo.c:383
+#, fuzzy, c-format
+msgid "program %lu is not available\n"
+msgstr "Недостъпна RPC-програма"
+
+#: sunrpc/rpcinfo.c:264 sunrpc/rpcinfo.c:310 sunrpc/rpcinfo.c:333
+#: sunrpc/rpcinfo.c:407 sunrpc/rpcinfo.c:453 sunrpc/rpcinfo.c:476
+#: sunrpc/rpcinfo.c:510
+#, fuzzy, c-format
+msgid "program %lu version %lu is not available\n"
+msgstr "Недостъпна RPC-програма"
+
+#: sunrpc/rpcinfo.c:515
+#, c-format
+msgid "program %lu version %lu ready and waiting\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:556 sunrpc/rpcinfo.c:563
+msgid "rpcinfo: can't contact portmapper"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:570
+msgid "No remote programs registered.\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:574
+msgid " program vers proto port\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:613
+msgid "(unknown)"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:637
+#, c-format
+msgid "rpcinfo: broadcast failed: %s\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:658
+msgid "Sorry. You are not root\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:665
+#, c-format
+msgid "rpcinfo: Could not delete registration for prog %s version %s\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:674
+msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:676
+msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:678
+msgid " rpcinfo -p [ host ]\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:679
+msgid " rpcinfo -b prognum versnum\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:680
+msgid " rpcinfo -d prognum versnum\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:695
+#, c-format
+msgid "rpcinfo: %s is unknown service\n"
+msgstr ""
+
+#: sunrpc/rpcinfo.c:732
+#, c-format
+msgid "rpcinfo: %s is unknown host\n"
+msgstr ""
+
+#: sunrpc/svc_run.c:70
+msgid "svc_run: - out of memory"
+msgstr ""
+
+#: sunrpc/svc_run.c:90
+msgid "svc_run: - poll failed"
+msgstr ""
+
+#: sunrpc/svc_simple.c:87
+#, c-format
+msgid "can't reassign procedure number %ld\n"
+msgstr ""
+
+#: sunrpc/svc_simple.c:97
+msgid "couldn't create an rpc server\n"
+msgstr ""
+
+#: sunrpc/svc_simple.c:105
+#, c-format
+msgid "couldn't register prog %ld vers %ld\n"
+msgstr ""
+
+#: sunrpc/svc_simple.c:113
+msgid "registerrpc: out of memory\n"
+msgstr ""
+
+#: sunrpc/svc_simple.c:173
+#, c-format
+msgid "trouble replying to prog %d\n"
+msgstr ""
+
+#: sunrpc/svc_simple.c:182
+#, c-format
+msgid "never registered prog %d\n"
+msgstr ""
+
+#: sunrpc/svc_tcp.c:155
+msgid "svc_tcp.c - tcp socket creation problem"
+msgstr ""
+
+#: sunrpc/svc_tcp.c:170
+msgid "svc_tcp.c - cannot getsockname or listen"
+msgstr ""
+
+#: sunrpc/svc_tcp.c:179
+msgid "svctcp_create: out of memory\n"
+msgstr ""
+
+#: sunrpc/svc_tcp.c:218
+msgid "svc_tcp: makefd_xprt: out of memory\n"
+msgstr ""
+
+#: sunrpc/svc_udp.c:128
+msgid "svcudp_create: socket creation problem"
+msgstr ""
+
+#: sunrpc/svc_udp.c:142
+msgid "svcudp_create - cannot getsockname"
+msgstr ""
+
+#: sunrpc/svc_udp.c:152
+msgid "svcudp_create: out of memory\n"
+msgstr ""
+
+#: sunrpc/svc_udp.c:174
+msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
+msgstr ""
+
+#: sunrpc/svc_udp.c:474
+msgid "enablecache: cache already enabled"
+msgstr ""
+
+#: sunrpc/svc_udp.c:480
+msgid "enablecache: could not allocate cache"
+msgstr ""
+
+#: sunrpc/svc_udp.c:489
+msgid "enablecache: could not allocate cache data"
+msgstr ""
+
+#: sunrpc/svc_udp.c:497
+msgid "enablecache: could not allocate cache fifo"
+msgstr ""
+
+#: sunrpc/svc_udp.c:532
+msgid "cache_set: victim not found"
+msgstr ""
+
+#: sunrpc/svc_udp.c:543
+msgid "cache_set: victim alloc failed"
+msgstr ""
+
+#: sunrpc/svc_udp.c:550
+msgid "cache_set: could not allocate new rpc_buffer"
+msgstr ""
+
+#: sunrpc/svc_unix.c:150
+msgid "svc_unix.c - AF_UNIX socket creation problem"
+msgstr ""
+
+#: sunrpc/svc_unix.c:166
+msgid "svc_unix.c - cannot getsockname or listen"
+msgstr ""
+
+#: sunrpc/svc_unix.c:176
+msgid "svcunix_create: out of memory\n"
+msgstr ""
+
+#: sunrpc/svc_unix.c:215
+msgid "svc_unix: makefd_xprt: out of memory\n"
+msgstr ""
+
+#: sunrpc/xdr.c:566
+msgid "xdr_bytes: out of memory\n"
+msgstr ""
+
+#: sunrpc/xdr.c:718
+msgid "xdr_string: out of memory\n"
+msgstr ""
+
+#: sunrpc/xdr_array.c:106
+msgid "xdr_array: out of memory\n"
+msgstr ""
+
+#: sunrpc/xdr_rec.c:156
+msgid "xdrrec_create: out of memory\n"
+msgstr ""
+
+#: sunrpc/xdr_ref.c:86
+msgid "xdr_reference: out of memory\n"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:29 sysdeps/unix/siglist.c:27
+msgid "Hangup"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:30 sysdeps/unix/siglist.c:28
+msgid "Interrupt"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:31 sysdeps/unix/siglist.c:29
+msgid "Quit"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:32 sysdeps/unix/siglist.c:30
+msgid "Illegal instruction"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:33 sysdeps/unix/siglist.c:31
+msgid "Trace/breakpoint trap"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:34
+msgid "Aborted"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:35 sysdeps/unix/siglist.c:34
+msgid "Floating point exception"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:36 sysdeps/unix/siglist.c:35
+msgid "Killed"
+msgstr ""
+
+# TODO
+#: sysdeps/generic/siglist.h:37 sysdeps/unix/siglist.c:36
+#, fuzzy
+msgid "Bus error"
+msgstr "Безпричинна грешка"
+
+#: sysdeps/generic/siglist.h:38 sysdeps/unix/siglist.c:37
+msgid "Segmentation fault"
+msgstr ""
+
+#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
+#. TRANS Every library function that returns this error code also generates a
+#. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled
+#. TRANS or blocked. Thus, your program will never actually see @code{EPIPE}
+#. TRANS unless it has handled or blocked @code{SIGPIPE}.
+#: sysdeps/generic/siglist.h:39 sysdeps/gnu/errlist.c:359
+#: sysdeps/unix/siglist.c:39
+msgid "Broken pipe"
+msgstr "Прекъснат канал"
+
+#: sysdeps/generic/siglist.h:40 sysdeps/unix/siglist.c:40
+msgid "Alarm clock"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:41 sysdeps/unix/siglist.c:41
+msgid "Terminated"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:42 sysdeps/unix/siglist.c:42
+msgid "Urgent I/O condition"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:43 sysdeps/unix/siglist.c:43
+msgid "Stopped (signal)"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:44 sysdeps/unix/siglist.c:44
+msgid "Stopped"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:45 sysdeps/unix/siglist.c:45
+#, fuzzy
+msgid "Continued"
+msgstr "Отказано свързване"
+
+#: sysdeps/generic/siglist.h:46 sysdeps/unix/siglist.c:46
+#, fuzzy
+msgid "Child exited"
+msgstr "Файлът съществува"
+
+#: sysdeps/generic/siglist.h:47 sysdeps/unix/siglist.c:47
+msgid "Stopped (tty input)"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:48 sysdeps/unix/siglist.c:48
+msgid "Stopped (tty output)"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:49 sysdeps/unix/siglist.c:49
+msgid "I/O possible"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:50 sysdeps/unix/siglist.c:50
+msgid "CPU time limit exceeded"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:51 sysdeps/unix/siglist.c:51
+#, fuzzy
+msgid "File size limit exceeded"
+msgstr "Надвишена дискова квота"
+
+#: sysdeps/generic/siglist.h:52 sysdeps/unix/siglist.c:52
+#, fuzzy
+msgid "Virtual timer expired"
+msgstr "Изтекъл таймер"
+
+#: sysdeps/generic/siglist.h:53 sysdeps/unix/siglist.c:53
+#, fuzzy
+msgid "Profiling timer expired"
+msgstr "Изтекъл таймер"
+
+#: sysdeps/generic/siglist.h:54 sysdeps/unix/siglist.c:54
+#, fuzzy
+msgid "Window changed"
+msgstr "Неправилен обмен"
+
+#: sysdeps/generic/siglist.h:55 sysdeps/unix/siglist.c:56
+msgid "User defined signal 1"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:56 sysdeps/unix/siglist.c:57
+msgid "User defined signal 2"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:60 sysdeps/unix/siglist.c:33
+msgid "EMT trap"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:63 sysdeps/unix/siglist.c:38
+#, fuzzy
+msgid "Bad system call"
+msgstr "Прекъснато системно извикване"
+
+#: sysdeps/generic/siglist.h:66
+msgid "Stack fault"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:69
+#, fuzzy
+msgid "Information request"
+msgstr "Неправилен код на заявка"
+
+#: sysdeps/generic/siglist.h:71
+msgid "Power failure"
+msgstr ""
+
+#: sysdeps/generic/siglist.h:74 sysdeps/unix/siglist.c:55
+msgid "Resource lost"
+msgstr ""
+
+#. TRANS Operation not permitted; only the owner of the file (or other resource)
+#. TRANS or processes with special privileges can perform the operation.
+#: sysdeps/gnu/errlist.c:25
+msgid "Operation not permitted"
+msgstr "Действието не е позволено"
+
+#. TRANS No process matches the specified process ID.
+#: sysdeps/gnu/errlist.c:45
+msgid "No such process"
+msgstr "Няма такъв процес"
+
+#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
+#. TRANS completion of the call. When this happens, you should try the call
+#. TRANS again.
+#. TRANS
+#. TRANS You can choose to have functions resume after a signal that is handled,
+#. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted
+#. TRANS Primitives}.
+#: sysdeps/gnu/errlist.c:60
+msgid "Interrupted system call"
+msgstr "Прекъснато системно извикване"
+
+#. TRANS Input/output error; usually used for physical read or write errors.
+#: sysdeps/gnu/errlist.c:69
+msgid "Input/output error"
+msgstr "Входно-изходна грешка"
+
+#. TRANS No such device or address. The system tried to use the device
+#. TRANS represented by a file you specified, and it couldn't find the device.
+#. TRANS This can mean that the device file was installed incorrectly, or that
+#. TRANS the physical device is missing or not correctly attached to the
+#. TRANS computer.
+#: sysdeps/gnu/errlist.c:82
+msgid "No such device or address"
+msgstr "Няма такова устройство или адрес"
+
+#. TRANS Argument list too long; used when the arguments passed to a new program
+#. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a
+#. TRANS File}) occupy too much memory space. This condition never arises in the
+#. TRANS GNU system.
+#: sysdeps/gnu/errlist.c:94
+msgid "Argument list too long"
+msgstr "Твърде дълъг списък с аргументи"
+
+#. TRANS Invalid executable file format. This condition is detected by the
+#. TRANS @code{exec} functions; see @ref{Executing a File}.
+#: sysdeps/gnu/errlist.c:104
+msgid "Exec format error"
+msgstr "Неправилен формат за изпълним файл"
+
+#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
+#. TRANS closed or reading from a descriptor open only for writing (or vice
+#. TRANS versa).
+#: sysdeps/gnu/errlist.c:115
+msgid "Bad file descriptor"
+msgstr "Неправилен файлов дескриптор"
+
+#. TRANS There are no child processes. This error happens on operations that are
+#. TRANS supposed to manipulate child processes, when there aren't any processes
+#. TRANS to manipulate.
+#: sysdeps/gnu/errlist.c:126
+msgid "No child processes"
+msgstr "Няма дъщерни процеси"
+
+#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
+#. TRANS deadlock situation. The system does not guarantee that it will notice
+#. TRANS all such situations. This error means you got lucky and the system
+#. TRANS noticed; it might just hang. @xref{File Locks}, for an example.
+#: sysdeps/gnu/errlist.c:138
+msgid "Resource deadlock avoided"
+msgstr "Избегнато безизходно положение при заделяне на ресурси"
+
+#. TRANS No memory available. The system cannot allocate more virtual memory
+#. TRANS because its capacity is full.
+#: sysdeps/gnu/errlist.c:148
+msgid "Cannot allocate memory"
+msgstr "Не може да се задели памет"
+
+#. TRANS Bad address; an invalid pointer was detected.
+#. TRANS In the GNU system, this error never happens; you get a signal instead.
+#: sysdeps/gnu/errlist.c:167
+msgid "Bad address"
+msgstr "Неправилен адрес"
+
+#. TRANS A file that isn't a block special file was given in a situation that
+#. TRANS requires one. For example, trying to mount an ordinary file as a file
+#. TRANS system in Unix gives this error.
+#: sysdeps/gnu/errlist.c:178
+msgid "Block device required"
+msgstr "Необходимо е блоково устройство"
+
+#. TRANS Resource busy; a system resource that can't be shared is already in use.
+#. TRANS For example, if you try to delete a file that is the root of a currently
+#. TRANS mounted filesystem, you get this error.
+#: sysdeps/gnu/errlist.c:189
+msgid "Device or resource busy"
+msgstr "Заето устройство или ресурс"
+
+#. TRANS File exists; an existing file was specified in a context where it only
+#. TRANS makes sense to specify a new file.
+#: sysdeps/gnu/errlist.c:199
+msgid "File exists"
+msgstr "Файлът съществува"
+
+#. TRANS An attempt to make an improper link across file systems was detected.
+#. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but
+#. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
+#: sysdeps/gnu/errlist.c:210
+msgid "Invalid cross-device link"
+msgstr "Неправилна връзка през устройства"
+
+#. TRANS The wrong type of device was given to a function that expects a
+#. TRANS particular sort of device.
+#: sysdeps/gnu/errlist.c:220
+msgid "No such device"
+msgstr "Няма такова устройство"
+
+#. TRANS A file that isn't a directory was specified when a directory is required.
+#: sysdeps/gnu/errlist.c:229
+msgid "Not a directory"
+msgstr "Не е директория"
+
+#. TRANS File is a directory; you cannot open a directory for writing,
+#. TRANS or create or remove hard links to it.
+#: sysdeps/gnu/errlist.c:239
+msgid "Is a directory"
+msgstr "Директория е"
+
+#. TRANS Invalid argument. This is used to indicate various kinds of problems
+#. TRANS with passing the wrong argument to a library function.
+#: sysdeps/gnu/errlist.c:249
+msgid "Invalid argument"
+msgstr "Неправилен аргумент"
+
+#. TRANS The current process has too many files open and can't open any more.
+#. TRANS Duplicate descriptors do count toward this limit.
+#. TRANS
+#. TRANS In BSD and GNU, the number of open files is controlled by a resource
+#. TRANS limit that can usually be increased. If you get this error, you might
+#. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited;
+#. TRANS @pxref{Limits on Resources}.
+#: sysdeps/gnu/errlist.c:264
+msgid "Too many open files"
+msgstr "Твърде много отворени файлове"
+
+#. TRANS There are too many distinct file openings in the entire system. Note
+#. TRANS that any number of linked channels count as just one file opening; see
+#. TRANS @ref{Linked Channels}. This error never occurs in the GNU system.
+#: sysdeps/gnu/errlist.c:275
+msgid "Too many open files in system"
+msgstr "Твърде много отворени файлове в системата"
+
+#. TRANS Inappropriate I/O control operation, such as trying to set terminal
+#. TRANS modes on an ordinary file.
+#: sysdeps/gnu/errlist.c:285
+msgid "Inappropriate ioctl for device"
+msgstr "Неподходящ ioctl за устройството"
+
+#. TRANS An attempt to execute a file that is currently open for writing, or
+#. TRANS write to a file that is currently being executed. Often using a
+#. TRANS debugger to run a program is considered having it open for writing and
+#. TRANS will cause this error. (The name stands for ``text file busy''.) This
+#. TRANS is not an error in the GNU system; the text is copied as necessary.
+#: sysdeps/gnu/errlist.c:298
+msgid "Text file busy"
+msgstr "Зает текстов файл"
+
+#. TRANS File too big; the size of a file would be larger than allowed by the system.
+#: sysdeps/gnu/errlist.c:307
+msgid "File too large"
+msgstr "Твърде голям файл"
+
+#. TRANS No space left on device; write operation on a file failed because the
+#. TRANS disk is full.
+#: sysdeps/gnu/errlist.c:317
+msgid "No space left on device"
+msgstr "Няма свободно място на устройството"
+
+#. TRANS Invalid seek operation (such as on a pipe).
+#: sysdeps/gnu/errlist.c:326
+msgid "Illegal seek"
+msgstr "Неправилно позициониране"
+
+#. TRANS An attempt was made to modify something on a read-only file system.
+#: sysdeps/gnu/errlist.c:335
+msgid "Read-only file system"
+msgstr "Файлова система само за четене"
+
+#. TRANS Too many links; the link count of a single file would become too large.
+#. TRANS @code{rename} can cause this error if the file being renamed already has
+#. TRANS as many links as it can take (@pxref{Renaming Files}).
+#: sysdeps/gnu/errlist.c:346
+msgid "Too many links"
+msgstr "Твърде много връзки"
+
+#. TRANS Domain error; used by mathematical functions when an argument value does
+#. TRANS not fall into the domain over which the function is defined.
+#: sysdeps/gnu/errlist.c:369
+msgid "Numerical argument out of domain"
+msgstr "Числов аргумент извън дефиниционната област"
+
+#. TRANS Range error; used by mathematical functions when the result value is
+#. TRANS not representable because of overflow or underflow.
+#: sysdeps/gnu/errlist.c:379
+msgid "Numerical result out of range"
+msgstr "Непредставим числов резултат"
+
+#. TRANS Resource temporarily unavailable; the call might work if you try again
+#. TRANS later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
+#. TRANS they are always the same in the GNU C library.
+#. TRANS
+#. TRANS This error can happen in a few different situations:
+#. TRANS
+#. TRANS @itemize @bullet
+#. TRANS @item
+#. TRANS An operation that would block was attempted on an object that has
+#. TRANS non-blocking mode selected. Trying the same operation again will block
+#. TRANS until some external condition makes it possible to read, write, or
+#. TRANS connect (whatever the operation). You can use @code{select} to find out
+#. TRANS when the operation will be possible; @pxref{Waiting for I/O}.
+#. TRANS
+#. TRANS @strong{Portability Note:} In many older Unix systems, this condition
+#. TRANS was indicated by @code{EWOULDBLOCK}, which was a distinct error code
+#. TRANS different from @code{EAGAIN}. To make your program portable, you should
+#. TRANS check for both codes and treat them the same.
+#. TRANS
+#. TRANS @item
+#. TRANS A temporary resource shortage made an operation impossible. @code{fork}
+#. TRANS can return this error. It indicates that the shortage is expected to
+#. TRANS pass, so your program can try the call again later and it may succeed.
+#. TRANS It is probably a good idea to delay for a few seconds before trying it
+#. TRANS again, to allow time for other processes to release scarce resources.
+#. TRANS Such shortages are usually fairly serious and affect the whole system,
+#. TRANS so usually an interactive program should report the error to the user
+#. TRANS and return to its command loop.
+#. TRANS @end itemize
+#: sysdeps/gnu/errlist.c:416
+msgid "Resource temporarily unavailable"
+msgstr "Временно недостъпен ресурс"
+
+#. TRANS In the GNU C library, this is another name for @code{EAGAIN} (above).
+#. TRANS The values are always the same, on every operating system.
+#. TRANS
+#. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
+#. TRANS separate error code.
+#: sysdeps/gnu/errlist.c:429
+msgid "Operation would block"
+msgstr "Операцията би блокирала"
+
+#. TRANS An operation that cannot complete immediately was initiated on an object
+#. TRANS that has non-blocking mode selected. Some functions that must always
+#. TRANS block (such as @code{connect}; @pxref{Connecting}) never return
+#. TRANS @code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that
+#. TRANS the operation has begun and will take some time. Attempts to manipulate
+#. TRANS the object before the call completes return @code{EALREADY}. You can
+#. TRANS use the @code{select} function to find out when the pending operation
+#. TRANS has completed; @pxref{Waiting for I/O}.
+#: sysdeps/gnu/errlist.c:445
+msgid "Operation now in progress"
+msgstr "Операцията се изпълнява"
+
+#. TRANS An operation is already in progress on an object that has non-blocking
+#. TRANS mode selected.
+#: sysdeps/gnu/errlist.c:455
+msgid "Operation already in progress"
+msgstr "Операцията вече се изпълнява"
+
+#. TRANS A file that isn't a socket was specified when a socket is required.
+#: sysdeps/gnu/errlist.c:464
+msgid "Socket operation on non-socket"
+msgstr "Операцията може да се изпълнява само за гнездо (socket)"
+
+#. TRANS The size of a message sent on a socket was larger than the supported
+#. TRANS maximum size.
+#: sysdeps/gnu/errlist.c:474
+msgid "Message too long"
+msgstr "Твърде дълго съобщение"
+
+#. TRANS The socket type does not support the requested communications protocol.
+#: sysdeps/gnu/errlist.c:483
+msgid "Protocol wrong type for socket"
+msgstr "Неправилен тип протокол за гнездото (socket)"
+
+#. TRANS You specified a socket option that doesn't make sense for the
+#. TRANS particular protocol being used by the socket. @xref{Socket Options}.
+#: sysdeps/gnu/errlist.c:493
+msgid "Protocol not available"
+msgstr "Недостъпен протокол"
+
+#. TRANS The socket domain does not support the requested communications protocol
+#. TRANS (perhaps because the requested protocol is completely invalid).
+#. TRANS @xref{Creating a Socket}.
+#: sysdeps/gnu/errlist.c:504
+msgid "Protocol not supported"
+msgstr "Неподдържан протокол"
+
+#. TRANS The socket type is not supported.
+#: sysdeps/gnu/errlist.c:513
+msgid "Socket type not supported"
+msgstr "Неподдържан тип гнездо (socket)"
+
+#. TRANS The operation you requested is not supported. Some socket functions
+#. TRANS don't make sense for all types of sockets, and others may not be
+#. TRANS implemented for all communications protocols. In the GNU system, this
+#. TRANS error can happen for many calls when the object does not support the
+#. TRANS particular operation; it is a generic indication that the server knows
+#. TRANS nothing to do for that call.
+#: sysdeps/gnu/errlist.c:527
+msgid "Operation not supported"
+msgstr "Неподдържана операция"
+
+#. TRANS The socket communications protocol family you requested is not supported.
+#: sysdeps/gnu/errlist.c:536
+msgid "Protocol family not supported"
+msgstr "Неподдържано семейство протоколи"
+
+#. TRANS The address family specified for a socket is not supported; it is
+#. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}.
+#: sysdeps/gnu/errlist.c:546
+msgid "Address family not supported by protocol"
+msgstr "Неподдържано адресно семейство от протокола"
+
+#. TRANS The requested socket address is already in use. @xref{Socket Addresses}.
+#: sysdeps/gnu/errlist.c:555
+msgid "Address already in use"
+msgstr "Адресът вече се използва"
+
+#. TRANS The requested socket address is not available; for example, you tried
+#. TRANS to give a socket a name that doesn't match the local host name.
+#. TRANS @xref{Socket Addresses}.
+#: sysdeps/gnu/errlist.c:566
+msgid "Cannot assign requested address"
+msgstr "Недостъпен адрес на гнездо (socket)"
+
+# TODO
+#. TRANS A socket operation failed because the network was down.
+#: sysdeps/gnu/errlist.c:575
+msgid "Network is down"
+msgstr "Мрежата е изключена"
+
+# TODO
+#. TRANS A socket operation failed because the subnet containing the remote host
+#. TRANS was unreachable.
+#: sysdeps/gnu/errlist.c:585
+msgid "Network is unreachable"
+msgstr "Мрежата е недостъпна"
+
+#. TRANS A network connection was reset because the remote host crashed.
+#: sysdeps/gnu/errlist.c:594
+msgid "Network dropped connection on reset"
+msgstr "Прекъснато мрежова връзка поради рестартиране"
+
+#. TRANS A network connection was aborted locally.
+#: sysdeps/gnu/errlist.c:603
+msgid "Software caused connection abort"
+msgstr "Софтуерно предизвикано прекъсване на връзката"
+
+#. TRANS A network connection was closed for reasons outside the control of the
+#. TRANS local host, such as by the remote machine rebooting or an unrecoverable
+#. TRANS protocol violation.
+#: sysdeps/gnu/errlist.c:614
+msgid "Connection reset by peer"
+msgstr "Едностранно прекъсване на връзката от отсрещната страна"
+
+#. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this
+#. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the
+#. TRANS other from network operations.
+#: sysdeps/gnu/errlist.c:625
+msgid "No buffer space available"
+msgstr "Няма свободно място за буфер"
+
+#. TRANS You tried to connect a socket that is already connected.
+#. TRANS @xref{Connecting}.
+#: sysdeps/gnu/errlist.c:635
+msgid "Transport endpoint is already connected"
+msgstr "Крайната точка на транспорта вече е свързана"
+
+#. TRANS The socket is not connected to anything. You get this error when you
+#. TRANS try to transmit data over a socket, without first specifying a
+#. TRANS destination for the data. For a connectionless socket (for datagram
+#. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
+#: sysdeps/gnu/errlist.c:647
+msgid "Transport endpoint is not connected"
+msgstr "Крайната точка на транспорта не е свързана"
+
+#. TRANS No default destination address was set for the socket. You get this
+#. TRANS error when you try to transmit data over a connectionless socket,
+#. TRANS without first specifying a destination for the data with @code{connect}.
+#: sysdeps/gnu/errlist.c:658
+msgid "Destination address required"
+msgstr "Необходим е целеви адрес"
+
+# TODO
+#. TRANS The socket has already been shut down.
+#: sysdeps/gnu/errlist.c:667
+msgid "Cannot send after transport endpoint shutdown"
+msgstr "Не може да се изпраща след изключване на крайната точка на транспорта"
+
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:676
+msgid "Too many references: cannot splice"
+msgstr "Твърде много препратки: не могат да се наставят"
+
+#. TRANS A socket operation with a specified timeout received no response during
+#. TRANS the timeout period.
+#: sysdeps/gnu/errlist.c:686
+msgid "Connection timed out"
+msgstr "Просрочена мрежова операция"
+
+#. TRANS A remote host refused to allow the network connection (typically because
+#. TRANS it is not running the requested service).
+#: sysdeps/gnu/errlist.c:696
+msgid "Connection refused"
+msgstr "Отказано свързване"
+
+#. TRANS Too many levels of symbolic links were encountered in looking up a file name.
+#. TRANS This often indicates a cycle of symbolic links.
+#: sysdeps/gnu/errlist.c:706
+msgid "Too many levels of symbolic links"
+msgstr "Твърде много нива от символни връзки"
+
+#. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for
+#. TRANS Files}) or host name too long (in @code{gethostname} or
+#. TRANS @code{sethostname}; @pxref{Host Identification}).
+#: sysdeps/gnu/errlist.c:717
+msgid "File name too long"
+msgstr "Твърде дълго файлово име"
+
+#. TRANS The remote host for a requested network connection is down.
+#: sysdeps/gnu/errlist.c:726
+msgid "Host is down"
+msgstr "Хостът е изключен"
+
+#. TRANS The remote host for a requested network connection is not reachable.
+#: sysdeps/gnu/errlist.c:735
+msgid "No route to host"
+msgstr "Няма маршрут до хоста"
+
+#. TRANS Directory not empty, where an empty directory was expected. Typically,
+#. TRANS this error occurs when you are trying to delete a directory.
+#: sysdeps/gnu/errlist.c:745
+msgid "Directory not empty"
+msgstr "Непразна директория"
+
+#. TRANS This means that the per-user limit on new process would be exceeded by
+#. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on
+#. TRANS the @code{RLIMIT_NPROC} limit.
+#: sysdeps/gnu/errlist.c:756
+msgid "Too many processes"
+msgstr "Твърде много процеси"
+
+#. TRANS The file quota system is confused because there are too many users.
+#. TRANS @c This can probably happen in a GNU system when using NFS.
+#: sysdeps/gnu/errlist.c:766
+msgid "Too many users"
+msgstr "Твърде много потребители"
+
+#. TRANS The user's disk quota was exceeded.
+#: sysdeps/gnu/errlist.c:775
+msgid "Disk quota exceeded"
+msgstr "Надвишена дискова квота"
+
+#. TRANS Stale NFS file handle. This indicates an internal confusion in the NFS
+#. TRANS system which is due to file system rearrangements on the server host.
+#. TRANS Repairing this condition usually requires unmounting and remounting
+#. TRANS the NFS file system on the local host.
+#: sysdeps/gnu/errlist.c:787
+msgid "Stale NFS file handle"
+msgstr "Престоял файлов манипулатор при NFS (пробвайте размонтиране и повторно монтиране)"
+
+#. TRANS An attempt was made to NFS-mount a remote file system with a file name that
+#. TRANS already specifies an NFS-mounted file.
+#. TRANS (This is an error on some operating systems, but we expect it to work
+#. TRANS properly on the GNU system, making this error code impossible.)
+#: sysdeps/gnu/errlist.c:799
+msgid "Object is remote"
+msgstr "Обектът е отдалечен"
+
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:808
+msgid "RPC struct is bad"
+msgstr "Неправилна RPC-структура"
+
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:817
+msgid "RPC version wrong"
+msgstr "Неправилна версия на RPC"
+
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:826
+msgid "RPC program not available"
+msgstr "Недостъпна RPC-програма"
+
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:835
+msgid "RPC program version wrong"
+msgstr "Неправилна версия на RPC-програма"
+
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:844
+msgid "RPC bad procedure for program"
+msgstr "Неправилна процедура за програма (RPC)"
+
+#. TRANS No locks available. This is used by the file locking facilities; see
+#. TRANS @ref{File Locks}. This error is never generated by the GNU system, but
+#. TRANS it can result from an operation to an NFS server running another
+#. TRANS operating system.
+#: sysdeps/gnu/errlist.c:856
+msgid "No locks available"
+msgstr "Надвишен брой заключвания"
+
+#. TRANS Inappropriate file type or format. The file was the wrong type for the
+#. TRANS operation, or a data file had the wrong format.
+#. TRANS
+#. TRANS On some systems @code{chmod} returns this error if you try to set the
+#. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}.
+#: sysdeps/gnu/errlist.c:869
+msgid "Inappropriate file type or format"
+msgstr "Неподходящ файлов тип или формат"
+
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:878
+msgid "Authentication error"
+msgstr "Грешка при удостоверяване (authentication)"
+
+#. TRANS ???
+#: sysdeps/gnu/errlist.c:887
+msgid "Need authenticator"
+msgstr "Необходим е удостоверител (authenticator)"
+
+#. TRANS Function not implemented. This indicates that the function called is
+#. TRANS not implemented at all, either in the C library itself or in the
+#. TRANS operating system. When you get this error, you can be sure that this
+#. TRANS particular function will always fail with @code{ENOSYS} unless you
+#. TRANS install a new version of the C library or the operating system.
+#: sysdeps/gnu/errlist.c:900
+msgid "Function not implemented"
+msgstr "Функцията не е реализирана"
+
+#. TRANS Not supported. A function returns this error when certain parameter
+#. TRANS values are valid, but the functionality they request is not available.
+#. TRANS This can mean that the function does not implement a particular command
+#. TRANS or option value or flag bit at all. For functions that operate on some
+#. TRANS object given in a parameter, such as a file descriptor or a port, it
+#. TRANS might instead mean that only @emph{that specific object} (file
+#. TRANS descriptor, port, etc.) is unable to support the other parameters given;
+#. TRANS different file descriptors might support different ranges of parameter
+#. TRANS values.
+#. TRANS
+#. TRANS If the entire function is not available at all in the implementation,
+#. TRANS it returns @code{ENOSYS} instead.
+#: sysdeps/gnu/errlist.c:920
+msgid "Not supported"
+msgstr "Не се поддържа"
+
+#. TRANS While decoding a multibyte character the function came along an invalid
+#. TRANS or an incomplete sequence of bytes or the given wide character is invalid.
+#: sysdeps/gnu/errlist.c:930
+msgid "Invalid or incomplete multibyte or wide character"
+msgstr "Неправилен или непълен многобайтов или широк писмен знак"
+
+#. TRANS In the GNU system, servers supporting the @code{term} protocol return
+#. TRANS this error for certain operations when the caller is not in the
+#. TRANS foreground process group of the terminal. Users do not usually see this
+#. TRANS error because functions such as @code{read} and @code{write} translate
+#. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control},
+#. TRANS for information on process groups and these signals.
+#: sysdeps/gnu/errlist.c:944
+msgid "Inappropriate operation for background process"
+msgstr "Неподходяща операция за фонов процес"
+
+# TODO
+#. TRANS In the GNU system, opening a file returns this error when the file is
+#. TRANS translated by a program and the translator program dies while starting
+#. TRANS up, before it has connected to the file.
+#: sysdeps/gnu/errlist.c:955
+msgid "Translator died"
+msgstr "Умрял транслатор"
+
+#. TRANS The experienced user will know what is wrong.
+#. TRANS @c This error code is a joke. Its perror text is part of the joke.
+#. TRANS @c Don't change it.
+#: sysdeps/gnu/errlist.c:966
+msgid "?"
+msgstr "?"
+
+#. TRANS You did @strong{what}?
+#: sysdeps/gnu/errlist.c:975
+msgid "You really blew it this time"
+msgstr "Този път наистина се издънихте"
+
+# TODO:
+# умря, почина, се помина, се спомина, загина, си отиде, си замина,
+# пукна, се гътна, геберяса
+#
+# Има и евфемизми, но всичките ми звучат грозно и мисля, че са
+# неподходящи. (А.З.)
+#. TRANS Go home and have a glass of warm, dairy-fresh milk.
+#: sysdeps/gnu/errlist.c:984
+msgid "Computer bought the farm"
+msgstr "Компютърът се спомина"
+
+# TODO
+#. TRANS This error code has no purpose.
+#: sysdeps/gnu/errlist.c:993
+msgid "Gratuitous error"
+msgstr "Безпричинна грешка"
+
+#: sysdeps/gnu/errlist.c:1001
+msgid "Bad message"
+msgstr "Лошо съобщение"
+
+#: sysdeps/gnu/errlist.c:1009
+msgid "Identifier removed"
+msgstr "Отстранен идентификатор"
+
+# TODO
+#: sysdeps/gnu/errlist.c:1017
+msgid "Multihop attempted"
+msgstr "Опитва се multihop"
+
+#: sysdeps/gnu/errlist.c:1025
+msgid "No data available"
+msgstr "Няма налични данни"
+
+#: sysdeps/gnu/errlist.c:1033
+msgid "Link has been severed"
+msgstr "Връзката се разпадна"
+
+#: sysdeps/gnu/errlist.c:1041
+msgid "No message of desired type"
+msgstr "Няма съобщение от необходимия вид"
+
+#: sysdeps/gnu/errlist.c:1049
+msgid "Out of streams resources"
+msgstr "Изчерпване на ресурсите за потоци"
+
+#: sysdeps/gnu/errlist.c:1057
+msgid "Device not a stream"
+msgstr "Устройството не е поток"
+
+#: sysdeps/gnu/errlist.c:1065
+msgid "Value too large for defined data type"
+msgstr "Твърде голяма стойност за определения тип данни"
+
+#: sysdeps/gnu/errlist.c:1073
+msgid "Protocol error"
+msgstr "Протоколна грешка"
+
+#: sysdeps/gnu/errlist.c:1081
+msgid "Timer expired"
+msgstr "Изтекъл таймер"
+
+#. TRANS Operation canceled; an asynchronous operation was canceled before it
+#. TRANS completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel},
+#. TRANS the normal result is for the operations affected to complete with this
+#. TRANS error; @pxref{Cancel AIO Operations}.
+#: sysdeps/gnu/errlist.c:1093
+msgid "Operation canceled"
+msgstr "Отменена операция"
+
+#: sysdeps/gnu/errlist.c:1101
+msgid "Interrupted system call should be restarted"
+msgstr "Прекъснатото системно извикване трябва да бъде рестартирано"
+
+#: sysdeps/gnu/errlist.c:1109
+msgid "Channel number out of range"
+msgstr "Номер на канал извън диапазона"
+
+#: sysdeps/gnu/errlist.c:1117
+msgid "Level 2 not synchronized"
+msgstr "Ниво 2 — синхронизирано"
+
+#: sysdeps/gnu/errlist.c:1125
+msgid "Level 3 halted"
+msgstr "Ниво 3 — преустановено"
+
+#: sysdeps/gnu/errlist.c:1133
+msgid "Level 3 reset"
+msgstr "Ниво 3 — рестартирано"
+
+#: sysdeps/gnu/errlist.c:1141
+msgid "Link number out of range"
+msgstr "Номер на връзка извън диапазона"
+
+#: sysdeps/gnu/errlist.c:1149
+msgid "Protocol driver not attached"
+msgstr "Несвързан протоколен драйвер"
+
+#: sysdeps/gnu/errlist.c:1157
+msgid "No CSI structure available"
+msgstr "Не е налична CSI-структура"
+
+#: sysdeps/gnu/errlist.c:1165
+msgid "Level 2 halted"
+msgstr "Ниво 2 — преустановено"
+
+#: sysdeps/gnu/errlist.c:1173
+msgid "Invalid exchange"
+msgstr "Неправилен обмен"
+
+#: sysdeps/gnu/errlist.c:1181
+msgid "Invalid request descriptor"
+msgstr "Неправилен дескриптор на заявка"
+
+# TODO
+#: sysdeps/gnu/errlist.c:1189
+msgid "Exchange full"
+msgstr "Пълен обмен"
+
+#: sysdeps/gnu/errlist.c:1197
+msgid "No anode"
+msgstr "Няма анод"
+
+#: sysdeps/gnu/errlist.c:1205
+msgid "Invalid request code"
+msgstr "Неправилен код на заявка"
+
+#: sysdeps/gnu/errlist.c:1213
+msgid "Invalid slot"
+msgstr "Неправилен слот"
+
+#: sysdeps/gnu/errlist.c:1221
+msgid "File locking deadlock error"
+msgstr "Грешка от безизходно положение при заключване на файлове"
+
+#: sysdeps/gnu/errlist.c:1229
+msgid "Bad font file format"
+msgstr "Неправилен формат на шрифтов файл"
+
+#: sysdeps/gnu/errlist.c:1237
+msgid "Machine is not on the network"
+msgstr "Машината не е в мрежа"
+
+#: sysdeps/gnu/errlist.c:1245
+msgid "Package not installed"
+msgstr "Пакетът не е инсталиран"
+
+# TODO
+#: sysdeps/gnu/errlist.c:1253
+msgid "Advertise error"
+msgstr "Грешка при осведомяване"
+
+# TODO
+#: sysdeps/gnu/errlist.c:1261
+msgid "Srmount error"
+msgstr "Грешка при srmount"
+
+#: sysdeps/gnu/errlist.c:1269
+msgid "Communication error on send"
+msgstr "Комуникационна грешка при изпращане"
+
+#: sysdeps/gnu/errlist.c:1277
+msgid "RFS specific error"
+msgstr "RFS-грешка"
+
+#: sysdeps/gnu/errlist.c:1285
+msgid "Name not unique on network"
+msgstr "Името не е уникално в мрежата"
+
+#: sysdeps/gnu/errlist.c:1293
+msgid "File descriptor in bad state"
+msgstr "Файловият дескриптор е в лошо състояние"
+
+#: sysdeps/gnu/errlist.c:1301
+msgid "Remote address changed"
+msgstr "Отдалеченият адрес е сменен"
+
+#: sysdeps/gnu/errlist.c:1309
+msgid "Can not access a needed shared library"
+msgstr "Не може да бъде достъпена необходима споделена библиотека"
+
+#: sysdeps/gnu/errlist.c:1317
+msgid "Accessing a corrupted shared library"
+msgstr "Достъпва се повредена споделена библиотека"
+
+#: sysdeps/gnu/errlist.c:1325
+msgid ".lib section in a.out corrupted"
+msgstr "Повреден .lib-раздел в a.out"
+
+#: sysdeps/gnu/errlist.c:1333
+msgid "Attempting to link in too many shared libraries"
+msgstr "Опитва се свързване в твърде много споделени библиотеки"
+
+#: sysdeps/gnu/errlist.c:1341
+msgid "Cannot exec a shared library directly"
+msgstr "Не може да се изпълнява директно споделена библиотека"
+
+#: sysdeps/gnu/errlist.c:1349
+msgid "Streams pipe error"
+msgstr "Канална грешка при потоци"
+
+#: sysdeps/gnu/errlist.c:1357
+msgid "Structure needs cleaning"
+msgstr "Структурата се нуждае от почистване"
+
+# TODO
+#: sysdeps/gnu/errlist.c:1365
+msgid "Not a XENIX named type file"
+msgstr "Не е XENIX-именован типов файл"
+
+#: sysdeps/gnu/errlist.c:1373
+msgid "No XENIX semaphores available"
+msgstr "Няма налични XENIX-семафори"
+
+#: sysdeps/gnu/errlist.c:1381
+msgid "Is a named type file"
+msgstr "Именован типов файл е"
+
+#: sysdeps/gnu/errlist.c:1389
+msgid "Remote I/O error"
+msgstr "Отдалечена входно-изходна грешка"
+
+#: sysdeps/gnu/errlist.c:1397
+msgid "No medium found"
+msgstr "Не е открит носител"
+
+#: sysdeps/gnu/errlist.c:1405
+msgid "Wrong medium type"
+msgstr "Неправилен тип на носител"
+
+#: sysdeps/gnu/errlist.c:1413
+msgid "Required key not available"
+msgstr "Необходим ключ не е наличен"
+
+#: sysdeps/gnu/errlist.c:1421
+msgid "Key has expired"
+msgstr "Ключът е с изтекъл срок"
+
+#: sysdeps/gnu/errlist.c:1429
+msgid "Key has been revoked"
+msgstr "Ключът е бил анулиран"
+
+#: sysdeps/gnu/errlist.c:1437
+msgid "Key was rejected by service"
+msgstr "Ключът е отказан от услугата"
+
+#: sysdeps/gnu/errlist.c:1445
+msgid "Owner died"
+msgstr "Собственикът умря"
+
+#: sysdeps/gnu/errlist.c:1453
+msgid "State not recoverable"
+msgstr "Състоянието не възстановимо"
+
+#: sysdeps/mach/_strerror.c:57
+msgid "Error in unknown error system: "
+msgstr ""
+
+#: sysdeps/posix/gai_strerror-strs.h:1
+#, fuzzy
+msgid "Address family for hostname not supported"
+msgstr "Неподдържано адресно семейство от протокола"
+
+#: sysdeps/posix/gai_strerror-strs.h:2
+msgid "Temporary failure in name resolution"
+msgstr ""
+
+#: sysdeps/posix/gai_strerror-strs.h:3
+msgid "Bad value for ai_flags"
+msgstr ""
+
+#: sysdeps/posix/gai_strerror-strs.h:4
+msgid "Non-recoverable failure in name resolution"
+msgstr ""
+
+#: sysdeps/posix/gai_strerror-strs.h:5
+#, fuzzy
+msgid "ai_family not supported"
+msgstr "Неподдържано семейство протоколи"
+
+#: sysdeps/posix/gai_strerror-strs.h:6
+msgid "Memory allocation failure"
+msgstr ""
+
+#: sysdeps/posix/gai_strerror-strs.h:7
+msgid "No address associated with hostname"
+msgstr ""
+
+#: sysdeps/posix/gai_strerror-strs.h:8
+msgid "Name or service not known"
+msgstr ""
+
+#: sysdeps/posix/gai_strerror-strs.h:9
+msgid "Servname not supported for ai_socktype"
+msgstr ""
+
+#: sysdeps/posix/gai_strerror-strs.h:10
+#, fuzzy
+msgid "ai_socktype not supported"
+msgstr "Неподдържан тип гнездо (socket)"
+
+#: sysdeps/posix/gai_strerror-strs.h:11
+#, fuzzy
+msgid "System error"
+msgstr "Канална грешка при потоци"
+
+#: sysdeps/posix/gai_strerror-strs.h:12
+#, fuzzy
+msgid "Processing request in progress"
+msgstr "Операцията вече се изпълнява"
+
+#: sysdeps/posix/gai_strerror-strs.h:13
+#, fuzzy
+msgid "Request canceled"
+msgstr "Отменена операция"
+
+#: sysdeps/posix/gai_strerror-strs.h:14
+#, fuzzy
+msgid "Request not canceled"
+msgstr "Отменена операция"
+
+#: sysdeps/posix/gai_strerror-strs.h:15
+#, fuzzy
+msgid "All requests done"
+msgstr "Неправилен код на заявка"
+
+#: sysdeps/posix/gai_strerror-strs.h:16
+#, fuzzy
+msgid "Interrupted by a signal"
+msgstr "Прекъснато системно извикване"
+
+#: sysdeps/posix/gai_strerror-strs.h:17
+msgid "Parameter string not correctly encoded"
+msgstr ""
+
+#: sysdeps/unix/siglist.c:26
+msgid "Signal 0"
+msgstr ""
+
+#: sysdeps/unix/siglist.c:32
+msgid "IOT trap"
+msgstr ""
+
+#: sysdeps/unix/sysv/linux/i386/readelflib.c:49
+#, c-format
+msgid "%s is for unknown machine %d.\n"
+msgstr ""
+
+#: sysdeps/unix/sysv/linux/ia64/makecontext.c:63
+#, c-format
+msgid "makecontext: does not know how to handle more than 8 arguments\n"
+msgstr ""
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:64
+#, c-format
+msgid "cannot open `%s'"
+msgstr ""
+
+#: sysdeps/unix/sysv/linux/lddlibc4.c:68
+#, c-format
+msgid "cannot read header from `%s'"
+msgstr ""
+
+#: timezone/zdump.c:211
+msgid "lacks alphabetic at start"
+msgstr ""
+
+#: timezone/zdump.c:213
+msgid "has fewer than 3 alphabetics"
+msgstr ""
+
+#: timezone/zdump.c:215
+msgid "has more than 6 alphabetics"
+msgstr ""
+
+#: timezone/zdump.c:223
+msgid "differs from POSIX standard"
+msgstr ""
+
+#: timezone/zdump.c:229
+#, c-format
+msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
+msgstr ""
+
+#: timezone/zdump.c:280
+#, c-format
+msgid "%s: usage is %s [ --version ] [ -v ] [ -c [loyear,]hiyear ] zonename ...\n"
+msgstr ""
+
+#: timezone/zdump.c:297
+#, c-format
+msgid "%s: wild -c argument %s\n"
+msgstr ""
+
+#: timezone/zdump.c:388
+msgid "Error writing to standard output"
+msgstr ""
+
+#: timezone/zdump.c:411
+#, c-format
+msgid "%s: use of -v on system with floating time_t other than float or double\n"
+msgstr ""
+
+#: timezone/zic.c:392
+#, c-format
+msgid "%s: Memory exhausted: %s\n"
+msgstr ""
+
+#: timezone/zic.c:451
+#, c-format
+msgid "\"%s\", line %d: %s"
+msgstr ""
+
+#: timezone/zic.c:454
+#, c-format
+msgid " (rule from \"%s\", line %d)"
+msgstr ""
+
+#: timezone/zic.c:466
+msgid "warning: "
+msgstr ""
+
+#: timezone/zic.c:476
+#, c-format
+msgid ""
+"%s: usage is %s [ --version ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n"
+"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n"
+msgstr ""
+
+#: timezone/zic.c:511
+msgid "wild compilation-time specification of zic_t"
+msgstr ""
+
+#: timezone/zic.c:528
+#, c-format
+msgid "%s: More than one -d option specified\n"
+msgstr ""
+
+#: timezone/zic.c:538
+#, c-format
+msgid "%s: More than one -l option specified\n"
+msgstr ""
+
+#: timezone/zic.c:548
+#, c-format
+msgid "%s: More than one -p option specified\n"
+msgstr ""
+
+#: timezone/zic.c:558
+#, c-format
+msgid "%s: More than one -y option specified\n"
+msgstr ""
+
+#: timezone/zic.c:568
+#, c-format
+msgid "%s: More than one -L option specified\n"
+msgstr ""
+
+#: timezone/zic.c:617
+msgid "link to link"
+msgstr ""
+
+#: timezone/zic.c:682
+msgid "hard link failed, symbolic link used"
+msgstr ""
+
+#: timezone/zic.c:690
+#, c-format
+msgid "%s: Can't link from %s to %s: %s\n"
+msgstr ""
+
+#: timezone/zic.c:762 timezone/zic.c:764
+#, fuzzy
+msgid "same rule name in multiple files"
+msgstr "Именован типов файл е"
+
+#: timezone/zic.c:805
+msgid "unruly zone"
+msgstr ""
+
+#: timezone/zic.c:812
+#, c-format
+msgid "%s in ruleless zone"
+msgstr ""
+
+#: timezone/zic.c:833
+msgid "standard input"
+msgstr ""
+
+#: timezone/zic.c:838
+#, c-format
+msgid "%s: Can't open %s: %s\n"
+msgstr ""
+
+#: timezone/zic.c:849
+#, fuzzy
+msgid "line too long"
+msgstr "Твърде дълго файлово име"
+
+#: timezone/zic.c:869
+msgid "input line of unknown type"
+msgstr ""
+
+#: timezone/zic.c:885
+#, c-format
+msgid "%s: Leap line in non leap seconds file %s\n"
+msgstr ""
+
+#: timezone/zic.c:892 timezone/zic.c:1323 timezone/zic.c:1345
+#, c-format
+msgid "%s: panic: Invalid l_value %d\n"
+msgstr ""
+
+#: timezone/zic.c:900
+#, c-format
+msgid "%s: Error reading %s\n"
+msgstr ""
+
+#: timezone/zic.c:907
+#, c-format
+msgid "%s: Error closing %s: %s\n"
+msgstr ""
+
+#: timezone/zic.c:912
+msgid "expected continuation line not found"
+msgstr ""
+
+#: timezone/zic.c:956
+msgid "24:00 not handled by pre-1998 versions of zic"
+msgstr ""
+
+#: timezone/zic.c:970
+msgid "wrong number of fields on Rule line"
+msgstr ""
+
+#: timezone/zic.c:974
+msgid "nameless rule"
+msgstr ""
+
+#: timezone/zic.c:979
+#, fuzzy
+msgid "invalid saved time"
+msgstr "Неправилен слот"
+
+#: timezone/zic.c:1000
+msgid "wrong number of fields on Zone line"
+msgstr ""
+
+#: timezone/zic.c:1006
+#, c-format
+msgid "\"Zone %s\" line and -l option are mutually exclusive"
+msgstr ""
+
+#: timezone/zic.c:1014
+#, c-format
+msgid "\"Zone %s\" line and -p option are mutually exclusive"
+msgstr ""
+
+#: timezone/zic.c:1026
+#, c-format
+msgid "duplicate zone name %s (file \"%s\", line %d)"
+msgstr ""
+
+#: timezone/zic.c:1042
+msgid "wrong number of fields on Zone continuation line"
+msgstr ""
+
+#: timezone/zic.c:1082
+#, fuzzy
+msgid "invalid UTC offset"
+msgstr "Неправилен слот"
+
+#: timezone/zic.c:1085
+msgid "invalid abbreviation format"
+msgstr ""
+
+#: timezone/zic.c:1114
+msgid "Zone continuation line end time is not after end time of previous line"
+msgstr ""
+
+#: timezone/zic.c:1142
+msgid "wrong number of fields on Leap line"
+msgstr ""
+
+#: timezone/zic.c:1151
+#, fuzzy
+msgid "invalid leaping year"
+msgstr "Неправилен обмен"
+
+#: timezone/zic.c:1171 timezone/zic.c:1277
+#, fuzzy
+msgid "invalid month name"
+msgstr "Неправилен слот"
+
+#: timezone/zic.c:1184 timezone/zic.c:1390 timezone/zic.c:1404
+#, fuzzy
+msgid "invalid day of month"
+msgstr "Неправилен аргумент"
+
+#: timezone/zic.c:1189
+msgid "time before zero"
+msgstr ""
+
+#: timezone/zic.c:1193
+msgid "time too small"
+msgstr ""
+
+#: timezone/zic.c:1197
+#, fuzzy
+msgid "time too large"
+msgstr "Твърде голям файл"
+
+#: timezone/zic.c:1201 timezone/zic.c:1306
+msgid "invalid time of day"
+msgstr ""
+
+#: timezone/zic.c:1220
+msgid "illegal CORRECTION field on Leap line"
+msgstr ""
+
+#: timezone/zic.c:1225
+msgid "illegal Rolling/Stationary field on Leap line"
+msgstr ""
+
+#: timezone/zic.c:1241
+msgid "wrong number of fields on Link line"
+msgstr ""
+
+#: timezone/zic.c:1245
+msgid "blank FROM field on Link line"
+msgstr ""
+
+#: timezone/zic.c:1249
+msgid "blank TO field on Link line"
+msgstr ""
+
+#: timezone/zic.c:1327
+msgid "invalid starting year"
+msgstr ""
+
+#: timezone/zic.c:1349
+#, fuzzy
+msgid "invalid ending year"
+msgstr "Неправилен обмен"
+
+#: timezone/zic.c:1353
+msgid "starting year greater than ending year"
+msgstr ""
+
+#: timezone/zic.c:1360
+msgid "typed single year"
+msgstr ""
+
+#: timezone/zic.c:1395
+#, fuzzy
+msgid "invalid weekday name"
+msgstr "Неправилен обмен"
+
+#: timezone/zic.c:1573
+#, c-format
+msgid "%s: Can't remove %s: %s\n"
+msgstr ""
+
+#: timezone/zic.c:1583
+#, c-format
+msgid "%s: Can't create %s: %s\n"
+msgstr ""
+
+#: timezone/zic.c:1733
+#, c-format
+msgid "%s: Error writing %s\n"
+msgstr ""
+
+#: timezone/zic.c:2025
+msgid "no POSIX environment variable for zone"
+msgstr ""
+
+#: timezone/zic.c:2179
+msgid "can't determine time zone abbreviation to use just after until time"
+msgstr ""
+
+#: timezone/zic.c:2225
+#, fuzzy
+msgid "too many transitions?!"
+msgstr "Твърде много връзки"
+
+#: timezone/zic.c:2244
+msgid "internal error - addtype called with bad isdst"
+msgstr ""
+
+#: timezone/zic.c:2248
+msgid "internal error - addtype called with bad ttisstd"
+msgstr ""
+
+#: timezone/zic.c:2252
+msgid "internal error - addtype called with bad ttisgmt"
+msgstr ""
+
+#: timezone/zic.c:2271
+#, fuzzy
+msgid "too many local time types"
+msgstr "Твърде много процеси"
+
+#: timezone/zic.c:2299
+#, fuzzy
+msgid "too many leap seconds"
+msgstr "Твърде много връзки"
+
+#: timezone/zic.c:2305
+msgid "repeated leap second moment"
+msgstr ""
+
+#: timezone/zic.c:2357
+msgid "Wild result from command execution"
+msgstr ""
+
+#: timezone/zic.c:2358
+#, c-format
+msgid "%s: command was '%s', result was %d\n"
+msgstr ""
+
+#: timezone/zic.c:2456
+msgid "Odd number of quotation marks"
+msgstr ""
+
+#: timezone/zic.c:2479 timezone/zic.c:2498
+msgid "time overflow"
+msgstr ""
+
+#: timezone/zic.c:2545
+msgid "use of 2/29 in non leap-year"
+msgstr ""
+
+#: timezone/zic.c:2580
+msgid "rule goes past start/end of month--will not work with pre-2004 versions of zic"
+msgstr ""
+
+#: timezone/zic.c:2612
+msgid "time zone abbreviation lacks alphabetic at start"
+msgstr ""
+
+#: timezone/zic.c:2614
+msgid "time zone abbreviation has more than 3 alphabetics"
+msgstr ""
+
+#: timezone/zic.c:2616
+msgid "time zone abbreviation has too many alphabetics"
+msgstr ""
+
+#: timezone/zic.c:2626
+msgid "time zone abbreviation differs from POSIX standard"
+msgstr ""
+
+#: timezone/zic.c:2638
+msgid "too many, or too long, time zone abbreviations"
+msgstr ""
+
+#: timezone/zic.c:2679
+#, c-format
+msgid "%s: Can't create directory %s: %s\n"
+msgstr ""
+
+#: timezone/zic.c:2701
+#, c-format
+msgid "%s: %d did not sign extend correctly\n"
+msgstr ""
diff --git a/stdlib/strtold_l.c b/stdlib/strtold_l.c
index 690a8a92eb..2a77707996 100644
--- a/stdlib/strtold_l.c
+++ b/stdlib/strtold_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2002, 2004, 2007 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
@@ -20,6 +20,10 @@
#include <stdlib.h>
#include <xlocale.h>
+#if defined _LIBC || defined HAVE_WCHAR_H
+# include <wchar.h>
+#endif
+
#ifdef USE_WIDE_CHAR
# define STRING_TYPE wchar_t
# define STRTOLD wcstold_l
@@ -55,4 +59,8 @@ __STRTOLD (const STRING_TYPE *nptr, STRING_TYPE **endptr, __locale_t loc)
{
return INTERNAL (__STRTOD) (nptr, endptr, 0, loc);
}
+#if defined _LIBC
+libc_hidden_def (__STRTOLD)
+libc_hidden_ver (__STRTOLD, STRTOLD)
+#endif
weak_alias (__STRTOLD, STRTOLD)
diff --git a/sysdeps/ieee754/ldbl-64-128/strtold_l.c b/sysdeps/ieee754/ldbl-64-128/strtold_l.c
index ef8fe05759..cdc30983ec 100644
--- a/sysdeps/ieee754/ldbl-64-128/strtold_l.c
+++ b/sysdeps/ieee754/ldbl-64-128/strtold_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2006, 2007 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
@@ -37,6 +37,9 @@ extern long double ____new_strtold_l (const char *, char **, __locale_t);
# define __STRTOF ____new_strtold_l
# define ____STRTOF_INTERNAL ____strtold_l_internal
#endif
+extern __typeof (__STRTOF) STRTOF;
+libc_hidden_proto (__STRTOF)
+libc_hidden_proto (STRTOF)
#define MPN2FLOAT __mpn_construct_long_double
#define FLOAT_HUGE_VAL HUGE_VALL
#define SET_MANTISSA(flt, mant) \
@@ -54,10 +57,12 @@ extern long double ____new_strtold_l (const char *, char **, __locale_t);
#ifdef __LONG_DOUBLE_MATH_OPTIONAL
# include <math_ldbl_opt.h>
# ifdef USE_WIDE_CHAR
-long_double_symbol (libc, __new_wcstold_l, wcstold_l);
+weak_alias (____new_wcstold_l, ___new_wcstold_l);
+long_double_symbol (libc, ___new_wcstold_l, wcstold_l);
long_double_symbol (libc, ____new_wcstold_l, __wcstold_l);
# else
-long_double_symbol (libc, __new_strtold_l, strtold_l);
+weak_alias (____new_strtold_l, ___new_strtold_l);
+long_double_symbol (libc, ___new_strtold_l, strtold_l);
long_double_symbol (libc, ____new_strtold_l, __strtold_l);
# endif
#endif
diff --git a/sysdeps/sparc/fpu/feholdexcpt.c b/sysdeps/sparc/fpu/feholdexcpt.c
index 729637ad1b..424855e761 100644
--- a/sysdeps/sparc/fpu/feholdexcpt.c
+++ b/sysdeps/sparc/fpu/feholdexcpt.c
@@ -1,5 +1,5 @@
/* Store current floating-point environment and clear exceptions.
- Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 2005, 2007 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,8 +26,8 @@ feholdexcept (fenv_t *envp)
__fenv_stfsr (*envp);
- /* Set all exceptions to non-stop. */
- tmp = *envp & ~(0x1f << 23);
+ /* Set all exceptions to non-stop and clear all exceptions. */
+ tmp = *envp & ~((0x1f << 23) | FE_ALL_EXCEPT);
__fenv_ldfsr (tmp);
diff --git a/sysdeps/sparc/fpu/fraiseexcpt.c b/sysdeps/sparc/fpu/fraiseexcpt.c
index cbb8be80ec..b96eeaed28 100644
--- a/sysdeps/sparc/fpu/fraiseexcpt.c
+++ b/sysdeps/sparc/fpu/fraiseexcpt.c
@@ -1,5 +1,5 @@
/* Raise given exceptions.
- Copyright (C) 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1999, 2000, 2002, 2007 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,9 +26,9 @@ int
__feraiseexcept (int excepts)
{
static const struct {
- double zero, one, max, min, sixteen, pi;
+ double zero, one, max, min, pi;
} c = {
- 0.0, 1.0, DBL_MAX, DBL_MIN, 16.0, M_PI
+ 0.0, 1.0, DBL_MAX, DBL_MIN, M_PI
};
double d;
@@ -66,7 +66,7 @@ __feraiseexcept (int excepts)
if ((FE_UNDERFLOW & excepts) != 0)
{
__asm ("" : "=e" (d) : "0" (c.min));
- d /= c.sixteen;
+ d *= d;
__asm __volatile ("" : : "e" (d));
}
diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h
index 19aac6a7fe..b3b7852d87 100644
--- a/sysdeps/sparc/sparc32/dl-machine.h
+++ b/sysdeps/sparc/sparc32/dl-machine.h
@@ -1,5 +1,6 @@
/* Machine-dependent ELF dynamic relocation inline functions. SPARC version.
- Copyright (C) 1996-2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ Copyright (C) 1996-2003, 2004, 2005, 2006, 2007
+ 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
@@ -155,12 +156,18 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
|| __builtin_expect (l->l_info [VALIDX (DT_GNU_LIBLISTSZ)] != NULL, 0))
{
/* Need to reinitialize .plt to undo prelinking. */
- int do_flush;
Elf32_Rela *rela = (Elf32_Rela *) D_PTR (l, l_info[DT_JMPREL]);
Elf32_Rela *relaend
= (Elf32_Rela *) ((char *) rela
+ l->l_info[DT_PLTRELSZ]->d_un.d_val);
- do_flush = GLRO(dl_hwcap) & HWCAP_SPARC_FLUSH;
+#if !defined RTLD_BOOTSTRAP && !defined __sparc_v9__
+ /* Note that we don't mask the hwcap here, as the flush is
+ essential to functionality on those cpu's that implement it.
+ For sparcv9 we can assume flush is present. */
+ const int do_flush = GLRO(dl_hwcap) & HWCAP_SPARC_FLUSH;
+#else
+ const int do_flush = 1;
+#endif
/* prelink must ensure there are no R_SPARC_NONE relocs left
in .rela.plt. */
@@ -305,20 +312,11 @@ _dl_start_user:\n\
.size _dl_start_user, . - _dl_start_user\n\
.previous");
-static inline Elf32_Addr
+static inline __attribute__ ((always_inline)) Elf32_Addr
sparc_fixup_plt (const Elf32_Rela *reloc, Elf32_Addr *reloc_addr,
- Elf32_Addr value, int t)
+ Elf32_Addr value, int t, int do_flush)
{
Elf32_Sword disp = value - (Elf32_Addr) reloc_addr;
-#ifndef RTLD_BOOTSTRAP
- /* Note that we don't mask the hwcap here, as the flush is essential to
- functionality on those cpu's that implement it. */
- int do_flush = GLRO(dl_hwcap) & HWCAP_SPARC_FLUSH;
-#else
- /* Unfortunately, this is necessary, so that we can ensure
- ld.so will not execute corrupt PLT entry instructions. */
- const int do_flush = 1;
-#endif
if (0 && disp >= -0x800000 && disp < 0x800000)
{
@@ -354,7 +352,15 @@ elf_machine_fixup_plt (struct link_map *map, lookup_t t,
const Elf32_Rela *reloc,
Elf32_Addr *reloc_addr, Elf32_Addr value)
{
- return sparc_fixup_plt (reloc, reloc_addr, value, 1);
+#ifdef __sparc_v9__
+ /* Sparc v9 can assume flush is always present. */
+ const int do_flush = 1;
+#else
+ /* Note that we don't mask the hwcap here, as the flush is essential to
+ functionality on those cpu's that implement it. */
+ const int do_flush = GLRO(dl_hwcap) & HWCAP_SPARC_FLUSH;
+#endif
+ return sparc_fixup_plt (reloc, reloc_addr, value, 1, do_flush);
}
/* Return the final value of a plt relocation. */
@@ -455,9 +461,21 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
*reloc_addr = value;
break;
case R_SPARC_JMP_SLOT:
- /* At this point we don't need to bother with thread safety,
- so we can optimize the first instruction of .plt out. */
- sparc_fixup_plt (reloc, reloc_addr, value, 0);
+ {
+#if !defined RTLD_BOOTSTRAP && !defined __sparc_v9__
+ /* Note that we don't mask the hwcap here, as the flush is
+ essential to functionality on those cpu's that implement
+ it. For sparcv9 we can assume flush is present. */
+ const int do_flush = GLRO(dl_hwcap) & HWCAP_SPARC_FLUSH;
+#else
+ /* Unfortunately, this is necessary, so that we can ensure
+ ld.so will not execute corrupt PLT entry instructions. */
+ const int do_flush = 1;
+#endif
+ /* At this point we don't need to bother with thread safety,
+ so we can optimize the first instruction of .plt out. */
+ sparc_fixup_plt (reloc, reloc_addr, value, 0, do_flush);
+ }
break;
#if (!defined RTLD_BOOTSTRAP || USE___THREAD) \
&& !defined RESOLVE_CONFLICT_FIND_MAP
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
index f91fc4f629..1e099cc97d 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996, 1997, 1998, 2000, 2003, 2004
+/* Copyright (C) 1996, 1997, 1998, 2000, 2003, 2004, 2007
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@tamu.edu).
@@ -71,7 +71,7 @@ ENTRY (__clone)
restore %o0,%g0,%o0
.Lerror:
- call __errno_location
+ call HIDDEN_JUMPTARGET(__errno_location)
or %g0,EINVAL,%i0
st %i0,[%o0]
jmpl %i7 + 8, %g0
@@ -99,7 +99,7 @@ __thread_start:
mov %g0, %fp /* terminate backtrace */
call %g2
mov %g3,%o0
- call _exit,0
+ call HIDDEN_JUMPTARGET(_exit),0
nop
cfi_endproc
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
index ebfce9e2c5..b1dcc914b0 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2000, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@tamu.edu).
@@ -85,7 +85,7 @@ ENTRY (__clone)
st %i0, [%g2+%lo(errno)]
#endif
#else
- call __errno_location
+ call HIDDEN_JUMPTARGET(__errno_location)
nop
st %i0, [%o0]
#endif
@@ -112,7 +112,7 @@ __thread_start:
mov %g0, %fp /* terminate backtrace */
call %g2
mov %g3,%o0
- call _exit,0
+ call HIDDEN_JUMPTARGET(_exit),0
nop
cfi_endproc
diff --git a/sysdeps/unix/sysv/linux/sparc/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sysdep.h
index a60937976a..101638a53f 100644
--- a/sysdeps/unix/sysv/linux/sparc/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sparc/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2000.
@@ -149,5 +149,8 @@
})
+#ifdef __ASSEMBLER__
+# define JUMPTARGET(sym) sym
+#endif
#endif /* _LINUX_SPARC_SYSDEP_H */