bca718
    Backport of the addition of
bca718
      sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
bca718
    from the following:
bca718
    
bca718
    commit 9f2f36e5a91c2ce6edba5415e176155eb1008ae1
bca718
    Author: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
bca718
    Date:   Tue Dec 23 13:39:23 2014 -0500
bca718
    
bca718
        powerpc: Optimized strncat for POWER7/PPC64
bca718
    
bca718
        With 3eb38795dbbbd816 (Simplify strncat) the generic algorithms uses
bca718
        strlen, strnlen, and memcpy.  This is faster than POWER7 current
bca718
        implementation, especially for unaligned strings (where POWER7 code
bca718
        uses byte-byte operations).
bca718
    
bca718
        This patch removes the assembly implementation and uses a multiarch
bca718
        specialization based on default algorithm calling optimized POWER7
bca718
        symbols.
bca718
    
bca718
        ChangeLog:
bca718
            2015-01-13  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
bca718
    
bca718
            * sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c: New file.
bca718
            * sysdeps/powerpc/powerpc64/multiarch/strncat-power7.S: Remove file.
bca718
            * sysdeps/powerpc/powerpc64/power7/strncat.S: Likewise.
bca718
    
bca718
    plus the addition of strncat-power7 to
bca718
      sysdeps/powerpc/powerpc64/multiarch/Makefile
bca718
bca718
diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile
bca718
index 7ebfc7e..74ae710 100644
bca718
--- a/sysdeps/powerpc/powerpc64/multiarch/Makefile
bca718
+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile
bca718
@@ -8,6 +8,7 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \
bca718
                   stpcpy-power8 stpcpy-power7 stpcpy-ppc64 \
bca718
                   strcat-power8 strcat-power7 strcat-ppc64 \
bca718
                   strcpy-power8 strcpy-power7 strcpy-ppc64 \
bca718
+                  strncat-power7 \
bca718
                   rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \
bca718
                   strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \
bca718
                   strncase-power7 strncase_l-power7 strncmp-power7 \
bca718
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
bca718
new file mode 100644
bca718
index 0000000..39b1aeb
bca718
--- /dev/null
bca718
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncat-power7.c
bca718
@@ -0,0 +1,31 @@
bca718
+/* Copyright (C) 2015 Free Software Foundation, Inc.
bca718
+   This file is part of the GNU C Library.
bca718
+
bca718
+   The GNU C Library is free software; you can redistribute it and/or
bca718
+   modify it under the terms of the GNU Lesser General Public
bca718
+   License as published by the Free Software Foundation; either
bca718
+   version 2.1 of the License, or (at your option) any later version.
bca718
+
bca718
+   The GNU C Library is distributed in the hope that it will be useful,
bca718
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
bca718
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
bca718
+   Lesser General Public License for more details.
bca718
+
bca718
+   You should have received a copy of the GNU Lesser General Public
bca718
+   License along with the GNU C Library; if not, see
bca718
+   <http://www.gnu.org/licenses/ >.  */
bca718
+
bca718
+#include <string.h>
bca718
+
bca718
+#define STRNCAT __strncat_power7
bca718
+
bca718
+extern __typeof (strncat) __strncat_power7 attribute_hidden;
bca718
+extern __typeof (strlen) __strlen_power7 attribute_hidden;
bca718
+extern __typeof (strnlen) __strnlen_power7 attribute_hidden;
bca718
+extern __typeof (memcpy) __memcpy_power7 attribute_hidden;
bca718
+
bca718
+#define strlen    __strlen_power7
bca718
+#define __strnlen __strnlen_power7
bca718
+#define memcpy    __memcpy_power7
bca718
+
bca718
+#include <string/strncat.c>