aboutsummaryrefslogtreecommitdiff
path: root/malloc
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2017-01-04 23:32:14 +0000
committerJoseph Myers <joseph@codesourcery.com>2017-01-04 23:32:14 +0000
commit3d7229c2507be1daf0c3e15e1f134076fa8b9025 (patch)
tree301ca636f6bede4f41440b3aab519dbb6ec807e0 /malloc
parent179b86750caeb0a0a4798830d6d52a00dc70db2d (diff)
downloadglibc-3d7229c2507be1daf0c3e15e1f134076fa8b9025.tar
glibc-3d7229c2507be1daf0c3e15e1f134076fa8b9025.tar.gz
glibc-3d7229c2507be1daf0c3e15e1f134076fa8b9025.tar.bz2
glibc-3d7229c2507be1daf0c3e15e1f134076fa8b9025.zip
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.
Diffstat (limited to 'malloc')
-rw-r--r--malloc/tst-malloc.c15
-rw-r--r--malloc/tst-mcheck.c22
-rw-r--r--malloc/tst-realloc.c15
3 files changed, 52 insertions, 0 deletions
diff --git a/malloc/tst-malloc.c b/malloc/tst-malloc.c
index e756102d3d..740ac6ce31 100644
--- a/malloc/tst-malloc.c
+++ b/malloc/tst-malloc.c
@@ -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.");
diff --git a/malloc/tst-mcheck.c b/malloc/tst-mcheck.c
index 73a497f988..2e3cba96b8 100644
--- a/malloc/tst-mcheck.c
+++ b/malloc/tst-mcheck.c
@@ -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);
diff --git a/malloc/tst-realloc.c b/malloc/tst-realloc.c
index 53182b35c6..7f1f228c06 100644
--- a/malloc/tst-realloc.c
+++ b/malloc/tst-realloc.c
@@ -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.");