@@ -145,6 +145,7 @@ tests := \
test-mempcpy \
test-memrchr \
test-memset \
+ test-memsetzero \
test-rawmemchr \
test-sig_np \
test-stpcpy \
@@ -92,4 +92,7 @@ libc {
GLIBC_2.35 {
__memcmpeq;
}
+ GLIBC_2.36 {
+ __memsetzero;
+ }
}
@@ -26,3 +26,7 @@ __bzero (void *s, size_t len)
memset (s, '\0', len);
}
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
@@ -60,6 +60,9 @@ extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
/* Set N bytes of S to C. */
extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1));
+/* Set N bytes of S to 0. */
+extern void __memsetzero (void *__s, size_t __n) __THROW __nonnull ((1));
+
/* Compare N bytes of S1 and S2. */
extern int memcmp (const void *__s1, const void *__s2, size_t __n)
__THROW __attribute_pure__ __nonnull ((1, 2));
@@ -23,7 +23,9 @@
# else
# define TEST_NAME "bzero"
# endif
-#else
+#elif defined TEST_MEMSETZERO
+# define TEST_NAME "__memsetzero"
+#else /* !TEST_MEMSETZERO */
# ifndef WIDE
# define TEST_NAME "memset"
# else
@@ -52,8 +54,13 @@
CHAR *SIMPLE_MEMSET (CHAR *, int, size_t);
-#ifdef TEST_BZERO
+#if defined TEST_BZERO || defined TEST_MEMSETZERO
typedef void (*proto_t) (char *, size_t);
+# ifdef TEST_MEMSETZERO
+# define bzero __memsetzero
+# define simple_bzero simple_memsetzero
+# define builtin_bzero builtin_memsetzero
+# endif
void simple_bzero (char *, size_t);
void builtin_bzero (char *, size_t);
@@ -93,7 +100,7 @@ builtin_memset (char *s, int c, size_t n)
return __builtin_memset (s, c, n);
}
# endif /* !WIDE */
-#endif /* !TEST_BZERO */
+#endif /* !TEST_BZERO && !TEST_MEMSETZERO */
CHAR *
inhibit_loop_to_libcall
@@ -113,7 +120,7 @@ do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n)
CHAR sentinel = c - 1;
buf[0] = sentinel;
buf[n + 1] = sentinel;
-#ifdef TEST_BZERO
+#if defined TEST_BZERO || defined TEST_MEMSETZERO
simple_bzero (tstbuf, n);
CALL (impl, s, n);
if (memcmp (s, tstbuf, n) != 0
@@ -126,7 +133,7 @@ do_one_test (impl_t *impl, CHAR *s, int c __attribute ((unused)), size_t n)
|| MEMCMP (s, tstbuf, n) != 0
|| buf[0] != sentinel
|| buf[n + 1] != sentinel)
-#endif /* !TEST_BZERO */
+#endif /* !TEST_BZERO && !TEST_MEMSETZERO */
{
error (0, 0, "Wrong result in function %s", impl->name);
ret = 1;
@@ -145,7 +152,7 @@ do_test (size_t align, int c, size_t len)
do_one_test (impl, (CHAR *) (buf1) + align, c, len);
}
-#ifndef TEST_BZERO
+#if !defined TEST_BZERO && !defined TEST_MEMSETZERO
static void
do_random_tests (void)
{
@@ -231,7 +238,7 @@ do_random_tests (void)
}
}
}
-#endif /* !TEST_BZERO */
+#endif /* !TEST_BZERO && !TEST_MEMSETZERO */
int
test_main (void)
@@ -246,7 +253,7 @@ test_main (void)
printf ("\t%s", impl->name);
putchar ('\n');
-#ifndef TEST_BZERO
+#if !defined TEST_BZERO && !defined TEST_MEMSETZERO
for (c = -65; c <= 130; c += 65)
#endif
{
@@ -266,7 +273,7 @@ test_main (void)
do_test (2, c, 25);
}
-#ifndef TEST_BZERO
+#if !defined TEST_BZERO && !defined TEST_MEMSETZERO
do_random_tests ();
#endif
new file mode 100644
@@ -0,0 +1,19 @@
+/* Test and measure bzero functions.
+ Copyright (C) 2012-2022 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+#define TEST_MEMSETZERO
+#include "test-memset.c"
@@ -107,3 +107,7 @@ $done: ret
cfi_endproc
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
@@ -3,3 +3,7 @@
#include "memset.S"
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
@@ -2,3 +2,7 @@
#define memset __bzero
#include <sysdeps/i386/i586/memset.S>
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
@@ -2,3 +2,7 @@
#define memset __bzero
#include <sysdeps/i386/i686/memset.S>
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
@@ -33,5 +33,8 @@
# undef weak_alias
# define weak_alias(original, alias)
+# undef strong_alias
+# define strong_alias(original, alias)
+
# include <sysdeps/i386/i686/bzero.S>
#endif
@@ -29,4 +29,8 @@
libc_ifunc_redirected (__redirect_bzero, __bzero, IFUNC_SELECTOR ());
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
#endif
@@ -72,7 +72,7 @@
#endif
.align 64
-ENTRY(bzero)
+ENTRY(__bzero_impl)
{ .mmi
.prologue
alloc tmp = ar.pfs, 2, 0, 0, 0
@@ -309,4 +309,10 @@ ENTRY(bzero)
(p_y) st1 [ptr3] = r0 // fill last byte (using ptr3)
br.ret.sptk.many rp
;; }
-END(bzero)
+END(__bzero_impl)
+
+weak_alias (__bzero_impl, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero_impl, __memsetzero)
+libc_hidden_def (__memsetzero)
@@ -2289,6 +2289,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 close_range F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -25,3 +25,7 @@ ENTRY (__bzero)
b memset@local
END (__bzero)
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
@@ -34,4 +34,8 @@ libc_ifunc (__bzero,
: __bzero_ppc);
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
#endif
@@ -253,4 +253,7 @@ ENTRY_TOCLESS (__bzero)
END (__bzero)
#ifndef __bzero
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
#endif
@@ -265,4 +265,7 @@ ENTRY (__bzero)
END_GEN_TB (__bzero,TB_TOCLESS)
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
#endif
@@ -51,4 +51,8 @@ libc_ifunc (__bzero,
: __bzero_ppc);
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
#endif
@@ -248,4 +248,7 @@ ENTRY_TOCLESS (__bzero)
END (__bzero)
#ifndef __bzero
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
#endif
@@ -392,4 +392,7 @@ ENTRY_TOCLESS (__bzero)
END (__bzero)
#ifndef __bzero
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
#endif
@@ -395,4 +395,7 @@ ENTRY_TOCLESS (__bzero)
END (__bzero)
#ifndef __bzero
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
#endif
@@ -515,4 +515,7 @@ ENTRY_TOCLESS (__bzero)
END (__bzero)
#ifndef __bzero
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
#endif
@@ -44,4 +44,8 @@ s390_libc_ifunc_expr (__bzero, __bzero,
})
)
weak_alias (__bzero, bzero)
+
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
#endif
@@ -150,3 +150,6 @@ END(memset)
libc_hidden_builtin_def (memset)
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
@@ -23,6 +23,8 @@
# define libc_hidden_builtin_def(name)
# undef weak_alias
# define weak_alias(x, y)
+# undef strong_alias
+# define strong_alias(x, y)
# define memset __memset_ultra1
# define __bzero __bzero_ultra1
@@ -310,3 +310,6 @@ ENTRY(__bzero)
END(__bzero)
weak_alias (__bzero, bzero)
+
+#undef __memsetzero
+strong_alias (__bzero, __memsetzero)
@@ -30,4 +30,7 @@
sparc_libc_ifunc_redirected (__redirect_bzero, __bzero, IFUNC_SELECTOR)
weak_alias (__bzero, bzero)
+# undef __memsetzero
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
#endif
@@ -23,6 +23,8 @@
# define libc_hidden_builtin_def(name)
# undef weak_alias
# define weak_alias(x, y)
+# undef strong_alias
+# define strong_alias(x, y)
# define memset __memset_ultra1
# define __bzero __bzero_ultra1
@@ -2616,3 +2616,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -2713,6 +2713,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2377,3 +2377,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -496,6 +496,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
@@ -493,6 +493,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0xa0
GLIBC_2.4 _IO_2_1_stdin_ D 0xa0
@@ -2652,3 +2652,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -2601,6 +2601,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2785,6 +2785,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2551,6 +2551,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -497,6 +497,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _Exit F
GLIBC_2.4 _IO_2_1_stderr_ D 0x98
GLIBC_2.4 _IO_2_1_stdin_ D 0x98
@@ -2728,6 +2728,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2701,3 +2701,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -2698,3 +2698,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -2693,6 +2693,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2691,6 +2691,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2699,6 +2699,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2602,6 +2602,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2740,3 +2740,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -2123,3 +2123,4 @@ GLIBC_2.35 wprintf F
GLIBC_2.35 write F
GLIBC_2.35 writev F
GLIBC_2.35 wscanf F
+GLIBC_2.36 __memsetzero F
@@ -2755,6 +2755,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2788,6 +2788,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2510,6 +2510,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2812,3 +2812,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -2379,3 +2379,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -2579,3 +2579,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -2753,6 +2753,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2547,6 +2547,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2608,6 +2608,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2605,6 +2605,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2748,6 +2748,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 _IO_fprintf F
GLIBC_2.4 _IO_printf F
GLIBC_2.4 _IO_sprintf F
@@ -2574,6 +2574,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2525,6 +2525,7 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
GLIBC_2.4 __confstr_chk F
GLIBC_2.4 __fgets_chk F
GLIBC_2.4 __fgets_unlocked_chk F
@@ -2631,3 +2631,4 @@ GLIBC_2.35 __memcmpeq F
GLIBC_2.35 _dl_find_object F
GLIBC_2.35 epoll_pwait2 F
GLIBC_2.35 posix_spawn_file_actions_addtcsetpgrp_np F
+GLIBC_2.36 __memsetzero F
@@ -68,6 +68,8 @@
#include "multiarch/memset-vec-unaligned-erms.S"
libc_hidden_builtin_def (memset)
+strong_alias (__bzero, __memsetzero)
+libc_hidden_def (__memsetzero)
#if IS_IN (libc)
weak_alias (__bzero, bzero)
@@ -20,8 +20,10 @@
/* Define multiple versions only for the definition in libc. */
#if IS_IN (libc)
# define __bzero __redirect___bzero
+# define __memsetzero __redirect___memsetzero
# include <string.h>
# undef __bzero
+# undef __memsetzero
# define SYMBOL_NAME __bzero
# include <init-arch.h>
@@ -103,4 +105,10 @@ IFUNC_SELECTOR (void)
libc_ifunc_redirected (__redirect___bzero, __bzero, IFUNC_SELECTOR ());
weak_alias (__bzero, bzero)
+strong_alias (__bzero, __memsetzero)
+
+# ifdef SHARED
+__hidden_ver1 (__bzero, __GI___memsetzero, __redirect___bzero)
+ __attribute__ ((visibility ("hidden"))) __attribute_copy__ (__bzero);
+# endif
#endif