mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 03:10:05 +00:00
Fix malloc/ tests for GCC 7 -Walloc-size-larger-than=.
GCC 7 has a -Walloc-size-larger-than= warning for allocations of half the address space or more. This causes errors building glibc tests that deliberately test failure of very large allocations. This patch arranges for this warning to be ignored around the problematic function calls. Tested compilation for aarch64 (GCC mainline) with build-many-glibcs.py; did execution testing for x86_64 (GCC 5). * malloc/tst-malloc.c: Include <libc-internal.h>. (do_test): Disable -Walloc-size-larger-than= around tests of malloc with negative sizes. * malloc/tst-mcheck.c: Include <libc-internal.h>. (do_test): Disable -Walloc-size-larger-than= around tests of malloc and realloc with negative sizes. * malloc/tst-realloc.c: Include <libc-internal.h>. (do_test): Disable -Walloc-size-larger-than= around tests of realloc with negative sizes.
This commit is contained in:
parent
179b86750c
commit
3d7229c250
10
ChangeLog
10
ChangeLog
@ -1,5 +1,15 @@
|
||||
2017-01-04 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* malloc/tst-malloc.c: Include <libc-internal.h>.
|
||||
(do_test): Disable -Walloc-size-larger-than= around tests of
|
||||
malloc with negative sizes.
|
||||
* malloc/tst-mcheck.c: Include <libc-internal.h>.
|
||||
(do_test): Disable -Walloc-size-larger-than= around tests of
|
||||
malloc and realloc with negative sizes.
|
||||
* malloc/tst-realloc.c: Include <libc-internal.h>.
|
||||
(do_test): Disable -Walloc-size-larger-than= around tests of
|
||||
realloc with negative sizes.
|
||||
|
||||
* math/libm-test.inc (TEST_COND_ibm128_libgcc): New macro.
|
||||
(init_max_error) [TEST_COND_ibm128]: Increase maximum error
|
||||
allowed to 16 ulps.
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <errno.h>
|
||||
#include <malloc.h>
|
||||
#include <stdio.h>
|
||||
#include <libc-internal.h>
|
||||
|
||||
static int errors = 0;
|
||||
|
||||
@ -37,7 +38,14 @@ do_test (void)
|
||||
|
||||
errno = 0;
|
||||
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (7, 0)
|
||||
/* GCC 7 warns about too-large allocations; here we want to test
|
||||
that they fail. */
|
||||
DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
|
||||
#endif
|
||||
p = malloc (-1);
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
save = errno;
|
||||
|
||||
if (p != NULL)
|
||||
@ -67,7 +75,14 @@ do_test (void)
|
||||
if (p == NULL)
|
||||
merror ("malloc (513K) failed.");
|
||||
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (7, 0)
|
||||
/* GCC 7 warns about too-large allocations; here we want to test
|
||||
that they fail. */
|
||||
DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
|
||||
#endif
|
||||
q = malloc (-512 * 1024);
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
if (q != NULL)
|
||||
merror ("malloc (-512K) succeeded.");
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <libc-internal.h>
|
||||
|
||||
static int errors = 0;
|
||||
|
||||
@ -36,7 +37,14 @@ do_test (void)
|
||||
|
||||
errno = 0;
|
||||
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (7, 0)
|
||||
/* GCC 7 warns about too-large allocations; here we want to test
|
||||
that they fail. */
|
||||
DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
|
||||
#endif
|
||||
p = malloc (-1);
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
|
||||
if (p != NULL)
|
||||
merror ("malloc (-1) succeeded.");
|
||||
@ -67,10 +75,17 @@ do_test (void)
|
||||
if (p == NULL)
|
||||
merror ("malloc (512) failed.");
|
||||
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (7, 0)
|
||||
/* GCC 7 warns about too-large allocations; here we want to test
|
||||
that they fail. */
|
||||
DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
|
||||
#endif
|
||||
if (realloc (p, -256) != NULL)
|
||||
merror ("realloc (p, -256) succeeded.");
|
||||
else if (errno != ENOMEM)
|
||||
merror ("errno is not set correctly.");
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
|
||||
free (p);
|
||||
|
||||
@ -78,10 +93,17 @@ do_test (void)
|
||||
if (p == NULL)
|
||||
merror ("malloc (512) failed.");
|
||||
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (7, 0)
|
||||
/* GCC 7 warns about too-large allocations; here we want to test
|
||||
that they fail. */
|
||||
DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
|
||||
#endif
|
||||
if (realloc (p, -1) != NULL)
|
||||
merror ("realloc (p, -1) succeeded.");
|
||||
else if (errno != ENOMEM)
|
||||
merror ("errno is not set correctly.");
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
|
||||
free (p);
|
||||
free (q);
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include <malloc.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <libc-internal.h>
|
||||
|
||||
static int errors = 0;
|
||||
|
||||
@ -39,7 +40,14 @@ do_test (void)
|
||||
errno = 0;
|
||||
|
||||
/* realloc (NULL, ...) behaves similarly to malloc (C89). */
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (7, 0)
|
||||
/* GCC 7 warns about too-large allocations; here we want to test
|
||||
that they fail. */
|
||||
DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
|
||||
#endif
|
||||
p = realloc (NULL, -1);
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
save = errno;
|
||||
|
||||
if (p != NULL)
|
||||
@ -111,7 +119,14 @@ do_test (void)
|
||||
merror ("first 16 bytes were not correct");
|
||||
|
||||
/* Check failed realloc leaves original untouched (C89). */
|
||||
DIAG_PUSH_NEEDS_COMMENT;
|
||||
#if __GNUC_PREREQ (7, 0)
|
||||
/* GCC 7 warns about too-large allocations; here we want to test
|
||||
that they fail. */
|
||||
DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
|
||||
#endif
|
||||
c = realloc (p, -1);
|
||||
DIAG_POP_NEEDS_COMMENT;
|
||||
if (c != NULL)
|
||||
merror ("realloc (p, -1) succeeded.");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user