public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Minor fixes from generic string routines
@ 2023-02-07 13:12 Adhemerval Zanella
  2023-02-07 13:12 ` [PATCH 1/3] string: Add libc_hidden_proto for strchrnul Adhemerval Zanella
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Adhemerval Zanella @ 2023-02-07 13:12 UTC (permalink / raw)
  To: libc-alpha, Richard Henderson, Noah Goldstein

The improve generic string routines review brought up minor issues
with the internal hidden proto and def for strchrnul and memrchr.
Although it does not incur in intra-PLT generation, it would be good
to fix them for consistency.

The strcnmp fix is to guarantee that the generic implementation can
be used on static initialization (once the loader is realocated or
loader is initialized).  Ideally I think it would be better to
disable static protection on all string routines, but we can do
it one by one.

Adhemerval Zanella (3):
  string: Add libc_hidden_proto for strchrnul
  string: Add libc_hidden_proto for memrchr
  string: Disable stack protector in early static initialization

 include/string.h                               |  2 ++
 string/Makefile                                |  2 ++
 string/memrchr.c                               |  1 +
 string/strchrnul.c                             |  1 +
 sysdeps/aarch64/memrchr.S                      |  1 +
 sysdeps/aarch64/strchrnul.S                    |  1 +
 sysdeps/i386/i686/multiarch/memrchr-sse2.S     |  1 +
 sysdeps/i386/i686/multiarch/memrchr.c          |  2 ++
 sysdeps/i386/strchrnul.S                       |  1 +
 sysdeps/m68k/strchrnul.S                       |  1 +
 .../powerpc32/power4/multiarch/memrchr-ppc32.c | 10 ++++++++++
 .../powerpc32/power4/multiarch/memrchr.c       | 12 ++++++------
 .../power4/multiarch/strchrnul-ppc32.c         |  7 +++++++
 .../powerpc32/power4/multiarch/strchrnul.c     | 17 +++++++++--------
 sysdeps/powerpc/powerpc32/power7/memrchr.S     |  1 +
 sysdeps/powerpc/powerpc64/multiarch/memrchr.c  | 18 +++++++++---------
 .../powerpc/powerpc64/multiarch/strchrnul.c    |  1 +
 sysdeps/powerpc/powerpc64/power7/memrchr.S     |  1 +
 sysdeps/powerpc/powerpc64/power8/memrchr.S     |  1 +
 sysdeps/s390/memrchr-c.c                       |  4 ++++
 sysdeps/s390/memrchr.c                         |  8 +++++---
 sysdeps/s390/strchrnul-c.c                     |  4 +++-
 sysdeps/s390/strchrnul.c                       |  8 +++++---
 sysdeps/x86_64/memrchr.S                       |  1 +
 sysdeps/x86_64/multiarch/memrchr.c             |  1 +
 sysdeps/x86_64/multiarch/strchrnul.c           |  4 ++++
 sysdeps/x86_64/strchrnul.S                     |  1 +
 27 files changed, 82 insertions(+), 30 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] string: Add libc_hidden_proto for strchrnul
  2023-02-07 13:12 [PATCH 0/3] Minor fixes from generic string routines Adhemerval Zanella
@ 2023-02-07 13:12 ` Adhemerval Zanella
  2023-02-08 17:14   ` Carlos Seo
  2023-02-07 13:12 ` [PATCH 2/3] string: Add libc_hidden_proto for memrchr Adhemerval Zanella
  2023-02-07 13:12 ` [PATCH 3/3] string: Disable stack protector in early static initialization Adhemerval Zanella
  2 siblings, 1 reply; 10+ messages in thread
From: Adhemerval Zanella @ 2023-02-07 13:12 UTC (permalink / raw)
  To: libc-alpha, Richard Henderson, Noah Goldstein

Although static linker can optimize it to local call, it follow the
internal scheme to provide hidden proto and definitions.
---
 include/string.h                                |  1 +
 string/strchrnul.c                              |  1 +
 sysdeps/aarch64/strchrnul.S                     |  1 +
 sysdeps/i386/strchrnul.S                        |  1 +
 sysdeps/m68k/strchrnul.S                        |  1 +
 .../power4/multiarch/strchrnul-ppc32.c          |  7 +++++++
 .../powerpc32/power4/multiarch/strchrnul.c      | 17 +++++++++--------
 sysdeps/powerpc/powerpc64/multiarch/strchrnul.c |  1 +
 sysdeps/s390/strchrnul-c.c                      |  4 +++-
 sysdeps/s390/strchrnul.c                        |  8 +++++---
 sysdeps/x86_64/multiarch/strchrnul.c            |  4 ++++
 sysdeps/x86_64/strchrnul.S                      |  1 +
 12 files changed, 35 insertions(+), 12 deletions(-)

diff --git a/include/string.h b/include/string.h
index 21f641a413..6e364e8a67 100644
--- a/include/string.h
+++ b/include/string.h
@@ -95,6 +95,7 @@ libc_hidden_proto (__rawmemchr)
 libc_hidden_proto (__strcasecmp)
 libc_hidden_proto (__strcasecmp_l)
 libc_hidden_proto (__strncasecmp_l)
+libc_hidden_proto (__strchrnul)
 extern __typeof (strncat) __strncat;
 libc_hidden_proto (__strncat)
 libc_hidden_proto (__strdup)
diff --git a/string/strchrnul.c b/string/strchrnul.c
index e7887fa285..01fa25bdb7 100644
--- a/string/strchrnul.c
+++ b/string/strchrnul.c
@@ -51,5 +51,6 @@ __strchrnul (const char *str, int c_in)
   return (char *) word_ptr + index_first_zero_eq (word, repeated_c);
 }
 #ifndef STRCHRNUL
+libc_hidden_def (__strchrnul)
 weak_alias (__strchrnul, strchrnul)
 #endif
diff --git a/sysdeps/aarch64/strchrnul.S b/sysdeps/aarch64/strchrnul.S
index aa8c9a4363..00ce463439 100644
--- a/sysdeps/aarch64/strchrnul.S
+++ b/sysdeps/aarch64/strchrnul.S
@@ -95,4 +95,5 @@ L(end):
 	ret
 
 END(__strchrnul)
+libc_hidden_def (__strchrnul)
 weak_alias (__strchrnul, strchrnul)
diff --git a/sysdeps/i386/strchrnul.S b/sysdeps/i386/strchrnul.S
index a4fa7469d6..274e83534c 100644
--- a/sysdeps/i386/strchrnul.S
+++ b/sysdeps/i386/strchrnul.S
@@ -273,4 +273,5 @@ L(6):	popl %edi		/* restore saved register content */
 	ret
 END (__strchrnul)
 
+libc_hidden_def (__strchrnul)
 weak_alias (__strchrnul, strchrnul)
diff --git a/sysdeps/m68k/strchrnul.S b/sysdeps/m68k/strchrnul.S
index f4759a0fb3..1aee431f41 100644
--- a/sysdeps/m68k/strchrnul.S
+++ b/sysdeps/m68k/strchrnul.S
@@ -263,4 +263,5 @@ L(L9:)
 	rts
 END(__strchrnul)
 
+libc_hidden_def (__strchrnul)
 weak_alias (__strchrnul, strchrnul)
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c
index da03ac7c04..fbd947def1 100644
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c
+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c
@@ -22,3 +22,10 @@
 extern __typeof (strchrnul) __strchrnul_ppc attribute_hidden;
 
 #include <string/strchrnul.c>
+#undef __strchrnul
+weak_alias (__strchrnul_ppc, __strchrnul)
+#ifdef SHARED
+__hidden_ver1 (__strchrnul_ppc, __GI___strchrnul, __strchrnul_ppc);
+#else
+weak_alias (__strchrnul_ppc, strchrnul)
+#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c
index d17dfa4fcf..b11e2a4ff7 100644
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c
+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul.c
@@ -16,22 +16,23 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-#if IS_IN (libc)
+#if defined SHARED && IS_IN (libc)
+# define __strchrnul __redirect___strchrnul
+# define strchrnul __redirect_strchrnul
 # include <string.h>
 # include <shlib-compat.h>
 # include "init-arch.h"
 
 extern __typeof (__strchrnul) __strchrnul_ppc attribute_hidden;
 extern __typeof (__strchrnul) __strchrnul_power7 attribute_hidden;
+# undef __strchrnul
+# undef strchrnul
 
 /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
    ifunc symbol properly.  */
-libc_ifunc (__strchrnul,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __strchrnul_power7
-            : __strchrnul_ppc);
-
+libc_ifunc_redirected (__redirect___strchrnul, __strchrnul,
+		       (hwcap & PPC_FEATURE_HAS_VSX)
+		       ? __strchrnul_power7
+		       : __strchrnul_ppc);
 weak_alias (__strchrnul, strchrnul)
-#else
-#include <string/strchrnul.c>
 #endif
diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c b/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c
index a901fa3c45..94873507a6 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c
@@ -35,6 +35,7 @@ libc_ifunc (__strchrnul,
             ? __strchrnul_power7
             : __strchrnul_ppc);
 
+libc_hidden_def (__strchrnul)
 weak_alias (__strchrnul, strchrnul)
 #else
 #include <string/strchrnul.c>
diff --git a/sysdeps/s390/strchrnul-c.c b/sysdeps/s390/strchrnul-c.c
index ff6aa38d4f..f6f5bae311 100644
--- a/sysdeps/s390/strchrnul-c.c
+++ b/sysdeps/s390/strchrnul-c.c
@@ -21,8 +21,10 @@
 #if HAVE_STRCHRNUL_C
 # if HAVE_STRCHRNUL_IFUNC
 #  define STRCHRNUL STRCHRNUL_C
-#  define __strchrnul STRCHRNUL
 # endif
 
 # include <string/strchrnul.c>
+# if defined SHARED && IS_IN (libc)
+__hidden_ver1 (__strchrnul_c, __GI___strchrnul, __strchrnul_c);
+# endif
 #endif
diff --git a/sysdeps/s390/strchrnul.c b/sysdeps/s390/strchrnul.c
index a480d28356..e86ba6db75 100644
--- a/sysdeps/s390/strchrnul.c
+++ b/sysdeps/s390/strchrnul.c
@@ -19,18 +19,20 @@
 #include <ifunc-strchrnul.h>
 
 #if HAVE_STRCHRNUL_IFUNC
+# define __strchrnul __redirect_strchrnul
 # include <string.h>
+# undef __strchrnul
 # include <ifunc-resolve.h>
 
 # if HAVE_STRCHRNUL_C
-extern __typeof (__strchrnul) STRCHRNUL_C attribute_hidden;
+extern __typeof (__redirect_strchrnul) STRCHRNUL_C attribute_hidden;
 # endif
 
 # if HAVE_STRCHRNUL_Z13
-extern __typeof (__strchrnul) STRCHRNUL_Z13 attribute_hidden;
+extern __typeof (__redirect_strchrnul) STRCHRNUL_Z13 attribute_hidden;
 # endif
 
-s390_libc_ifunc_expr (__strchrnul, __strchrnul,
+s390_libc_ifunc_expr (__redirect_strchrnul, __strchrnul,
 		      (HAVE_STRCHRNUL_Z13 && (hwcap & HWCAP_S390_VX))
 		      ? STRCHRNUL_Z13
 		      : STRCHRNUL_DEFAULT
diff --git a/sysdeps/x86_64/multiarch/strchrnul.c b/sysdeps/x86_64/multiarch/strchrnul.c
index be9221bb31..69d691631a 100644
--- a/sysdeps/x86_64/multiarch/strchrnul.c
+++ b/sysdeps/x86_64/multiarch/strchrnul.c
@@ -31,4 +31,8 @@
 libc_ifunc_redirected (__redirect_strchrnul, __strchrnul,
 		       IFUNC_SELECTOR ());
 weak_alias (__strchrnul, strchrnul)
+# ifdef SHARED
+__hidden_ver1 (__strchrnul, __GI___strchrnul, __redirect_strchrnul)
+  __attribute__((visibility ("hidden"))) __attribute_copy__ (strchrnul);
+# endif
 #endif
diff --git a/sysdeps/x86_64/strchrnul.S b/sysdeps/x86_64/strchrnul.S
index 02cfcba263..07df9a5b06 100644
--- a/sysdeps/x86_64/strchrnul.S
+++ b/sysdeps/x86_64/strchrnul.S
@@ -24,4 +24,5 @@
 
 #include "isa-default-impl.h"
 
+libc_hidden_def (__strchrnul)
 weak_alias (__strchrnul, strchrnul)
-- 
2.34.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 2/3] string: Add libc_hidden_proto for memrchr
  2023-02-07 13:12 [PATCH 0/3] Minor fixes from generic string routines Adhemerval Zanella
  2023-02-07 13:12 ` [PATCH 1/3] string: Add libc_hidden_proto for strchrnul Adhemerval Zanella
