summary refs log tree commit diff
diff options
context:
space:
mode:
authorWainer dos Santos Moschetta <wainersm@linux.vnet.ibm.com>2017-04-11 14:18:34 -0300
committerTulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>2017-04-11 17:13:54 -0300
commit3bc426e156c6952a1b7e32435c308aaab76616a1 (patch)
treec9592b0d03ce0acd5aa1fd9e9828187d9c7b46a4
parentdbcc7d089390f53ec90c1cbd3bea165b924a023a (diff)
downloadglibc-3bc426e156c6952a1b7e32435c308aaab76616a1.tar.gz
glibc-3bc426e156c6952a1b7e32435c308aaab76616a1.tar.xz
glibc-3bc426e156c6952a1b7e32435c308aaab76616a1.zip
powerpc: refactor strcasecmp, strcmp, and strncmp 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/strcasecmp_l-power7.S: Define
	the implementation-specific function name and remove unneeded
	macros definition.
	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S: Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S: Likewise.
	* sysdeps/powerpc/powerpc64/power4/strncmp.S: Set a default function
	name if not defined and pass as parameter to macros accordingly.
	* sysdeps/powerpc/powerpc64/power7/strcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power7/strncmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/strcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power8/strncmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power9/strcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/power9/strncmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/strcmp.S: Likewise.
	* sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
-rw-r--r--ChangeLog23
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S15
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S16
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S16
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S16
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S18
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S16
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S17
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S17
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S17
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S16
-rw-r--r--sysdeps/powerpc/powerpc64/power4/strncmp.S8
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strcmp.S8
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strncmp.S8
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strcmp.S8
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strncmp.S8
-rw-r--r--sysdeps/powerpc/powerpc64/power9/strcmp.S8
-rw-r--r--sysdeps/powerpc/powerpc64/power9/strncmp.S8
-rw-r--r--sysdeps/powerpc/powerpc64/strcmp.S8
-rw-r--r--sysdeps/powerpc/powerpc64/strncmp.S8
20 files changed, 88 insertions, 171 deletions
diff --git a/ChangeLog b/ChangeLog
index d4bbc560f4..0dc5c074ed 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,28 @@
 2017-04-11  Wainer dos Santos Moschetta  <wainersm@linux.vnet.ibm.com>
 
+	* sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S: Define
+	the implementation-specific function name and remove unneeded
+	macros definition.
+	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S: Likewise.
+	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S Likewise.
+	* sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S: Likewise.
+	* sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S: Likewise.
+	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S: Likewise.
+	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S: Likewise.
+	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S: Likewise.
+	* sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S: Likewise.
+	* sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power4/strncmp.S: Set a default function
+	name if not defined and pass as parameter to macros accordingly.
+	* sysdeps/powerpc/powerpc64/power7/strcmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power7/strncmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power8/strcmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power8/strncmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power9/strcmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/power9/strncmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/strcmp.S: Likewise.
+	* sysdeps/powerpc/powerpc64/strncmp.S: Likewise.
+
 	* sysdeps/powerpc/powerpc64/multiarch/stpcpy-power8.S: Define the
 	implementation-specific function name and remove unneeded macros
 	definition.
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
index f30a3119ed..da4c4054c3 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S
@@ -18,20 +18,7 @@
 
 #include <sysdep.h>
 
-#undef ENTRY
-#define ENTRY(name)						\
-  .section ".text";						\
-  ENTRY_2(__strcasecmp_l_power7)				\
-  .align ALIGNARG(2);						\
-  BODY_LABEL(__strcasecmp_l_power7):				\
-  cfi_startproc;						\
-  LOCALENTRY(__strcasecmp_l_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcasecmp_l_power7)				\
-  END_2(__strcasecmp_l_power7)
+#define __strcasecmp __strcasecmp_l_power7
 
 #undef weak_alias
 #define weak_alias(name, alias)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
