powerpc: refactor strcasestr and strstr IFUNC.
authorWainer dos Santos Moschetta <wainersm@linux.vnet.ibm.com>
Tue, 11 Apr 2017 17:18:35 +0000 (14:18 -0300)
committerTulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
Tue, 11 Apr 2017 20:13:55 +0000 (17:13 -0300)
Clean up the IFUNC implementations for powerpc in order to remove
unneeded macro definitions.

Tested on ppc64le with and without --disable-multi-arch flag.

* sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S: Define the
strcasestr implementation name and remove unneeded macros definition.
* sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S: Define
strstr implementation name and remove unneeded macros definition.
* sysdeps/powerpc/powerpc64/power7/strstr.S: Set a default function
name if not defined and pass as parameter to macros accordingly.
* sysdeps/powerpc/powerpc64/power8/strcasestr.S: Likewise.

ChangeLog
sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
sysdeps/powerpc/powerpc64/power7/strstr.S
sysdeps/powerpc/powerpc64/power8/strcasestr.S

index a02f848..3b069a9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2017-04-11  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>
 
+       * sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S: Define the
+       strcasestr implementation name and remove unneeded macros definition.
+       * sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S: Define
+       strstr implementation name and remove unneeded macros definition.
+       * sysdeps/powerpc/powerpc64/power7/strstr.S: Set a default function
+       name if not defined and pass as parameter to macros accordingly.
+       * sysdeps/powerpc/powerpc64/power8/strcasestr.S: Likewise.
+
        * sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S: Define the
        implementation-specific function name and remove unneeded macros
        definition.
index 5a0eb9c..2cfb5ae 100644 (file)
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)                            \
-  .section ".text";                                            \
-  ENTRY_2(__strcasestr_power8)                                 \
-  .align ALIGNARG(alignt);                                     \
-  EALIGN_W_##words;                                            \
-  BODY_LABEL(__strcasestr_power8):                             \
-  cfi_startproc;                                               \
-  LOCALENTRY(__strcasestr_power8)
-
-#undef END
-#define END(name)                                              \
-  cfi_endproc;                                                 \
-  TRACEBACK(__strcasestr_power8)                               \
-  END_2(__strcasestr_power8)
+#define STRCASESTR __strcasestr_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
index 5ac7b85..3991df7 100644 (file)
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)                            \
-  .section ".text";                                            \
-  ENTRY_2(__strstr_power7)                                     \
-  .align ALIGNARG(alignt);                                     \
-  EALIGN_W_##words;                                            \
-  BODY_LABEL(__strstr_power7):                                 \
-  cfi_startproc;                                               \
-  LOCALENTRY(__strstr_power7)
-
-#undef END
-#define END(name)                                              \
-  cfi_endproc;                                                 \
-  TRACEBACK(__strstr_power7)                                   \
-  END_2(__strstr_power7)
+#define STRSTR __strstr_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
index 2a79b8b..260db2e 100644 (file)
 
 #define ITERATIONS     64
 
+#ifndef STRSTR
+# define STRSTR strstr
+#endif
+
 #ifndef STRLEN
 /* For builds with no IFUNC support, local calls should be made to internal
    GLIBC symbol (created by libc_hidden_builtin_def).  */
@@ -55,7 +59,7 @@
 
 #define        FRAMESIZE       (FRAME_MIN_SIZE+32)
        .machine  power7
-EALIGN (strstr, 4, 0)
+EALIGN (STRSTR, 4, 0)
        CALL_MCOUNT 2
        mflr    r0                      /* Load link register LR to r0.  */
        std     r31, -8(r1)             /* Save callers register r31.  */
@@ -513,5 +517,5 @@ L(end):
        ld      r31, -8(r1)     /* Restore callers save register r31.  */
        mtlr    r0              /* Branch to link register.  */
        blr
-END (strstr)
+END (STRSTR)
 libc_hidden_builtin_def (strstr)
index 86f1672..6ac6572 100644 (file)
    fallback to default.  */
 #define ITERATIONS     64
 
+#ifndef STRCASESTR
+# define STRCASESTR __strcasestr
+#endif
+
 #ifndef STRLEN
 /* For builds without IFUNC support, local calls should be made to internal
    GLIBC symbol (created by libc_hidden_builtin_def).  */
@@ -81,7 +85,7 @@
 /* TODO: change this to .machine power8 when the minimum required binutils
    allows it.  */
        .machine  power7
-EALIGN (__strcasestr, 4, 0)
+EALIGN (STRCASESTR, 4, 0)
        CALL_MCOUNT 2
        mflr    r0                      /* Load link register LR to r0.  */
        std     r31, -8(r1)             /* Save callers register r31.  */
@@ -527,7 +531,7 @@ L(end):
        cfi_restore(r31)
        mtlr    r0              /* Branch to link register.  */
        blr
-END (__strcasestr)
+END (STRCASESTR)
 
 weak_alias (__strcasestr, strcasestr)
 libc_hidden_def (__strcasestr)