Suppressed compiler warnings reported by gcc 4.4.x on the source code
of regression tests about intentionally uninitialized variables and
about intentionally freed non-heap memory.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10794 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/configure.in b/configure.in
index 5c7c725..f4ee9c3 100644
--- a/configure.in
+++ b/configure.in
@@ -1255,6 +1255,29 @@
CFLAGS=$safe_CFLAGS
+# does this compiler support -Wno-uninitialized ?
+
+AC_MSG_CHECKING([if gcc accepts -Wno-uninitialized])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-uninitialized"
+
+AC_TRY_COMPILE(
+[ ],
+[
+ return 0;
+],
+[
+AC_SUBST([FLAG_W_NO_UNINITIALIZED], [-Wno-uninitialized])
+AC_MSG_RESULT([yes])
+],
+[
+AC_SUBST([FLAG_W_NO_UNINITIALIZED], [])
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+
# does this compiler support -Wextra or the older -W ?
AC_MSG_CHECKING([if gcc accepts -Wextra or -W])
diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am
index 14200ad..43a44a8 100644
--- a/memcheck/tests/Makefile.am
+++ b/memcheck/tests/Makefile.am
@@ -251,8 +251,14 @@
deep_templates_SOURCES = deep_templates.cpp
deep_templates_CXXFLAGS = $(AM_CFLAGS) -O -gstabs
+error_counts_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@
+
+inits_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@
+
long_namespace_xml_SOURCES = long_namespace_xml.cpp
+manuel1_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@
+
memcmptest_CFLAGS = $(AM_CFLAGS) -fno-builtin-memcmp
mismatches_SOURCES = mismatches.cpp
@@ -260,6 +266,10 @@
new_nothrow_SOURCES = new_nothrow.cpp
new_override_SOURCES = new_override.cpp
+origin2_not_quite_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@
+
+origin3_no_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_UNINITIALIZED@
+
# This requires optimisation in order to get just one resulting error.
origin4_many_CFLAGS = $(AM_CFLAGS) -O
diff --git a/memcheck/tests/badfree.c b/memcheck/tests/badfree.c
index 3a22567..f9393c7 100644
--- a/memcheck/tests/badfree.c
+++ b/memcheck/tests/badfree.c
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <stdlib.h>
-
+static void* return_arg(void* q);
int main ( void )
{
void* p = (void*)0x87654321;
@@ -12,7 +12,18 @@
free(p);
/* Free a pointer to a stack block */
- free(q);
+ free(return_arg(q));
return 0;
}
+
+/*
+ * The only purpose of the function below is to make sure that gcc 4.4.x does
+ * not print the following warning during the compilation of this test program:
+ * warning: attempt to free a non-heap object
+ */
+static void* return_arg(void* q)
+{
+ return q;
+}
+
diff --git a/memcheck/tests/xml1.c b/memcheck/tests/xml1.c
index abf2d38..6cab287 100644
--- a/memcheck/tests/xml1.c
+++ b/memcheck/tests/xml1.c
@@ -2,7 +2,7 @@
#include <stdlib.h>
#include <stdio.h>
-
+static void* return_arg(void* p);
int frame3 ( void )
{
int *a = malloc(10 * sizeof(int));
@@ -25,7 +25,7 @@
free(a);
// more invalid frees
- free(&n);
+ free(return_arg(&n));
// leak ..
a = malloc(99 * sizeof(int));
@@ -48,3 +48,14 @@
{
return frame1() - 1;
}
+
+/*
+ * The only purpose of the function below is to make sure that gcc 4.4.x does
+ * not print the following warning during the compilation of this test program:
+ * warning: attempt to free a non-heap object
+ */
+static void* return_arg(void* p)
+{
+ return p;
+}
+