@ 2023-02-07 13:12 ` Adhemerval Zanella
  2023-02-08 17:15   ` Carlos Seo
  2023-02-07 13:12 ` [PATCH 3/3] string: Disable stack protector in early static initialization Adhemerval Zanella
  2 siblings, 1 reply; 10+ messages in thread
From: Adhemerval Zanella @ 2023-02-07 13:12 UTC (permalink / raw)
  To: libc-alpha, Richard Henderson, Noah Goldstein

Although static linker can optimize it to local call, it follow the
internal scheme to provide hidden proto and definitions.
---
 include/string.h                               |  1 +
 string/memrchr.c                               |  1 +
 sysdeps/aarch64/memrchr.S                      |  1 +
 sysdeps/i386/i686/multiarch/memrchr-sse2.S     |  1 +
 sysdeps/i386/i686/multiarch/memrchr.c          |  2 ++
 .../powerpc32/power4/multiarch/memrchr-ppc32.c | 10 ++++++++++
 .../powerpc32/power4/multiarch/memrchr.c       | 12 ++++++------
 sysdeps/powerpc/powerpc32/power7/memrchr.S     |  1 +
 sysdeps/powerpc/powerpc64/multiarch/memrchr.c  | 18 +++++++++---------
 sysdeps/powerpc/powerpc64/power7/memrchr.S     |  1 +
 sysdeps/powerpc/powerpc64/power8/memrchr.S     |  1 +
 sysdeps/s390/memrchr-c.c                       |  4 ++++
 sysdeps/s390/memrchr.c                         |  8 +++++---
 sysdeps/x86_64/memrchr.S                       |  1 +
 sysdeps/x86_64/multiarch/memrchr.c             |  1 +
 15 files changed, 45 insertions(+), 18 deletions(-)

diff --git a/include/string.h b/include/string.h
index 6e364e8a67..a9120ff37c 100644
--- a/include/string.h
+++ b/include/string.h
@@ -119,6 +119,7 @@ extern __typeof (memmem) __memmem;
 libc_hidden_proto (__memmem)
 libc_hidden_proto (__ffs)
 libc_hidden_proto (__strerror_l)
+libc_hidden_proto (__memrchr)
 
 #if IS_IN (libc)
 /* Avoid hidden reference to IFUNC symbol __explicit_bzero_chk.  */
diff --git a/string/memrchr.c b/string/memrchr.c
index b37f2a68c8..3de5ec691c 100644
--- a/string/memrchr.c
+++ b/string/memrchr.c
@@ -75,5 +75,6 @@ __memrchr (const void *s, int c_in, size_t n)
   return NULL;
 }
 #ifndef MEMRCHR
+libc_hidden_def (__memrchr)
 weak_alias (__memrchr, memrchr)
 #endif
diff --git a/sysdeps/aarch64/memrchr.S b/sysdeps/aarch64/memrchr.S
index 621fc65109..af7d847dab 100644
--- a/sysdeps/aarch64/memrchr.S
+++ b/sysdeps/aarch64/memrchr.S
@@ -123,5 +123,6 @@ L(nomatch):
 	ret
 
 END (__memrchr)
+libc_hidden_def (__memrchr)
 weak_alias (__memrchr, memrchr)
 libc_hidden_builtin_def (memrchr)
diff --git a/sysdeps/i386/i686/multiarch/memrchr-sse2.S b/sysdeps/i386/i686/multiarch/memrchr-sse2.S
index c2c37f7ce1..aa15e7cf24 100644
--- a/sysdeps/i386/i686/multiarch/memrchr-sse2.S
+++ b/sysdeps/i386/i686/multiarch/memrchr-sse2.S
@@ -720,4 +720,5 @@ L(ret_null):
 	ret
 
 END (__memrchr_sse2)
+strong_alias (__memrchr_sse2, __GI___memrchr)
 #endif
diff --git a/sysdeps/i386/i686/multiarch/memrchr.c b/sysdeps/i386/i686/multiarch/memrchr.c
index c820a9d607..80dca18000 100644
--- a/sysdeps/i386/i686/multiarch/memrchr.c
+++ b/sysdeps/i386/i686/multiarch/memrchr.c
@@ -20,8 +20,10 @@
 /* Define multiple versions only for the definition in libc.  */
 #if IS_IN (libc)
 # define memrchr __redirect_memrchr
+# define __memrchr __redirect___memrchr
 # include <string.h>
 # undef memrchr
+# undef __memrchr
 
 # define SYMBOL_NAME memrchr
 # include "ifunc-sse2-bsf.h"
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c
index 62e7a12989..038c5f4532 100644
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c
+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c
@@ -23,3 +23,13 @@ extern void *__memrchr_ppc (const void *, int, size_t);
 #endif
 
 #include <string/memrchr.c>
+# if IS_IN (libc)
+# undef __memrchr
+# ifdef SHARED
+__hidden_ver1 (__memrchr_ppc, __GI___memrchr, __memrchr_ppc);
+strong_alias (__memrchr_ppc, __memrchr_ppc1);
+__hidden_ver1 (__memrchr_ppc1, __memrchr, __memrchr_ppc1);
+# else
+strong_alias (__memrchr_ppc, __memrchr)
+# endif
+#endif
diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c
index 8c1385fe6a..fb0d2c0617 100644
--- a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c
+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr.c
@@ -17,21 +17,21 @@
    <https://www.gnu.org/licenses/>.  */
 
 #if IS_IN (libc)
+# define memrchr __redirect_memrchr
 # include <string.h>
 # include <shlib-compat.h>
 # include "init-arch.h"
 
 extern __typeof (__memrchr) __memrchr_ppc attribute_hidden;
 extern __typeof (__memrchr) __memrchr_power7 attribute_hidden;
+# undef memrchr
 
 /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
    ifunc symbol properly.  */
-libc_ifunc (__memrchr,
-	    (hwcap & PPC_FEATURE_HAS_VSX)
-            ? __memrchr_power7
-            : __memrchr_ppc);
-
-weak_alias (__memrchr, memrchr)
+libc_ifunc_redirected (__redirect_memrchr, memrchr,
+		       (hwcap & PPC_FEATURE_HAS_VSX)
+		       ? __memrchr_power7
+		       : __memrchr_ppc);
 #else
 #include <string/memrchr.c>
 #endif
diff --git a/sysdeps/powerpc/powerpc32/power7/memrchr.S b/sysdeps/powerpc/powerpc32/power7/memrchr.S
index 9c70517d37..9f0f17fa46 100644
--- a/sysdeps/powerpc/powerpc32/power7/memrchr.S
+++ b/sysdeps/powerpc/powerpc32/power7/memrchr.S
@@ -191,5 +191,6 @@ L(loop_small):
 	blr
 
 END (__memrchr)
+libc_hidden_def (__memrchr)
 weak_alias (__memrchr, memrchr)
 libc_hidden_builtin_def (memrchr)
diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr.c b/sysdeps/powerpc/powerpc64/multiarch/memrchr.c
index 59527a83eb..5e7c00fdce 100644
--- a/sysdeps/powerpc/powerpc64/multiarch/memrchr.c
+++ b/sysdeps/powerpc/powerpc64/multiarch/memrchr.c
@@ -17,6 +17,7 @@
    <https://www.gnu.org/licenses/>.  */
 
 #if IS_IN (libc)
+# define memrchr __redirect_memrchr
 # include <string.h>
 # include <shlib-compat.h>
 # include "init-arch.h"
@@ -24,18 +25,17 @@
 extern __typeof (__memrchr) __memrchr_ppc attribute_hidden;
 extern __typeof (__memrchr) __memrchr_power7 attribute_hidden;
 extern __typeof (__memrchr) __memrchr_power8 attribute_hidden;
+# undef memrchr
 
 /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle
    ifunc symbol properly.  */
-libc_ifunc (__memrchr,
-	    (hwcap2 & PPC_FEATURE2_ARCH_2_07
-	     && hwcap & PPC_FEATURE_HAS_ALTIVEC)
-	    ? __memrchr_power8 :
-	      (hwcap & PPC_FEATURE_ARCH_2_06)
-	      ? __memrchr_power7
-	    : __memrchr_ppc);
-
-weak_alias (__memrchr, memrchr)
+libc_ifunc_redirected (__redirect_memrchr, memrchr,
+		       (hwcap2 & PPC_FEATURE2_ARCH_2_07
+			&& hwcap & PPC_FEATURE_HAS_ALTIVEC)
+		        ? __memrchr_power8 :
+			  (hwcap & PPC_FEATURE_ARCH_2_06)
+			  ? __memrchr_power7
+			  : __memrchr_ppc);
 #else
 #include <string/memrchr.c>
 #endif
diff --git a/sysdeps/powerpc/powerpc64/power7/memrchr.S b/sysdeps/powerpc/powerpc64/power7/memrchr.S
index 56e79f3cd5..3b0430ccff 100644
--- a/sysdeps/powerpc/powerpc64/power7/memrchr.S
+++ b/sysdeps/powerpc/powerpc64/power7/memrchr.S
@@ -196,5 +196,6 @@ L(loop_small):
 	blr
 
 END (MEMRCHR)
+libc_hidden_def (__memrchr)
 weak_alias (__memrchr, memrchr)
 libc_hidden_builtin_def (memrchr)
diff --git a/sysdeps/powerpc/powerpc64/power8/memrchr.S b/sysdeps/powerpc/powerpc64/power8/memrchr.S
index fec76cf586..ebe4017968 100644
--- a/sysdeps/powerpc/powerpc64/power8/memrchr.S
+++ b/sysdeps/powerpc/powerpc64/power8/memrchr.S
@@ -332,5 +332,6 @@ L(loop_small):
 	blr
 
 END (MEMRCHR)
+libc_hidden_def (__memrchr)
 weak_alias (__memrchr, memrchr)
 libc_hidden_builtin_def (memrchr)
diff --git a/sysdeps/s390/memrchr-c.c b/sysdeps/s390/memrchr-c.c
index ce97bc6714..bdf3c7bbe0 100644
--- a/sysdeps/s390/memrchr-c.c
+++ b/sysdeps/s390/memrchr-c.c
@@ -24,4 +24,8 @@
 # endif
 
 # include <string/memrchr.c>
+
+# if defined SHARED && IS_IN (libc)
+__hidden_ver1 (__memrchr_c, __GI___memrchr, __memrchr_c);
+# endif
 #endif
diff --git a/sysdeps/s390/memrchr.c b/sysdeps/s390/memrchr.c
index 73e75628c1..405990faef 100644
--- a/sysdeps/s390/memrchr.c
+++ b/sysdeps/s390/memrchr.c
@@ -19,18 +19,20 @@
 #include <ifunc-memrchr.h>
 
 #if HAVE_MEMRCHR_IFUNC
+# define __memrchr __redirect_memrchr
 # include <string.h>
+# undef __memrchr
 # include <ifunc-resolve.h>
 
 # if HAVE_MEMRCHR_C
-extern __typeof (__memrchr) MEMRCHR_C attribute_hidden;
+extern __typeof (__redirect_memrchr) MEMRCHR_C attribute_hidden;
 # endif
 
 # if HAVE_MEMRCHR_Z13
-extern __typeof (__memrchr) MEMRCHR_Z13 attribute_hidden;
+extern __typeof (__redirect_memrchr) MEMRCHR_Z13 attribute_hidden;
 # endif
 
-s390_libc_ifunc_expr (__memrchr, __memrchr,
+s390_libc_ifunc_expr (__redirect_memrchr, __memrchr,
 		      (HAVE_MEMRCHR_Z13 && (hwcap & HWCAP_S390_VX))
 		      ? MEMRCHR_Z13
 		      : MEMRCHR_DEFAULT
diff --git a/sysdeps/x86_64/memrchr.S b/sysdeps/x86_64/memrchr.S
index fe33998111..98a220f3f4 100644
--- a/sysdeps/x86_64/memrchr.S
+++ b/sysdeps/x86_64/memrchr.S
@@ -25,4 +25,5 @@
 
 #include "isa-default-impl.h"
 
+libc_hidden_def (__memrchr)
 weak_alias (__memrchr, memrchr)
diff --git a/sysdeps/x86_64/multiarch/memrchr.c b/sysdeps/x86_64/multiarch/memrchr.c
index f7db8b4708..49026538d4 100644
--- a/sysdeps/x86_64/multiarch/memrchr.c
+++ b/sysdeps/x86_64/multiarch/memrchr.c
@@ -27,5 +27,6 @@
 # include "ifunc-avx2.h"
 
 libc_ifunc_redirected (__redirect_memrchr, __memrchr, IFUNC_SELECTOR ());
+libc_hidden_def (__memrchr)
 weak_alias (__memrchr, memrchr)
 #endif
-- 
2.34.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 3/3] string: Disable stack protector in early static initialization
  2023-02-07 13:12 [PATCH 0/3] Minor fixes from generic string routines Adhemerval Zanella
  2023-02-07 13:12 ` [PATCH 1/3] string: Add libc_hidden_proto for strchrnul Adhemerval Zanella
  2023-02-07 13:12 ` [PATCH 2/3] string: Add libc_hidden_proto for memrchr Adhemerval Zanella
@ 2023-02-07 13:12 ` Adhemerval Zanella
  2023-02-08 17:27   ` Carlos Seo
  2 siblings, 1 reply; 10+ messages in thread
From: Adhemerval Zanella @ 2023-02-07 13:12 UTC (permalink / raw)
  To: libc-alpha, Richard Henderson, Noah Goldstein

For powerpc, strncmp is used on _dl_string_platform issued by
__tcb_parse_hwcap_and_convert_at_platform.
---
 string/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/string/Makefile b/string/Makefile
index 3eced0d027..c84b49aaa5 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -230,6 +230,8 @@ LDFLAGS-tst-xbzero-opt = -z now
 # Called during TLS initialization.
 CFLAGS-memcpy.c += $(no-stack-protector)
 CFLAGS-wordcopy.c += $(no-stack-protector)
+# Called during static initialization
+CFLAGS-strncmp.c += $(no-stack-protector)
 
 CFLAGS-argz-next.c += $(config-cflags-wno-ignored-attributes)
 CFLAGS-basename.c += $(config-cflags-wno-ignored-attributes)
-- 
2.34.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] string: Add libc_hidden_proto for strchrnul
  2023-02-07 13:12 ` [PATCH 1/3] string: Add libc_hidden_proto for strchrnul Adhemerval Zanella
