This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch release/2.26/master updated. glibc-2.26-53-g1f1239c


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, release/2.26/master has been updated
       via  1f1239c389f7839e963b02794f64ed85df81396f (commit)
       via  290ba1089ecdca306cb2a0fbf3c7dc9cc29bc56f (commit)
       via  de84fc77f823051b1df336b7e5c257e4c3de984e (commit)
       via  e39de9fa74e81b03c91377a3770d06df9933d645 (commit)
       via  b21ec6c6b80e316143b0914a5c81e9543bbdcc5b (commit)
      from  d5c6dea2d5b4b5c64625c5386f6baec7bf2d89b3 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=1f1239c389f7839e963b02794f64ed85df81396f

commit 1f1239c389f7839e963b02794f64ed85df81396f
Author: Steve Ellcey <sellcey@caviumnetworks.com>
Date:   Tue Oct 10 15:53:55 2017 +0530

    Fix glibc.tune.cpu tunable handling
    
    	* sysdeps/unix/sysv/linux/aarch64/cpu-features.c (get_midr_from_mcpu):
    	Use strcmp instead of tunable_is_name.

diff --git a/ChangeLog b/ChangeLog
index d478f5d..ff9bc2b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-10-10  Steve Ellcey  <sellcey@cavium.com>
+
+	* sysdeps/unix/sysv/linux/aarch64/cpu-features.c (get_midr_from_mcpu):
+	Use strcmp instead of tunable_is_name.
+
 2017-10-10  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
 	* sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add
diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
index 18f5e60..0c7e13f 100644
--- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
+++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
@@ -37,7 +37,7 @@ static uint64_t
 get_midr_from_mcpu (const char *mcpu)
 {
   for (int i = 0; i < sizeof (cpu_list) / sizeof (struct cpu_list); i++)
-    if (tunable_is_name (mcpu, cpu_list[i].name) == 0)
+    if (strcmp (mcpu, cpu_list[i].name) == 0)
       return cpu_list[i].midr;
 
   return UINT64_MAX;

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=290ba1089ecdca306cb2a0fbf3c7dc9cc29bc56f

commit 290ba1089ecdca306cb2a0fbf3c7dc9cc29bc56f
Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date:   Thu Oct 5 21:55:31 2017 +0530

    aarch64: Optimized implementation of memmove for Qualcomm Falkor
    
    This is an optimized memmove implementation for the Qualcomm Falkor
    processor core.  Due to the way the falkor memcpy needs to be written,
    code cannot be easily shared between memmove and memcpy like in case
    of other aarch64 memcpy implementations due to which this routine is
    separate.  The underlying principle is the same as that of memcpy
    where it tries to use registers with the same lower 4 bits for
    fetching the same stream, thus optimizing hardware prefetcher
    performance.
    
    The memcpy copy loop copies 64 bytes at a time using the same register
    pair since that's the way to train the hardware prefetcher on the
    falkor core.  memmove cannot quite do that since it needs to avoid
    overlaps, so it does the next best thing, i.e. has a 32 byte loop with
    a 32 byte end (prefetch a loop ahead to account for overlapping
    locations) with register pairs that alias so that they hit the same
    prefetcher.  Due to this difference in loop size, they have to
    currently be separate implementations but efforts are on to try and
    get memmove to fall back into memcpy whenever it can without simply
    duplicating all of the code.
    
    Performance:
    
    The routine fares around 20-25% better than the generic memmove for
    most medium to large sizes (i.e. > 128 bytes) for the new walking
    memmove benchmark (memmove-walk) with an unexplained regression
    between 1K and 2K.  The minor regression is something worth looking
    into for us, but the remaining gains are significant enough that we
    would like this included upstream as we looking into the cause for the
    regression.  Here is a snippet of the numbers as generated from the
    microbenchmark by the compare_strings script.  Comparisons are against
    __memmove_generic:
    
    Function: memmove
    Variant: walk
                                        __memmove_thunderx	__memmove_falkor	__memmove_generic
    ========================================================================================================================
    <snip>
                            length=16384:  12508800.00 (  6.09%)	 11486800.00 ( 13.76%)	 13319600.00
                            length=16400:  13614200.00 ( -0.67%)	 11585000.00 ( 14.33%)	 13523600.00
                            length=16385:  13448400.00 (  0.10%)	 11732700.00 ( 12.84%)	 13461200.00
                            length=16399:  13594100.00 ( -0.22%)	 11859600.00 ( 12.57%)	 13564400.00
                            length=16386:  13211600.00 (  1.13%)	 11503800.00 ( 13.91%)	 13362400.00
                            length=16398:  13218600.00 (  2.12%)	 11573200.00 ( 14.30%)	 13504700.00
                            length=16387:  13510900.00 ( -0.37%)	 11744200.00 ( 12.76%)	 13461300.00
                            length=16397:  13603700.00 ( -0.15%)	 11878200.00 ( 12.55%)	 13583200.00
                            length=16388:  13461700.00 ( -0.13%)	 11558000.00 ( 14.03%)	 13444100.00
                            length=16396:  13517500.00 ( -0.03%)	 11561300.00 ( 14.45%)	 13513900.00
                            length=16389:  13534100.00 (  0.17%)	 11756800.00 ( 13.28%)	 13556900.00
                            length=16395:  13585600.00 (  0.11%)	 11791800.00 ( 13.30%)	 13601200.00
                            length=16390:  13480100.00 ( -0.13%)	 11685500.00 ( 13.20%)	 13462100.00
                            length=16394:  13529900.00 ( -0.23%)	 11549800.00 ( 14.43%)	 13498200.00
                            length=16391:  13595400.00 ( -0.26%)	 11768200.00 ( 13.22%)	 13560600.00
                            length=16393:  13567000.00 (  0.20%)	 11779700.00 ( 13.35%)	 13594700.00
                            length=32768:  71308800.00 ( -6.53%)	 50220800.00 ( 24.98%)	 66939200.00
                            length=32784:  72100800.00 (-11.55%)	 50114100.00 ( 22.47%)	 64636300.00
                            length=32769:  71767000.00 ( -7.10%)	 51238400.00 ( 23.54%)	 67010000.00
                            length=32783:  70113700.00 (-40.95%)	 51129000.00 ( -2.78%)	 49744400.00
                            length=32770:  71367600.00 ( -6.52%)	 50244700.00 ( 25.01%)	 67000900.00
                            length=32782:  64366700.00 (  4.71%)	 50101400.00 ( 25.83%)	 67545600.00
                            length=32771:  71440100.00 ( -6.51%)	 51263900.00 ( 23.57%)	 67074900.00
                            length=32781:  66993000.00 (  0.34%)	 51108300.00 ( 23.97%)	 67220300.00
                            length=32772:  71443900.00 (-60.50%)	 50062100.00 (-12.47%)	 44512600.00
                            length=32780:  71759100.00 ( -6.58%)	 50263200.00 ( 25.35%)	 67328600.00
                            length=32773:  71714900.00 (-33.21%)	 51076600.00 (  5.12%)	 53835400.00
                            length=32779:  71756900.00 ( -6.56%)	 51290800.00 ( 23.83%)	 67337800.00
                            length=32774:  59689300.00 (-34.55%)	 50068400.00 (-12.86%)	 44363300.00
                            length=32778:  71847500.00 (-18.20%)	 50084100.00 ( 17.61%)	 60786500.00
                            length=32775:  71599300.00 ( -6.54%)	 51278200.00 ( 23.70%)	 67204800.00
                            length=32777:  71862900.00 (-60.85%)	 51094000.00 (-14.36%)	 44677900.00
                            length=65536: 282848000.00 ( -6.60%)	199187000.00 ( 24.93%)	265325000.00
                            length=65552: 243285000.00 (-41.61%)	198512000.00 (-15.54%)	171805000.00
                            length=65537: 255415000.00 (-23.47%)	202499000.00 (  2.11%)	206858000.00
                            length=65551: 280122000.00 (-62.95%)	203349000.00 (-18.29%)	171911000.00
                            length=65538: 283676000.00 (-14.46%)	198368000.00 ( 19.96%)	247848000.00
                            length=65550: 275566000.00 (-51.76%)	198494000.00 ( -9.31%)	181581000.00
                            length=65539: 283699000.00 ( -6.58%)	203453000.00 ( 23.57%)	266195000.00
                            length=65549: 286572000.00 ( -6.65%)	202607000.00 ( 24.60%)	268712000.00
                            length=65540: 283710000.00 ( -6.59%)	199161000.00 ( 25.17%)	266160000.00
                            length=65548: 237573000.00 ( 11.48%)	198462000.00 ( 26.06%)	268395000.00
                            length=65541: 284150000.00 ( -6.58%)	203273000.00 ( 23.75%)	266600000.00
                            length=65547: 286250000.00 ( -6.70%)	202594000.00 ( 24.48%)	268263000.00
                            length=65542: 284167000.00 ( -6.60%)	199122000.00 ( 25.31%)	266584000.00
                            length=65546: 285656000.00 ( -6.59%)	198443000.00 ( 25.95%)	268002000.00
                            length=65543: 284600000.00 ( -6.58%)	203247000.00 ( 23.89%)	267030000.00
                            length=65545: 285665000.00 ( -6.40%)	202575000.00 ( 24.55%)	268472000.00
    <snip>
    
    	* sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add
    	memmove_falkor.
    	* sysdeps/aarch64/multiarch/ifunc-impl-list.c
    	(__libc_ifunc_impl_list): Likewise.
    	* sysdeps/aarch64/multiarch/memmove.c: Likewise.
    	* sysdeps/aarch64/multiarch/memmove_falkor.S: New file.

diff --git a/ChangeLog b/ChangeLog
index 2aa1711..d478f5d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,21 @@
 2017-10-10  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
+	* sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add
+	memmove_falkor.
+	* sysdeps/aarch64/multiarch/ifunc-impl-list.c
+	(__libc_ifunc_impl_list): Likewise.
+	* sysdeps/aarch64/multiarch/memmove.c: Likewise.
+	* sysdeps/aarch64/multiarch/memmove_falkor.S: New file.
+
+	* benchtests/bench-memmove-walk.c: New file.
+	* benchtests/Makefile (string-benchset): Add it.
+
+	* benchtests/bench-memset-walk.c: New file.
+	* benchtests/Makefile (string-benchset): Add it.
+
+	* benchtests/bench-memcpy-walk.c: New file.
+	* benchtests/Makefile (string-benchset): Add it.
+
 	* po/sv.po: Update translations.
 	* po/fr.po: Likewise.
 
diff --git a/sysdeps/aarch64/multiarch/Makefile b/sysdeps/aarch64/multiarch/Makefile
index 164ba1a..9aa1e79 100644
--- a/sysdeps/aarch64/multiarch/Makefile
+++ b/sysdeps/aarch64/multiarch/Makefile
@@ -1,3 +1,4 @@
 ifeq ($(subdir),string)
-sysdep_routines += memcpy_generic memcpy_thunderx memcpy_falkor
+sysdep_routines += memcpy_generic memcpy_thunderx memcpy_falkor \
+		   memmove_falkor
 endif
diff --git a/sysdeps/aarch64/multiarch/ifunc-impl-list.c b/sysdeps/aarch64/multiarch/ifunc-impl-list.c
index 8e873b3..2cb74d5 100644
--- a/sysdeps/aarch64/multiarch/ifunc-impl-list.c
+++ b/sysdeps/aarch64/multiarch/ifunc-impl-list.c
@@ -44,6 +44,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
 	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_generic))
   IFUNC_IMPL (i, name, memmove,
 	      IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_thunderx)
+	      IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_falkor)
 	      IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_generic))
 
   return i;
diff --git a/sysdeps/aarch64/multiarch/memmove.c b/sysdeps/aarch64/multiarch/memmove.c
index 34c6b29..016f03e 100644
--- a/sysdeps/aarch64/multiarch/memmove.c
+++ b/sysdeps/aarch64/multiarch/memmove.c
@@ -30,9 +30,14 @@ extern __typeof (__redirect_memmove) __libc_memmove;
 
 extern __typeof (__redirect_memmove) __memmove_generic attribute_hidden;
 extern __typeof (__redirect_memmove) __memmove_thunderx attribute_hidden;
+extern __typeof (__redirect_memmove) __memmove_falkor attribute_hidden;
 
 libc_ifunc (__libc_memmove,
-            IS_THUNDERX (midr) ? __memmove_thunderx : __memmove_generic);
+            (IS_THUNDERX (midr)
+	     ? __memmove_thunderx
+	     : (IS_FALKOR (midr)
+		? __memmove_falkor
+		: __memmove_generic)));
 
 # undef memmove
 strong_alias (__libc_memmove, memmove);
diff --git a/sysdeps/aarch64/multiarch/memmove_falkor.S b/sysdeps/aarch64/multiarch/memmove_falkor.S
new file mode 100644
index 0000000..3a4e6a2
--- /dev/null
+++ b/sysdeps/aarch64/multiarch/memmove_falkor.S
@@ -0,0 +1,232 @@
+/* Copyright (C) 2017 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+/* Assumptions: ARMv8-a, AArch64, falkor, unaligned accesses.  */
+
+#define dstin	x0
+#define src	x1
+#define count	x2
+#define dstlen	x3
+#define dst	x3
+#define srcend	x4
+#define dstend	x5
+#define A_l	x6
+#define A_lw	w6
+#define A_h	x7
+#define A_hw	w7
+#define B_l	x8
+#define B_lw	w8
+#define B_h	x9
+#define C_l	x10
+#define C_h	x11
+#define D_l	x12
+#define D_h	x13
+#define E_l	src
+#define E_h	count
+#define F_l	srcend
+#define F_h	dst
+#define tmp1	x14
+
+/* Alias with A_l and A_h to train the prefetcher.  */
+#define Q_l	x22
+#define Q_h	x23
+
+/* RATIONALE:
+
+   The copy has 4 distinct parts:
+   * Small copies of 16 bytes and under
+   * Medium sized copies of 17-96 bytes
+   * Large copies where the source address is higher than the destination
+     (forward copies)
+   * Large copies where the destination address is higher than the source
+     (copy backward, or move).
+
+   We use only two registerpairs x6,x7 and x22,x23 for the copies and copy 32
+   bytes at a time to correctly train the hardware prefetcher for better
+   throughput.  */
+ENTRY_ALIGN (__memmove_falkor, 6)
+
+	sub	tmp1, dstin, src
+	add	srcend, src, count
+	add	dstend, dstin, count
+	cmp	count, 96
+	ccmp	tmp1, count, 2, hi
+	b.lo	L(move_long)
+
+	cmp	count, 16
+	b.ls	L(copy16)
+	cmp	count, 96
+	b.hi	L(copy_long)
+
+	/* Medium copies: 17..96 bytes.  */
+	sub	tmp1, count, 1
+	ldp	A_l, A_h, [src]
+	tbnz	tmp1, 6, L(copy96)
+	ldp	D_l, D_h, [srcend, -16]
+	tbz	tmp1, 5, 1f
+	ldp	B_l, B_h, [src, 16]
+	ldp	C_l, C_h, [srcend, -32]
+	stp	B_l, B_h, [dstin, 16]
+	stp	C_l, C_h, [dstend, -32]
+1:
+	stp	A_l, A_h, [dstin]
+	stp	D_l, D_h, [dstend, -16]
+	ret
+
+	.p2align 4
+	/* Small copies: 0..16 bytes.  */
+L(copy16):
+	cmp	count, 8
+	b.lo	1f
+	ldr	A_l, [src]
+	ldr	A_h, [srcend, -8]
+	str	A_l, [dstin]
+	str	A_h, [dstend, -8]
+	ret
+	.p2align 4
+1:
+	/* 4-7 */
+	tbz	count, 2, 1f
+	ldr	A_lw, [src]
+	ldr	A_hw, [srcend, -4]
+	str	A_lw, [dstin]
+	str	A_hw, [dstend, -4]
+	ret
+	.p2align 4
+1:
+	/* 2-3 */
+	tbz	count, 1, 1f
+	ldrh	A_lw, [src]
+	ldrh	A_hw, [srcend, -2]
+	strh	A_lw, [dstin]
+	strh	A_hw, [dstend, -2]
+	ret
+	.p2align 4
+1:
+	/* 0-1 */
+	tbz	count, 0, 1f
+	ldrb	A_lw, [src]
+	strb	A_lw, [dstin]
+1:	ret
+
+	.p2align 4
+	/* Copy 64..96 bytes.  Copy 64 bytes from the start and
+	   32 bytes from the end.  */
+L(copy96):
+	ldp	B_l, B_h, [src, 16]
+	ldp	C_l, C_h, [src, 32]
+	ldp	D_l, D_h, [src, 48]
+	ldp	E_l, E_h, [srcend, -32]
+	ldp	F_l, F_h, [srcend, -16]
+	stp	A_l, A_h, [dstin]
+	stp	B_l, B_h, [dstin, 16]
+	stp	C_l, C_h, [dstin, 32]
+	stp	D_l, D_h, [dstin, 48]
+	stp	E_l, E_h, [dstend, -32]
+	stp	F_l, F_h, [dstend, -16]
+	ret
+
+	/* Align SRC to 16 byte alignment so that we don't cross cache line
+	   boundaries on both loads and stores.  There are at least 96 bytes
+	   to copy, so copy 16 bytes unaligned and then align.  The loop
+	   copies 32 bytes per iteration and prefetches one iteration ahead.  */
+
+	.p2align 4
+L(copy_long):
+	sub	count, count, 64 + 16	/* Test and readjust count.  */
+	mov	B_l, Q_l
+	mov	B_h, Q_h
+	ldp	A_l, A_h, [src]
+	and	tmp1, src, 15
+	bic	src, src, 15
+	sub	dst, dstin, tmp1
+	add	count, count, tmp1	/* Count is now 16 too large.  */
+	ldp	Q_l, Q_h, [src, 16]!
+	stp	A_l, A_h, [dstin]
+	ldp	A_l, A_h, [src, 16]!
+
+L(loop64):
+	subs	count, count, 32
+	stp	Q_l, Q_h, [dst, 16]
+	ldp	Q_l, Q_h, [src, 16]!
+	stp	A_l, A_h, [dst, 32]!
+	ldp	A_l, A_h, [src, 16]!
+	b.hi	L(loop64)
+
+	/* Write the last full set of 32 bytes.  The remainder is at most 32
+	   bytes, so it is safe to always copy 32 bytes from the end even if
+	   there is just 1 byte left.  */
+L(last64):
+	ldp	C_l, C_h, [srcend, -32]
+	stp	Q_l, Q_h, [dst, 16]
+	ldp	Q_l, Q_h, [srcend, -16]
+	stp	A_l, A_h, [dst, 32]
+	stp	C_l, C_h, [dstend, -32]
+	stp	Q_l, Q_h, [dstend, -16]
+	mov	Q_l, B_l
+	mov	Q_h, B_h
+	ret
+
+	.p2align 4
+L(move_long):
+	cbz	tmp1, 3f
+
+	mov	B_l, Q_l
+	mov	B_h, Q_h
+
+	/* Align SRCEND to 16 byte alignment so that we don't cross cache line
+	   boundaries on both loads and stores.  There are at least 96 bytes
+	   to copy, so copy 16 bytes unaligned and then align.  The loop
+	   copies 32 bytes per iteration and prefetches one iteration ahead.  */
+
+	ldp	A_l, A_h, [srcend, -16]
+	and	tmp1, srcend, 15
+	sub	srcend, srcend, tmp1
+	ldp	Q_l, Q_h, [srcend, -16]!
+	stp	A_l, A_h, [dstend, -16]
+	sub	count, count, tmp1
+	ldp	A_l, A_h, [srcend, -16]!
+	sub	dstend, dstend, tmp1
+	sub	count, count, 64
+
+1:
+	subs	count, count, 32
+	stp	Q_l, Q_h, [dstend, -16]
+	ldp	Q_l, Q_h, [srcend, -16]!
+	stp	A_l, A_h, [dstend, -32]!
+	ldp	A_l, A_h, [srcend, -16]!
+	b.hi	1b
+
+	/* Write the last full set of 32 bytes.  The remainder is at most 32
+	   bytes, so it is safe to always copy 32 bytes from the start even if
+	   there is just 1 byte left.  */
+2:
+	ldp	C_l, C_h, [src, 16]
+	stp	Q_l, Q_h, [dstend, -16]
+	ldp	Q_l, Q_h, [src]
+	stp	A_l, A_h, [dstend, -32]
+	stp	C_l, C_h, [dstin, 16]
+	stp	Q_l, Q_h, [dstin]
+	mov	Q_l, B_l
+	mov	Q_h, B_h
+3:	ret
+
+END (__memmove_falkor)
+libc_hidden_builtin_def (__memmove_falkor)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=de84fc77f823051b1df336b7e5c257e4c3de984e

commit de84fc77f823051b1df336b7e5c257e4c3de984e
Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date:   Mon Sep 11 05:50:49 2017 +0530

    Update translations

diff --git a/ChangeLog b/ChangeLog
index e1e0cdd..2aa1711 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2017-10-10  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
+	* po/sv.po: Update translations.
+	* po/fr.po: Likewise.
+
 	* sysdeps/aarch64/multiarch/memcpy_falkor.S: Fix code style in
 	comments.
 
diff --git a/po/fr.po b/po/fr.po
index 5a79695..6764655 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -5920,7 +5920,7 @@ msgstr "Le fichier existe"
 #. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}).
 #: sysdeps/gnu/errlist.c:211
 msgid "Invalid cross-device link"
-msgstr "Lien croisé de périphéque invalide"
+msgstr "Lien physique inter-périphérique invalide"
 
 #. TRANS The wrong type of device was given to a function that expects a
 #. TRANS particular sort of device.
diff --git a/po/sv.po b/po/sv.po
index 0ebfec5..d10bfad 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -5,12 +5,12 @@
 # Jan Djärv <jan.h.d@swipnet.se>, 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015.
 # Göran Uddeborg <goeran@uddeborg.se>, 2016, 2017.
 #
-# $Revision: 1.7 $
+# $Revision: 1.10 $
 msgid ""
 msgstr ""
-"Project-Id-Version: libc 2.25-pre1\n"
-"POT-Creation-Date: 2017-01-11 17:27+0530\n"
-"PO-Revision-Date: 2017-05-30 12:14+0200\n"
+"Project-Id-Version: libc 2.25.90\n"
+"POT-Creation-Date: 2017-07-25 12:32+0530\n"
+"PO-Revision-Date: 2017-08-20 18:21+0200\n"
 "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
@@ -478,19 +478,19 @@ msgstr "FEL I DYNAMISK LÃ?NKARE!!!"
 msgid "error while loading shared libraries"
 msgstr "fel när delade bibliotek laddades"
 
-#: elf/dl-fptr.c:88 sysdeps/hppa/dl-fptr.c:94
+#: elf/dl-fptr.c:88 sysdeps/hppa/dl-fptr.c:95
 msgid "cannot map pages for fdesc table"
 msgstr "kan inte minnesmappa sidor för fdesc-tabell"
 
-#: elf/dl-fptr.c:192 sysdeps/hppa/dl-fptr.c:207
+#: elf/dl-fptr.c:192 sysdeps/hppa/dl-fptr.c:213
 msgid "cannot map pages for fptr table"
 msgstr "kan inte minnesmappa sidor för fptr-tabell"
 
-#: elf/dl-fptr.c:221 sysdeps/hppa/dl-fptr.c:236
+#: elf/dl-fptr.c:221 sysdeps/hppa/dl-fptr.c:242
 msgid "internal error: symidx out of range of fptr table"
 msgstr "internt fel: symidx är utanför intervallet för fptr-tabellen"
 
-#: elf/dl-hwcaps.c:184 elf/dl-hwcaps.c:196
+#: elf/dl-hwcaps.c:191 elf/dl-hwcaps.c:203
 msgid "cannot create capability list"
 msgstr "kan inte skapa egenskapslista"
 
@@ -670,20 +670,20 @@ msgstr "ogiltig målnamnrymd för dlmopen()"
 msgid "cannot allocate memory in static TLS block"
 msgstr "kan inte allokera minne i statiskt TLS-block"
 
-#: elf/dl-reloc.c:212
+#: elf/dl-reloc.c:206
 msgid "cannot make segment writable for relocation"
 msgstr "kan inte göra segment skrivbart för relokering"
 
-#: elf/dl-reloc.c:283
+#: elf/dl-reloc.c:277
 #, c-format
 msgid "%s: out of memory to store relocation results for %s\n"
 msgstr "%s: slut på minne för att lagra relokeringsresultat för %s\n"
 
