aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/powerpc
diff options
context:
space:
mode:
authorWainer dos Santos Moschetta <wainersm@linux.vnet.ibm.com>2017-04-11 14:18:35 -0300
committerTulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>2017-04-11 17:13:55 -0300
commitf0748b70a84fc9f08507b58841356e45ea516076 (patch)
treefb9c7b1df135be46cb96b4fffd2970c2388f4da6 /sysdeps/powerpc
parent6d15a5c2e9450a1e926d5b4991759e1cfa50fccf (diff)
downloadglibc-f0748b70a84fc9f08507b58841356e45ea516076.tar
glibc-f0748b70a84fc9f08507b58841356e45ea516076.tar.gz
glibc-f0748b70a84fc9f08507b58841356e45ea516076.tar.bz2
glibc-f0748b70a84fc9f08507b58841356e45ea516076.zip
powerpc: refactor strcasestr and strstr IFUNC.
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.
Diffstat (limited to 'sysdeps/powerpc')
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S16
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S16
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strstr.S8
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strcasestr.S8
4 files changed, 14 insertions, 34 deletions
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
index 5a0eb9cd78..2cfb5ae77a 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S
@@ -18,21 +18,7 @@
#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)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
index 5ac7b85650..3991df74a8 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S
@@ -18,21 +18,7 @@
#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)
diff --git a/sysdeps/powerpc/powerpc64/power7/strstr.S b/sysdeps/powerpc/powerpc64/power7/strstr.S
index 2a79b8bcc2..260db2ed6d 100644
--- a/sysdeps/powerpc/powerpc64/power7/strstr.S
+++ b/sysdeps/powerpc/powerpc64/power7/strstr.S
@@ -25,6 +25,10 @@
#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)
diff --git a/sysdeps/powerpc/powerpc64/power8/strcasestr.S b/sysdeps/powerpc/powerpc64/power8/strcasestr.S
index 86f1672893..6ac6572f3b 100644
--- a/sysdeps/powerpc/powerpc64/power8/strcasestr.S
+++ b/sysdeps/powerpc/powerpc64/power8/strcasestr.S
@@ -27,6 +27,10 @@
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)