diff options
author | Alan Modra <amodra@gmail.com> | 2017-06-14 10:44:59 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-06-14 10:44:59 +0930 |
commit | de7ee73d6f5000478173ac065ded4077fd6ddee2 (patch) | |
tree | c02db136edac440e4b9ff9cbdb2466d098ea0a22 /sysdeps/powerpc/powerpc64/multiarch | |
parent | 4b6e7667db6983fa953c1cac7671f68edacca0b4 (diff) | |
download | glibc-de7ee73d6f5000478173ac065ded4077fd6ddee2.tar.gz |
PowerPC64 strncpy, stpncpy and strstr fixes
Makes __stpncpy_power8 call __memset_power8 directly rather than via an
IFUNC. Fixes a missing _mcount, and removes some redundant NOPS. The
*_is_local defines are also used in a followup patch.
* sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S: Define
MEMSET_is_local.
* sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S: Likewise.
* sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S: Likewise.
* sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S: Likewise.
Define MEMSET.
* sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S: Define
STRLEN_is_local, STRNLEN_is_local, and STRCHR_is_local.
* sysdeps/powerpc/powerpc64/power7/strstr.S: Likewise. Don't add
nop after local calls.
* sysdeps/powerpc/powerpc64/power7/strncpy.S: Define MEMSET_is_local.
Don't add nop after local call.
* sysdeps/powerpc/powerpc64/power8/strncpy.S: Likewise. Add missing
CALL_MCOUNT.
Diffstat (limited to 'sysdeps/powerpc/powerpc64/multiarch')
5 files changed, 19 insertions, 0 deletions
diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S index 6636b01d07..6e6fa3e1f2 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S @@ -26,5 +26,8 @@ #define libc_hidden_builtin_def(name) #define MEMSET __memset_power7 +#ifdef SHARED +#define MEMSET_is_local +#endif #include <sysdeps/powerpc/powerpc64/power7/stpncpy.S> diff --git a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S index 6ce706a879..96636593bd 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S @@ -25,4 +25,9 @@ #undef libc_hidden_builtin_def #define libc_hidden_builtin_def(name) +#define MEMSET __memset_power8 +#ifdef SHARED +#define MEMSET_is_local +#endif + #include <sysdeps/powerpc/powerpc64/power8/stpncpy.S> diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S index 03f7f83448..a36e5dd3a6 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S @@ -24,5 +24,8 @@ #define libc_hidden_builtin_def(name) #define MEMSET __memset_power7 +#ifdef SHARED +#define MEMSET_is_local +#endif #include <sysdeps/powerpc/powerpc64/power7/strncpy.S> diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S index 17117eb7ec..3edb2c6a9f 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S @@ -25,5 +25,8 @@ /* memset is used to pad the end of the string. */ #define MEMSET __memset_power8 +#ifdef SHARED +#define MEMSET_is_local +#endif #include <sysdeps/powerpc/powerpc64/power8/strncpy.S> diff --git a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S index 3991df74a8..900d3be065 100644 --- a/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S +++ b/sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S @@ -26,5 +26,10 @@ #define STRLEN __strlen_power7 #define STRNLEN __strnlen_power7 #define STRCHR __strchr_power7 +#ifdef SHARED +#define STRLEN_is_local +#define STRNLEN_is_local +#define STRCHR_is_local +#endif #include <sysdeps/powerpc/powerpc64/power7/strstr.S> |