-#: elf/dl-reloc.c:299
+#: elf/dl-reloc.c:293
 msgid "cannot restore segment prot after reloc"
 msgstr "kan inte återställa segmenträttigheter efter relokering"
 
-#: elf/dl-reloc.c:330
+#: elf/dl-reloc.c:324
 msgid "cannot apply additional memory protection after relocation"
 msgstr "kan inte applicera extra minnesskydd efter relokering"
 
@@ -959,14 +959,14 @@ msgstr "Försök med \"ldd --help\" för mer information."
 msgid "missing file arguments"
 msgstr "filargument saknas"
 
-#. TRANS No such file or directory.  This is a ``file doesn't exist'' error
+#. TRANS 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:147 sysdeps/gnu/errlist.c:37
 msgid "No such file or directory"
 msgstr "Filen eller katalogen finns inte"
 
-#: elf/ldd.bash.in:150 inet/rcmd.c:475
+#: elf/ldd.bash.in:150 inet/rcmd.c:480
 msgid "not regular file"
 msgstr "inte en normal fil"
 
@@ -1540,68 +1540,68 @@ msgstr "vid insättning i sökträd"
 msgid "cannot generate output file"
 msgstr "kan inte generera utfil"
 
-#: inet/rcmd.c:155
+#: inet/rcmd.c:157
 msgid "rcmd: Cannot allocate memory\n"
 msgstr "rcmd: Kan inte allokera minne\n"
 
-#: inet/rcmd.c:170
+#: inet/rcmd.c:174
 msgid "rcmd: socket: All ports in use\n"
 msgstr "rcmd: uttag (socket): Alla portar används\n"
 
-#: inet/rcmd.c:198
+#: inet/rcmd.c:202
 #, c-format
 msgid "connect to address %s: "
 msgstr "anslut till adress %s: "
 
-#: inet/rcmd.c:211
+#: inet/rcmd.c:215
 #, c-format
 msgid "Trying %s...\n"
 msgstr "Provar %s...\n"
 
-#: inet/rcmd.c:247
+#: inet/rcmd.c:251
 #, c-format
 msgid "rcmd: write (setting up stderr): %m\n"
 msgstr "rcmd: write: (sätter upp standard fel): %m\n"
 
-#: inet/rcmd.c:263
+#: inet/rcmd.c:267
 #, c-format
 msgid "rcmd: poll (setting up stderr): %m\n"
 msgstr "rcmd: poll (sätter upp standard fel): %m\n"
 
-#: inet/rcmd.c:266
+#: inet/rcmd.c:270
 msgid "poll: protocol failure in circuit setup\n"
 msgstr "poll: protokollfel i förbindelseuppsättning\n"
 
-#: inet/rcmd.c:298
+#: inet/rcmd.c:302
 msgid "socket: protocol failure in circuit setup\n"
 msgstr "uttag (socket): protokollfel i förbindelseuppsättning\n"
 
-#: inet/rcmd.c:322
+#: inet/rcmd.c:326
 #, c-format
 msgid "rcmd: %s: short read"
 msgstr "rcmd: %s: läsning gav för lite data"
 
-#: inet/rcmd.c:473
+#: inet/rcmd.c:478
 msgid "lstat failed"
 msgstr "misslyckades ta status (lstat)"
 
-#: inet/rcmd.c:480
+#: inet/rcmd.c:485
 msgid "cannot open"
 msgstr "kan inte öppna"
 
-#: inet/rcmd.c:482
+#: inet/rcmd.c:487
 msgid "fstat failed"
 msgstr "misslyckades ta status (fstat)"
 
-#: inet/rcmd.c:484
+#: inet/rcmd.c:489
 msgid "bad owner"
 msgstr "felaktig ägare"
 
-#: inet/rcmd.c:486
+#: inet/rcmd.c:491
 msgid "writeable by other than owner"
 msgstr "skrivbar för andra än ägaren"
 
-#: inet/rcmd.c:488
+#: inet/rcmd.c:493
 msgid "hard linked somewhere"
 msgstr "hårdlänkad någonstans"
 
@@ -3143,7 +3143,7 @@ msgstr "Okänt systemfel"
 msgid "unable to free arguments"
 msgstr "kan inte avallokera argument"
 
-#: nis/nis_error.h:1 nis/ypclnt.c:817 nis/ypclnt.c:905 posix/regcomp.c:137
+#: nis/nis_error.h:1 nis/ypclnt.c:824 nis/ypclnt.c:913 posix/regcomp.c:137
 #: sysdeps/gnu/errlist.c:21
 msgid "Success"
 msgstr "Lyckat"
@@ -3184,8 +3184,8 @@ msgstr "Generiskt systemfel"
 msgid "First/next chain broken"
 msgstr "Första/Nästa-kedja bruten"
 
-#. TRANS Permission denied; the file permissions do not allow the attempted operation.
-#: nis/nis_error.h:11 nis/ypclnt.c:862 sysdeps/gnu/errlist.c:158
+#. TRANS The file permissions do not allow the attempted operation.
+#: nis/nis_error.h:11 nis/ypclnt.c:869 sysdeps/gnu/errlist.c:158
 msgid "Permission denied"
 msgstr "Ã?tkomst nekas"
 
@@ -3337,128 +3337,128 @@ msgstr "Kan inte skapa process hos server"
 msgid "Master server busy, full dump rescheduled."
 msgstr "Huvudserver är upptagen, full dump åter schemalagd."
 
-#: nis/nis_local_names.c:121
+#: nis/nis_local_names.c:122
 #, c-format
 msgid "LOCAL entry for UID %d in directory %s not unique\n"
 msgstr "LOCAL-post för UID %d i katalog %s är inte unik\n"
 
-#: nis/nis_print.c:51
+#: nis/nis_print.c:52
 msgid "UNKNOWN"
 msgstr "OKÃ?ND"
 
-#: nis/nis_print.c:109
+#: nis/nis_print.c:110
 msgid "BOGUS OBJECT\n"
 msgstr "SKENOBJEKT\n"
 
-#: nis/nis_print.c:112
+#: nis/nis_print.c:113
 msgid "NO OBJECT\n"
 msgstr "INGET OBJEKT\n"
 
-#: nis/nis_print.c:115
+#: nis/nis_print.c:116
 msgid "DIRECTORY\n"
 msgstr "KATALOG\n"
 
-#: nis/nis_print.c:118
+#: nis/nis_print.c:119
 msgid "GROUP\n"
 msgstr "GRUPP\n"
 
-#: nis/nis_print.c:121
+#: nis/nis_print.c:122
 msgid "TABLE\n"
 msgstr "TABELL\n"
 
-#: nis/nis_print.c:124
+#: nis/nis_print.c:125
 msgid "ENTRY\n"
 msgstr "POST\n"
 
-#: nis/nis_print.c:127
+#: nis/nis_print.c:128
 msgid "LINK\n"
 msgstr "LÃ?NK\n"
 
-#: nis/nis_print.c:130
+#: nis/nis_print.c:131
 msgid "PRIVATE\n"
 msgstr "PRIVAT\n"
 
-#: nis/nis_print.c:133
+#: nis/nis_print.c:134
 msgid "(Unknown object)\n"
 msgstr "(Okänt objekt)\n"
 
-#: nis/nis_print.c:167
+#: nis/nis_print.c:168
 #, c-format
 msgid "Name : `%s'\n"
 msgstr "Namn: \"%s\"\n"
 
-#: nis/nis_print.c:168
+#: nis/nis_print.c:169
 #, c-format
 msgid "Type : %s\n"
 msgstr "Typ: %s\n"
 
-#: nis/nis_print.c:173
+#: nis/nis_print.c:174
 msgid "Master Server :\n"
 msgstr "Huvudserver:\n"
 
-#: nis/nis_print.c:175
+#: nis/nis_print.c:176
 msgid "Replicate :\n"
 msgstr "Replikera:\n"
 
-#: nis/nis_print.c:176
+#: nis/nis_print.c:177
 #, c-format
 msgid "\tName       : %s\n"
 msgstr "\tNamn       : %s\n"
 
-#: nis/nis_print.c:177
+#: nis/nis_print.c:178
 msgid "\tPublic Key : "
 msgstr "\tPublik nyckel: "
 
-#: nis/nis_print.c:181
+#: nis/nis_print.c:182
 msgid "None.\n"
 msgstr "Ingen.\n"
 
-#: nis/nis_print.c:184
+#: nis/nis_print.c:185
 #, c-format
 msgid "Diffie-Hellmann (%d bits)\n"
 msgstr "Diffie-Hellmann (%d bitar)\n"
 
-#: nis/nis_print.c:189
+#: nis/nis_print.c:190
 #, c-format
 msgid "RSA (%d bits)\n"
 msgstr "RSA (%d bitar)\n"
 
-#: nis/nis_print.c:192
+#: nis/nis_print.c:193
 msgid "Kerberos.\n"
 msgstr "Kerberos.\n"
 
-#: nis/nis_print.c:195
+#: nis/nis_print.c:196
 #, c-format
 msgid "Unknown (type = %d, bits = %d)\n"
 msgstr "Okänd (typ = %d, bitar = %d)\n"
 
-#: nis/nis_print.c:206
+#: nis/nis_print.c:207
 #, c-format
 msgid "\tUniversal addresses (%u)\n"
 msgstr "\tUniversella adresser (%u)\n"
 
-#: nis/nis_print.c:228
+#: nis/nis_print.c:229
 msgid "Time to live : "
 msgstr "Livslängd: "
 
-#: nis/nis_print.c:230
+#: nis/nis_print.c:231
 msgid "Default Access rights :\n"
 msgstr "Standard åtkomsträttigheter:\n"
 
-#: nis/nis_print.c:239
+#: nis/nis_print.c:240
 #, c-format
 msgid "\tType         : %s\n"
 msgstr "\tTyp          : %s\n"
 
-#: nis/nis_print.c:240
+#: nis/nis_print.c:241
 msgid "\tAccess rights: "
 msgstr "\tRättigheter  : "
 
-#: nis/nis_print.c:254
+#: nis/nis_print.c:255
 msgid "Group Flags :"
 msgstr "Gruppflaggor: "
 
-#: nis/nis_print.c:257
+#: nis/nis_print.c:258
 msgid ""
 "\n"
 "Group Members :\n"
@@ -3466,95 +3466,95 @@ msgstr ""
 "\n"
 "Gruppmedlemmar:\n"
 
-#: nis/nis_print.c:269
+#: nis/nis_print.c:270
 #, c-format
 msgid "Table Type          : %s\n"
 msgstr "Tabelltyp           : %s\n"
 
-#: nis/nis_print.c:270
+#: nis/nis_print.c:271
 #, c-format
 msgid "Number of Columns   : %d\n"
 msgstr "Antal kolumner      : %d\n"
 
-#: nis/nis_print.c:271
+#: nis/nis_print.c:272
 #, c-format
 msgid "Character Separator : %c\n"
 msgstr "Teckenseparator     : %c\n"
 
-#: nis/nis_print.c:272
+#: nis/nis_print.c:273
 #, c-format
 msgid "Search Path         : %s\n"
 msgstr "Sökväg              : %s\n"
 
-#: nis/nis_print.c:273
+#: nis/nis_print.c:274
 msgid "Columns             :\n"
 msgstr "Kolumner            :\n"
 
-#: nis/nis_print.c:276
+#: nis/nis_print.c:277
 #, c-format
 msgid "\t[%d]\tName          : %s\n"
 msgstr "\t[%d]\tNamn          : %s\n"
 
-#: nis/nis_print.c:278
+#: nis/nis_print.c:279
 msgid "\t\tAttributes    : "
 msgstr "\t\tAttribut      : "
 
-#: nis/nis_print.c:280
+#: nis/nis_print.c:281
 msgid "\t\tAccess Rights : "
 msgstr "\t\tRättigheter   : "
 
-#: nis/nis_print.c:290
+#: nis/nis_print.c:291
 msgid "Linked Object Type : "
 msgstr "Länkad objekttyp   : "
 
-#: nis/nis_print.c:292
+#: nis/nis_print.c:293
 #, c-format
 msgid "Linked to : %s\n"
 msgstr "Länkad till: %s\n"
 
-#: nis/nis_print.c:302
+#: nis/nis_print.c:303
 #, c-format
 msgid "\tEntry data of type %s\n"
 msgstr "\tPostdata av typ %s\n"
 
-#: nis/nis_print.c:305
+#: nis/nis_print.c:306
 #, c-format
 msgid "\t[%u] - [%u bytes] "
 msgstr "\t[%u] - [%u byte] "
 
-#: nis/nis_print.c:308
+#: nis/nis_print.c:309
 msgid "Encrypted data\n"
 msgstr "Krypterat data\n"
 
-#: nis/nis_print.c:310
+#: nis/nis_print.c:311
 msgid "Binary data\n"
 msgstr "Binärdata\n"
 
-#: nis/nis_print.c:326
+#: nis/nis_print.c:327
 #, c-format
 msgid "Object Name   : %s\n"
 msgstr "Objektnamn    : %s\n"
 
-#: nis/nis_print.c:327
+#: nis/nis_print.c:328
 #, c-format
 msgid "Directory     : %s\n"
 msgstr "Katalog       : %s\n"
 
-#: nis/nis_print.c:328
+#: nis/nis_print.c:329
 #, c-format
 msgid "Owner         : %s\n"
 msgstr "Ã?gare         : %s\n"
 
-#: nis/nis_print.c:329
+#: nis/nis_print.c:330
 #, c-format
 msgid "Group         : %s\n"
 msgstr "Grupp         : %s\n"
 
-#: nis/nis_print.c:330
+#: nis/nis_print.c:331
 msgid "Access Rights : "
 msgstr "Rättigheter   : "
 
-#: nis/nis_print.c:332
+#: nis/nis_print.c:333
 #, c-format
 msgid ""
 "\n"
@@ -3563,90 +3563,90 @@ msgstr ""
 "\n"
 "Livslängd     : "
 
-#: nis/nis_print.c:335
+#: nis/nis_print.c:336
 #, c-format
 msgid "Creation Time : %s"
 msgstr "Skapad        : %s"
 
-#: nis/nis_print.c:337
+#: nis/nis_print.c:338
 #, c-format
 msgid "Mod. Time     : %s"
 msgstr "Ã?ndr. tid     : %s"
 
-#: nis/nis_print.c:338
+#: nis/nis_print.c:339
 msgid "Object Type   : "
 msgstr "Objekttyp     : "
 
-#: nis/nis_print.c:358
+#: nis/nis_print.c:359
 #, c-format
 msgid "    Data Length = %u\n"
 msgstr "    Datalängd = %u\n"
 
-#: nis/nis_print.c:372
+#: nis/nis_print.c:373
 #, c-format
 msgid "Status            : %s\n"
 msgstr "Status            : %s\n"
 
-#: nis/nis_print.c:373
+#: nis/nis_print.c:374
 #, c-format
 msgid "Number of objects : %u\n"
 msgstr "Antal objekt      : %u\n"
 
-#: nis/nis_print.c:377
+#: nis/nis_print.c:378
 #, c-format
 msgid "Object #%d:\n"
 msgstr "Objekt nr %d:\n"
 
-#: nis/nis_print_group_entry.c:116
+#: nis/nis_print_group_entry.c:117
 #, c-format
 msgid "Group entry for \"%s.%s\" group:\n"
 msgstr "Gruppost för \"%s.%s\" grupp:\n"
 
-#: nis/nis_print_group_entry.c:124
+#: nis/nis_print_group_entry.c:125
 msgid "    Explicit members:\n"
 msgstr "    Explicita medlemmar:\n"
 
-#: nis/nis_print_group_entry.c:129
+#: nis/nis_print_group_entry.c:130
 msgid "    No explicit members\n"
 msgstr "    Inga explicita medlemmar\n"
 
-#: nis/nis_print_group_entry.c:132
+#: nis/nis_print_group_entry.c:133
 msgid "    Implicit members:\n"
 msgstr "    Implicita medlemmar:\n"
 
-#: nis/nis_print_group_entry.c:137
+#: nis/nis_print_group_entry.c:138
 msgid "    No implicit members\n"
 msgstr "    Inga implicita medlemmar\n"
 
-#: nis/nis_print_group_entry.c:140
+#: nis/nis_print_group_entry.c:141
 msgid "    Recursive members:\n"
 msgstr "    Rekursiva medlemmar:\n"
 
-#: nis/nis_print_group_entry.c:145
+#: nis/nis_print_group_entry.c:146
 msgid "    No recursive members\n"
 msgstr "    Inga rekursiva medlemmar\n"
 
-#: nis/nis_print_group_entry.c:148
+#: nis/nis_print_group_entry.c:149
 msgid "    Explicit nonmembers:\n"
 msgstr "    Explicita icke-medlemmar:\n"
 
-#: nis/nis_print_group_entry.c:153
+#: nis/nis_print_group_entry.c:154
 msgid "    No explicit nonmembers\n"
 msgstr "    Inga explicita icke-medlemmar\n"
 
-#: nis/nis_print_group_entry.c:156
+#: nis/nis_print_group_entry.c:157
 msgid "    Implicit nonmembers:\n"
 msgstr "    Implicita icke-medlemmar:\n"
 
-#: nis/nis_print_group_entry.c:161
+#: nis/nis_print_group_entry.c:162
 msgid "    No implicit nonmembers\n"
 msgstr "    Inga implicita icke-medlemmar\n"
 
-#: nis/nis_print_group_entry.c:164
+#: nis/nis_print_group_entry.c:165
 msgid "    Recursive nonmembers:\n"
 msgstr "    Rekursiva icke-medlemmar:\n"
 
-#: nis/nis_print_group_entry.c:169
+#: nis/nis_print_group_entry.c:170
 msgid "    No recursive nonmembers\n"
 msgstr "    Inga rekursiva icke-medlemmar\n"
 
@@ -3688,100 +3688,100 @@ msgstr "netname2user: LOCAL-post för %s i katalog %s är inte unik"
 msgid "netname2user: should not have uid 0"
 msgstr "netname2user: borde inte ha uid 0"
 
-#: nis/ypclnt.c:820
+#: nis/ypclnt.c:827
 msgid "Request arguments bad"
 msgstr "Argument för förfrågan felaktiga"
 
-#: nis/ypclnt.c:823
+#: nis/ypclnt.c:830
 msgid "RPC failure on NIS operation"
 msgstr "RPC-fel vid NIS-operation"
 
-#: nis/ypclnt.c:826
+#: nis/ypclnt.c:833
 msgid "Can't bind to server which serves this domain"
 msgstr "Kan inte ansluta till servern som betjänar denna domän"
 
-#: nis/ypclnt.c:829
+#: nis/ypclnt.c:836
 msgid "No such map in server's domain"
 msgstr "Ingen sådan tabell i serverns domän"
 
-#: nis/ypclnt.c:832
+#: nis/ypclnt.c:839
 msgid "No such key in map"
 msgstr "Ingen sådan nyckel i tabellen"
 
-#: nis/ypclnt.c:835
+#: nis/ypclnt.c:842
 msgid "Internal NIS error"
 msgstr "Internt NIS-fel"
 
-#: nis/ypclnt.c:838
+#: nis/ypclnt.c:845
 msgid "Local resource allocation failure"
 msgstr "Allokeringsfel för lokal resurs"
 
-#: nis/ypclnt.c:841
+#: nis/ypclnt.c:848
 msgid "No more records in map database"
 msgstr "Inga fler poster i tabelldatabasen"
 
-#: nis/ypclnt.c:844
+#: nis/ypclnt.c:851
 msgid "Can't communicate with portmapper"
 msgstr "Kan inte kommunicera med portmapper"
 
-#: nis/ypclnt.c:847
+#: nis/ypclnt.c:854
 msgid "Can't communicate with ypbind"
 msgstr "Kan inte kommunicera med ypbind"
 
-#: nis/ypclnt.c:850
+#: nis/ypclnt.c:857
 msgid "Can't communicate with ypserv"
 msgstr "Kan inte kommunicera med ypserv"
 
-#: nis/ypclnt.c:853
+#: nis/ypclnt.c:860
 msgid "Local domain name not set"
 msgstr "Lokalt domännamn inte satt"
 
-#: nis/ypclnt.c:856
+#: nis/ypclnt.c:863
 msgid "NIS map database is bad"
 msgstr "NIS tabelldatabas är felaktig"
 
-#: nis/ypclnt.c:859
+#: nis/ypclnt.c:866
 msgid "NIS client/server version mismatch - can't supply service"
 msgstr "NIS versionsskillnad klient/server - kan inte betjäna"
 
-#: nis/ypclnt.c:865
+#: nis/ypclnt.c:872
 msgid "Database is busy"
 msgstr "Databasen är upptagen"
 
-#: nis/ypclnt.c:868
+#: nis/ypclnt.c:875
 msgid "Unknown NIS error code"
 msgstr "Okänd NIS-felkod"
 
-#: nis/ypclnt.c:908
+#: nis/ypclnt.c:916
 msgid "Internal ypbind error"
 msgstr "Internt ypbind-fel"
 
-#: nis/ypclnt.c:911
+#: nis/ypclnt.c:919
 msgid "Domain not bound"
 msgstr "Domän inte bunden"
 
-#: nis/ypclnt.c:914
+#: nis/ypclnt.c:922
 msgid "System resource allocation failure"
 msgstr "Allokeringsfel för systemresurs"
 
-#: nis/ypclnt.c:917
+#: nis/ypclnt.c:925
 msgid "Unknown ypbind error"
 msgstr "Okänt ypbind-fel"
 
-#: nis/ypclnt.c:958
+#: nis/ypclnt.c:966
 msgid "yp_update: cannot convert host to netname\n"
 msgstr "yp_update: kan inte omvandla värd till nätnamn\n"
 
-#: nis/ypclnt.c:976
+#: nis/ypclnt.c:984
 msgid "yp_update: cannot get server address\n"
 msgstr "yp_update: kan inte hämta serveradress\n"
 
-#: nscd/aicache.c:84 nscd/hstcache.c:485
+#: nscd/aicache.c:85 nscd/hstcache.c:485
 #, c-format
 msgid "Haven't found \"%s\" in hosts cache!"
 msgstr "Hittar inte \"%s\" i värdcache!"
 
-#: nscd/aicache.c:86 nscd/hstcache.c:487
+#: nscd/aicache.c:87 nscd/hstcache.c:487
 #, c-format
 msgid "Reloading \"%s\" in hosts cache!"
 msgstr "Omladdar \"%s\" i värdcache!"
@@ -3815,269 +3815,264 @@ msgstr "beskär %s cache; tid %ld"
 msgid "considering %s entry \"%s\", timeout %<PRIu64>"
 msgstr "överväger %s-post \"%s\", tidsgräns %<PRIu64>"
 
-#: nscd/connections.c:548
+#: nscd/connections.c:537
 #, c-format
 msgid "invalid persistent database file \"%s\": %s"
 msgstr "ogiltig persistent databasfil \"%s\": %s"
 
-#: nscd/connections.c:556
+#: nscd/connections.c:545
 msgid "uninitialized header"
 msgstr "oinitierat huvud"
 
-#: nscd/connections.c:561
+#: nscd/connections.c:550
 msgid "header size does not match"
 msgstr "huvudstorlek stämmer inte"
 
-#: nscd/connections.c:571
+#: nscd/connections.c:560
 msgid "file size does not match"
 msgstr "filstorlek stämmer inte"
 
-#: nscd/connections.c:588
+#: nscd/connections.c:577
 msgid "verification failed"
 msgstr "verifikation misslyckades"
 
-#: nscd/connections.c:602
+#: nscd/connections.c:591
 #, c-format
 msgid "suggested size of table for database %s larger than the persistent database's table"
 msgstr "föreslagen storlek på tabellen för databas %s är större än den persistenta databasens tabell"
 
-#: nscd/connections.c:613 nscd/connections.c:697
+#: nscd/connections.c:602 nscd/connections.c:686
 #, c-format
 msgid "cannot create read-only descriptor for \"%s\"; no mmap"
 msgstr "kan inte skapa läsbar filidentifierare för \"%s\", ingen mmap"
 
-#: nscd/connections.c:629
+#: nscd/connections.c:618
 #, c-format
 msgid "cannot access '%s'"
 msgstr "kan inte komma åt \"%s\""
 
