aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-05-10 00:25:59 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-05-10 00:25:59 +0000
commit8fa11673d6b0feb3804eba6243e4979087e008a8 (patch)
tree0315511a3a590e05809f841e614336d9c83e3126
parentd08a482bc2b9a7ae69fd5c587e1f5d12aa317e0d (diff)
downloadtermbaud-8fa11673d6b0feb3804eba6243e4979087e008a8.tar.gz
termbaud-8fa11673d6b0feb3804eba6243e4979087e008a8.tar.xz
termbaud-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.
-rw-r--r--ChangeLog6
-rw-r--r--string/rawmemchr.c8
2 files changed, 14 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index a772fce69fb..ca563394c8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * string/rawmemchr.c: Include <libc-diag.h>.
+ (RAWMEMCHR): Disable -Wstringop-overflow around call to memchr
+ with size (size_t)-1.
+
2017-05-09 Joseph Myers <joseph@codesourcery.com>
* sysdeps/unix/sysv/linux/mips/mips32/accept4.c: Remove file.
diff --git a/string/rawmemchr.c b/string/rawmemchr.c
index 54e8dcd294d..42a3f8aaba9 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)