@ 2023-02-08 17:14   ` Carlos Seo
  2023-02-08 19:52     ` Carlos Seo
  0 siblings, 1 reply; 10+ messages in thread
From: Carlos Seo @ 2023-02-08 17:14 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Richard Henderson, Noah Goldstein

On Tue, 7 Feb 2023 at 10:14, Adhemerval Zanella via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> Although static linker can optimize it to local call, it follow the
> internal scheme to provide hidden proto and definitions.
> ---

Just a typo in the commit message (s/follow/follows/), otherwise, LGTM.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] string: Add libc_hidden_proto for memrchr
  2023-02-07 13:12 ` [PATCH 2/3] string: Add libc_hidden_proto for memrchr Adhemerval Zanella
@ 2023-02-08 17:15   ` Carlos Seo
  2023-02-08 19:52     ` Carlos Seo
  0 siblings, 1 reply; 10+ messages in thread
From: Carlos Seo @ 2023-02-08 17:15 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Richard Henderson, Noah Goldstein

On Tue, 7 Feb 2023 at 10:13, Adhemerval Zanella via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> Although static linker can optimize it to local call, it follow the
> internal scheme to provide hidden proto and definitions.
> ---
Same as in the first patch (s/follow/follows/), otherwise, LGTM.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] string: Disable stack protector in early static initialization
  2023-02-07 13:12 ` [PATCH 3/3] string: Disable stack protector in early static initialization Adhemerval Zanella