-#: nscd/connections.c:677
+#: nscd/connections.c:666
 #, c-format
 msgid "database for %s corrupted or simultaneously used; remove %s manually if necessary and restart"
 msgstr "databas för %s korrupt eller använd av flera samtidigt; ta bort %s manuellt om det behövs och starta om"
 
-#: nscd/connections.c:683
+#: nscd/connections.c:672
 #, c-format
 msgid "cannot create %s; no persistent database used"
 msgstr "kan inte skapa %s; ingen persistent databas används"
 
-#: nscd/connections.c:686
+#: nscd/connections.c:675
 #, c-format
 msgid "cannot create %s; no sharing possible"
 msgstr "kan inte skapa %s; ingen delning möjlig"
 
-#: nscd/connections.c:757
+#: nscd/connections.c:746
 #, c-format
 msgid "cannot write to database file %s: %s"
 msgstr "kan inte skriva till databasfil %s: %s"
 
-#: nscd/connections.c:796
-#, c-format
-msgid "cannot set socket to close on exec: %s; disabling paranoia mode"
-msgstr "kan inte sätta uttag (socket) att stängas vid programstart: %s; kopplar ur paranoialäge"
-
-#: nscd/connections.c:831
+#: nscd/connections.c:802
 #, c-format
 msgid "cannot open socket: %s"
 msgstr "kan inte öppna uttag (socket): %s"
 
-#: nscd/connections.c:850
+#: nscd/connections.c:821
 #, c-format
 msgid "cannot enable socket to accept connections: %s"
 msgstr "kan inte få uttag (socket) att acceptera förbindelser: %s"
 
-#: nscd/connections.c:907
+#: nscd/connections.c:878
 #, c-format
 msgid "disabled inotify-based monitoring for file `%s': %s"
 msgstr "avaktiverade inotify-baserad övervakning för filen â??%sâ??: %s"
 
-#: nscd/connections.c:911
+#: nscd/connections.c:882
 #, c-format
 msgid "monitoring file `%s` (%d)"
 msgstr "övervakar filen â??%sâ?? (%d)"
 
-#: nscd/connections.c:924
+#: nscd/connections.c:895
 #, c-format
 msgid "disabled inotify-based monitoring for directory `%s': %s"
 msgstr "avaktiverade inotify-baserad övervakning av katalogen â??%sâ??: %s"
 
-#: nscd/connections.c:928
+#: nscd/connections.c:899
 #, c-format
 msgid "monitoring directory `%s` (%d)"
 msgstr "övervakar katalogen â??%sâ?? (%d)"
 
-#: nscd/connections.c:956
+#: nscd/connections.c:927
 #, c-format
 msgid "monitoring file %s for database %s"
 msgstr "övervakar filen %s för databas %s"
 
-#: nscd/connections.c:966
+#: nscd/connections.c:937
 #, c-format
 msgid "stat failed for file `%s'; will try again later: %s"
 msgstr "stat misslyckades för filen â??%sâ??; kommer försöka igen senare: %s"
 
-#: nscd/connections.c:1085
+#: nscd/connections.c:1056
 #, c-format
 msgid "provide access to FD %d, for %s"
 msgstr "ge åtkomst till FD %d, för %s"
 
-#: nscd/connections.c:1097
+#: nscd/connections.c:1068
 #, c-format
 msgid "cannot handle old request version %d; current version is %d"
 msgstr "kan inte hantera äldre förfrågansversion %d, nuvarande version är %d"
 
-#: nscd/connections.c:1119
+#: nscd/connections.c:1090
 #, c-format
 msgid "request from %ld not handled due to missing permission"
 msgstr "begäran från %ld inte hanterad för att rättigheter saknas"
 
-#: nscd/connections.c:1124
+#: nscd/connections.c:1095
 #, c-format
 msgid "request from '%s' [%ld] not handled due to missing permission"
 msgstr "begäran från \"%s\" [%ld] inte hanterad för att rättigheter saknas"
 
-#: nscd/connections.c:1129
+#: nscd/connections.c:1100
 msgid "request not handled due to missing permission"
 msgstr "begäran inte hanterad för att rättigheter saknas"
 
-#: nscd/connections.c:1167 nscd/connections.c:1220
+#: nscd/connections.c:1138 nscd/connections.c:1191
 #, c-format
 msgid "cannot write result: %s"
 msgstr "kan inte skriva resultat: %s"
 
-#: nscd/connections.c:1311
+#: nscd/connections.c:1282
 #, c-format
 msgid "error getting caller's id: %s"
 msgstr "kunde inte hämta anropandes identitet: %s"
 
-#: nscd/connections.c:1371
+#: nscd/connections.c:1342
 #, c-format
 msgid "cannot open /proc/self/cmdline: %s; disabling paranoia mode"
 msgstr "kan inte öppna /proc/slef/cmdline: %s, kopplar ur paranoialäge"
 
-#: nscd/connections.c:1385
+#: nscd/connections.c:1356
 #, c-format
 msgid "cannot read /proc/self/cmdline: %s; disabling paranoia mode"
 msgstr "kan inte läsa /proc/self/cmdline: %s, kopplar ur paranoialäge"
 
-#: nscd/connections.c:1425
+#: nscd/connections.c:1396
 #, c-format
 msgid "cannot change to old UID: %s; disabling paranoia mode"
 msgstr "kan inte byta till föregående UID: %s; kopplar ur paranoialäge"
 
-#: nscd/connections.c:1435
+#: nscd/connections.c:1406
 #, c-format
 msgid "cannot change to old GID: %s; disabling paranoia mode"
 msgstr "kan inte byta till föregående GID: %s; kopplar ur paranoialäge"
 
-#: nscd/connections.c:1448
+#: nscd/connections.c:1419
 #, c-format
 msgid "cannot change to old working directory: %s; disabling paranoia mode"
 msgstr "kan inte byta till föregående arbetskatalog: %s; kopplar ur paranoialäge"
 
-#: nscd/connections.c:1494
+#: nscd/connections.c:1465
 #, c-format
 msgid "re-exec failed: %s; disabling paranoia mode"
 msgstr "återstart misslyckades: %s; kopplar ur paranoialäge"
 
-#: nscd/connections.c:1503
+#: nscd/connections.c:1474
 #, c-format
 msgid "cannot change current working directory to \"/\": %s"
 msgstr "kan inte byta aktuell katalog till \"/\": %s"
 
-#: nscd/connections.c:1696
+#: nscd/connections.c:1657
 #, c-format
 msgid "short read while reading request: %s"
 msgstr "fattas data vid läsning av begäran: %s"
 
-#: nscd/connections.c:1729
+#: nscd/connections.c:1690
 #, c-format
 msgid "key length in request too long: %d"
 msgstr "nyckellängd i begäran för lång: %d"
 
-#: nscd/connections.c:1742
+#: nscd/connections.c:1703
 #, c-format
 msgid "short read while reading request key: %s"
 msgstr "fattas data vid läsning av begäransnyckel: %s"
 
-#: nscd/connections.c:1752
+#: nscd/connections.c:1713
 #, c-format
 msgid "handle_request: request received (Version = %d) from PID %ld"
 msgstr "handle_request: begäran mottagen (Version = %d) från PID %ld"
 
-#: nscd/connections.c:1757
+#: nscd/connections.c:1718
 #, c-format
 msgid "handle_request: request received (Version = %d)"
 msgstr "handle_request: begäran mottagen (Version = %d)"
 
-#: nscd/connections.c:1897
+#: nscd/connections.c:1858
 #, c-format
 msgid "ignored inotify event for `%s` (file exists)"
 msgstr "ignorerade inotify-händelse för â??%sâ?? (filen finns)"
 
-#: nscd/connections.c:1902
+#: nscd/connections.c:1863
 #, c-format
 msgid "monitored file `%s` was %s, removing watch"
 msgstr "den övervakade filen â??%sâ?? var %s, tar bort vakten"
 
-#: nscd/connections.c:1910 nscd/connections.c:1952
+#: nscd/connections.c:1871 nscd/connections.c:1913
 #, c-format
 msgid "failed to remove file watch `%s`: %s"
 msgstr "misslyckades att ta bort filvakt â??%sâ??: %s"
 
-#: nscd/connections.c:1925
+#: nscd/connections.c:1886
 #, c-format
 msgid "monitored file `%s` was written to"
 msgstr "den övervakade filen â??%sâ?? skrevs till"
 
-#: nscd/connections.c:1949
+#: nscd/connections.c:1910
 #, c-format
 msgid "monitored parent directory `%s` was %s, removing watch on `%s`"
 msgstr "den övervakade föräldrakatalogen â??%sâ?? var %s, tar bort vakten av â??%sâ??"
 
-#: nscd/connections.c:1975
+#: nscd/connections.c:1936
 #, c-format
 msgid "monitored file `%s` was %s, adding watch"
 msgstr "den övervakade filen â??%sâ?? var %s, lägger till vakt"
 
-#: nscd/connections.c:1987
+#: nscd/connections.c:1948
 #, c-format
 msgid "failed to add file watch `%s`: %s"
 msgstr "misslyckades med att lägga till filvakt â??%sâ??: %s"
 
-#: nscd/connections.c:2181 nscd/connections.c:2362
+#: nscd/connections.c:2126 nscd/connections.c:2291
 #, c-format
 msgid "disabled inotify-based monitoring after read error %d"
 msgstr "avaktiverade inotify-baserad övervakning efter läsfel %d"
 
-#: nscd/connections.c:2477
+#: nscd/connections.c:2406
 msgid "could not initialize conditional variable"
 msgstr "kan inte initiera villkorsvariabel"
 
-#: nscd/connections.c:2485
+#: nscd/connections.c:2414
 msgid "could not start clean-up thread; terminating"
 msgstr "kunde inte starta städtråd; avslutar"
 
-#: nscd/connections.c:2499
+#: nscd/connections.c:2428
 msgid "could not start any worker thread; terminating"
 msgstr "kunde inte starta någon arbetstråd; avslutar"
 
-#: nscd/connections.c:2554 nscd/connections.c:2556 nscd/connections.c:2572
-#: nscd/connections.c:2582 nscd/connections.c:2600 nscd/connections.c:2611
-#: nscd/connections.c:2621
+#: nscd/connections.c:2483 nscd/connections.c:2485 nscd/connections.c:2501
+#: nscd/connections.c:2511 nscd/connections.c:2529 nscd/connections.c:2540
+#: nscd/connections.c:2550
 #, c-format
 msgid "Failed to run nscd as user '%s'"
 msgstr "Misslyckades att köra nscd som användare \"%s\""
 
-#: nscd/connections.c:2574
+#: nscd/connections.c:2503
 msgid "initial getgrouplist failed"
 msgstr "första getgrouplist misslyckades"
 
-#: nscd/connections.c:2583
+#: nscd/connections.c:2512
 msgid "getgrouplist failed"
 msgstr "getgrouplist misslyckades"
 
-#: nscd/connections.c:2601
+#: nscd/connections.c:2530
 msgid "setgroups failed"
 msgstr "setgroups misslyckades"
 
@@ -4760,62 +4755,41 @@ msgstr "odefinierad"
 msgid "Unrecognized variable `%s'"
 msgstr "Okänd variabel \"%s\""
 
-#: posix/getopt.c:592 posix/getopt.c:621
+#: posix/getopt.c:277
 #, c-format
-msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%s: flaggan \"%s\" är tvetydig; alternativ:"
+msgid "%s: option '%s%s' is ambiguous\n"
+msgstr "%s: flaggan â??%s%sâ?? är tvetydig\n"
 
-#: posix/getopt.c:662 posix/getopt.c:666
+#: posix/getopt.c:283
 #, c-format
-msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: flaggan \"--%s\" tar inget argument\n"
+msgid "%s: option '%s%s' is ambiguous; possibilities:"
+msgstr "%s: flaggan â??%s%sâ?? är tvetydig; alternativ:"
 
-#: posix/getopt.c:675 posix/getopt.c:680
+#: posix/getopt.c:318
 #, c-format
-msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
+msgid "%s: unrecognized option '%s%s'\n"
+msgstr "%s: okänd flagga â??%s%sâ??\n"
 
-#: posix/getopt.c:723 posix/getopt.c:742
+#: posix/getopt.c:344
 #, c-format
-msgid "%s: option '--%s' requires an argument\n"
-msgstr "%s: flaggan \"--%s\" kräver ett argument\n"
+msgid "%s: option '%s%s' doesn't allow an argument\n"
+msgstr "%s: flaggan â??%s%sâ?? tar inget argument\n"
 
-#: posix/getopt.c:780 posix/getopt.c:783
+#: posix/getopt.c:359
 #, c-format
-msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: okänd flagga \"--%s\"\n"
+msgid "%s: option '%s%s' requires an argument\n"
+msgstr "%s: flaggan â??%s%sâ?? kräver ett argument\n"
 
-#: posix/getopt.c:791 posix/getopt.c:794
-#, c-format
-msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: okänd flagga \"%c%s\"\n"
-
-#: posix/getopt.c:843 posix/getopt.c:846
+#: posix/getopt.c:620
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
 msgstr "%s: ogiltig flagga -- \"%c\"\n"
 
-#: posix/getopt.c:899 posix/getopt.c:916 posix/getopt.c:1126
-#: posix/getopt.c:1144
+#: posix/getopt.c:635 posix/getopt.c:681
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
 msgstr "%s: flaggan kräver ett argument -- \"%c\"\n"
 
-#: posix/getopt.c:972 posix/getopt.c:988
-#, c-format
-msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
-
-#: posix/getopt.c:1012 posix/getopt.c:1030
-#, c-format
-msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
-
-#: posix/getopt.c:1051 posix/getopt.c:1069
-#, c-format
-msgid "%s: option '-W %s' requires an argument\n"
-msgstr "%s: flaggan \"-W %s\" kräver ett argument\n"
-
 #: posix/regcomp.c:140
 msgid "No match"
 msgstr "Ingen träff"
@@ -4884,7 +4858,7 @@ msgstr "Obalanserade ) eller \\)"
 msgid "No previous regular expression"
 msgstr "Inget föregående reguljärt uttryck"
 
-#: posix/wordexp.c:1852
+#: posix/wordexp.c:1822
 msgid "parameter null or not set"
 msgstr "parameter är tom eller inte satt"
 
@@ -5069,7 +5043,7 @@ msgstr "Buffertplats för utdata tillgängligt"
 msgid "Input message available"
 msgstr "Inkommande meddelande tillgängligt"
 
-#: stdio-common/psiginfo-data.h:46 timezone/zdump.c:541 timezone/zic.c:483
+#: stdio-common/psiginfo-data.h:46 timezone/zdump.c:381 timezone/zic.c:520
 msgid "I/O error"
 msgstr "I/O-fel"
 
@@ -5149,170 +5123,170 @@ msgstr "Realtidssignal %d"
 msgid "Unknown signal %d"
 msgstr "Okänd signal %d"
 
-#: sunrpc/auth_unix.c:111 sunrpc/clnt_tcp.c:123 sunrpc/clnt_udp.c:135
-#: sunrpc/clnt_unix.c:124 sunrpc/svc_tcp.c:188 sunrpc/svc_tcp.c:233
-#: sunrpc/svc_udp.c:160 sunrpc/svc_unix.c:188 sunrpc/svc_unix.c:229
-#: sunrpc/xdr.c:627 sunrpc/xdr.c:787 sunrpc/xdr_array.c:101
-#: sunrpc/xdr_rec.c:152 sunrpc/xdr_ref.c:78
+#: sunrpc/auth_unix.c:112 sunrpc/clnt_tcp.c:124 sunrpc/clnt_udp.c:139
+#: sunrpc/clnt_unix.c:125 sunrpc/svc_tcp.c:189 sunrpc/svc_tcp.c:234
+#: sunrpc/svc_udp.c:161 sunrpc/svc_unix.c:189 sunrpc/svc_unix.c:230
+#: sunrpc/xdr.c:628 sunrpc/xdr.c:788 sunrpc/xdr_array.c:102
+#: sunrpc/xdr_rec.c:153 sunrpc/xdr_ref.c:79
 msgid "out of memory\n"
 msgstr "minnet slut\n"
 
-#: sunrpc/auth_unix.c:349
+#: sunrpc/auth_unix.c:350
 msgid "auth_unix.c: Fatal marshalling problem"
 msgstr "auth_unix.c: Fatalt kodningsproblem"
 
-#: sunrpc/clnt_perr.c:95 sunrpc/clnt_perr.c:111
+#: sunrpc/clnt_perr.c:96 sunrpc/clnt_perr.c:112
 #, c-format
 msgid "%s: %s; low version = %lu, high version = %lu"
 msgstr "%s: %s; undre version = %lu, övre version = %lu"
 
-#: sunrpc/clnt_perr.c:102
+#: sunrpc/clnt_perr.c:103
 #, c-format
 msgid "%s: %s; why = %s\n"
 msgstr "%s: %s; varför = %s\n"
 
-#: sunrpc/clnt_perr.c:104
+#: sunrpc/clnt_perr.c:105
 #, c-format
 msgid "%s: %s; why = (unknown authentication error - %d)\n"
 msgstr "%s: %s; varför = (okänt fel vid äkthetskontroll - %d)\n"
 
-#: sunrpc/clnt_perr.c:153
+#: sunrpc/clnt_perr.c:154
 msgid "RPC: Success"
 msgstr "RPC: Lyckat"
 
-#: sunrpc/clnt_perr.c:156
+#: sunrpc/clnt_perr.c:157
 msgid "RPC: Can't encode arguments"
 msgstr "RPC: Kan inte koda argumentet"
 
-#: sunrpc/clnt_perr.c:160
+#: sunrpc/clnt_perr.c:161
 msgid "RPC: Can't decode result"
 msgstr "RPC: Kan inte avkoda resultatet"
 
-#: sunrpc/clnt_perr.c:164
+#: sunrpc/clnt_perr.c:165
 msgid "RPC: Unable to send"
 msgstr "RPC: Kan inte skicka"
 
-#: sunrpc/clnt_perr.c:168
+#: sunrpc/clnt_perr.c:169
 msgid "RPC: Unable to receive"
 msgstr "RPC: Kan inte ta emot"
 
-#: sunrpc/clnt_perr.c:172
+#: sunrpc/clnt_perr.c:173
 msgid "RPC: Timed out"
 msgstr "RPC: Tiden löpte ut"
 
-#: sunrpc/clnt_perr.c:176
+#: sunrpc/clnt_perr.c:177
 msgid "RPC: Incompatible versions of RPC"
 msgstr "RPC: Inkompatibla versioner av RPC"
 
-#: sunrpc/clnt_perr.c:180
+#: sunrpc/clnt_perr.c:181
 msgid "RPC: Authentication error"
 msgstr "RPC: Fel vid äkthetskontroll"
 
-#: sunrpc/clnt_perr.c:184
+#: sunrpc/clnt_perr.c:185
 msgid "RPC: Program unavailable"
 msgstr "RPC: Programmet otillgängligt"
 
-#: sunrpc/clnt_perr.c:188
+#: sunrpc/clnt_perr.c:189
 msgid "RPC: Program/version mismatch"
 msgstr "RPC: Program/version-inkompatibilitet"
 
-#: sunrpc/clnt_perr.c:192
+#: sunrpc/clnt_perr.c:193
 msgid "RPC: Procedure unavailable"
 msgstr "RPC: Procedur inte tillgänglig"
 
-#: sunrpc/clnt_perr.c:196
+#: sunrpc/clnt_perr.c:197
 msgid "RPC: Server can't decode arguments"
 msgstr "RPC: Server kan inte avkoda argumenten"
 
-#: sunrpc/clnt_perr.c:200
+#: sunrpc/clnt_perr.c:201
 msgid "RPC: Remote system error"
 msgstr "RPC: Fjärrsystemsfel"
 
-#: sunrpc/clnt_perr.c:204
+#: sunrpc/clnt_perr.c:205
 msgid "RPC: Unknown host"
 msgstr "RPC: Okänd värdmaskin"
 
-#: sunrpc/clnt_perr.c:208
+#: sunrpc/clnt_perr.c:209
 msgid "RPC: Unknown protocol"
 msgstr "RPC: Okänt protokoll"
 
-#: sunrpc/clnt_perr.c:212
+#: sunrpc/clnt_perr.c:213
 msgid "RPC: Port mapper failure"
 msgstr "RPC: Fel i portöversättare"
 
-#: sunrpc/clnt_perr.c:216
+#: sunrpc/clnt_perr.c:217
 msgid "RPC: Program not registered"
 msgstr "RPC: Programmet inte registrerat"
 
-#: sunrpc/clnt_perr.c:220
+#: sunrpc/clnt_perr.c:221
 msgid "RPC: Failed (unspecified error)"
 msgstr "RPC: Misslyckades (ospecificerat fel)"
 
-#: sunrpc/clnt_perr.c:261
+#: sunrpc/clnt_perr.c:262
 msgid "RPC: (unknown error code)"
 msgstr "RPC: (okänd felkod)"
 
-#: sunrpc/clnt_perr.c:333
+#: sunrpc/clnt_perr.c:334
 msgid "Authentication OK"
 msgstr "Ã?kthetskontroll OK"
 
-#: sunrpc/clnt_perr.c:336
+#: sunrpc/clnt_perr.c:337
 msgid "Invalid client credential"
 msgstr "Ogiltiga klientreferenser"
 
-#: sunrpc/clnt_perr.c:340
+#: sunrpc/clnt_perr.c:341
 msgid "Server rejected credential"
 msgstr "Server förkastade kreditiv"
 
-#: sunrpc/clnt_perr.c:344
+#: sunrpc/clnt_perr.c:345
 msgid "Invalid client verifier"
 msgstr "Ogiltig klientverifierare"
 
-#: sunrpc/clnt_perr.c:348
+#: sunrpc/clnt_perr.c:349
 msgid "Server rejected verifier"
 msgstr "Server förkastade verifierare"
 
-#: sunrpc/clnt_perr.c:352
+#: sunrpc/clnt_perr.c:353
 msgid "Client credential too weak"
 msgstr "Klientens referenser är för svaga"
 
-#: sunrpc/clnt_perr.c:356
+#: sunrpc/clnt_perr.c:357
 msgid "Invalid server verifier"
 msgstr "Ogiltig serververifierare"
 
-#: sunrpc/clnt_perr.c:360
+#: sunrpc/clnt_perr.c:361
 msgid "Failed (unspecified error)"
 msgstr "Misslyckades (ospecificerat fel)"
 
-#: sunrpc/clnt_raw.c:115
+#: sunrpc/clnt_raw.c:116
 msgid "clnt_raw.c: fatal header serialization error"
 msgstr "clnt_raw.c: fatalt fel vid serialisering"
 
-#: sunrpc/pm_getmaps.c:77
+#: sunrpc/pm_getmaps.c:78
 msgid "pmap_getmaps.c: rpc problem"
 msgstr "pmap_getmaps.c rpc problem"
 
-#: sunrpc/pmap_clnt.c:127
+#: sunrpc/pmap_clnt.c:128
 msgid "Cannot register service"
 msgstr "Kan inte registrera tjänst"
 
-#: sunrpc/pmap_rmt.c:244
+#: sunrpc/pmap_rmt.c:245
 msgid "Cannot create socket for broadcast rpc"
 msgstr "Kan inte skapa uttag (socket) för utsändnings-rpc"
 
-#: sunrpc/pmap_rmt.c:251
+#: sunrpc/pmap_rmt.c:252
 msgid "Cannot set socket option SO_BROADCAST"
 msgstr "Kan inte sätta uttagsflaggan (socket option) SO_BROADCAST"
 
-#: sunrpc/pmap_rmt.c:303
+#: sunrpc/pmap_rmt.c:304
 msgid "Cannot send broadcast packet"
 msgstr "Kan inte skicka utsändningspaket"
 
-#: sunrpc/pmap_rmt.c:328
+#: sunrpc/pmap_rmt.c:329
 msgid "Broadcast poll problem"
 msgstr "Problem med poll vid utsändning"
 
-#: sunrpc/pmap_rmt.c:341
+#: sunrpc/pmap_rmt.c:342
 msgid "Cannot receive reply to broadcast"
 msgstr "Kan inte ta emot svar på utsändning"
 
@@ -5595,11 +5569,11 @@ msgstr "tom teckensträng"
 msgid "preprocessor error"
 msgstr "preprocessorfel"
 
-#: sunrpc/svc_run.c:71
+#: sunrpc/svc_run.c:72
 msgid "svc_run: - out of memory"
 msgstr "svc_run: - minnet slut"
 
