aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--string/bits/string3.h6
2 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ab2220d..4acdcc3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-11-27 Siddhesh Poyarekar <siddhesh@redhat.com>
+
+ * string/bits/string3.h (__warn_memset_zero_len): Don't
+ declare for gcc newer than 5.0.
+ (memset): Don't test for zero-length __LEN for gcc newer than
+ 5.0.
+
2014-11-27 Joseph Myers <joseph@codesourcery.com>
* stdio-common/tst-fmemopen.c (do_test): Cast st_size values to
diff --git a/string/bits/string3.h b/string/bits/string3.h
index 7606090..801e7ac 100644
--- a/string/bits/string3.h
+++ b/string/bits/string3.h
@@ -19,8 +19,10 @@
# error "Never use <bits/string3.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
#ifndef __cplusplus
/* XXX This is temporarily. We should not redefine any of the symbols
@@ -75,12 +77,16 @@ __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));
}