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.
This commit is contained in:
Joseph Myers 2017-05-10 00:25:59 +00:00
parent d08a482bc2
commit 8fa11673d6
2 changed files with 14 additions and 0 deletions

View File

@ -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.

View File

@ -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)