-#: sunrpc/svc_run.c:91
+#: sunrpc/svc_run.c:92
 msgid "svc_run: - poll failed"
 msgstr "svc_run: - poll misslyckades"
 
@@ -5631,204 +5605,204 @@ msgstr "problem att svara till prog %d\n"
 msgid "never registered prog %d\n"
 msgstr "aldrig registrerat prog %d\n"
 
-#: sunrpc/svc_tcp.c:164
+#: sunrpc/svc_tcp.c:165
 msgid "svc_tcp.c - tcp socket creation problem"
 msgstr "svc_tcp.c - problem att skapa tcp-uttag (socket)"
 
-#: sunrpc/svc_tcp.c:179
+#: sunrpc/svc_tcp.c:180
 msgid "svc_tcp.c - cannot getsockname or listen"
 msgstr "svc_tcp.c - kan inte anropa getsockname eller listen"
 
-#: sunrpc/svc_udp.c:135
+#: sunrpc/svc_udp.c:136
 msgid "svcudp_create: socket creation problem"
 msgstr "svcudp_create: problem att skapa uttag (socket)"
 
-#: sunrpc/svc_udp.c:149
+#: sunrpc/svc_udp.c:150
 msgid "svcudp_create - cannot getsockname"
 msgstr "svcudp_create - kan inte anropa getsockname"
 
-#: sunrpc/svc_udp.c:181
+#: sunrpc/svc_udp.c:182
 msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n"
 msgstr "svcudp_create: xp_pad är för liten för IP_PKTINFO\n"
 
-#: sunrpc/svc_udp.c:480
+#: sunrpc/svc_udp.c:481
 msgid "enablecache: cache already enabled"
 msgstr "enablecache: cache redan påslagen"
 
-#: sunrpc/svc_udp.c:486
+#: sunrpc/svc_udp.c:487
 msgid "enablecache: could not allocate cache"
 msgstr "enablecache: kunde inte allokera cache"
 
-#: sunrpc/svc_udp.c:495
+#: sunrpc/svc_udp.c:496
 msgid "enablecache: could not allocate cache data"
 msgstr "enablecache: kunde inte allokera cache-data"
 
-#: sunrpc/svc_udp.c:503
+#: sunrpc/svc_udp.c:504
 msgid "enablecache: could not allocate cache fifo"
 msgstr "enablecache: kunde inte allokera cache-fifo"
 
-#: sunrpc/svc_udp.c:539
+#: sunrpc/svc_udp.c:540
 msgid "cache_set: victim not found"
 msgstr "cache_set: offer hittades inte"
 
-#: sunrpc/svc_udp.c:550
+#: sunrpc/svc_udp.c:551
 msgid "cache_set: victim alloc failed"
 msgstr "cache_set: offerallokering misslyckades"
 
-#: sunrpc/svc_udp.c:557
+#: sunrpc/svc_udp.c:558
 msgid "cache_set: could not allocate new rpc_buffer"
 msgstr "cache_set: kunde inte allokera ny rpc-buffert"
 
-#: sunrpc/svc_unix.c:162
+#: sunrpc/svc_unix.c:163
 msgid "svc_unix.c - AF_UNIX socket creation problem"
 msgstr "svc_unix.c - problem att skapa AF_UNIX uttag (socket)"
 
-#: sunrpc/svc_unix.c:178
+#: sunrpc/svc_unix.c:179
 msgid "svc_unix.c - cannot getsockname or listen"
 msgstr "svc_unix.c - kan inte anropa getsockname eller listen"
 
-#: sysdeps/generic/siglist.h:28
+#: sysdeps/generic/siglist.h:29
 msgid "Hangup"
 msgstr "Avringd"
 
-#: sysdeps/generic/siglist.h:29
+#: sysdeps/generic/siglist.h:30
 msgid "Interrupt"
 msgstr "Avbruten (SIGINT)"
 
-#: sysdeps/generic/siglist.h:30
+#: sysdeps/generic/siglist.h:31
 msgid "Quit"
 msgstr "Lämnad"
 
-#: sysdeps/generic/siglist.h:31
+#: sysdeps/generic/siglist.h:32
 msgid "Illegal instruction"
 msgstr "Otillåten instruktion"
 
-#: sysdeps/generic/siglist.h:32
+#: sysdeps/generic/siglist.h:33
 msgid "Trace/breakpoint trap"
 msgstr "Spårningsfälla"
 
-#: sysdeps/generic/siglist.h:33
+#: sysdeps/generic/siglist.h:34
 msgid "Aborted"
 msgstr "Avbruten (SIGABRT)"
 
-#: sysdeps/generic/siglist.h:34
+#: sysdeps/generic/siglist.h:35
 msgid "Floating point exception"
 msgstr "Flyttalsfel"
 
-#: sysdeps/generic/siglist.h:35
+#: sysdeps/generic/siglist.h:36
 msgid "Killed"
 msgstr "Dödad"
 
-#: sysdeps/generic/siglist.h:36
+#: sysdeps/generic/siglist.h:37
 msgid "Bus error"
 msgstr "Bussfel"
 
-#: sysdeps/generic/siglist.h:37
+#: sysdeps/generic/siglist.h:38
+msgid "Bad system call"
+msgstr "Felaktigt systemanrop"
+
+#: sysdeps/generic/siglist.h:39
 msgid "Segmentation fault"
 msgstr "Segmenteringsfel"
 
-#. TRANS Broken pipe; there is no process reading from the other end of a pipe.
+#. TRANS 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:38 sysdeps/gnu/errlist.c:360
+#: sysdeps/generic/siglist.h:40 sysdeps/gnu/errlist.c:360
 msgid "Broken pipe"
 msgstr "Brutet rör"
 
-#: sysdeps/generic/siglist.h:39
+#: sysdeps/generic/siglist.h:41
 msgid "Alarm clock"
 msgstr "Alarmklocka"
 
-#: sysdeps/generic/siglist.h:40
+#: sysdeps/generic/siglist.h:42
 msgid "Terminated"
 msgstr "Avslutad"
 
-#: sysdeps/generic/siglist.h:41
+#: sysdeps/generic/siglist.h:43
 msgid "Urgent I/O condition"
 msgstr "Akut I/O-tillstånd"
 
-#: sysdeps/generic/siglist.h:42
+#: sysdeps/generic/siglist.h:44
 msgid "Stopped (signal)"
 msgstr "Stoppad (signal)"
 
-#: sysdeps/generic/siglist.h:43
+#: sysdeps/generic/siglist.h:45
 msgid "Stopped"
 msgstr "Stoppad"
 
-#: sysdeps/generic/siglist.h:44
+#: sysdeps/generic/siglist.h:46
 msgid "Continued"
 msgstr "Ã?terupptagen"
 
-#: sysdeps/generic/siglist.h:45
+#: sysdeps/generic/siglist.h:47
 msgid "Child exited"
 msgstr "Barnprocess avslutad"
 
-#: sysdeps/generic/siglist.h:46
+#: sysdeps/generic/siglist.h:48
 msgid "Stopped (tty input)"
 msgstr "Stoppad (terminalläsning)"
 
-#: sysdeps/generic/siglist.h:47
+#: sysdeps/generic/siglist.h:49
 msgid "Stopped (tty output)"
 msgstr "Stoppad (terminalskrivning)"
 
-#: sysdeps/generic/siglist.h:48
+#: sysdeps/generic/siglist.h:50
 msgid "I/O possible"
 msgstr "I/O möjligt"
 
-#: sysdeps/generic/siglist.h:49
+#: sysdeps/generic/siglist.h:51
 msgid "CPU time limit exceeded"
 msgstr "Begränsning av CPU-tid överskriden"
 
-#: sysdeps/generic/siglist.h:50
+#: sysdeps/generic/siglist.h:52
 msgid "File size limit exceeded"
 msgstr "Begränsning av filstorlek överskriden"
 
-#: sysdeps/generic/siglist.h:51
+#: sysdeps/generic/siglist.h:53
 msgid "Virtual timer expired"
 msgstr "Alarmklocka - virtuell tid"
 
-#: sysdeps/generic/siglist.h:52
+#: sysdeps/generic/siglist.h:54
 msgid "Profiling timer expired"
 msgstr "Profileringsklocka"
 
-#: sysdeps/generic/siglist.h:53
+#: sysdeps/generic/siglist.h:55
 msgid "User defined signal 1"
 msgstr "Användarsignal 1"
 
-#: sysdeps/generic/siglist.h:54
+#: sysdeps/generic/siglist.h:56
 msgid "User defined signal 2"
 msgstr "Användarsignal 2"
 
-#: sysdeps/generic/siglist.h:58
-msgid "EMT trap"
-msgstr "Emulatorfälla"
+#: sysdeps/generic/siglist.h:57
+msgid "Window changed"
+msgstr "�ndrat fönster"
 
 #: sysdeps/generic/siglist.h:61
-msgid "Bad system call"
-msgstr "Felaktigt systemanrop"
+msgid "EMT trap"
+msgstr "Emulatorfälla"
 
 #: sysdeps/generic/siglist.h:64
 msgid "Stack fault"
 msgstr "Stackfel"
 
 #: sysdeps/generic/siglist.h:67
-msgid "Information request"
-msgstr "Informationsbegäran"
-
-#: sysdeps/generic/siglist.h:69
 msgid "Power failure"
 msgstr "Strömavbrott"
 
-#: sysdeps/generic/siglist.h:72
+#: sysdeps/generic/siglist.h:70
+msgid "Information request"
+msgstr "Informationsbegäran"
+
+#: sysdeps/generic/siglist.h:73
 msgid "Resource lost"
 msgstr "Förlorad resurs"
 
-#: sysdeps/generic/siglist.h:75
-msgid "Window changed"
-msgstr "�ndrat fönster"
-
-#. TRANS Operation not permitted; only the owner of the file (or other resource)
+#. TRANS Only the owner of the file (or other resource)
 #. TRANS or processes with special privileges can perform the operation.
 #: sysdeps/gnu/errlist.c:26
 msgid "Operation not permitted"
@@ -5839,7 +5813,7 @@ msgstr "Operationen inte tillåten"
 msgid "No such process"
 msgstr "Processen finns inte"
 
-#. TRANS Interrupted function call; an asynchronous signal occurred and prevented
+#. TRANS An asynchronous signal occurred and prevented
 #. TRANS completion of the call.  When this happens, you should try the call
 #. TRANS again.
 #. TRANS
@@ -5850,12 +5824,12 @@ msgstr "Processen finns inte"
 msgid "Interrupted system call"
 msgstr "Avbrutet systemanrop"
 
-#. TRANS Input/output error; usually used for physical read or write errors.
+#. TRANS Usually used for physical read or write errors.
 #: sysdeps/gnu/errlist.c:70
 msgid "Input/output error"
 msgstr "In/ut-fel"
 
-#. TRANS No such device or address.  The system tried to use the device
+#. TRANS 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
@@ -5864,7 +5838,7 @@ msgstr "In/ut-fel"
 msgid "No such device or address"
 msgstr "Enheten eller adressen finns inte"
 
-#. TRANS Argument list too long; used when the arguments passed to a new program
+#. TRANS 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 on
 #. TRANS @gnuhurdsystems{}.
@@ -5878,21 +5852,21 @@ msgstr "Argumentlistan för lång"
 msgid "Exec format error"
 msgstr "Formatfel på körbar fil"
 
-#. TRANS Bad file descriptor; for example, I/O on a descriptor that has been
+#. TRANS 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:116
 msgid "Bad file descriptor"
 msgstr "Felaktig filidentifierare"
 
-#. TRANS There are no child processes.  This error happens on operations that are
+#. TRANS 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:127
 msgid "No child processes"
 msgstr "Inga barnprocesser"
 
-#. TRANS Deadlock avoided; allocating a system resource would have resulted in a
+#. TRANS 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.
@@ -5900,13 +5874,13 @@ msgstr "Inga barnprocesser"
 msgid "Resource deadlock avoided"
 msgstr "Resursdödläge undveks"
 
-#. TRANS No memory available.  The system cannot allocate more virtual memory
+#. TRANS The system cannot allocate more virtual memory
 #. TRANS because its capacity is full.
 #: sysdeps/gnu/errlist.c:149
 msgid "Cannot allocate memory"
 msgstr "Kan inte allokera minne"
 
-#. TRANS Bad address; an invalid pointer was detected.
+#. TRANS An invalid pointer was detected.
 #. TRANS On @gnuhurdsystems{}, this error never happens; you get a signal instead.
 #: sysdeps/gnu/errlist.c:168
 msgid "Bad address"
@@ -5919,14 +5893,14 @@ msgstr "Felaktig adress"
 msgid "Block device required"
 msgstr "Blockenhet krävs"
 
-#. TRANS Resource busy; a system resource that can't be shared is already in use.
+#. TRANS 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:190
 msgid "Device or resource busy"
 msgstr "Enhet eller resurs upptagen"
 
-#. TRANS File exists; an existing file was specified in a context where it only
+#. TRANS An existing file was specified in a context where it only
 #. TRANS makes sense to specify a new file.
 #: sysdeps/gnu/errlist.c:200
 msgid "File exists"
@@ -5950,13 +5924,13 @@ msgstr "Enheten finns inte"
 msgid "Not a directory"
 msgstr "Inte en katalog"
 
-#. TRANS File is a directory; you cannot open a directory for writing,
+#. TRANS You cannot open a directory for writing,
 #. TRANS or create or remove hard links to it.
 #: sysdeps/gnu/errlist.c:240
 msgid "Is a directory"
 msgstr "Ã?r en katalog"
 
-#. TRANS Invalid argument.  This is used to indicate various kinds of problems
+#. TRANS This is used to indicate various kinds of problems
 #. TRANS with passing the wrong argument to a library function.
 #: sysdeps/gnu/errlist.c:250
 msgid "Invalid argument"
@@ -5995,12 +5969,12 @@ msgstr "Olämplig ioctl för enheten"
 msgid "Text file busy"
 msgstr "Kodfil upptagen"
 
-#. TRANS File too big; the size of a file would be larger than allowed by the system.
+#. TRANS The size of a file would be larger than allowed by the system.
 #: sysdeps/gnu/errlist.c:308
 msgid "File too large"
 msgstr "För stor fil"
 
-#. TRANS No space left on device; write operation on a file failed because the
+#. TRANS Write operation on a file failed because the
 #. TRANS disk is full.
 #: sysdeps/gnu/errlist.c:318
 msgid "No space left on device"
@@ -6016,26 +5990,26 @@ msgstr "Otillåten sökning"
 msgid "Read-only file system"
 msgstr "Skrivskyddat filsystem"
 
-#. TRANS Too many links; the link count of a single file would become too large.
+#. TRANS 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:347
 msgid "Too many links"
 msgstr "För många länkar"
 
-#. TRANS Domain error; used by mathematical functions when an argument value does
+#. TRANS 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:370
 msgid "Numerical argument out of domain"
 msgstr "Numeriskt argument är utanför området"
 
-#. TRANS Range error; used by mathematical functions when the result value is
+#. TRANS Used by mathematical functions when the result value is
 #. TRANS not representable because of overflow or underflow.
 #: sysdeps/gnu/errlist.c:380
 msgid "Numerical result out of range"
 msgstr "Numeriskt resultat är utanför giltigt intervall"
 
-#. TRANS Resource temporarily unavailable; the call might work if you try again
+#. TRANS 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 @theglibc{}.
 #. TRANS
@@ -6223,76 +6197,75 @@ msgstr "Destinationsadress krävs"
 msgid "Cannot send after transport endpoint shutdown"
 msgstr "Kan inte skicka efter att transportslutpunkten stängts"
 
-#. TRANS ???
-#: sysdeps/gnu/errlist.c:677
+#: sysdeps/gnu/errlist.c:676
 msgid "Too many references: cannot splice"
 msgstr "För många referenser: kan inte skarva"
 
 #. TRANS A socket operation with a specified timeout received no response during
 #. TRANS the timeout period.
-#: sysdeps/gnu/errlist.c:687
+#: sysdeps/gnu/errlist.c:686
 msgid "Connection timed out"
 msgstr "Förbindelsens tidsgräns löpte ut"
 
 #. TRANS A remote host refused to allow the network connection (typically because
 #. TRANS it is not running the requested service).
-#: sysdeps/gnu/errlist.c:697
+#: sysdeps/gnu/errlist.c:696
 msgid "Connection refused"
 msgstr "Förbindelsen förvägrad"
 
 #. 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:707
+#: sysdeps/gnu/errlist.c:706
 msgid "Too many levels of symbolic links"
 msgstr "För många nivåer av symboliska länkar"
 
 #. 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:718
+#: sysdeps/gnu/errlist.c:717
 msgid "File name too long"
 msgstr "För långt filnamn"
 
 #. TRANS The remote host for a requested network connection is down.
-#: sysdeps/gnu/errlist.c:727
+#: sysdeps/gnu/errlist.c:726
 msgid "Host is down"
 msgstr "Värddator är nere"
 
 #. TRANS The remote host for a requested network connection is not reachable.
-#: sysdeps/gnu/errlist.c:736
+#: sysdeps/gnu/errlist.c:735
 msgid "No route to host"
 msgstr "Ingen väg till värd"
 
 #. 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:746
+#: sysdeps/gnu/errlist.c:745
 msgid "Directory not empty"
 msgstr "Katalog inte tom"
 
 #. 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:757
+#: sysdeps/gnu/errlist.c:756
 msgid "Too many processes"
 msgstr "För många processer"
 
 #. 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:767
+#: sysdeps/gnu/errlist.c:766
 msgid "Too many users"
 msgstr "För många användare"
 
 #. TRANS The user's disk quota was exceeded.
-#: sysdeps/gnu/errlist.c:776
+#: sysdeps/gnu/errlist.c:775
 msgid "Disk quota exceeded"
 msgstr "Diskkvot överskriden"
 
-#. TRANS Stale file handle.  This indicates an internal confusion in the
+#. TRANS This indicates an internal confusion in the
 #. TRANS file system which is due to file system rearrangements on the server host
 #. TRANS for NFS file systems or corruption in other file systems.
 #. TRANS Repairing this condition usually requires unmounting, possibly repairing
 #. TRANS and remounting the file system.
-#: sysdeps/gnu/errlist.c:789
+#: sysdeps/gnu/errlist.c:788
 msgid "Stale file handle"
 msgstr "Förlegat filhandtag"
 
@@ -6300,72 +6273,65 @@ msgstr "Förlegat filhandtag"
 #. 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 @gnuhurdsystems{}, making this error code impossible.)
-#: sysdeps/gnu/errlist.c:801
+#: sysdeps/gnu/errlist.c:800
 msgid "Object is remote"
 msgstr "�r ett fjärrobjekt"
 
-#. TRANS ???
-#: sysdeps/gnu/errlist.c:810
+#: sysdeps/gnu/errlist.c:808
 msgid "RPC struct is bad"
 msgstr "RPC-strukturen är felaktig"
 
-#. TRANS ???
-#: sysdeps/gnu/errlist.c:819
+#: sysdeps/gnu/errlist.c:816
 msgid "RPC version wrong"
 msgstr "RPC-versionen är felaktig"
 
-#. TRANS ???
-#: sysdeps/gnu/errlist.c:828
+#: sysdeps/gnu/errlist.c:824
 msgid "RPC program not available"
 msgstr "RPC-programmet inte tillgängligt"
 
-#. TRANS ???
-#: sysdeps/gnu/errlist.c:837
+#: sysdeps/gnu/errlist.c:832
 msgid "RPC program version wrong"
 msgstr "RPC-programversionen är felaktig"
 
-#. TRANS ???
-#: sysdeps/gnu/errlist.c:846
+#: sysdeps/gnu/errlist.c:840
 msgid "RPC bad procedure for program"
 msgstr "Felaktig RPC-procedur för programmet"
 
-#. TRANS No locks available.  This is used by the file locking facilities; see
+#. TRANS This is used by the file locking facilities; see
 #. TRANS @ref{File Locks}.  This error is never generated by @gnuhurdsystems{}, but
 #. TRANS it can result from an operation to an NFS server running another
 #. TRANS operating system.
-#: sysdeps/gnu/errlist.c:858
+#: sysdeps/gnu/errlist.c:852
 msgid "No locks available"
 msgstr "Inga lås tillgängliga"
 
-#. TRANS Inappropriate file type or format.  The file was the wrong type for the
+#. TRANS 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:871
+#: sysdeps/gnu/errlist.c:865
 msgid "Inappropriate file type or format"
 msgstr "Filtyp eller format olämplig"
 
-#. TRANS ???
-#: sysdeps/gnu/errlist.c:880
+#: sysdeps/gnu/errlist.c:873
 msgid "Authentication error"
 msgstr "Autentiseringsfel"
 
-#. TRANS ???
-#: sysdeps/gnu/errlist.c:889
+#: sysdeps/gnu/errlist.c:881
 msgid "Need authenticator"
 msgstr "Behöver autentiserare"
 
-#. TRANS Function not implemented.  This indicates that the function called is
+#. TRANS 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:902
+#: sysdeps/gnu/errlist.c:894
 msgid "Function not implemented"
 msgstr "Funktion inte implementerad"
 
-#. TRANS Not supported.  A function returns this error when certain parameter
+#. TRANS 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
@@ -6377,13 +6343,13 @@ msgstr "Funktion inte implementerad"
 #. TRANS
 #. TRANS If the entire function is not available at all in the implementation,
 #. TRANS it returns @code{ENOSYS} instead.
-#: sysdeps/gnu/errlist.c:922
+#: sysdeps/gnu/errlist.c:914
 msgid "Not supported"
 msgstr "Stöds ej"
 
 #. 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:932
+#: sysdeps/gnu/errlist.c:924
 msgid "Invalid or incomplete multibyte or wide character"
 msgstr "Ogiltigt eller ofullständigt flerbyte- eller brett tecken"
 
@@ -6393,276 +6359,276 @@ msgstr "Ogiltigt eller ofullständigt flerbyte- eller brett tecken"
 #. 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:946
+#: sysdeps/gnu/errlist.c:938
 msgid "Inappropriate operation for background process"
 msgstr "Operation för bakgrundsprocess olämplig"
 
 #. TRANS On @gnuhurdsystems{}, 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:957
+#: sysdeps/gnu/errlist.c:949
 msgid "Translator died"
 msgstr "�versättaren dog"
 
 #. 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:968
+#: sysdeps/gnu/errlist.c:960
 msgid "?"
 msgstr "?"
 
 #. TRANS You did @strong{what}?
-#: sysdeps/gnu/errlist.c:977
+#: sysdeps/gnu/errlist.c:969
 msgid "You really blew it this time"
 msgstr "Du strulade till det den här gången"
 
 #. TRANS Go home and have a glass of warm, dairy-fresh milk.
-#: sysdeps/gnu/errlist.c:986
+#: sysdeps/gnu/errlist.c:978
 msgid "Computer bought the farm"
 msgstr "Datorn packade ihop"
 
 #. TRANS This error code has no purpose.
-#: sysdeps/gnu/errlist.c:995
+#: sysdeps/gnu/errlist.c:987
 msgid "Gratuitous error"
 msgstr "Omotiverat fel"
 
-#: sysdeps/gnu/errlist.c:1003
+#: sysdeps/gnu/errlist.c:995
 msgid "Bad message"
 msgstr "Felaktigt meddelande"
 
-#: sysdeps/gnu/errlist.c:1011
+#: sysdeps/gnu/errlist.c:1003
 msgid "Identifier removed"
 msgstr "Identifierare borttagen"
 
-#: sysdeps/gnu/errlist.c:1019
+#: sysdeps/gnu/errlist.c:1011
 msgid "Multihop attempted"
 msgstr "Flerhopp försöktes"
 
-#: sysdeps/gnu/errlist.c:1027
+#: sysdeps/gnu/errlist.c:1019
 msgid "No data available"
 msgstr "Inga data tillgängliga"
 
-#: sysdeps/gnu/errlist.c:1035
+#: sysdeps/gnu/errlist.c:1027
 msgid "Link has been severed"
 msgstr "Länken har brutits"
 
-#: sysdeps/gnu/errlist.c:1043
+#: sysdeps/gnu/errlist.c:1035
 msgid "No message of desired type"
 msgstr "Inget meddelande av önskad typ"
 
-#: sysdeps/gnu/errlist.c:1051
+#: sysdeps/gnu/errlist.c:1043
 msgid "Out of streams resources"
 msgstr "Stream-resurserna är slut"
 
