* [PATCH] Don't use __warn_memset_zero_len for gcc-5.0 or newer
@ 2014-11-25 13:01 Siddhesh Poyarekar
2014-11-25 14:15 ` Ondřej Bílka
0 siblings, 1 reply; 2+ messages in thread
From: Siddhesh Poyarekar @ 2014-11-25 13:01 UTC (permalink / raw)
To: libc-alpha; +Cc: carlos, jakub
[-- Attachment #1: Type: text/plain, Size: 1798 bytes --]
Hi,
gcc now warns when the arguments to memset may have been accidentally
transposed (i.e. length set to zero instead of the byte), so we don't
need that bit of the code in glibc headers anymore.
Tested on x86_64. Coe generated by gcc 4.8 is identical with or
without the patch. I also tested gcc master, which does not result in
any new failures. It does fail quite a few FORTIFY_SOURCE tests, but
those failures are not due to this patch. I'll look at them deeper.
OK to commit this?
Siddhesh
* 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.
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));
}
[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] Don't use __warn_memset_zero_len for gcc-5.0 or newer
2014-11-25 13:01 [PATCH] Don't use __warn_memset_zero_len for gcc-5.0 or newer Siddhesh Poyarekar
@ 2014-11-25 14:15 ` Ondřej Bílka
0 siblings, 0 replies; 2+ messages in thread
From: Ondřej Bílka @ 2014-11-25 14:15 UTC (permalink / raw)
To: Siddhesh Poyarekar; +Cc: libc-alpha, carlos, jakub
On Tue, Nov 25, 2014 at 06:31:37PM +0530, Siddhesh Poyarekar wrote:
> Hi,
>
> gcc now warns when the arguments to memset may have been accidentally
> transposed (i.e. length set to zero instead of the byte), so we don't
> need that bit of the code in glibc headers anymore.
>
> Tested on x86_64. Coe generated by gcc 4.8 is identical with or
> without the patch. I also tested gcc master, which does not result in
> any new failures. It does fail quite a few FORTIFY_SOURCE tests, but
> those failures are not due to this patch. I'll look at them deeper.
> OK to commit this?
>
Looks ok.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-11-25 14:15 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-25 13:01 [PATCH] Don't use __warn_memset_zero_len for gcc-5.0 or newer Siddhesh Poyarekar
2014-11-25 14:15 ` Ondřej Bílka
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).