From 8fa11673d6b0feb3804eba6243e4979087e008a8 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 10 May 2017 00:25:59 +0000 Subject: [PATCH] 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 . * string/rawmemchr.c: Include . (RAWMEMCHR): Disable -Wstringop-overflow around call to memchr with size (size_t)-1. --- ChangeLog | 6 ++++++ string/rawmemchr.c | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/ChangeLog b/ChangeLog index a772fce69f..ca563394c8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2017-05-10 Joseph Myers + + * string/rawmemchr.c: Include . + (RAWMEMCHR): Disable -Wstringop-overflow around call to memchr + with size (size_t)-1. + 2017-05-09 Joseph Myers * sysdeps/unix/sysv/linux/mips/mips32/accept4.c: Remove file. 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 @@ . */ #include +#include #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)