diff options
author | Joseph Myers <joseph@codesourcery.com> | 2017-05-10 00:25:59 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2017-05-10 00:25:59 +0000 |
commit | 8fa11673d6b0feb3804eba6243e4979087e008a8 (patch) | |
tree | 0315511a3a590e05809f841e614336d9c83e3126 /string | |
parent | d08a482bc2b9a7ae69fd5c587e1f5d12aa317e0d (diff) | |
download | glibc-8fa11673d6b0feb3804eba6243e4979087e008a8.tar glibc-8fa11673d6b0feb3804eba6243e4979087e008a8.tar.gz glibc-8fa11673d6b0feb3804eba6243e4979087e008a8.tar.bz2 glibc-8fa11673d6b0feb3804eba6243e4979087e008a8.zip |
Fix rawmemchr build with GCC 8.
The default rawmemchr implementation uses memchr with size (size_t)-1,
which produces a warning with current GCC mainline. The warning seems
reasonable for normal code, so this patch uses the DIAG_* macros to
disable it.
Tested (compilation of glibc only) with build-many-glibcs.py for
arm-linux-gnueabi and powerpc64le-linux-gnu, two architectures for
which the build was previously failing. Note that the glibc testsuite
will still fail to build with GCC mainline because of
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80669>.
* string/rawmemchr.c: Include <libc-diag.h>.
(RAWMEMCHR): Disable -Wstringop-overflow around call to memchr
with size (size_t)-1.
Diffstat (limited to 'string')
-rw-r--r-- | string/rawmemchr.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/string/rawmemchr.c b/string/rawmemchr.c index 54e8dcd294..42a3f8aaba 100644 --- a/string/rawmemchr.c +++ b/string/rawmemchr.c @@ -16,6 +16,7 @@ <http://www.gnu.org/licenses/>. */ #include <string.h> +#include <libc-diag.h> #ifndef RAWMEMCHR # define RAWMEMCHR __rawmemchr @@ -25,8 +26,15 @@ void * RAWMEMCHR (const void *s, int c) { + DIAG_PUSH_NEEDS_COMMENT; +#if __GNUC_PREREQ (7, 0) + /* GCC 8 warns about the size passed to memchr being larger than + PTRDIFF_MAX; the use of SIZE_MAX is deliberate here. */ + DIAG_IGNORE_NEEDS_COMMENT (8, "-Wstringop-overflow="); +#endif if (c != '\0') return memchr (s, c, (size_t)-1); + DIAG_POP_NEEDS_COMMENT; return (char *)s + strlen (s); } libc_hidden_def (__rawmemchr) |