index b34bd4580b..82d1b63af9 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power7.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcmp_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcmp_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcmp_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcmp_power7)					\
-  END_2(__strcmp_power7)
+#define STRCMP __strcmp_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
index b3aeb6cc06..b2464a8018 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power8.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcmp_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcmp_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcmp_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcmp_power8)					\
-  END_2(__strcmp_power8)
+#define STRCMP __strcmp_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
index 11dc688e7f..48ea05d2c5 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-power9.S
@@ -18,21 +18,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcmp_power9)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcmp_power9):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcmp_power9)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcmp_power9)					\
-  END_2(__strcmp_power9)
+#define STRCMP __strcmp_power9
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
index 3cff3266be..085e74758f 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strcmp-ppc64.S
@@ -19,25 +19,11 @@
 #include <sysdep.h>
 
 #if defined SHARED && IS_IN (libc)
-# undef EALIGN
-# define EALIGN(name, alignt, words)				\
-  .section ".text";						\
-  ENTRY_2(__strcmp_ppc)						\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strcmp_ppc):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strcmp_ppc)
-
-# undef END
-# define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strcmp_ppc)					\
-  END_2(__strcmp_ppc)
+# define STRCMP __strcmp_ppc
 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)				\
     .globl __GI_strcmp; __GI_strcmp = __strcmp_ppc
-#endif
+#endif /* SHARED && IS_IN  */
 
 #include <sysdeps/powerpc/powerpc64/strcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
index fa25d8e3ec..01729a3bba 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S
@@ -17,21 +17,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_power4)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_power4):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_power4)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_power4)					\
-  END_2(__strncmp_power4)
+#define STRNCMP __strncmp_power4
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
index 3aad27782a..a069d4b21c 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S
@@ -17,22 +17,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_power7)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_power7):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_power7)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_power7)					\
-  END_2(__strncmp_power7)
-
+#define STRNCMP __strncmp_power7
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
index 496d19e848..3cbcaada62 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power8.S
@@ -17,22 +17,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_power8)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_power8):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_power8)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_power8)					\
-  END_2(__strncmp_power8)
-
+#define STRNCMP __strncmp_power8
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
index bd09285b9d..6d0deaa6e6 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power9.S
@@ -17,22 +17,7 @@
 
 #include <sysdep.h>
 
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_power9)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_power9):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_power9)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_power9)					\
-  END_2(__strncmp_power9)
-
+#define STRNCMP __strncmp_power9
 
 #undef libc_hidden_builtin_def
 #define libc_hidden_builtin_def(name)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
index 2e7885b341..e4b93ae8f2 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S
@@ -18,21 +18,7 @@
 #include <sysdep.h>
 
 #if defined SHARED && IS_IN (libc)
-#undef EALIGN
-#define EALIGN(name,alignt,words)				\
-  .section ".text";						\
-  ENTRY_2(__strncmp_ppc)					\
-  .align ALIGNARG(alignt);					\
-  EALIGN_W_##words;						\
-  BODY_LABEL(__strncmp_ppc):					\
-  cfi_startproc;						\
-  LOCALENTRY(__strncmp_ppc)
-
-#undef END
-#define END(name)						\
-  cfi_endproc;							\
-  TRACEBACK(__strncmp_ppc)					\
-  END_2(__strncmp_ppc)
+# define STRNCMP __strncmp_ppc
 
 # undef libc_hidden_builtin_def
 # define libc_hidden_builtin_def(name)				\
diff --git a/sysdeps/powerpc/powerpc64/power4/strncmp.S b/sysdeps/powerpc/powerpc64/power4/strncmp.S
index e8a0970f4f..2b0c00dfb2 100644
--- a/sysdeps/powerpc/powerpc64/power4/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/power4/strncmp.S
@@ -18,11 +18,15 @@
 
 #include <sysdep.h>
 
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
 /* See strlen.s for comments on how the end-of-string testing works.  */
 
 /* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
 
-EALIGN (strncmp, 4, 0)
+EALIGN (STRNCMP, 4, 0)
 	CALL_MCOUNT 3
 
 #define rTMP2	r0
@@ -217,5 +221,5 @@ L(u4):	sub	rRTN, rWORD1, rWORD2
 L(ux):
 	li	rRTN, 0
 	blr
-END (strncmp)
+END (STRNCMP)
 libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/strcmp.S b/sysdeps/powerpc/powerpc64/power7/strcmp.S
index e468103ddc..14e14f457e 100644
--- a/sysdeps/powerpc/powerpc64/power7/strcmp.S
+++ b/sysdeps/powerpc/powerpc64/power7/strcmp.S
@@ -23,10 +23,14 @@
 
 #include <sysdep.h>
 
+#ifndef STRCMP
+# define STRCMP strcmp
+#endif
+
 /* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
 
 	.machine	power7
-EALIGN (strcmp, 4, 0)
+EALIGN (STRCMP, 4, 0)
 	CALL_MCOUNT 2
 
 	or r9, r3, r4
@@ -160,5 +164,5 @@ L(diffOfNULL):
 	extsw r3, r10		/* sign extend result  */
 	blr			/* return  */
 
