mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-11 11:50:06 +00:00
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:
parent
6d15a5c2e9
commit
f0748b70a8
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user