-#: sysdeps/gnu/errlist.c:1059
+#: sysdeps/gnu/errlist.c:1051
 msgid "Device not a stream"
 msgstr "Enheten är inte en stream"
 
-#: sysdeps/gnu/errlist.c:1067
+#: sysdeps/gnu/errlist.c:1059
 msgid "Value too large for defined data type"
 msgstr "Värdet för stort för definierad datatyp"
 
-#: sysdeps/gnu/errlist.c:1075
+#: sysdeps/gnu/errlist.c:1067
 msgid "Protocol error"
 msgstr "Protokollfel"
 
-#: sysdeps/gnu/errlist.c:1083
+#: sysdeps/gnu/errlist.c:1075
 msgid "Timer expired"
 msgstr "Klockan ringde"
 
-#. TRANS Operation canceled; an asynchronous operation was canceled before it
+#. TRANS 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:1095
+#: sysdeps/gnu/errlist.c:1087
 msgid "Operation canceled"
 msgstr "Operationen avbruten"
 
-#: sysdeps/gnu/errlist.c:1103
+#: sysdeps/gnu/errlist.c:1095
 msgid "Interrupted system call should be restarted"
 msgstr "Avbrutet systemanrop borde omstartas"
 
-#: sysdeps/gnu/errlist.c:1111
+#: sysdeps/gnu/errlist.c:1103
 msgid "Channel number out of range"
 msgstr "Kanalnummer utanför giltigt intervall"
 
-#: sysdeps/gnu/errlist.c:1119
+#: sysdeps/gnu/errlist.c:1111
 msgid "Level 2 not synchronized"
 msgstr "Nivå 2 inte synkroniserad"
 
-#: sysdeps/gnu/errlist.c:1127
+#: sysdeps/gnu/errlist.c:1119
 msgid "Level 3 halted"
 msgstr "Nivå 3 stannad"
 
-#: sysdeps/gnu/errlist.c:1135
+#: sysdeps/gnu/errlist.c:1127
 msgid "Level 3 reset"
 msgstr "Nivå 3 omstartad"
 
-#: sysdeps/gnu/errlist.c:1143
+#: sysdeps/gnu/errlist.c:1135
 msgid "Link number out of range"
 msgstr "Länkantal utanför giltigt intervall"
 
-#: sysdeps/gnu/errlist.c:1151
+#: sysdeps/gnu/errlist.c:1143
 msgid "Protocol driver not attached"
 msgstr "Styrprogram för protokoll inte anslutet"
 
-#: sysdeps/gnu/errlist.c:1159
+#: sysdeps/gnu/errlist.c:1151
 msgid "No CSI structure available"
 msgstr "Inga CSI-strukturer tillgängliga"
 
-#: sysdeps/gnu/errlist.c:1167
+#: sysdeps/gnu/errlist.c:1159
 msgid "Level 2 halted"
 msgstr "Nivå 2 stannad"
 
-#: sysdeps/gnu/errlist.c:1175
+#: sysdeps/gnu/errlist.c:1167
 msgid "Invalid exchange"
 msgstr "Ogiltig växel"
 
-#: sysdeps/gnu/errlist.c:1183
+#: sysdeps/gnu/errlist.c:1175
 msgid "Invalid request descriptor"
-msgstr "Ogiltig begärandeidendiferare"
+msgstr "Ogiltig begärandeidentifierare"
 
-#: sysdeps/gnu/errlist.c:1191
+#: sysdeps/gnu/errlist.c:1183
 msgid "Exchange full"
 msgstr "Växeln full"
 
-#: sysdeps/gnu/errlist.c:1199
+#: sysdeps/gnu/errlist.c:1191
 msgid "No anode"
 msgstr "Ingen anod"
 
-#: sysdeps/gnu/errlist.c:1207
+#: sysdeps/gnu/errlist.c:1199
 msgid "Invalid request code"
 msgstr "Ogiltig begärandekod"
 
-#: sysdeps/gnu/errlist.c:1215
+#: sysdeps/gnu/errlist.c:1207
 msgid "Invalid slot"
 msgstr "Ogiltig plats"
 
-#: sysdeps/gnu/errlist.c:1223
+#: sysdeps/gnu/errlist.c:1215
 msgid "File locking deadlock error"
 msgstr "Fillåsning gav dödläge"
 
-#: sysdeps/gnu/errlist.c:1231
+#: sysdeps/gnu/errlist.c:1223
 msgid "Bad font file format"
 msgstr "Felaktigt format på typsnittsfil"
 
-#: sysdeps/gnu/errlist.c:1239
+#: sysdeps/gnu/errlist.c:1231
 msgid "Machine is not on the network"
 msgstr "Maskinen finns inte på nätverket"
 
-#: sysdeps/gnu/errlist.c:1247
+#: sysdeps/gnu/errlist.c:1239
 msgid "Package not installed"
 msgstr "Paketet är inte installerat"
 
-#: sysdeps/gnu/errlist.c:1255
+#: sysdeps/gnu/errlist.c:1247
 msgid "Advertise error"
 msgstr "Annonseringsfel"
 
-#: sysdeps/gnu/errlist.c:1263
+#: sysdeps/gnu/errlist.c:1255
 msgid "Srmount error"
 msgstr "Srmount-fel"
 
-#: sysdeps/gnu/errlist.c:1271
+#: sysdeps/gnu/errlist.c:1263
 msgid "Communication error on send"
 msgstr "Kommunikationsfel vid sändning"
 
-#: sysdeps/gnu/errlist.c:1279
+#: sysdeps/gnu/errlist.c:1271
 msgid "RFS specific error"
 msgstr "RFS-specifikt fel"
 
-#: sysdeps/gnu/errlist.c:1287
+#: sysdeps/gnu/errlist.c:1279
 msgid "Name not unique on network"
 msgstr "Namnet inte unikt i nätverket"
 
-#: sysdeps/gnu/errlist.c:1295
+#: sysdeps/gnu/errlist.c:1287
 msgid "File descriptor in bad state"
 msgstr "Filidentifierare i felaktigt tillstånd"
 
-#: sysdeps/gnu/errlist.c:1303
+#: sysdeps/gnu/errlist.c:1295
 msgid "Remote address changed"
 msgstr "Fjärradress ändrades"
 
-#: sysdeps/gnu/errlist.c:1311
+#: sysdeps/gnu/errlist.c:1303
 msgid "Can not access a needed shared library"
 msgstr "Kan inte komma åt ett nödvändigt delat bibliotek"
 
-#: sysdeps/gnu/errlist.c:1319
+#: sysdeps/gnu/errlist.c:1311
 msgid "Accessing a corrupted shared library"
 msgstr "Ã?ppnar ett korrupt delat bibliotek"
 
-#: sysdeps/gnu/errlist.c:1327
+#: sysdeps/gnu/errlist.c:1319
 msgid ".lib section in a.out corrupted"
 msgstr ".lib-sektion i a.out korrupt"
 
-#: sysdeps/gnu/errlist.c:1335
+#: sysdeps/gnu/errlist.c:1327
 msgid "Attempting to link in too many shared libraries"
 msgstr "Försöker att länka in för många delade bibliotek"
 
-#: sysdeps/gnu/errlist.c:1343
+#: sysdeps/gnu/errlist.c:1335
 msgid "Cannot exec a shared library directly"
 msgstr "Kan inte köra ett delat bibliotek direkt"
 
-#: sysdeps/gnu/errlist.c:1351
+#: sysdeps/gnu/errlist.c:1343
 msgid "Streams pipe error"
 msgstr "Streams-rörfel"
 
-#: sysdeps/gnu/errlist.c:1359
+#: sysdeps/gnu/errlist.c:1351
 msgid "Structure needs cleaning"
 msgstr "Strukturen behöver städas"
 
-#: sysdeps/gnu/errlist.c:1367
+#: sysdeps/gnu/errlist.c:1359
 msgid "Not a XENIX named type file"
 msgstr "Inte en XENIX-namngiven fil"
 
-#: sysdeps/gnu/errlist.c:1375
+#: sysdeps/gnu/errlist.c:1367
 msgid "No XENIX semaphores available"
 msgstr "Inga XENIX-semaforer tillgängliga"
 
-#: sysdeps/gnu/errlist.c:1383
+#: sysdeps/gnu/errlist.c:1375
 msgid "Is a named type file"
 msgstr "Ã?r av typ namnfil"
 
-#: sysdeps/gnu/errlist.c:1391
+#: sysdeps/gnu/errlist.c:1383
 msgid "Remote I/O error"
 msgstr "I/O-fel på fjärrmaskin"
 
-#: sysdeps/gnu/errlist.c:1399
+#: sysdeps/gnu/errlist.c:1391
 msgid "No medium found"
 msgstr "Inget medium funnet"
 
-#: sysdeps/gnu/errlist.c:1407
+#: sysdeps/gnu/errlist.c:1399
 msgid "Wrong medium type"
 msgstr "Fel medietyp"
 
-#: sysdeps/gnu/errlist.c:1415
+#: sysdeps/gnu/errlist.c:1407
 msgid "Required key not available"
 msgstr "Obligatorisk nyckel inte tillgänglig"
 
-#: sysdeps/gnu/errlist.c:1423
+#: sysdeps/gnu/errlist.c:1415
 msgid "Key has expired"
 msgstr "Nyckeln har gått ut"
 
-#: sysdeps/gnu/errlist.c:1431
+#: sysdeps/gnu/errlist.c:1423
 msgid "Key has been revoked"
 msgstr "Nyckeln har återkallats"
 
-#: sysdeps/gnu/errlist.c:1439
+#: sysdeps/gnu/errlist.c:1431
 msgid "Key was rejected by service"
 msgstr "Nyckeln accepterades inte av tjänsten"
 
-#: sysdeps/gnu/errlist.c:1447
+#: sysdeps/gnu/errlist.c:1439
 msgid "Owner died"
 msgstr "Ã?garen dog"
 
-#: sysdeps/gnu/errlist.c:1455
+#: sysdeps/gnu/errlist.c:1447
 msgid "State not recoverable"
 msgstr "Det går inte att återhämta från tillståndet"
 
-#: sysdeps/gnu/errlist.c:1463
+#: sysdeps/gnu/errlist.c:1455
 msgid "Operation not possible due to RF-kill"
 msgstr "Operationen inte möjlig p.g.a. RF-kill"
 
-#: sysdeps/gnu/errlist.c:1471
+#: sysdeps/gnu/errlist.c:1463
 msgid "Memory page has hardware error"
 msgstr "Minnessida har hårdvarufel"
 
@@ -6767,73 +6733,90 @@ msgstr "kan inte öppna \"%s\""
 msgid "cannot read header from `%s'"
 msgstr "kan inte läsa huvud från \"%s\""
 
-#: timezone/zdump.c:494
+#: timezone/zdump.c:338
 msgid "has fewer than 3 characters"
 msgstr "har färre än 3 tecken"
 
-#: timezone/zdump.c:496
+#: timezone/zdump.c:340
 msgid "has more than 6 characters"
 msgstr "har fler än 6 tecken"
 
-#: timezone/zdump.c:498
+#: timezone/zdump.c:342
 msgid "has characters other than ASCII alphanumerics, '-' or '+'"
 msgstr "har andra tecken än ASCII alfanumeriska, â??-â?? eller â??+â??"
 
-#: timezone/zdump.c:503
+#: timezone/zdump.c:347
 #, c-format
 msgid "%s: warning: zone \"%s\" abbreviation \"%s\" %s\n"
 msgstr "%s: varning: zon \"%s\" förkortning \"%s\": %s\n"
 
-#: timezone/zdump.c:553
+#: timezone/zdump.c:393
 #, c-format
 msgid ""
-"%s: usage: %s [--version] [--help] [-{vV}] [-{ct} [lo,]hi] zonename ...\n"
+"%s: usage: %s OPTIONS ZONENAME ...\n"
+"Options include:\n"
+"  -c [L,]U   Start at year L (default -500), end before year U (default 2500)\n"
+"  -t [L,]U   Start at time L, end before time U (in seconds since 1970)\n"
+"  -i         List transitions briefly (format is experimental)\n"
+"  -v         List transitions verbosely\n"
+"  -V         List transitions a bit less verbosely\n"
+"  --help     Output this help\n"
+"  --version  Output version info\n"
 "\n"
 "Report bugs to %s.\n"
 msgstr ""
-"%s: användning: %s [ --version ] [ --help ] [ -{vV} ] [ -{ct} [start,]slut] zonnamn ...\n"
+"%s: användning: %s FLAGGOR ZONNAMN �\n"
+"Flaggorna inkluderar:\n"
+"  -c [L,]�   Starta vid år L (standard -500), och sluta före år � (standard 2500)\n"
+"  -t [L,]�   Starta vid tid L, och sluta före tid � (i sekunder sedan 1970)\n"
+"  -i         Lista övergångar kort (formatet är experimentellt)\n"
+"  -v         Lista övergångar utförligt\n"
+"  -V         Lista övergångar lite mindre utförligt\n"
+"  --help     Skriv ut denna hjälp\n"
+"  --version  Skriv ut versionsinformation\n"
+"\n"
 "Rapportera fel till %s.\n"
 "Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
 
-#: timezone/zdump.c:635
+#: timezone/zdump.c:479
 #, c-format
 msgid "%s: wild -c argument %s\n"
 msgstr "%s: argument \"%s\" till flaggan -c har fel format\n"
 
-#: timezone/zdump.c:668
+#: timezone/zdump.c:512
 #, c-format
 msgid "%s: wild -t argument %s\n"
 msgstr "%s: argument \"%s\" till flaggan -t har fel format\n"
 
-#: timezone/zic.c:361
+#: timezone/zic.c:398
 #, c-format
 msgid "%s: Memory exhausted: %s\n"
 msgstr "%s: Minnet slut: %s\n"
 
-#: timezone/zic.c:369
+#: timezone/zic.c:406
 msgid "size overflow"
 msgstr "för stor storlek"
 
-#: timezone/zic.c:416
-msgid "int overflow"
-msgstr "för stort heltal"
+#: timezone/zic.c:454
+msgid "integer overflow"
+msgstr "heltalsspill"
 
-#: timezone/zic.c:451
+#: timezone/zic.c:488
 #, c-format
-msgid "\"%s\", line %d: "
-msgstr "\"%s\", rad %d: "
+msgid "\"%s\", line %<PRIdMAX>: "
+msgstr "â??%sâ??, rad %<PRIdMAX>: "
 
-#: timezone/zic.c:454
+#: timezone/zic.c:491
 #, c-format
-msgid " (rule from \"%s\", line %d)"
-msgstr " (regel från \"%s\", rad %d)"
+msgid " (rule from \"%s\", line %<PRIdMAX>)"
+msgstr " (regel frÃ¥n â??%sâ??, rad %<PRIdMAX>)"
 
-#: timezone/zic.c:473
+#: timezone/zic.c:510
 #, c-format
 msgid "warning: "
 msgstr "varning: "
 
-#: timezone/zic.c:498
+#: timezone/zic.c:535
 #, c-format
 msgid ""
 "%s: usage is %s [ --version ] [ --help ] [ -v ] \\\n"
@@ -6849,361 +6832,382 @@ msgstr ""
 "Rapportera fel till %s.\n"
 "Rapportera fel eller synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
 
-#: timezone/zic.c:534
+#: timezone/zic.c:558
+#, c-format
+msgid "%s: Can't chdir to %s: %s\n"
+msgstr "%s: Kan inte byta katalog till %s: %s\n"
+
+#: timezone/zic.c:590
 msgid "wild compilation-time specification of zic_t"
 msgstr "definitionen av zic_t vid kompilering är orimlig"
 
-#: timezone/zic.c:554
+#: timezone/zic.c:610
 #, c-format
 msgid "%s: More than one -d option specified\n"
 msgstr "%s: Flaggan -d given mer än en gång\n"
 
-#: timezone/zic.c:564
+#: timezone/zic.c:620
 #, c-format
 msgid "%s: More than one -l option specified\n"
 msgstr "%s: Flaggan -l given mer än en gång\n"
 
-#: timezone/zic.c:574
+#: timezone/zic.c:630
 #, c-format
 msgid "%s: More than one -p option specified\n"
 msgstr "%s: Flaggan -p given mer än en gång\n"
 
-#: timezone/zic.c:584
+#: timezone/zic.c:640
 #, c-format
 msgid "%s: More than one -y option specified\n"
 msgstr "%s: Flaggan -y given mer än en gång\n"
 
-#: timezone/zic.c:594
+#: timezone/zic.c:650
 #, c-format
 msgid "%s: More than one -L option specified\n"
 msgstr "%s: Flaggan -L given mer än en gång\n"
 
-#: timezone/zic.c:603
+#: timezone/zic.c:659
 msgid "-s ignored"
 msgstr "-s ignoreras"
 
-#: timezone/zic.c:641
+#: timezone/zic.c:698
 msgid "link to link"
 msgstr "länk till länk"
 
-#: timezone/zic.c:644 timezone/zic.c:648
+#: timezone/zic.c:701 timezone/zic.c:705
 msgid "command line"
 msgstr "kommandorad"
 
-#: timezone/zic.c:664
+#: timezone/zic.c:721
 msgid "empty file name"
 msgstr "tomt filnamn"
 
-#: timezone/zic.c:667
+#: timezone/zic.c:724
 #, c-format
 msgid "file name '%s' begins with '/'"
 msgstr "filnamnet â??%sâ?? börjar med â??/â??"
 
-#: timezone/zic.c:676
+#: timezone/zic.c:734
 #, c-format
 msgid "file name '%s' contains '%.*s' component"
 msgstr "filnamnet â??%sâ?? innehÃ¥ller en komponent â??%.*sâ??"
 
-#: timezone/zic.c:682
+#: timezone/zic.c:740
 #, c-format
 msgid "file name '%s' component contains leading '-'"
 msgstr "en komponent i filnamnet â??%sâ?? innehÃ¥ller en inledande â??-â??"
 
-#: timezone/zic.c:685
+#: timezone/zic.c:743
 #, c-format
 msgid "file name '%s' contains overlength component '%.*s...'"
 msgstr "filnamnet â??%sâ?? innehÃ¥ller en för lÃ¥ng komponent â??%.*sâ?¦â??"
 
-#: timezone/zic.c:713
+#: timezone/zic.c:771
 #, c-format
 msgid "file name '%s' contains byte '%c'"
 msgstr "filnamnet â??%sâ?? innehÃ¥ller en byte â??%câ??"
 
-#: timezone/zic.c:714
+#: timezone/zic.c:772
 #, c-format
 msgid "file name '%s' contains byte '\\%o'"
 msgstr "filnamnet â??%sâ?? innehÃ¥ller en byte â??\\%oâ??"
 
-#: timezone/zic.c:757
+#: timezone/zic.c:842
+#, c-format
+msgid "%s: link from %s/%s failed: %s\n"
+msgstr "%s: länk från %s/%s misslyckades: %s\n"
+
+#: timezone/zic.c:852 timezone/zic.c:1815
+#, c-format
+msgid "%s: Can't remove %s/%s: %s\n"
+msgstr "%s: Kan inte ta bort %s/%s: %s\n"
+
+#: timezone/zic.c:874
 #, c-format
-msgid "%s: link from %s failed: %s"
-msgstr "%s: länk från %s misslyckades: %s"
+msgid "symbolic link used because hard link failed: %s"
+msgstr "symbolisk länk använd eftersom en hård länk misslyckades: %s"
 
-#: timezone/zic.c:792
-msgid "hard link failed, symbolic link used"
-msgstr "hård länk misslyckades, använder symbolisk länk"
+#: timezone/zic.c:882
+#, c-format
+msgid "%s: Can't read %s/%s: %s\n"
+msgstr "%s: Kan inte läsa %s/%s: %s\n"
 
-#: timezone/zic.c:802
+#: timezone/zic.c:889 timezone/zic.c:1828
 #, c-format
-msgid "%s: Can't read %s: %s\n"
-msgstr "%s: Kan inte läsa %s: %s\n"
+msgid "%s: Can't create %s/%s: %s\n"
+msgstr "%s: Kan inte skapa %s/%s: %s\n"
 
-#: timezone/zic.c:810 timezone/zic.c:1701
+#: timezone/zic.c:898
 #, c-format
-msgid "%s: Can't create %s: %s\n"
-msgstr "%s: Kan inte skapa %s: %s\n"
+msgid "copy used because hard link failed: %s"
+msgstr "kopiering använd eftersom en hård länk misslyckades: %s"
 
-#: timezone/zic.c:818
-msgid "link failed, copy used"
-msgstr "länka misslyckades, kopia skapad"
+#: timezone/zic.c:901
+#, c-format
+msgid "copy used because symbolic link failed: %s"
+msgstr "kopiering använd eftersom en symbolisk länk misslyckades: %s"
 
-#: timezone/zic.c:913 timezone/zic.c:915
+#: timezone/zic.c:1013 timezone/zic.c:1015
 msgid "same rule name in multiple files"
 msgstr "samma regelnamn i flera filer"
 
-#: timezone/zic.c:956
+#: timezone/zic.c:1056
 msgid "unruly zone"
 msgstr "besvärlig zon"
 
-#: timezone/zic.c:963
+#: timezone/zic.c:1063
 #, c-format
 msgid "%s in ruleless zone"
 msgstr "%s i zon utan regler"
 
-#: timezone/zic.c:983
+#: timezone/zic.c:1083
 msgid "standard input"
 msgstr "standard in"
 
-#: timezone/zic.c:988
+#: timezone/zic.c:1088
 #, c-format
 msgid "%s: Can't open %s: %s\n"
 msgstr "%s: Kan inte öppna %s: %s\n"
 
-#: timezone/zic.c:999
+#: timezone/zic.c:1099
 msgid "line too long"
 msgstr "för lång rad"
 
-#: timezone/zic.c:1019
+#: timezone/zic.c:1119
 msgid "input line of unknown type"
 msgstr "inrad av okänd typ"
 
-#: timezone/zic.c:1034
+#: timezone/zic.c:1134
 #, c-format
 msgid "%s: Leap line in non leap seconds file %s"
 msgstr "%s: \"Leap\"-rad i fil %s som inte är skottsekundsfil"
 
-#: timezone/zic.c:1042 timezone/zic.c:1447 timezone/zic.c:1469
+#: timezone/zic.c:1142 timezone/zic.c:1547 timezone/zic.c:1569
 #, c-format
 msgid "%s: panic: Invalid l_value %d\n"
 msgstr "%s: panik: Ogiltigt l_value %d\n"
 
-#: timezone/zic.c:1051
+#: timezone/zic.c:1151
 msgid "expected continuation line not found"
 msgstr "förväntad fortsättningsrad inte funnen"
 
-#: timezone/zic.c:1093 timezone/zic.c:2826
+#: timezone/zic.c:1193 timezone/zic.c:2976
 msgid "time overflow"
 msgstr "för stort tidsvärde"
 
-#: timezone/zic.c:1098
+#: timezone/zic.c:1198
 msgid "values over 24 hours not handled by pre-2007 versions of zic"
 msgstr "värden större än 24 timmar hanteras inte av zic-versioner före 2007"
 
-#: timezone/zic.c:1109
+#: timezone/zic.c:1209
 msgid "wrong number of fields on Rule line"
 msgstr "fel antal fält på \"Rule\"-rad"
 
-#: timezone/zic.c:1113
+#: timezone/zic.c:1213
 msgid "nameless rule"
 msgstr "namnlös regel"
 
-#: timezone/zic.c:1118
+#: timezone/zic.c:1218
 msgid "invalid saved time"
 msgstr "ogiltig sparad tid"
 
-#: timezone/zic.c:1135
+#: timezone/zic.c:1235
 msgid "wrong number of fields on Zone line"
 msgstr "fel antal fält på \"Zone\"-rad"
 
-#: timezone/zic.c:1140
+#: timezone/zic.c:1240
 #, c-format
 msgid "\"Zone %s\" line and -l option are mutually exclusive"
 msgstr "\"Zone %s\"-rad och flaggan -l är ömsesidigt uteslutande"
 
-#: timezone/zic.c:1146
+#: timezone/zic.c:1246
 #, c-format
 msgid "\"Zone %s\" line and -p option are mutually exclusive"
 msgstr "\"Zone %s\"-rad och flaggan -p är ömsesidigt uteslutande"
 
-#: timezone/zic.c:1154
+#: timezone/zic.c:1253
 #, c-format