-END (strcmp)
+END (STRCMP)
 libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/power7/strncmp.S b/sysdeps/powerpc/powerpc64/power7/strncmp.S
index 6a03da5f2b..d53b31be8e 100644
--- a/sysdeps/powerpc/powerpc64/power7/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/power7/strncmp.S
@@ -18,13 +18,17 @@
 
 #include <sysdep.h>
 
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
 /* See strlen.s for comments on how the end-of-string testing works.  */
 
 /* int [r3] strncmp (const char *s1 [r3],
 		     const char *s2 [r4],
 		     size_t size [r5])  */
 
-EALIGN (strncmp,5,0)
+EALIGN (STRNCMP,5,0)
 	CALL_MCOUNT 3
 
 #define rTMP2	r0
@@ -219,5 +223,5 @@ L(u4):	sub	rRTN,rWORD1,rWORD2
 L(ux):
 	li	rRTN,0
 	blr
-END (strncmp)
+END (STRNCMP)
 libc_hidden_builtin_def (strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power8/strcmp.S b/sysdeps/powerpc/powerpc64/power8/strcmp.S
index d46bff80cd..770484f1e1 100644
--- a/sysdeps/powerpc/powerpc64/power8/strcmp.S
+++ b/sysdeps/powerpc/powerpc64/power8/strcmp.S
@@ -18,6 +18,10 @@
 
 #include <sysdep.h>
 
+#ifndef STRCMP
+# define STRCMP strcmp
+#endif
+
 /* Implements the function
 
    size_t [r3] strcmp (const char *s1 [r3], const char *s2 [r4])
@@ -27,7 +31,7 @@
    64K as default, the page cross handling assumes minimum page size of
    4k.  */
 
-EALIGN (strcmp, 4, 0)
+EALIGN (STRCMP, 4, 0)
 	li	r0,0
 
 	/* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
@@ -239,5 +243,5 @@ L(pagecross_retdiff):
 L(pagecross_nullfound):
 	li	r3,0
 	b	L(pagecross_retdiff)
-END (strcmp)
+END (STRCMP)
 libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/power8/strncmp.S b/sysdeps/powerpc/powerpc64/power8/strncmp.S
index b93a16edc7..3d8df90538 100644
--- a/sysdeps/powerpc/powerpc64/power8/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/power8/strncmp.S
@@ -18,6 +18,10 @@
 
 #include <sysdep.h>
 
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
 /* Implements the function
 
    int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t [r5] n)
@@ -28,7 +32,7 @@
    4k.  */
 
 	.machine  power7
-EALIGN (strncmp, 4, 0)
+EALIGN (STRNCMP, 4, 0)
 	/* Check if size is 0.  */
 	mr.	r10,r5
 	beq	cr0,L(ret0)
@@ -319,5 +323,5 @@ L(byte_ne_4):
 	extsw	r10,r9
 	mr	r9,r8
 	b	L(size_reached_1)
-END(strncmp)
+END(STRNCMP)
 libc_hidden_builtin_def(strncmp)
diff --git a/sysdeps/powerpc/powerpc64/power9/strcmp.S b/sysdeps/powerpc/powerpc64/power9/strcmp.S
index 17ec8c24c3..2dc4f6c722 100644
--- a/sysdeps/powerpc/powerpc64/power9/strcmp.S
+++ b/sysdeps/powerpc/powerpc64/power9/strcmp.S
@@ -18,6 +18,10 @@
 #ifdef __LITTLE_ENDIAN__
 #include <sysdep.h>
 
+#ifndef STRCMP
+# define STRCMP strcmp
+#endif
+
 /* Implements the function
 
    int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])
@@ -62,7 +66,7 @@
    allows it.  */
 
 	.machine  power7
-EALIGN (strcmp, 4, 0)
+EALIGN (STRCMP, 4, 0)
 	li	r0, 0
 
 	/* Check if [s1]+16 or [s2]+16 will cross a 4K page boundary using
@@ -257,7 +261,7 @@ L(pagecross_retdiff):
 L(pagecross_nullfound):
 	li	r3, 0
 	b	L(pagecross_retdiff)
-END (strcmp)
+END (STRCMP)
 libc_hidden_builtin_def (strcmp)
 #else
 #include <sysdeps/powerpc/powerpc64/power8/strcmp.S>
diff --git a/sysdeps/powerpc/powerpc64/power9/strncmp.S b/sysdeps/powerpc/powerpc64/power9/strncmp.S
index 14d016a0e2..c946a5c638 100644
--- a/sysdeps/powerpc/powerpc64/power9/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/power9/strncmp.S
@@ -26,6 +26,10 @@
    code paths depending of data alignment for first 32 bytes and uses
    vectorised loops after that.  */
 
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
 /* TODO: Change this to actual instructions when minimum binutils is upgraded
    to 2.27. Macros are defined below for these newer instructions in order
    to maintain compatibility.  */
@@ -64,7 +68,7 @@
 /* TODO: change this to .machine power9 when minimum binutils
    is upgraded to 2.27.  */
 	.machine  power7
-EALIGN (strncmp, 4, 0)
+EALIGN (STRNCMP, 4, 0)
 	/* Check if size is 0.  */
 	cmpdi	cr0, r5, 0
 	beq	cr0, L(ret0)
@@ -368,7 +372,7 @@ L(byte_ne_2):
 L(byte_ne_3):
 	extsw	r7, r7
 	b	L(byte_ne_1)
-END(strncmp)
+END(STRNCMP)
 libc_hidden_builtin_def(strncmp)
 #else
 #include <sysdeps/powerpc/powerpc64/power8/strncmp.S>
diff --git a/sysdeps/powerpc/powerpc64/strcmp.S b/sysdeps/powerpc/powerpc64/strcmp.S
index 3cadccac7a..ab5f8c231c 100644
--- a/sysdeps/powerpc/powerpc64/strcmp.S
+++ b/sysdeps/powerpc/powerpc64/strcmp.S
@@ -22,7 +22,11 @@
 
 /* int [r3] strcmp (const char *s1 [r3], const char *s2 [r4])  */
 
-EALIGN (strcmp, 4, 0)
+#ifndef STRCMP
+# define STRCMP strcmp
+#endif
+
+EALIGN (STRCMP, 4, 0)
 	CALL_MCOUNT 2
 
 #define rTMP2	r0
@@ -172,5 +176,5 @@ L(u3):	sub	rRTN, rWORD1, rWORD2
 L(u4):	lbz	rWORD1, -1(rSTR1)
 	sub	rRTN, rWORD1, rWORD2
 	blr
-END (strcmp)
+END (STRCMP)
 libc_hidden_builtin_def (strcmp)
diff --git a/sysdeps/powerpc/powerpc64/strncmp.S b/sysdeps/powerpc/powerpc64/strncmp.S
index d560e4fd5d..076599804a 100644
--- a/sysdeps/powerpc/powerpc64/strncmp.S
+++ b/sysdeps/powerpc/powerpc64/strncmp.S
@@ -22,7 +22,11 @@
 
 /* int [r3] strncmp (const char *s1 [r3], const char *s2 [r4], size_t size [r5])  */
 
-EALIGN (strncmp, 4, 0)
+#ifndef STRNCMP
+# define STRNCMP strncmp
+#endif
+
+EALIGN (STRNCMP, 4, 0)
 	CALL_MCOUNT 3
 
 #define rTMP2	r0
@@ -202,5 +206,5 @@ L(u1):
 L(u2):	lbzu	rWORD1, -1(rSTR1)
 L(u3):	sub	rRTN, rWORD1, rWORD2
 	blr
-END (strncmp)
+END (STRNCMP)
 libc_hidden_builtin_def (strncmp)