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.
This commit is contained in:
Wainer dos Santos Moschetta 2017-04-11 14:18:35 -03:00 committed by Tulio Magno Quites Machado Filho
parent 6d15a5c2e9
commit f0748b70a8
5 changed files with 22 additions and 34 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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)