-msgid "duplicate zone name %s (file \"%s\", line %d)"
-msgstr "dubblerat zonnamn %s (fil \"%s\", rad %d)"
+msgid "duplicate zone name %s (file \"%s\", line %<PRIdMAX>)"
+msgstr "dubblerat zonnamn %s (filen â??%sâ??, rad %<PRIdMAX>)"
 
-#: timezone/zic.c:1167
+#: timezone/zic.c:1267
 msgid "wrong number of fields on Zone continuation line"
 msgstr "fel antal fält på \"Zone\"-fortsättningsrad"
 
-#: timezone/zic.c:1207
+#: timezone/zic.c:1307
 msgid "invalid UT offset"
 msgstr "ogiltigt UT-tillägg"
 
-#: timezone/zic.c:1211
+#: timezone/zic.c:1311
 msgid "invalid abbreviation format"
 msgstr "ogiltigt förkortningsformat"
 
-#: timezone/zic.c:1220
+#: timezone/zic.c:1320
 #, c-format
 msgid "format '%s' not handled by pre-2015 versions of zic"
 msgstr "formatet â??%sâ?? hanteras inte av versioner av zic före 2015"
 
-#: timezone/zic.c:1247
+#: timezone/zic.c:1347
 msgid "Zone continuation line end time is not after end time of previous line"
 msgstr "Zon-fortsättningsradens sluttid är inte efter sluttiden på föregående rad"
 
-#: timezone/zic.c:1274
+#: timezone/zic.c:1374
 msgid "wrong number of fields on Leap line"
 msgstr "fel antal fält på \"Leap\"-rad"
 
-#: timezone/zic.c:1283
+#: timezone/zic.c:1383
 msgid "invalid leaping year"
 msgstr "ogiltigt skottår"
 
-#: timezone/zic.c:1303 timezone/zic.c:1401
+#: timezone/zic.c:1403 timezone/zic.c:1501
 msgid "invalid month name"
 msgstr "ogiltigt månadsnamn"
 
-#: timezone/zic.c:1316 timezone/zic.c:1514 timezone/zic.c:1528
+#: timezone/zic.c:1416 timezone/zic.c:1614 timezone/zic.c:1628
 msgid "invalid day of month"
 msgstr "ogiltig dag i månaden"
 
-#: timezone/zic.c:1321
+#: timezone/zic.c:1421
 msgid "time too small"
 msgstr "tid för kort"
 
-#: timezone/zic.c:1325
+#: timezone/zic.c:1425
 msgid "time too large"
 msgstr "tid för lång"
 
-#: timezone/zic.c:1329 timezone/zic.c:1430
+#: timezone/zic.c:1429 timezone/zic.c:1530
 msgid "invalid time of day"
 msgstr "ogiltig tid på dagen"
 
-#: timezone/zic.c:1348
+#: timezone/zic.c:1448
 msgid "illegal CORRECTION field on Leap line"
 msgstr "otillåtet \"CORRECTION\"-fält på \"Leap\"-rad"
 
-#: timezone/zic.c:1353
+#: timezone/zic.c:1453
 msgid "illegal Rolling/Stationary field on Leap line"
 msgstr "otillåtet \"Rolling/Stationary\"-fält på \"Leap\"-rad"
 
-#: timezone/zic.c:1359
+#: timezone/zic.c:1459
 msgid "leap second precedes Big Bang"
 msgstr "skottsekund föregår Big Bang"
 
-#: timezone/zic.c:1372
+#: timezone/zic.c:1472
 msgid "wrong number of fields on Link line"
 msgstr "fel antal fält på \"Link\"-rad"
 
-#: timezone/zic.c:1376
+#: timezone/zic.c:1476
 msgid "blank FROM field on Link line"
 msgstr "tomt \"FROM\"-fält på \"Link\"-rad"
 
-#: timezone/zic.c:1451
+#: timezone/zic.c:1551
 msgid "invalid starting year"
 msgstr "ogiltigt startår"
 
-#: timezone/zic.c:1473
+#: timezone/zic.c:1573
 msgid "invalid ending year"
 msgstr "ogiltigt slutår"
 
-#: timezone/zic.c:1477
+#: timezone/zic.c:1577
 msgid "starting year greater than ending year"
 msgstr "startår är större än slutår"
 
-#: timezone/zic.c:1484
+#: timezone/zic.c:1584
 msgid "typed single year"
 msgstr "satte typ på endast ett år"
 
-#: timezone/zic.c:1519
+#: timezone/zic.c:1619
 msgid "invalid weekday name"
 msgstr "ogiltigt veckodagsnamn"
 
-#: timezone/zic.c:1638
+#: timezone/zic.c:1743
+#, c-format
+msgid "reference clients mishandle more than %d transition times"
+msgstr "referensklienter hanterar fler än %d övergångstider felaktigt"
+
+#: timezone/zic.c:1747
 msgid "pre-2014 clients may mishandle more than 1200 transition times"
 msgstr "klienter från före 2014 kan hantera fler än 1200 övergångstider felaktigt"
 
-#: timezone/zic.c:1691
-#, c-format
-msgid "%s: Can't remove %s: %s\n"
-msgstr "%s: Kan inte ta bort %s: %s\n"
+#: timezone/zic.c:1858
+msgid "too many transition times"
+msgstr "för många övergångstider"
 
-#: timezone/zic.c:1918
+#: timezone/zic.c:2047
 #, c-format
 msgid "%%z UTC offset magnitude exceeds 99:59:59"
 msgstr "%%z storleken på avståndet från UTC överstiger 99.59.59"
 
-#: timezone/zic.c:2291
+#: timezone/zic.c:2424
 msgid "no POSIX environment variable for zone"
 msgstr "ingen POSIX-miljövariabel för zon"
 
-#: timezone/zic.c:2297
+#: timezone/zic.c:2430
 #, c-format
 msgid "%s: pre-%d clients may mishandle distant timestamps"
 msgstr "%s: klienter före %d kan hantera avlägsna tidsstämplar felaktigt"
 
-#: timezone/zic.c:2428
+#: timezone/zic.c:2566
 msgid "two rules for same instant"
 msgstr "två regler för samma tillfälle"
 
-#: timezone/zic.c:2485
+#: timezone/zic.c:2627
 msgid "can't determine time zone abbreviation to use just after until time"
 msgstr "kan inte avgöra tidszonsförkortning att använda just efter \"until\"-tid"
 
-#: timezone/zic.c:2531 timezone/zic.c:2593
+#: timezone/zic.c:2725
 msgid "too many local time types"
 msgstr "för många lokala tidstyper"
 
-#: timezone/zic.c:2597
+#: timezone/zic.c:2729
 msgid "UT offset out of range"
 msgstr "UT-offset utanför giltigt intervall"
 
-#: timezone/zic.c:2621
+#: timezone/zic.c:2753
 msgid "too many leap seconds"
 msgstr "för många skottsekunder"
 
-#: timezone/zic.c:2627
+#: timezone/zic.c:2759
 msgid "repeated leap second moment"
 msgstr "upprepat skottsekundstillfälle"
 
-#: timezone/zic.c:2677
+#: timezone/zic.c:2830
 msgid "Wild result from command execution"
 msgstr "Vilt resultat från kommandokörning"
 
-#: timezone/zic.c:2678
+#: timezone/zic.c:2831
 #, c-format
 msgid "%s: command was '%s', result was %d\n"
 msgstr "%s: kommandot var \"%s\", resultatet blev %d\n"
 
-#: timezone/zic.c:2810
+#: timezone/zic.c:2961
 msgid "Odd number of quotation marks"
 msgstr "Ojämnt antal citationstecken"
 
-#: timezone/zic.c:2896
+#: timezone/zic.c:3046
 msgid "use of 2/29 in non leap-year"
 msgstr "använder 29/2 i icke-skottår"
 
-#: timezone/zic.c:2931
+#: timezone/zic.c:3081
 msgid "rule goes past start/end of month; will not work with pre-2004 versions of zic"
 msgstr "regeln går utanför start/slut på månad; fungerar inte med versioner av zic före 2004"
 
-#: timezone/zic.c:2958
+#: timezone/zic.c:3108
 msgid "time zone abbreviation has fewer than 3 characters"
 msgstr "tidszonsförkortning har färre än 3 tecken"
 
-#: timezone/zic.c:2960
+#: timezone/zic.c:3110
 msgid "time zone abbreviation has too many characters"
 msgstr "tidszonsförkortning har för många tecken"
 
-#: timezone/zic.c:2962
+#: timezone/zic.c:3112
 msgid "time zone abbreviation differs from POSIX standard"
 msgstr "tidszonsförkortning skiljer sig från POSIX-standarden"
 
-#: timezone/zic.c:2968
+#: timezone/zic.c:3118
 msgid "too many, or too long, time zone abbreviations"
 msgstr "för många eller för långa tidszonsförkortningar"
 
-#: timezone/zic.c:3004
+#: timezone/zic.c:3161
 #, c-format
 msgid "%s: Can't create directory %s: %s"
 msgstr "%s: Kan inte skapa katalog %s: %s"

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=e39de9fa74e81b03c91377a3770d06df9933d645

commit e39de9fa74e81b03c91377a3770d06df9933d645
Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date:   Tue Oct 10 15:44:39 2017 +0530

    memcpy_falkor: Fix code style in comments

diff --git a/ChangeLog b/ChangeLog
index 0ef88b0..e1e0cdd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2017-10-10  Siddhesh Poyarekar  <siddhesh@sourceware.org>
 
+	* sysdeps/aarch64/multiarch/memcpy_falkor.S: Fix code style in
+	comments.
+
 	* manual/tunables.texi (Tunable glibc.tune.cpu): Add falkor.
 	* sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add
 	memcpy_falkor.
diff --git a/sysdeps/aarch64/multiarch/memcpy_falkor.S b/sysdeps/aarch64/multiarch/memcpy_falkor.S
index 3708281..dea4f22 100644
--- a/sysdeps/aarch64/multiarch/memcpy_falkor.S
+++ b/sysdeps/aarch64/multiarch/memcpy_falkor.S
@@ -20,10 +20,8 @@
 #include <sysdep.h>
 
 /* Assumptions:
- *
- * ARMv8-a, AArch64, falkor, unaligned accesses.
- *
- */
+
+   ARMv8-a, AArch64, falkor, unaligned accesses.  */
 
 #define dstin	x0
 #define src	x1
@@ -53,14 +51,13 @@
    conditionals, since the former would unnecessarily break across multiple
    issue groups.  The medium copy group has been enlarged to 128 bytes since
    bumping up the small copies up to 32 bytes allows us to do that without
-   cost and also allows us the reduce the size of the prep code before loop64.
+   cost and also allows us to reduce the size of the prep code before loop64.
 
    All copies are done only via two registers r6 and r7.  This is to ensure
    that all loads hit a single hardware prefetcher which can get correctly
    trained to prefetch a single stream.
 
-   The non-temporal stores help optimize cache utilization.
-*/
+   The non-temporal stores help optimize cache utilization.  */
 
 #if IS_IN (libc)
 ENTRY_ALIGN (__memcpy_falkor, 6)

http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=b21ec6c6b80e316143b0914a5c81e9543bbdcc5b

