aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@sourceware.org>2020-11-03 15:09:28 +0530
committerSergei Trofimovich <slyfox@gentoo.org>2020-12-07 20:03:15 +0000
commit3ec3ae21127f859272ca62df39caa4c62dc84a4d (patch)
tree31586d29b64c83ea7ce17f291696a869751a2884
parentaarch64: Add unwind information to _start (bug 26853) (diff)
downloadglibc-3ec3ae21127f859272ca62df39caa4c62dc84a4d.tar.gz
glibc-3ec3ae21127f859272ca62df39caa4c62dc84a4d.tar.bz2
glibc-3ec3ae21127f859272ca62df39caa4c62dc84a4d.zip
Remove __warn_memset_zero_len [BZ #25399]
Non-gcc compilers (clang and possibly other compilers that do not masquerade as gcc 5.0 or later) are unable to use __warn_memset_zero_len since the symbol is no longer available on glibc built with gcc 5.0 or later. While it was likely an oversight that caused this omission, the fact that it wasn't noticed until recently (when clang closed the gap on _FORTIFY_SUPPORT) that the symbol was missing. Given that both gcc and clang are capable of doing this check in the compiler, drop all remaining signs of __warn_memset_zero_len from glibc so that no more objects are built with this symbol in future. (cherry-picked from dc274b141666766b8ef70992d887e3c0c5e41bed)
-rw-r--r--string/bits/string_fortified.h15
1 files changed, 0 insertions, 15 deletions
diff --git a/string/bits/string_fortified.h b/string/bits/string_fortified.h
index 309d0f39b2..c8d3051af8 100644
--- a/string/bits/string_fortified.h
+++ b/string/bits/string_fortified.h
@@ -22,11 +22,6 @@
# error "Never use <bits/string_fortified.h> directly; include <string.h> instead."
#endif
-#if !__GNUC_PREREQ (5,0)
-__warndecl (__warn_memset_zero_len,
- "memset used with constant zero length parameter; this could be due to transposed parameters");
-#endif
-
__fortify_function void *
__NTH (memcpy (void *__restrict __dest, const void *__restrict __src,
size_t __len))
@@ -58,16 +53,6 @@ __NTH (mempcpy (void *__restrict __dest, const void *__restrict __src,
__fortify_function void *
__NTH (memset (void *__dest, int __ch, size_t __len))
{
- /* GCC-5.0 and newer implements these checks in the compiler, so we don't
- need them here. */
-#if !__GNUC_PREREQ (5,0)
- if (__builtin_constant_p (__len) && __len == 0
- && (!__builtin_constant_p (__ch) || __ch != 0))
- {
- __warn_memset_zero_len ();
- return __dest;
- }
-#endif
return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
}