@ 2023-02-08 17:27   ` Carlos Seo
  2023-02-08 19:53     ` Carlos Seo
  0 siblings, 1 reply; 10+ messages in thread
From: Carlos Seo @ 2023-02-08 17:27 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Richard Henderson, Noah Goldstein

On Tue, 7 Feb 2023 at 10:14, Adhemerval Zanella via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> For powerpc, strncmp is used on _dl_string_platform issued by
> __tcb_parse_hwcap_and_convert_at_platform.
> ---

LGTM.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 1/3] string: Add libc_hidden_proto for strchrnul
  2023-02-08 17:14   ` Carlos Seo
@ 2023-02-08 19:52     ` Carlos Seo
  0 siblings, 0 replies; 10+ messages in thread
From: Carlos Seo @ 2023-02-08 19:52 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Richard Henderson, Noah Goldstein

Reviewed-by: Carlos Eduardo Seo <carlos.seo@linaro.org>

On Wed, 8 Feb 2023 at 14:14, Carlos Seo <carlos.seo@linaro.org> wrote:
>
> On Tue, 7 Feb 2023 at 10:14, Adhemerval Zanella via Libc-alpha
> <libc-alpha@sourceware.org> wrote:
> >
> > Although static linker can optimize it to local call, it follow the
> > internal scheme to provide hidden proto and definitions.
> > ---
>
> Just a typo in the commit message (s/follow/follows/), otherwise, LGTM.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 2/3] string: Add libc_hidden_proto for memrchr
  2023-02-08 17:15   ` Carlos Seo
@ 2023-02-08 19:52     ` Carlos Seo
  0 siblings, 0 replies; 10+ messages in thread
