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>
|
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
|
* sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S: Define the
|
||||||
implementation-specific function name and remove unneeded macros
|
implementation-specific function name and remove unneeded macros
|
||||||
definition.
|
definition.
|
||||||
|
@ -18,21 +18,7 @@
|
|||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
#undef EALIGN
|
#define STRCASESTR __strcasestr_power8
|
||||||
#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)
|
|
||||||
|
|
||||||
#undef libc_hidden_builtin_def
|
#undef libc_hidden_builtin_def
|
||||||
#define libc_hidden_builtin_def(name)
|
#define libc_hidden_builtin_def(name)
|
||||||
|
@ -18,21 +18,7 @@
|
|||||||
|
|
||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
#undef EALIGN
|
#define STRSTR __strstr_power7
|
||||||
#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)
|
|
||||||
|
|
||||||
#undef libc_hidden_builtin_def
|
#undef libc_hidden_builtin_def
|
||||||
#define libc_hidden_builtin_def(name)
|
#define libc_hidden_builtin_def(name)
|
||||||
|
@ -25,6 +25,10 @@
|
|||||||
|
|
||||||
#define ITERATIONS 64
|
#define ITERATIONS 64
|
||||||
|
|
||||||
|
#ifndef STRSTR
|
||||||
|
# define STRSTR strstr
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef STRLEN
|
#ifndef STRLEN
|
||||||
/* For builds with no IFUNC support, local calls should be made to internal
|
/* For builds with no IFUNC support, local calls should be made to internal
|
||||||
GLIBC symbol (created by libc_hidden_builtin_def). */
|
GLIBC symbol (created by libc_hidden_builtin_def). */
|
||||||
@ -55,7 +59,7 @@
|
|||||||
|
|
||||||
#define FRAMESIZE (FRAME_MIN_SIZE+32)
|
#define FRAMESIZE (FRAME_MIN_SIZE+32)
|
||||||
.machine power7
|
.machine power7
|
||||||
EALIGN (strstr, 4, 0)
|
EALIGN (STRSTR, 4, 0)
|
||||||
CALL_MCOUNT 2
|
CALL_MCOUNT 2
|
||||||
mflr r0 /* Load link register LR to r0. */
|
mflr r0 /* Load link register LR to r0. */
|
||||||
std r31, -8(r1) /* Save callers register r31. */
|
std r31, -8(r1) /* Save callers register r31. */
|
||||||
@ -513,5 +517,5 @@ L(end):
|
|||||||
ld r31, -8(r1) /* Restore callers save register r31. */
|
ld r31, -8(r1) /* Restore callers save register r31. */
|
||||||
mtlr r0 /* Branch to link register. */
|
mtlr r0 /* Branch to link register. */
|
||||||
blr
|
blr
|
||||||
END (strstr)
|
END (STRSTR)
|
||||||
libc_hidden_builtin_def (strstr)
|
libc_hidden_builtin_def (strstr)
|
||||||
|
@ -27,6 +27,10 @@
|
|||||||
fallback to default. */
|
fallback to default. */
|
||||||
#define ITERATIONS 64
|
#define ITERATIONS 64
|
||||||
|
|
||||||
|
#ifndef STRCASESTR
|
||||||
|
# define STRCASESTR __strcasestr
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef STRLEN
|
#ifndef STRLEN
|
||||||
/* For builds without IFUNC support, local calls should be made to internal
|
/* For builds without IFUNC support, local calls should be made to internal
|
||||||
GLIBC symbol (created by libc_hidden_builtin_def). */
|
GLIBC symbol (created by libc_hidden_builtin_def). */
|
||||||
@ -81,7 +85,7 @@
|
|||||||
/* TODO: change this to .machine power8 when the minimum required binutils
|
/* TODO: change this to .machine power8 when the minimum required binutils
|
||||||
allows it. */
|
allows it. */
|
||||||
.machine power7
|
.machine power7
|
||||||
EALIGN (__strcasestr, 4, 0)
|
EALIGN (STRCASESTR, 4, 0)
|
||||||
CALL_MCOUNT 2
|
CALL_MCOUNT 2
|
||||||
mflr r0 /* Load link register LR to r0. */
|
mflr r0 /* Load link register LR to r0. */
|
||||||
std r31, -8(r1) /* Save callers register r31. */
|
std r31, -8(r1) /* Save callers register r31. */
|
||||||
@ -527,7 +531,7 @@ L(end):
|
|||||||
cfi_restore(r31)
|
cfi_restore(r31)
|
||||||
mtlr r0 /* Branch to link register. */
|
mtlr r0 /* Branch to link register. */
|
||||||
blr
|
blr
|
||||||
END (__strcasestr)
|
END (STRCASESTR)
|
||||||
|
|
||||||
weak_alias (__strcasestr, strcasestr)
|
weak_alias (__strcasestr, strcasestr)
|
||||||
libc_hidden_def (__strcasestr)
|
libc_hidden_def (__strcasestr)
|
||||||
|
Loading…
Reference in New Issue
Block a user