commit b21ec6c6b80e316143b0914a5c81e9543bbdcc5b
Author: Siddhesh Poyarekar <siddhesh@sourceware.org>
Date:   Tue Oct 10 15:43:52 2017 +0530

    aarch64: Optimized memcpy for Qualcomm Falkor processor
    
    This is an optimized implementation of the memcpy routine that gives a
    significant gain in performance for all sizes of copies on the
    Qualcomm Falkor processor.  A detailed rationale of the implementation
    is written in a comment in the patch.
    
    This implementation improves time for copies up to 128 bytes by up to
    15% and for larger copies by up to 35% in the glibc
    microbenchmark. The memcpy-random benchmark sees improvements in all
    sizes in the range of 13%-18%.
    
    Here are the full numbers extracted from the glibc microbenchmark
    using the commands:
    
    ../benchtests/scripts/compare_strings.py benchtests/bench-memcpy.out \
    		../benchtests/scripts/benchout_strings.schema.json \
    		-base=__memcpy_generic length align1 align2
    
    ../benchtests/scripts/compare_strings.py benchtests/bench-memcpy-large.out \
    		../benchtests/scripts/benchout_strings.schema.json \
    		-base=__memcpy_generic length align1 align2
    
    ../benchtests/scripts/compare_strings.py benchtests/bench-memcpy-random.out \
    		../benchtests/scripts/benchout_strings.schema.json \
    		-base=__memcpy_generic max-size
    
    Function: memcpy
    __memcpy_thunderx       __memcpy_falkor __memcpy_generic
    Variant: default
    ================================================================================
    length=1,align1=0,align2=0:     33.59 (-115.00%)        15.62 (0.00%)   15.62
    length=1,align1=0,align2=0:     16.41 (-10.53%) 14.06 (5.26%)   14.84
    length=1,align1=0,align2=0:     14.84 (0.00%)   14.84 (0.00%)   14.84
    length=1,align1=0,align2=0:     15.62 (-5.26%)  14.06 (5.26%)   14.84
    length=2,align1=0,align2=0:     15.62 (-5.26%)  14.06 (5.26%)   14.84
    length=2,align1=1,align2=0:     15.62 (-5.26%)  14.06 (5.26%)   14.84
    length=2,align1=0,align2=1:     14.84 (0.00%)   14.06 (5.26%)   14.84
    length=2,align1=1,align2=1:     14.84 (-5.56%)  14.06 (0.00%)   14.06
    length=4,align1=0,align2=0:     14.06 (0.00%)   14.06 (0.00%)   14.06
    length=4,align1=2,align2=0:     14.06 (-5.88%)  14.06 (-5.88%)  13.28
    length=4,align1=0,align2=2:     14.06 (0.00%)   14.06 (0.00%)   14.06
    length=4,align1=2,align2=2:     14.06 (-5.88%)  14.06 (-5.88%)  13.28
    length=8,align1=0,align2=0:     14.84 (-5.56%)  13.28 (5.56%)   14.06
    length=8,align1=3,align2=0:     14.06 (0.00%)   13.28 (5.56%)   14.06
    length=8,align1=0,align2=3:     13.28 (0.00%)   13.28 (0.00%)   13.28
    length=8,align1=3,align2=3:     13.28 (-6.25%)  13.28 (-6.25%)  12.50
    length=16,align1=0,align2=0:    13.28 (0.00%)   13.28 (0.00%)   13.28
    length=16,align1=4,align2=0:    13.28 (0.00%)   12.50 (5.88%)   13.28
    length=16,align1=0,align2=4:    13.28 (0.00%)   13.28 (0.00%)   13.28
    length=16,align1=4,align2=4:    13.28 (-6.25%)  12.50 (0.00%)   12.50
    length=32,align1=0,align2=0:    14.06 (0.00%)   12.50 (11.11%)  14.06
    length=32,align1=5,align2=0:    13.28 (0.00%)   12.50 (5.88%)   13.28
    length=32,align1=0,align2=5:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=32,align1=5,align2=5:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=64,align1=0,align2=0:    14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=64,align1=6,align2=0:    13.28 (0.00%)   13.28 (0.00%)   13.28
    length=64,align1=0,align2=6:    14.06 (5.26%)   14.06 (5.26%)   14.84
    length=64,align1=6,align2=6:    14.84 (-11.77%) 14.06 (-5.88%)  13.28
    length=128,align1=0,align2=0:   17.19 (-4.76%)  14.84 (9.52%)   16.41
    length=128,align1=7,align2=0:   16.41 (4.55%)   15.62 (9.09%)   17.19
    length=128,align1=0,align2=7:   16.41 (0.00%)   14.06 (14.29%)  16.41
    length=128,align1=7,align2=7:   16.41 (4.55%)   15.62 (9.09%)   17.19
    length=256,align1=0,align2=0:   21.88 (-3.70%)  21.09 (0.00%)   21.09
    length=256,align1=8,align2=0:   21.09 (-3.85%)  21.09 (-3.85%)  20.31
    length=256,align1=0,align2=8:   20.31 (-4.00%)  20.31 (-4.00%)  19.53
    length=256,align1=8,align2=8:   21.88 (-7.69%)  20.31 (0.00%)   20.31
    length=512,align1=0,align2=0:   28.91 (-2.78%)  28.91 (-2.78%)  28.12
    length=512,align1=9,align2=0:   30.47 (-2.63%)  30.47 (-2.63%)  29.69
    length=512,align1=0,align2=9:   29.69 (0.00%)   29.69 (0.00%)   29.69
    length=512,align1=9,align2=9:   28.12 (-2.86%)  28.12 (-2.86%)  27.34
    length=1024,align1=0,align2=0:  44.53 (0.00%)   44.53 (0.00%)   44.53
    length=1024,align1=10,align2=0:         50.00 (0.00%)   50.00 (0.00%)   50.00
    length=1024,align1=0,align2=10:         49.22 (1.56%)   50.78 (-1.56%)  50.00
    length=1024,align1=10,align2=10:        44.53 (-1.79%)  43.75 (0.00%)   43.75
    length=2048,align1=0,align2=0:  77.34 (-1.02%)  76.56 (0.00%)   76.56
    length=2048,align1=11,align2=0:         89.84 (0.00%)   89.84 (0.00%)   89.84
    length=2048,align1=0,align2=11:         89.84 (0.00%)   89.84 (0.00%)   89.84
    length=2048,align1=11,align2=11:        75.78 (0.00%)   75.78 (0.00%)   75.78
    length=4096,align1=0,align2=0:  141.41 (-0.56%) 140.62 (0.00%)  140.62
    length=4096,align1=12,align2=0:         171.09 (-0.46%) 170.31 (0.00%)  170.31
    length=4096,align1=0,align2=12:         170.31 (0.00%)  170.31 (0.00%)  170.31
    length=4096,align1=12,align2=12:        140.62 (0.00%)  140.62 (0.00%)  140.62
    length=8192,align1=0,align2=0:  278.91 (-0.28%) 275.78 (0.84%)  278.12
    length=8192,align1=13,align2=0:         338.28 (0.23%)  335.94 (0.92%)  339.06
    length=8192,align1=0,align2=13:         338.28 (0.00%)  455.47 (-34.64%)        338.28
    length=8192,align1=13,align2=13:        278.12 (-0.28%) 275.78 (0.56%)  277.34
    length=16384,align1=0,align2=0:         535.94 (-0.15%) 531.25 (0.73%)  535.16
    length=16384,align1=14,align2=0:        659.38 (0.12%)  659.38 (0.12%)  660.16
    length=16384,align1=0,align2=14:        659.38 (0.00%)  657.03 (0.36%)  659.38
    length=16384,align1=14,align2=14:       535.16 (0.44%)  532.81 (0.87%)  537.50
    length=32768,align1=0,align2=0:         1260.94 (10.68%)        1121.88 (20.53%)        1411.72
    length=32768,align1=15,align2=0:        1368.75 (10.02%)        1376.56 (9.50%) 1521.09
    length=32768,align1=0,align2=15:        1333.59 (10.91%)        1373.44 (8.25%) 1496.88
    length=32768,align1=15,align2=15:       1256.25 (13.96%)        1125.78 (22.90%)        1460.16
    length=65536,align1=0,align2=0:         2853.91 (30.11%)        2589.06 (36.60%)        4083.59
    length=65536,align1=16,align2=0:        2850.00 (30.14%)        2589.84 (36.52%)        4079.69
    length=65536,align1=0,align2=16:        2853.12 (30.60%)        2589.84 (37.00%)        4110.94
    length=65536,align1=16,align2=16:       2850.78 (30.07%)        2589.06 (36.49%)        4076.56
    length=0,align1=0,align2=0:     15.62 (-5.26%)  16.41 (-10.53%) 14.84
    length=0,align1=0,align2=0:     14.84 (-5.56%)  14.84 (-5.56%)  14.06
    length=0,align1=0,align2=0:     14.84 (0.00%)   14.84 (0.00%)   14.84
    length=0,align1=0,align2=0:     16.41 (-16.67%) 14.84 (-5.56%)  14.06
    length=1,align1=0,align2=0:     15.62 (4.76%)   15.62 (4.76%)   16.41
    length=1,align1=1,align2=0:     15.62 (0.00%)   14.84 (5.00%)   15.62
    length=1,align1=0,align2=1:     14.84 (0.00%)   14.84 (0.00%)   14.84
    length=1,align1=1,align2=1:     14.84 (0.00%)   14.06 (5.26%)   14.84
    length=2,align1=0,align2=0:     14.84 (0.00%)   14.06 (5.26%)   14.84
    length=2,align1=2,align2=0:     14.84 (0.00%)   14.06 (5.26%)   14.84
    length=2,align1=0,align2=2:     14.84 (-5.56%)  14.06 (0.00%)   14.06
    length=2,align1=2,align2=2:     14.84 (0.00%)   14.06 (5.26%)   14.84
    length=3,align1=0,align2=0:     14.84 (0.00%)   14.84 (0.00%)   14.84
    length=3,align1=3,align2=0:     14.84 (-5.56%)  14.06 (0.00%)   14.06
    length=3,align1=0,align2=3:     15.62 (-11.11%) 14.06 (0.00%)   14.06
    length=3,align1=3,align2=3:     14.84 (0.00%)   14.06 (5.26%)   14.84
    length=4,align1=0,align2=0:     17.97 (-27.78%) 14.06 (0.00%)   14.06
    length=4,align1=4,align2=0:     13.28 (5.56%)   14.06 (0.00%)   14.06
    length=4,align1=0,align2=4:     14.06 (0.00%)   13.28 (5.56%)   14.06
    length=4,align1=4,align2=4:     13.28 (5.56%)   13.28 (5.56%)   14.06
    length=5,align1=0,align2=0:     13.28 (5.56%)   13.28 (5.56%)   14.06
    length=5,align1=5,align2=0:     14.06 (0.00%)   14.06 (0.00%)   14.06
    length=5,align1=0,align2=5:     14.06 (0.00%)   13.28 (5.56%)   14.06
    length=5,align1=5,align2=5:     14.06 (-5.88%)  14.06 (-5.88%)  13.28
    length=6,align1=0,align2=0:     14.06 (-5.88%)  14.06 (-5.88%)  13.28
    length=6,align1=6,align2=0:     14.06 (0.00%)   14.06 (0.00%)   14.06
    length=6,align1=0,align2=6:     14.06 (0.00%)   13.28 (5.56%)   14.06
    length=6,align1=6,align2=6:     14.06 (0.00%)   13.28 (5.56%)   14.06
    length=7,align1=0,align2=0:     14.84 (-11.77%) 14.06 (-5.88%)  13.28
    length=7,align1=7,align2=0:     13.28 (0.00%)   14.06 (-5.88%)  13.28
    length=7,align1=0,align2=7:     14.06 (0.00%)   14.06 (0.00%)   14.06
    length=7,align1=7,align2=7:     14.06 (0.00%)   14.06 (0.00%)   14.06
    length=8,align1=0,align2=0:     14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=8,align1=8,align2=0:     14.06 (0.00%)   13.28 (5.56%)   14.06
    length=8,align1=0,align2=8:     13.28 (0.00%)   13.28 (0.00%)   13.28
    length=8,align1=8,align2=8:     14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=9,align1=0,align2=0:     13.28 (0.00%)   13.28 (0.00%)   13.28
    length=9,align1=9,align2=0:     13.28 (0.00%)   13.28 (0.00%)   13.28
    length=9,align1=0,align2=9:     13.28 (0.00%)   14.06 (-5.88%)  13.28
    length=9,align1=9,align2=9:     14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=10,align1=0,align2=0:    14.06 (0.00%)   13.28 (5.56%)   14.06
    length=10,align1=10,align2=0:   14.06 (-5.88%)  14.06 (-5.88%)  13.28
    length=10,align1=0,align2=10:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=10,align1=10,align2=10:  14.06 (0.00%)   13.28 (5.56%)   14.06
    length=11,align1=0,align2=0:    14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=11,align1=11,align2=0:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=11,align1=0,align2=11:   13.28 (0.00%)   13.28 (0.00%)   13.28
    length=11,align1=11,align2=11:  13.28 (0.00%)   13.28 (0.00%)   13.28
    length=12,align1=0,align2=0:    14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=12,align1=12,align2=0:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=12,align1=0,align2=12:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=12,align1=12,align2=12:  14.06 (0.00%)   13.28 (5.56%)   14.06
    length=13,align1=0,align2=0:    14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=13,align1=13,align2=0:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=13,align1=0,align2=13:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=13,align1=13,align2=13:  13.28 (0.00%)   13.28 (0.00%)   13.28
    length=14,align1=0,align2=0:    13.28 (0.00%)   13.28 (0.00%)   13.28
    length=14,align1=14,align2=0:   13.28 (5.56%)   13.28 (5.56%)   14.06
    length=14,align1=0,align2=14:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=14,align1=14,align2=14:  14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=15,align1=0,align2=0:    14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=15,align1=15,align2=0:   14.06 (-5.88%)  14.06 (-5.88%)  13.28
    length=15,align1=0,align2=15:   13.28 (0.00%)   13.28 (0.00%)   13.28
    length=15,align1=15,align2=15:  13.28 (0.00%)   14.06 (-5.88%)  13.28
    length=16,align1=0,align2=0:    14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=16,align1=16,align2=0:   13.28 (5.56%)   14.06 (0.00%)   14.06
    length=16,align1=0,align2=16:   14.84 (-11.77%) 13.28 (0.00%)   13.28
    length=16,align1=16,align2=16:  13.28 (-6.25%)  12.50 (0.00%)   12.50
    length=17,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=17,align1=17,align2=0:   14.84 (-11.77%) 12.50 (5.88%)   13.28
    length=17,align1=0,align2=17:   14.84 (-5.56%)  12.50 (11.11%)  14.06
    length=17,align1=17,align2=17:  14.84 (-11.77%) 12.50 (5.88%)   13.28
    length=18,align1=0,align2=0:    14.06 (0.00%)   12.50 (11.11%)  14.06
    length=18,align1=18,align2=0:   13.28 (5.56%)   12.50 (11.11%)  14.06
    length=18,align1=0,align2=18:   14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=18,align1=18,align2=18:  14.06 (0.00%)   12.50 (11.11%)  14.06
    length=19,align1=0,align2=0:    14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=19,align1=19,align2=0:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=19,align1=0,align2=19:   14.84 (-5.56%)  12.50 (11.11%)  14.06
    length=19,align1=19,align2=19:  14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=20,align1=0,align2=0:    14.84 (-11.77%) 12.50 (5.88%)   13.28
    length=20,align1=20,align2=0:   14.06 (0.00%)   12.50 (11.11%)  14.06
    length=20,align1=0,align2=20:   14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=20,align1=20,align2=20:  14.06 (0.00%)   13.28 (5.56%)   14.06
    length=21,align1=0,align2=0:    14.84 (-5.56%)  12.50 (11.11%)  14.06
    length=21,align1=21,align2=0:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=21,align1=0,align2=21:   14.84 (-11.77%) 12.50 (5.88%)   13.28
    length=21,align1=21,align2=21:  13.28 (5.56%)   13.28 (5.56%)   14.06
    length=22,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=22,align1=22,align2=0:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=22,align1=0,align2=22:   14.06 (0.00%)   12.50 (11.11%)  14.06
    length=22,align1=22,align2=22:  14.06 (0.00%)   12.50 (11.11%)  14.06
    length=23,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=23,align1=23,align2=0:   14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=23,align1=0,align2=23:   14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=23,align1=23,align2=23:  14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=24,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=24,align1=24,align2=0:   14.06 (0.00%)   13.28 (5.56%)   14.06
    length=24,align1=0,align2=24:   14.84 (-11.77%) 12.50 (5.88%)   13.28
    length=24,align1=24,align2=24:  14.06 (-5.88%)  13.28 (0.00%)   13.28
    length=25,align1=0,align2=0:    14.06 (0.00%)   12.50 (11.11%)  14.06
    length=25,align1=25,align2=0:   14.06 (0.00%)   13.28 (5.56%)   14.06
    length=25,align1=0,align2=25:   14.06 (0.00%)   12.50 (11.11%)  14.06
    length=25,align1=25,align2=25:  13.28 (0.00%)   13.28 (0.00%)   13.28
    length=26,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=26,align1=26,align2=0:   14.06 (0.00%)   13.28 (5.56%)   14.06
    length=26,align1=0,align2=26:   14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=26,align1=26,align2=26:  14.06 (0.00%)   13.28 (5.56%)   14.06
    length=27,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=27,align1=27,align2=0:   14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=27,align1=0,align2=27:   14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=27,align1=27,align2=27:  14.06 (0.00%)   12.50 (11.11%)  14.06
    length=28,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=28,align1=28,align2=0:   14.06 (0.00%)   12.50 (11.11%)  14.06
    length=28,align1=0,align2=28:   14.06 (0.00%)   12.50 (11.11%)  14.06
    length=28,align1=28,align2=28:  14.84 (-11.77%) 13.28 (0.00%)   13.28
    length=29,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=29,align1=29,align2=0:   13.28 (0.00%)   12.50 (5.88%)   13.28
    length=29,align1=0,align2=29:   14.06 (0.00%)   12.50 (11.11%)  14.06
    length=29,align1=29,align2=29:  13.28 (5.56%)   12.50 (11.11%)  14.06
    length=30,align1=0,align2=0:    14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=30,align1=30,align2=0:   13.28 (5.56%)   12.50 (11.11%)  14.06
    length=30,align1=0,align2=30:   14.06 (-5.88%)  12.50 (5.88%)   13.28
    length=30,align1=30,align2=30:  13.28 (0.00%)   12.50 (5.88%)   13.28
    length=31,align1=0,align2=0:    13.28 (0.00%)   12.50 (5.88%)   13.28
    length=31,align1=31,align2=0:   14.06 (0.00%)   12.50 (11.11%)  14.06
    length=31,align1=0,align2=31:   13.28 (0.00%)   12.50 (5.88%)   13.28
    length=31,align1=31,align2=31:  14.06 (0.00%)   12.50 (11.11%)  14.06
    length=48,align1=0,align2=0:    14.06 (0.00%)   14.06 (0.00%)   14.06
    length=48,align1=3,align2=0:    14.06 (0.00%)   14.06 (0.00%)   14.06
    length=48,align1=0,align2=3:    14.06 (-5.88%)  14.06 (-5.88%)  13.28
    length=48,align1=3,align2=3:    13.28 (5.56%)   14.06 (0.00%)   14.06
    length=80,align1=0,align2=0:    15.62 (-11.11%) 14.84 (-5.56%)  14.06
    length=80,align1=5,align2=0:    15.62 (-11.11%) 16.41 (-16.67%) 14.06
    length=80,align1=0,align2=5:    14.06 (0.00%)   15.62 (-11.11%) 14.06
    length=80,align1=5,align2=5:    15.62 (-5.26%)  17.19 (-15.79%) 14.84
    length=96,align1=0,align2=0:    14.06 (0.00%)   14.84 (-5.56%)  14.06
    length=96,align1=6,align2=0:    14.84 (-5.56%)  16.41 (-16.67%) 14.06
    length=96,align1=0,align2=6:    14.06 (0.00%)   14.84 (-5.56%)  14.06
    length=96,align1=6,align2=6:    14.84 (-5.56%)  17.19 (-22.22%) 14.06
    length=112,align1=0,align2=0:   17.19 (-4.76%)  14.06 (14.29%)  16.41
    length=112,align1=7,align2=0:   17.19 (0.00%)   16.41 (4.55%)   17.19
    length=112,align1=0,align2=7:   16.41 (0.00%)   14.84 (9.52%)   16.41
    length=112,align1=7,align2=7:   17.19 (0.00%)   17.19 (0.00%)   17.19
    length=144,align1=0,align2=0:   17.19 (-10.00%) 17.97 (-15.00%) 15.62
    length=144,align1=9,align2=0:   17.19 (-4.76%)  18.75 (-14.29%) 16.41
    length=144,align1=0,align2=9:   20.31 (-8.33%)  18.75 (0.00%)   18.75
    length=144,align1=9,align2=9:   18.75 (-4.35%)  18.75 (-4.35%)  17.97
    length=160,align1=0,align2=0:   18.75 (-4.35%)  17.97 (0.00%)   17.97
    length=160,align1=10,align2=0:  18.75 (4.00%)   18.75 (4.00%)   19.53
    length=160,align1=0,align2=10:  19.53 (-4.17%)  17.97 (4.17%)   18.75
    length=160,align1=10,align2=10:         18.75 (-4.35%)  18.75 (-4.35%)  17.97
    length=176,align1=0,align2=0:   18.75 (-4.35%)  17.19 (4.35%)   17.97
    length=176,align1=11,align2=0:  19.53 (0.00%)   19.53 (0.00%)   19.53
    length=176,align1=0,align2=11:  19.53 (-4.17%)  18.75 (0.00%)   18.75
    length=176,align1=11,align2=11:         18.75 (0.00%)   17.97 (4.17%)   18.75
    length=192,align1=0,align2=0:   18.75 (0.00%)   17.97 (4.17%)   18.75
    length=192,align1=12,align2=0:  21.09 (-8.00%)  18.75 (4.00%)   19.53
    length=192,align1=0,align2=12:  18.75 (0.00%)   18.75 (0.00%)   18.75
    length=192,align1=12,align2=12:         18.75 (0.00%)   17.97 (4.17%)   18.75
    length=208,align1=0,align2=0:   17.97 (0.00%)   20.31 (-13.04%) 17.97
    length=208,align1=13,align2=0:  19.53 (7.41%)   21.09 (0.00%)   21.09
    length=208,align1=0,align2=13:  23.44 (-11.11%) 21.09 (0.00%)   21.09
    length=208,align1=13,align2=13:         21.09 (-3.85%)  21.09 (-3.85%)  20.31
    length=224,align1=0,align2=0:   21.09 (-8.00%)  20.31 (-4.00%)  19.53
    length=224,align1=14,align2=0:  23.44 (-11.11%) 20.31 (3.70%)   21.09
    length=224,align1=0,align2=14:  21.09 (3.57%)   20.31 (7.14%)   21.88
    length=224,align1=14,align2=14:         20.31 (0.00%)   19.53 (3.85%)   20.31
    length=240,align1=0,align2=0:   20.31 (-4.00%)  19.53 (0.00%)   19.53
    length=240,align1=15,align2=0:  22.66 (0.00%)   20.31 (10.34%)  22.66
    length=240,align1=0,align2=15:  20.31 (-4.00%)  20.31 (-4.00%)  19.53
    length=240,align1=15,align2=15:         21.88 (0.00%)   21.09 (3.57%)   21.88
    length=272,align1=0,align2=0:   20.31 (0.00%)   28.12 (-38.46%) 20.31
    length=272,align1=17,align2=0:  22.66 (0.00%)   27.34 (-20.69%) 22.66
    length=272,align1=0,align2=17:  25.78 (-10.00%) 28.12 (-20.00%) 23.44
    length=272,align1=17,align2=17:         22.66 (-3.57%)  27.34 (-25.00%) 21.88
    length=288,align1=0,align2=0:   23.44 (-7.14%)  27.34 (-25.00%) 21.88
    length=288,align1=18,align2=0:  22.66 (0.00%)   27.34 (-20.69%) 22.66
    length=288,align1=0,align2=18:  23.44 (-3.45%)  25.00 (-10.35%) 22.66
    length=288,align1=18,align2=18:         22.66 (-3.57%)  21.88 (0.00%)   21.88
    length=304,align1=0,align2=0:   21.88 (0.00%)   21.88 (0.00%)   21.88
    length=304,align1=19,align2=0:  23.44 (-3.45%)  22.66 (0.00%)   22.66
    length=304,align1=0,align2=19:  22.66 (0.00%)   22.66 (0.00%)   22.66
    length=304,align1=19,align2=19:         22.66 (-3.57%)  21.88 (0.00%)   21.88
    length=320,align1=0,align2=0:   22.66 (-3.57%)  21.88 (0.00%)   21.88
    length=320,align1=20,align2=0:  22.66 (0.00%)   22.66 (0.00%)   22.66
    length=320,align1=0,align2=20:  22.66 (0.00%)   22.66 (0.00%)   22.66
    length=320,align1=20,align2=20:         22.66 (-3.57%)  21.88 (0.00%)   21.88
    length=336,align1=0,align2=0:   21.88 (0.00%)   24.22 (-10.71%) 21.88
    length=336,align1=21,align2=0:  22.66 (0.00%)   25.00 (-10.35%) 22.66
    length=336,align1=0,align2=21:  25.78 (0.00%)   25.00 (3.03%)   25.78
    length=336,align1=21,align2=21:         25.00 (0.00%)   23.44 (6.25%)   25.00
    length=352,align1=0,align2=0:   24.22 (0.00%)   24.22 (0.00%)   24.22
    length=352,align1=22,align2=0:  25.00 (0.00%)   25.00 (0.00%)   25.00
    length=352,align1=0,align2=22:  25.00 (-3.23%)  25.00 (-3.23%)  24.22
    length=352,align1=22,align2=22:         25.00 (-3.23%)  24.22 (0.00%)   24.22
    length=368,align1=0,align2=0:   25.00 (-3.23%)  23.44 (3.23%)   24.22
    length=368,align1=23,align2=0:  25.00 (0.00%)   24.22 (3.12%)   25.00
    length=368,align1=0,align2=23:  25.00 (-3.23%)  25.00 (-3.23%)  24.22
    length=368,align1=23,align2=23:         25.00 (-6.67%)  23.44 (0.00%)   23.44
    length=384,align1=0,align2=0:   24.22 (0.00%)   24.22 (0.00%)   24.22
    length=384,align1=24,align2=0:  25.00 (0.00%)   24.22 (3.12%)   25.00
    length=384,align1=0,align2=24:  25.00 (0.00%)   25.78 (-3.12%)  25.00
    length=384,align1=24,align2=24:         24.22 (-3.33%)  23.44 (0.00%)   23.44
    length=400,align1=0,align2=0:   25.00 (-3.23%)  26.56 (-9.68%)  24.22
    length=400,align1=25,align2=0:  25.78 (-3.12%)  27.34 (-9.38%)  25.00
    length=400,align1=0,align2=25:  27.34 (0.00%)   27.34 (0.00%)   27.34
    length=400,align1=25,align2=25:         26.56 (0.00%)   25.78 (2.94%)   26.56
    length=416,align1=0,align2=0:   26.56 (-3.03%)  25.78 (0.00%)   25.78
    length=416,align1=26,align2=0:  28.12 (-2.86%)  27.34 (0.00%)   27.34
    length=416,align1=0,align2=26:  27.34 (-2.94%)  28.12 (-5.88%)  26.56
    length=416,align1=26,align2=26:         25.78 (0.00%)   26.56 (-3.03%)  25.78
    length=432,align1=0,align2=0:   27.34 (-2.94%)  25.78 (2.94%)   26.56
    length=432,align1=27,align2=0:  28.12 (-2.86%)  27.34 (0.00%)   27.34
    length=432,align1=0,align2=27:  27.34 (0.00%)   28.12 (-2.86%)  27.34
    length=432,align1=27,align2=27:         25.78 (0.00%)   25.78 (0.00%)   25.78
    length=448,align1=0,align2=0:   26.56 (-3.03%)  25.78 (0.00%)   25.78
    length=448,align1=28,align2=0:  27.34 (0.00%)   27.34 (0.00%)   27.34
    length=448,align1=0,align2=28:  27.34 (0.00%)   28.12 (-2.86%)  27.34
    length=448,align1=28,align2=28:         25.78 (0.00%)   25.78 (0.00%)   25.78
    length=464,align1=0,align2=0:   25.78 (0.00%)   28.12 (-9.09%)  25.78
    length=464,align1=29,align2=0:  28.12 (-2.86%)  29.69 (-8.57%)  27.34
    length=464,align1=0,align2=29:  30.47 (0.00%)   30.47 (0.00%)   30.47
    length=464,align1=29,align2=29:         28.12 (0.00%)   27.34 (2.78%)   28.12
    length=480,align1=0,align2=0:   29.69 (-5.56%)  28.12 (0.00%)   28.12
    length=480,align1=30,align2=0:  31.25 (-2.56%)  29.69 (2.56%)   30.47
    length=480,align1=0,align2=30:  29.69 (0.00%)   30.47 (-2.63%)  29.69
    length=480,align1=30,align2=30:         28.12 (0.00%)   28.12 (0.00%)   28.12
    length=496,align1=0,align2=0:   28.12 (0.00%)   27.34 (2.78%)   28.12
    length=496,align1=31,align2=0:  30.47 (-2.63%)  29.69 (0.00%)   29.69
    length=496,align1=0,align2=31:  29.69 (0.00%)   30.47 (-2.63%)  29.69
    length=496,align1=31,align2=31:         28.12 (-2.86%)  28.12 (-2.86%)  27.34
    length=1024,align1=0,align2=0:  44.53 (0.00%)   44.53 (0.00%)   44.53
    length=1024,align1=32,align2=0:         44.53 (-1.79%)  44.53 (-1.79%)  43.75
    length=1024,align1=0,align2=32:         44.53 (-1.79%)  43.75 (0.00%)   43.75
    length=1024,align1=32,align2=32:        43.75 (1.75%)   43.75 (1.75%)   44.53
    length=1056,align1=0,align2=0:  46.88 (-1.69%)  46.88 (-1.69%)  46.09
    length=1056,align1=33,align2=0:         53.12 (0.00%)   52.34 (1.47%)   53.12
    length=1056,align1=0,align2=33:         52.34 (0.00%)   53.12 (-1.49%)  52.34
    length=1056,align1=33,align2=33:        46.09 (0.00%)   46.88 (-1.69%)  46.09
    length=1088,align1=0,align2=0:  46.88 (-1.69%)  46.09 (0.00%)   46.09
    length=1088,align1=34,align2=0:         52.34 (0.00%)   52.34 (0.00%)   52.34
    length=1088,align1=0,align2=34:         53.12 (-3.03%)  53.12 (-3.03%)  51.56
    length=1088,align1=34,align2=34:        46.09 (0.00%)   46.88 (-1.69%)  46.09
    length=1120,align1=0,align2=0:  49.22 (-1.61%)  48.44 (0.00%)   48.44
    length=1120,align1=35,align2=0:         54.69 (1.41%)   55.47 (0.00%)   55.47
    length=1120,align1=0,align2=35:         57.03 (0.00%)   55.47 (2.74%)   57.03
    length=1120,align1=35,align2=35:        48.44 (0.00%)   49.22 (-1.61%)  48.44
    length=1152,align1=0,align2=0:  47.66 (1.61%)   48.44 (0.00%)   48.44
    length=1152,align1=36,align2=0:         55.47 (-1.43%)  55.47 (-1.43%)  54.69
    length=1152,align1=0,align2=36:         58.59 (-1.35%)  55.47 (4.05%)   57.81
    length=1152,align1=36,align2=36:        48.44 (0.00%)   49.22 (-1.61%)  48.44
    length=1184,align1=0,align2=0:  53.12 (-3.03%)  50.78 (1.52%)   51.56
    length=1184,align1=37,align2=0:         61.72 (-2.60%)  57.03 (5.19%)   60.16
    length=1184,align1=0,align2=37:         62.50 (-1.27%)  57.03 (7.60%)   61.72
    length=1184,align1=37,align2=37:        53.12 (-1.49%)  50.78 (2.99%)   52.34
    length=1216,align1=0,align2=0:  53.91 (-4.55%)  50.78 (1.52%)   51.56
    length=1216,align1=38,align2=0:         60.94 (0.00%)   57.03 (6.41%)   60.94
    length=1216,align1=0,align2=38:         60.16 (0.00%)   57.81 (3.90%)   60.16
    length=1216,align1=38,align2=38:        52.34 (-1.52%)  50.00 (3.03%)   51.56
    length=1248,align1=0,align2=0:  54.69 (-2.94%)  53.12 (0.00%)   53.12
    length=1248,align1=39,align2=0:         64.06 (-1.23%)  60.16 (4.94%)   63.28
    length=1248,align1=0,align2=39:         60.94 (-2.63%)  60.16 (-1.32%)  59.38
    length=1248,align1=39,align2=39:        53.12 (0.00%)   52.34 (1.47%)   53.12
    length=1280,align1=0,align2=0:  52.34 (-1.52%)  52.34 (-1.52%)  51.56
    length=1280,align1=40,align2=0:         61.72 (3.66%)   59.38 (7.32%)   64.06
    length=1280,align1=0,align2=40:         60.94 (-2.63%)  60.16 (-1.32%)  59.38
    length=1280,align1=40,align2=40:        52.34 (-1.52%)  52.34 (-1.52%)  51.56
    length=1312,align1=0,align2=0:  54.69 (-1.45%)  55.47 (-2.90%)  53.91
    length=1312,align1=41,align2=0:         63.28 (0.00%)   62.50 (1.23%)   63.28
    length=1312,align1=0,align2=41:         62.50 (0.00%)   62.50 (0.00%)   62.50
    length=1312,align1=41,align2=41:        53.91 (0.00%)   54.69 (-1.45%)  53.91
    length=1344,align1=0,align2=0:  54.69 (0.00%)   54.69 (0.00%)   54.69
    length=1344,align1=42,align2=0:         62.50 (0.00%)   62.50 (0.00%)   62.50
    length=1344,align1=0,align2=42:         62.50 (-1.27%)  62.50 (-1.27%)  61.72
    length=1344,align1=42,align2=42:        53.91 (0.00%)   53.91 (0.00%)   53.91
    length=1376,align1=0,align2=0:  65.62 (-16.67%) 68.75 (-22.22%) 56.25
    length=1376,align1=43,align2=0:         71.88 (-9.52%)  73.44 (-11.90%) 65.62
    length=1376,align1=0,align2=43:         72.66 (-12.05%) 74.22 (-14.46%) 64.84
    length=1376,align1=43,align2=43:        64.06 (-13.89%) 67.97 (-20.83%) 56.25
    length=1408,align1=0,align2=0:  57.03 (-1.39%)  68.75 (-22.22%) 56.25
    length=1408,align1=44,align2=0:         65.62 (-1.20%)  73.44 (-13.25%) 64.84
    length=1408,align1=0,align2=44:         64.84 (0.00%)   74.22 (-14.46%) 64.84
    length=1408,align1=44,align2=44:        56.25 (-1.41%)  68.75 (-23.94%) 55.47
    length=1440,align1=0,align2=0:  67.97 (-14.47%) 64.84 (-9.21%)  59.38
    length=1440,align1=45,align2=0:         74.22 (-10.47%) 68.75 (-2.33%)  67.19
    length=1440,align1=0,align2=45:         72.66 (-6.90%)  69.53 (-2.30%)  67.97
    length=1440,align1=45,align2=45:        65.62 (-13.51%) 58.59 (-1.35%)  57.81
    length=1472,align1=0,align2=0:  66.41 (-14.86%) 58.59 (-1.35%)  57.81
    length=1472,align1=46,align2=0:         73.44 (-9.30%)  67.19 (0.00%)   67.19
    length=1472,align1=0,align2=46:         70.31 (-4.65%)  67.97 (-1.16%)  67.19
    length=1472,align1=46,align2=46:        57.81 (0.00%)   58.59 (-1.35%)  57.81
    length=1504,align1=0,align2=0:  60.94 (0.00%)   60.94 (0.00%)   60.94
    length=1504,align1=47,align2=0:         71.09 (-1.11%)  70.31 (0.00%)   70.31
    length=1504,align1=0,align2=47:         70.31 (-1.12%)  70.31 (-1.12%)  69.53
    length=1504,align1=47,align2=47:        60.94 (-1.30%)  60.16 (0.00%)   60.16
    length=1536,align1=0,align2=0:  62.50 (-3.90%)  60.16 (0.00%)   60.16
    length=1536,align1=48,align2=0:         60.94 (-1.30%)  60.16 (0.00%)   60.16
    length=1536,align1=0,align2=48:         61.72 (-3.95%)  60.16 (-1.32%)  59.38
    length=1536,align1=48,align2=48:        60.94 (-1.30%)  60.16 (0.00%)   60.16
    length=1568,align1=0,align2=0:  80.47 (-27.16%) 63.28 (0.00%)   63.28
    length=1568,align1=49,align2=0:         86.72 (-18.09%) 72.66 (1.06%)   73.44
    length=1568,align1=0,align2=49:         74.22 (-3.26%)  74.22 (-3.26%)  71.88
    length=1568,align1=49,align2=49:        62.50 (0.00%)   61.72 (1.25%)   62.50
    length=1600,align1=0,align2=0:  62.50 (-1.27%)  62.50 (-1.27%)  61.72
    length=1600,align1=50,align2=0:         73.44 (0.00%)   71.88 (2.13%)   73.44
    length=1600,align1=0,align2=50:         72.66 (0.00%)   73.44 (-1.08%)  72.66
    length=1600,align1=50,align2=50:        62.50 (-1.27%)  62.50 (-1.27%)  61.72
    length=1632,align1=0,align2=0:  64.84 (0.00%)   64.84 (0.00%)   64.84
    length=1632,align1=51,align2=0:         75.78 (0.00%)   75.00 (1.03%)   75.78
    length=1632,align1=0,align2=51:         78.91 (0.00%)   75.78 (3.96%)   78.91
    length=1632,align1=51,align2=51:        64.84 (-2.47%)  64.84 (-2.47%)  63.28
    length=1664,align1=0,align2=0:  64.84 (-1.22%)  64.84 (-1.22%)  64.06
    length=1664,align1=52,align2=0:         75.78 (0.00%)   75.00 (1.03%)   75.78
    length=1664,align1=0,align2=52:         80.47 (-0.98%)  75.78 (4.90%)   79.69
    length=1664,align1=52,align2=52:        64.06 (-1.23%)  65.62 (-3.70%)  63.28
    length=1696,align1=0,align2=0:  69.53 (-3.49%)  72.66 (-8.14%)  67.19
    length=1696,align1=53,align2=0:         80.47 (-0.98%)  82.03 (-2.94%)  79.69
    length=1696,align1=0,align2=53:         80.47 (0.96%)   82.03 (-0.96%)  81.25
    length=1696,align1=53,align2=53:        68.75 (-2.33%)  72.66 (-8.14%)  67.19
    length=1728,align1=0,align2=0:  67.97 (0.00%)   72.66 (-6.90%)  67.97
    length=1728,align1=54,align2=0:         80.47 (-0.98%)  82.81 (-3.92%)  79.69
    length=1728,align1=0,align2=54:         78.91 (-1.00%)  82.03 (-5.00%)  78.12
    length=1728,align1=54,align2=54:        68.75 (0.00%)   72.66 (-5.68%)  68.75
    length=1760,align1=0,align2=0:  77.34 (-12.50%) 68.75 (0.00%)   68.75
    length=1760,align1=55,align2=0:         91.41 (-8.33%)  79.69 (5.56%)   84.38
    length=1760,align1=0,align2=55:         88.28 (-10.78%) 80.47 (-0.98%)  79.69
    length=1760,align1=55,align2=55:        77.34 (-11.24%) 68.75 (1.12%)   69.53
    length=1792,align1=0,align2=0:  78.12 (-14.94%) 68.75 (-1.15%)  67.97
    length=1792,align1=56,align2=0:         88.28 (-4.63%)  79.69 (5.56%)   84.38
    length=1792,align1=0,align2=56:         88.28 (-9.71%)  80.47 (0.00%)   80.47
    length=1792,align1=56,align2=56:        77.34 (-11.24%) 68.75 (1.12%)   69.53
    length=1824,align1=0,align2=0:  72.66 (7.92%)   70.31 (10.89%)  78.91
    length=1824,align1=57,align2=0:         85.94 (5.17%)   82.03 (9.48%)   90.62
    length=1824,align1=0,align2=57:         82.03 (3.67%)   82.81 (2.75%)   85.16
    length=1824,align1=57,align2=57:        70.31 (-1.12%)  70.31 (-1.12%)  69.53
    length=1856,align1=0,align2=0:  70.31 (-1.12%)  70.31 (-1.12%)  69.53
    length=1856,align1=58,align2=0:         83.59 (-0.94%)  82.03 (0.94%)   82.81
    length=1856,align1=0,align2=58:         178.12 (-115.09%)       82.81 (0.00%)   82.81
    length=1856,align1=58,align2=58:        70.31 (-1.12%)  70.31 (-1.12%)  69.53
    length=1888,align1=0,align2=0:  73.44 (-1.08%)  78.91 (-8.60%)  72.66
    length=1888,align1=59,align2=0:         85.94 (0.00%)   89.84 (-4.55%)  85.94
    length=1888,align1=0,align2=59:         84.38 (0.00%)   89.06 (-5.56%)  84.38
    length=1888,align1=59,align2=59:        72.66 (-1.09%)  78.12 (-8.70%)  71.88
    length=1920,align1=0,align2=0:  72.66 (-1.09%)  78.12 (-8.70%)  71.88
    length=1920,align1=60,align2=0:         85.94 (0.00%)   89.84 (-4.55%)  85.94
    length=1920,align1=0,align2=60:         85.16 (0.00%)   89.06 (-4.59%)  85.16
    length=1920,align1=60,align2=60:        72.66 (-1.09%)  78.91 (-9.78%)  71.88
    length=1952,align1=0,align2=0:  75.00 (-1.05%)  75.00 (-1.05%)  74.22
    length=1952,align1=61,align2=0:         88.28 (0.00%)   87.50 (0.88%)   88.28
    length=1952,align1=0,align2=61:         87.50 (0.00%)   88.28 (-0.89%)  87.50
    length=1952,align1=61,align2=61:        74.22 (0.00%)   74.22 (0.00%)   74.22
    length=1984,align1=0,align2=0:  75.00 (-1.05%)  73.44 (1.05%)   74.22
    length=1984,align1=62,align2=0:         89.06 (-0.89%)  87.50 (0.88%)   88.28
    length=1984,align1=0,align2=62:         87.50 (0.00%)   88.28 (-0.89%)  87.50
    length=1984,align1=62,align2=62:        74.22 (0.00%)   74.22 (0.00%)   74.22
    length=2016,align1=0,align2=0:  77.34 (-1.02%)  76.56 (0.00%)   76.56
    length=2016,align1=63,align2=0:         91.41 (-0.86%)  90.62 (0.00%)   90.62
    length=2016,align1=0,align2=63:         89.84 (0.00%)   90.62 (-0.87%)  89.84
    length=2016,align1=63,align2=63:        77.34 (-1.02%)  76.56 (0.00%)   76.56
    length=4096,align1=0,align2=0:  141.41 (-0.56%) 146.88 (-4.44%) 140.62
    
    Function: memcpy
    __memcpy_thunderx       __memcpy_falkor __memcpy_generic
    Variant: large
    ================================================================================
    length=65543,align1=0,align2=0:         4018.75 (3.09%) 2634.38 (36.47%)        4146.88
    length=65551,align1=0,align2=3:         4425.00 (-6.47%)        3134.38 (24.59%)        4156.25
    length=65567,align1=3,align2=0:         2909.38 (29.95%)        3134.38 (24.53%)        4153.12
    length=65599,align1=3,align2=5:         4415.62 (-6.16%)        3134.38 (24.64%)        4159.38
    length=131079,align1=0,align2=0:        5765.62 (30.38%)        5240.62 (36.72%)        8281.25
    length=131087,align1=0,align2=3:        8831.25 (-6.56%)        6271.88 (24.32%)        8287.50
    length=131103,align1=3,align2=0:        5793.75 (29.05%)        6268.75 (23.23%)        8165.62
    length=131135,align1=3,align2=5:        5806.25 (29.97%)        6259.38 (24.50%)        8290.62
    length=262151,align1=0,align2=0:        11850.00 (28.91%)       10762.50 (35.43%)       16668.80
    length=262159,align1=0,align2=3:        12043.80 (27.72%)       12700.00 (23.78%)       16662.50
    length=262175,align1=3,align2=0:        12046.90 (27.90%)       12687.50 (24.07%)       16709.40
    length=262207,align1=3,align2=5:        11984.40 (28.08%)       12678.10 (23.91%)       16662.50
    length=524295,align1=0,align2=0:        24825.00 (25.00%)       24268.80 (27.34%)       33400.00
    length=524303,align1=0,align2=3:        35731.20 (-6.53%)       25678.10 (23.44%)       33540.60
    length=524319,align1=3,align2=0:        25893.80 (22.71%)       25725.00 (23.22%)       33503.10
    length=524351,align1=3,align2=5:        25887.50 (22.86%)       25690.60 (23.45%)       33559.40
    length=1048583,align1=0,align2=0:       50621.90 (0.30%)        50600.00 (0.34%)        50771.90
    length=1048591,align1=0,align2=3:       53206.20 (0.54%)        51081.20 (4.51%)        53493.80
    length=1048607,align1=3,align2=0:       53221.90 (0.32%)        51975.00 (2.66%)        53393.80
    length=1048639,align1=3,align2=5:       53240.60 (0.36%)        51953.10 (2.77%)        53431.20
    length=2097159,align1=0,align2=0:       103744.00 (-2.00%)      102447.00 (-1.00%)      102425.00
    length=2097167,align1=0,align2=3:       108588.00 (-1.00%)      105159.00 (2.00%)       107606.00
    length=2097183,align1=3,align2=0:       107678.00 (0.00%)       105250.00 (2.00%)       108125.00
    length=2097215,align1=3,align2=5:       107906.00 (1.00%)       105841.00 (3.00%)       109475.00
    length=4194311,align1=0,align2=0:       202994.00 (0.00%)       202500.00 (1.00%)       204809.00
    length=4194319,align1=0,align2=3:       213350.00 (0.00%)       205997.00 (3.00%)       213384.00
    length=4194335,align1=3,align2=0:       212653.00 (0.00%)       206444.00 (3.00%)       212900.00
    length=4194367,align1=3,align2=5:       213044.00 (0.00%)       206084.00 (3.00%)       213847.00
    length=8388615,align1=0,align2=0:       401294.00 (0.00%)       401231.00 (0.00%)       401944.00
    length=8388623,align1=0,align2=3:       480872.00 (-14.00%)     406444.00 (3.00%)       422900.00
    length=8388639,align1=3,align2=0:       422147.00 (0.00%)       407750.00 (3.00%)       422803.00
    length=8388671,align1=3,align2=5:       442003.00 (-5.00%)      407125.00 (3.00%)       423509.00
    length=16777223,align1=0,align2=0:      799809.00 (0.00%)       800000.00 (0.00%)       801756.00
    length=16777231,align1=0,align2=3:      841184.00 (0.00%)       808525.00 (4.00%)       843775.00
    length=16777247,align1=3,align2=0:      841166.00 (0.00%)       810147.00 (3.00%)       843147.00
    length=16777279,align1=3,align2=5:      972569.00 (-16.00%)     808588.00 (4.00%)       843731.00
    length=33554439,align1=0,align2=0:      1842240.00 (-0.01%)     1863590.00 (-1.17%)     1841990.00
    length=33554447,align1=0,align2=3:      2103470.00 (-2.74%)     1919460.00 (6.25%)      2047440.00
    length=33554463,align1=3,align2=0:      2075690.00 (-1.07%)     1930040.00 (6.02%)      2053720.00
    length=33554495,align1=3,align2=5:      2110590.00 (-2.82%)     1924440.00 (6.25%)      2052650.00
    
    Function: memcpy
    __memcpy_thunderx       __memcpy_falkor __memcpy_generic
    Variant: random
    ================================================================================
    max-size=4096:  44061.90 (5.85%)        38568.20 (17.59%)       46799.90
    max-size=8192:  42790.90 (5.27%)        38158.90 (15.52%)       45171.50
    max-size=16384:         44912.10 (2.25%)        38710.40 (15.75%)       45945.00
    max-size=32768:         43577.90 (1.23%)        37975.10 (13.93%)       44120.00
    max-size=65536:         44375.50 (1.04%)        38474.20 (14.20%)       44840.60
    
    	* manual/tunables.texi (Tunable glibc.tune.cpu): Add falkor.
    	* sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add
    	memcpy_falkor.
    	* sysdeps/aarch64/multiarch/ifunc-impl-list.c (MAX_IFUNC):
    	Bump.
    	(__libc_ifunc_impl_list): Add __memcpy_falkor.
    	* sysdeps/aarch64/multiarch/memcpy.c: Likewise.
    	* sysdeps/aarch64/multiarch/memcpy_falkor.S: New file.
    	* sysdeps/unix/sysv/linux/aarch64/cpu-features.c (cpu_list):
    	Add falkor.
    	* sysdeps/unix/sysv/linux/aarch64/cpu-features.h (IS_FALKOR):
    	New macro.