From: Carlos Seo @ 2023-02-08 19:52 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Richard Henderson, Noah Goldstein

Reviewed-by: Carlos Eduardo Seo <carlos.seo@linaro.org>

On Wed, 8 Feb 2023 at 14:15, Carlos Seo <carlos.seo@linaro.org> wrote:
>
> On Tue, 7 Feb 2023 at 10:13, Adhemerval Zanella via Libc-alpha
> <libc-alpha@sourceware.org> wrote:
> >
> > Although static linker can optimize it to local call, it follow the
> > internal scheme to provide hidden proto and definitions.
> > ---
> Same as in the first patch (s/follow/follows/), otherwise, LGTM.

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 3/3] string: Disable stack protector in early static initialization
  2023-02-08 17:27   ` Carlos Seo
@ 2023-02-08 19:53     ` Carlos Seo
  0 siblings, 0 replies; 10+ messages in thread
From: Carlos Seo @ 2023-02-08 19:53 UTC (permalink / raw)
  To: Adhemerval Zanella; +Cc: libc-alpha, Richard Henderson, Noah Goldstein

Reviewed-by: Carlos Eduardo Seo <carlos.seo@linaro.org>

On Wed, 8 Feb 2023 at 14:27, Carlos Seo <carlos.seo@linaro.org> wrote:
>
> On Tue, 7 Feb 2023 at 10:14, Adhemerval Zanella via Libc-alpha
> <libc-alpha@sourceware.org> wrote:
> >
> > For powerpc, strncmp is used on _dl_string_platform issued by
> > __tcb_parse_hwcap_and_convert_at_platform.
> > ---
>
> LGTM.

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-02-08 19:53 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-07 13:12 [PATCH 0/3] Minor fixes from generic string routines Adhemerval Zanella
2023-02-07 13:12 ` [PATCH 1/3] string: Add libc_hidden_proto for strchrnul Adhemerval Zanella
2023-02-08 17:14   ` Carlos Seo
2023-02-08 19:52     ` Carlos Seo
2023-02-07 13:12 ` [PATCH 2/3] string: Add libc_hidden_proto for memrchr Adhemerval Zanella
2023-02-08 17:15   ` Carlos Seo
2023-02-08 19:52     ` Carlos Seo
2023-02-07 13:12 ` [PATCH 3/3] string: Disable stack protector in early static initialization Adhemerval Zanella
2023-02-08 17:27   ` Carlos Seo
2023-02-08 19:53     ` Carlos Seo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).