aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog17
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpncpy-power7.S3
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/stpncpy-power8.S5
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncpy-power7.S3
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strncpy-power8.S3
-rw-r--r--sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S5
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strncpy.S3
-rw-r--r--sysdeps/powerpc/powerpc64/power7/strstr.S13
-rw-r--r--sysdeps/powerpc/powerpc64/power8/strncpy.S4
9 files changed, 56 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 3b4693461e..335fe05d7c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
2017-06-14 Alan Modra <amodra@gmail.com>
+ * 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.
+
+2017-06-14 Alan Modra <amodra@gmail.com>
+
* sysdeps/powerpc/powerpc64/sysdep.h: Formatting.
(FUNC_LABEL): Rename from DOT_LABEL.
(ENTRY_1): Use FUNC_LABEL and remove leading space from label.
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>
diff --git a/sysdeps/powerpc/powerpc64/power7/strncpy.S b/sysdeps/powerpc/powerpc64/power7/strncpy.S
index 0224f74898..88d797908c 100644
--- a/sysdeps/powerpc/powerpc64/power7/strncpy.S
+++ b/sysdeps/powerpc/powerpc64/power7/strncpy.S
@@ -59,6 +59,7 @@
/* For builds with no IFUNC support, local calls should be made to internal
GLIBC symbol (created by libc_hidden_builtin_def). */
# ifdef SHARED
+# define MEMSET_is_local
# define MEMSET __GI_memset
# else
# define MEMSET memset
@@ -223,7 +224,9 @@ L(zeroFill):
li r4, 0 /* zero fill buffer */
mr r5, r8 /* how many bytes to fill buffer with */
bl MEMSET /* call optimized memset */
+#ifndef MEMSET_is_local
nop
+#endif
L(update3return):
#ifdef USE_AS_STPNCPY
diff --git a/sysdeps/powerpc/powerpc64/power7/strstr.S b/sysdeps/powerpc/powerpc64/power7/strstr.S
index 260db2ed6d..1c432534a3 100644
--- a/sysdeps/powerpc/powerpc64/power7/strstr.S
+++ b/sysdeps/powerpc/powerpc64/power7/strstr.S
@@ -34,6 +34,7 @@
GLIBC symbol (created by libc_hidden_builtin_def). */
# ifdef SHARED
# define STRLEN __GI_strlen
+# define STRLEN_is_local
# else
# define STRLEN strlen
# endif
@@ -44,6 +45,7 @@
GLIBC symbol (created by libc_hidden_builtin_def). */
# ifdef SHARED
# define STRNLEN __GI_strnlen
+# define STRNLEN_is_local
# else
# define STRNLEN __strnlen
# endif
@@ -52,6 +54,7 @@
#ifndef STRCHR
# ifdef SHARED
# define STRCHR __GI_strchr
+# define STRCHR_is_local
# else
# define STRCHR strchr
# endif
@@ -86,7 +89,9 @@ EALIGN (STRSTR, 4, 0)
mr r30, r4
mr r3, r4
bl STRLEN
+#ifndef STRLEN_is_local
nop
+#endif
cmpdi cr7, r3, 0 /* If search str is null. */
beq cr7, L(ret_r3)
@@ -95,14 +100,18 @@ EALIGN (STRSTR, 4, 0)
mr r4, r3
mr r3, r29
bl STRNLEN
+#ifndef STRNLEN_is_local
nop
+#endif
cmpd cr7, r3, r31 /* If len(r3) < len(r4). */
blt cr7, L(retnull)
mr r3, r29
lbz r4, 0(r30)
bl STRCHR
+#ifndef STRCHR_is_local
nop
+#endif
mr r11, r3
/* If first char of search str is not present. */
@@ -334,7 +343,9 @@ L(begin):
beq cr7, L(default)
lbz r4, 0(r30)
bl STRCHR
+#ifndef STRCHR_is_local
nop
+#endif
/* If first char of search str is not present. */
cmpdi cr7, r3, 0
ble cr7, L(end)
@@ -437,7 +448,9 @@ L(nextbyte):
beq cr7, L(default)
lbz r4, 0(r30)
bl STRCHR
+#ifndef STRCHR_is_local
nop
+#endif
/* If first char of search str is not present. */
cmpdi cr7, r3, 0
ble cr7, L(end)
diff --git a/sysdeps/powerpc/powerpc64/power8/strncpy.S b/sysdeps/powerpc/powerpc64/power8/strncpy.S
index 6d40f30ff7..552c5cc577 100644
--- a/sysdeps/powerpc/powerpc64/power8/strncpy.S
+++ b/sysdeps/powerpc/powerpc64/power8/strncpy.S
@@ -36,6 +36,7 @@
/* For builds without IFUNC support, local calls should be made to internal
GLIBC symbol (created by libc_hidden_builtin_def). */
# ifdef SHARED
+# define MEMSET_is_local
# define MEMSET __GI_memset
# else
# define MEMSET memset
@@ -61,6 +62,7 @@
.machine power7
EALIGN (FUNC_NAME, 4, 0)
+ CALL_MCOUNT 3
/* Check if the [src]+15 will cross a 4K page by checking if the bit
indicating the page size changes. Basically:
@@ -242,7 +244,9 @@ L(zero_pad_start_1):
cfi_adjust_cfa_offset(FRAMESIZE)
bl MEMSET
+#ifndef MEMSET_is_local
nop
+#endif
/* Restore the stack frame. */
addi r1,r1,FRAMESIZE