diff --git a/ChangeLog b/ChangeLog
index bfcdc1e..0ef88b0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2017-10-10  Siddhesh Poyarekar  <siddhesh@sourceware.org>
+
+	* manual/tunables.texi (Tunable glibc.tune.cpu): Add falkor.
+	* sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add
+	memcpy_falkor.
+	* sysdeps/aarch64/multiarch/ifunc-impl-list.c (MAX_IFUNC):
+	Bump.
+	(__libc_ifunc_impl_list): Add __memcpy_falkor.
+	* sysdeps/aarch64/multiarch/memcpy.c: Likewise.
+	* sysdeps/aarch64/multiarch/memcpy_falkor.S: New file.
+	* sysdeps/unix/sysv/linux/aarch64/cpu-features.c (cpu_list):
+	Add falkor.
+	* sysdeps/unix/sysv/linux/aarch64/cpu-features.h (IS_FALKOR):
+	New macro.
+
 2017-10-06  Carlos O'Donell  <carlos@redhat.com>
 
 	[BZ #22111]
diff --git a/manual/tunables.texi b/manual/tunables.texi
index 4c658bf..3c19567 100644
--- a/manual/tunables.texi
+++ b/manual/tunables.texi
@@ -267,7 +267,7 @@ This tunable is specific to i386 and x86-64.
 @deftp Tunable glibc.tune.cpu
 The @code{glibc.tune.cpu=xxx} tunable allows the user to tell @theglibc{} to
 assume that the CPU is @code{xxx} where xxx may have one of these values:
-@code{generic}, @code{thunderxt88}.
+@code{generic}, @code{falkor}, @code{thunderxt88}.
 
 This tunable is specific to aarch64.
 @end deftp
diff --git a/sysdeps/aarch64/multiarch/Makefile b/sysdeps/aarch64/multiarch/Makefile
index 78d52c7..164ba1a 100644
--- a/sysdeps/aarch64/multiarch/Makefile
+++ b/sysdeps/aarch64/multiarch/Makefile
@@ -1,3 +1,3 @@
 ifeq ($(subdir),string)
-sysdep_routines += memcpy_generic memcpy_thunderx
+sysdep_routines += memcpy_generic memcpy_thunderx memcpy_falkor
 endif
diff --git a/sysdeps/aarch64/multiarch/ifunc-impl-list.c b/sysdeps/aarch64/multiarch/ifunc-impl-list.c
index 32056bc..8e873b3 100644
--- a/sysdeps/aarch64/multiarch/ifunc-impl-list.c
+++ b/sysdeps/aarch64/multiarch/ifunc-impl-list.c
@@ -25,7 +25,7 @@
 #include <stdio.h>
 
 /* Maximum number of IFUNC implementations.  */
-#define MAX_IFUNC	2
+#define MAX_IFUNC	3
 
 size_t
 __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
@@ -40,6 +40,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
   /* Support sysdeps/aarch64/multiarch/memcpy.c and memmove.c.  */
   IFUNC_IMPL (i, name, memcpy,
 	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_thunderx)
+	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_falkor)
 	      IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_generic))
   IFUNC_IMPL (i, name, memmove,
 	      IFUNC_IMPL_ADD (array, i, memmove, 1, __memmove_thunderx)
diff --git a/sysdeps/aarch64/multiarch/memcpy.c b/sysdeps/aarch64/multiarch/memcpy.c
index 9f73efb..b395df1 100644
--- a/sysdeps/aarch64/multiarch/memcpy.c
+++ b/sysdeps/aarch64/multiarch/memcpy.c
@@ -30,9 +30,14 @@ extern __typeof (__redirect_memcpy) __libc_memcpy;
 
 extern __typeof (__redirect_memcpy) __memcpy_generic attribute_hidden;
 extern __typeof (__redirect_memcpy) __memcpy_thunderx attribute_hidden;
+extern __typeof (__redirect_memcpy) __memcpy_falkor attribute_hidden;
 
 libc_ifunc (__libc_memcpy,
-            IS_THUNDERX (midr) ? __memcpy_thunderx : __memcpy_generic);
+            (IS_THUNDERX (midr)
+	     ? __memcpy_thunderx
+	     : (IS_FALKOR (midr)
+		? __memcpy_falkor
+		: __memcpy_generic)));
 
 # undef memcpy
 strong_alias (__libc_memcpy, memcpy);
diff --git a/sysdeps/aarch64/multiarch/memcpy_falkor.S b/sysdeps/aarch64/multiarch/memcpy_falkor.S
new file mode 100644
index 0000000..3708281
--- /dev/null
+++ b/sysdeps/aarch64/multiarch/memcpy_falkor.S
@@ -0,0 +1,187 @@
+/* Optimized memcpy for Qualcomm Falkor processor.
+   Copyright (C) 2017 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+/* Assumptions:
+ *
+ * ARMv8-a, AArch64, falkor, unaligned accesses.
+ *
+ */
+
+#define dstin	x0
+#define src	x1
+#define count	x2
+#define dst	x3
+#define srcend	x4
+#define dstend	x5
+#define A_l	x6
+#define A_lw	w6
+#define A_h	x7
+#define A_hw	w7
+#define tmp1	x14
+
+/* Copies are split into 3 main cases:
+
+   1. Small copies of up to 32 bytes
+   2. Medium copies of 33..128 bytes which are fully unrolled
+   3. Large copies of more than 128 bytes.
+
+   Large copies align the sourceto a quad word and use an unrolled loop
+   processing 64 bytes per iteration.
+
+   FALKOR-SPECIFIC DESIGN:
+
+   The smallest copies (32 bytes or less) focus on optimal pipeline usage,
+   which is why the redundant copies of 0-3 bytes have been replaced with
+   conditionals, since the former would unnecessarily break across multiple
+   issue groups.  The medium copy group has been enlarged to 128 bytes since
+   bumping up the small copies up to 32 bytes allows us to do that without
+   cost and also allows us the reduce the size of the prep code before loop64.
+
+   All copies are done only via two registers r6 and r7.  This is to ensure
+   that all loads hit a single hardware prefetcher which can get correctly
+   trained to prefetch a single stream.
+
+   The non-temporal stores help optimize cache utilization.
+*/
+
+#if IS_IN (libc)
+ENTRY_ALIGN (__memcpy_falkor, 6)
+
+	cmp	count, 32
+	add	srcend, src, count
+	add	dstend, dstin, count
+	b.ls	L(copy32)
+	ldp	A_l, A_h, [src]
+	cmp	count, 128
+	stp	A_l, A_h, [dstin]
+	b.hi	L(copy_long)
+
+	/* Medium copies: 33..128 bytes.  */
+	sub	tmp1, count, 1
+	ldp	A_l, A_h, [src, 16]
+	stp	A_l, A_h, [dstin, 16]
+	tbz	tmp1, 6, 1f
+	ldp	A_l, A_h, [src, 32]
+	stp	A_l, A_h, [dstin, 32]
+	ldp	A_l, A_h, [src, 48]
+	stp	A_l, A_h, [dstin, 48]
+	ldp	A_l, A_h, [srcend, -64]
+	stp	A_l, A_h, [dstend, -64]
+	ldp	A_l, A_h, [srcend, -48]
+	stp	A_l, A_h, [dstend, -48]
+1:
+	ldp	A_l, A_h, [srcend, -32]
+	stp	A_l, A_h, [dstend, -32]
+	ldp	A_l, A_h, [srcend, -16]
+	stp	A_l, A_h, [dstend, -16]
+	ret
+
+	.p2align 4
+	/* Small copies: 0..32 bytes.  */
+L(copy32):
+	/* 16-32 */
+	cmp	count, 16
+	b.lo	1f
+	ldp	A_l, A_h, [src]
+	stp	A_l, A_h, [dstin]
+	ldp	A_l, A_h, [srcend, -16]
+	stp	A_l, A_h, [dstend, -16]
+	ret
+	.p2align 4
+1:
+	/* 8-15 */
+	tbz	count, 3, 1f
+	ldr	A_l, [src]
+	str	A_l, [dstin]
+	ldr	A_l, [srcend, -8]
+	str	A_l, [dstend, -8]
+	ret
+	.p2align 4
+1:
+	/* 4-7 */
+	tbz	count, 2, 1f
+	ldr	A_lw, [src]
+	str	A_lw, [dstin]
+	ldr	A_lw, [srcend, -4]
+	str	A_lw, [dstend, -4]
+	ret
+	.p2align 4
+1:
+	/* 2-3 */
+	tbz	count, 1, 1f
+	ldrh	A_lw, [src]
+	strh	A_lw, [dstin]
+	ldrh	A_lw, [srcend, -2]
+	strh	A_lw, [dstend, -2]
+	ret
+	.p2align 4
+1:
+	/* 0-1 */
+	tbz	count, 0, 1f
+	ldrb	A_lw, [src]
+	strb	A_lw, [dstin]
+1:
+	ret
+
+	/* Align SRC to 16 bytes and copy; that way at least one of the
+	   accesses is aligned throughout the copy sequence.
+
+	   The count is off by 0 to 15 bytes, but this is OK because we trim
+	   off the last 64 bytes to copy off from the end.  Due to this the
+	   loop never runs out of bounds.  */
+	.p2align 6
+L(copy_long):
+	sub	count, count, 64 + 16
+	and	tmp1, src, 15
+	bic	src, src, 15
+	sub	dst, dstin, tmp1
+	add	count, count, tmp1
+
+L(loop64):
+	ldp	A_l, A_h, [src, 16]!
+	stnp	A_l, A_h, [dst, 16]
+	ldp	A_l, A_h, [src, 16]!
+	subs	count, count, 64
+	stnp	A_l, A_h, [dst, 32]
+	ldp	A_l, A_h, [src, 16]!
+	stnp	A_l, A_h, [dst, 48]
+	ldp	A_l, A_h, [src, 16]!
+	stnp	A_l, A_h, [dst, 64]
+	add	dst, dst, 64
+	b.hi	L(loop64)
+
+	/* Write the last full set of 64 bytes.  The remainder is at most 64
+	   bytes, so it is safe to always copy 64 bytes from the end even if
+	   there is just 1 byte left.  */
+L(last64):
+	ldp	A_l, A_h, [srcend, -64]
+	stnp	A_l, A_h, [dstend, -64]
+	ldp	A_l, A_h, [srcend, -48]
+	stnp	A_l, A_h, [dstend, -48]
+	ldp	A_l, A_h, [srcend, -32]
+	stnp	A_l, A_h, [dstend, -32]
+	ldp	A_l, A_h, [srcend, -16]
+	stnp	A_l, A_h, [dstend, -16]
+	ret
+
+END (__memcpy_falkor)
+libc_hidden_builtin_def (__memcpy_falkor)
+#endif
diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
index 0275d11..18f5e60 100644
--- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
+++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
@@ -28,6 +28,7 @@ struct cpu_list
 };
 
 static struct cpu_list cpu_list[] = {
+      {"falkor",	0x510FC000},
       {"thunderxt88",	0x430F0A10},
       {"generic", 	0x0}
 };
diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.h b/sysdeps/unix/sysv/linux/aarch64/cpu-features.h
index c92b650..73cb53d 100644
--- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.h
+++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.h
@@ -41,6 +41,9 @@
 #define IS_THUNDERX(midr) (MIDR_IMPLEMENTOR(midr) == 'C'	\
 			   && MIDR_PARTNUM(midr) == 0x0a1)
 
+#define IS_FALKOR(midr) (MIDR_IMPLEMENTOR(midr) == 'Q'			      \
+                        && MIDR_PARTNUM(midr) == 0xc00)
+
 struct cpu_features
 {
   uint64_t midr_el1;

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                      |   42 +
 manual/tunables.texi                           |    2 +-
 po/fr.po                                       |    2 +-
 po/sv.po                                       | 1150 ++++++++++++------------
 sysdeps/aarch64/multiarch/Makefile             |    3 +-
 sysdeps/aarch64/multiarch/ifunc-impl-list.c    |    4 +-
 sysdeps/aarch64/multiarch/memcpy.c             |    7 +-
 sysdeps/aarch64/multiarch/memcpy_falkor.S      |  184 ++++
 sysdeps/aarch64/multiarch/memmove.c            |    7 +-
 sysdeps/aarch64/multiarch/memmove_falkor.S     |  232 +++++
 sysdeps/unix/sysv/linux/aarch64/cpu-features.c |    3 +-
 sysdeps/unix/sysv/linux/aarch64/cpu-features.h |    3 +
 12 files changed, 1059 insertions(+), 580 deletions(-)
 create mode 100644 sysdeps/aarch64/multiarch/memcpy_falkor.S
 create mode 100644 sysdeps/aarch64/multiarch/memmove_falkor.S


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]