From 73db3de513f666d526afa968e996cb33e3310d32 Mon Sep 17 00:00:00 2001 From: Bart Van Assche Date: Wed, 12 Aug 2009 12:55:56 +0000 Subject: [PATCH] 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 --- configure.in | 23 +++++++++++++++++++++++ memcheck/tests/Makefile.am | 10 ++++++++++ memcheck/tests/badfree.c | 15 +++++++++++++-- memcheck/tests/xml1.c | 15 +++++++++++++-- 4 files changed, 59 insertions(+), 4 deletions(-) diff --git a/configure.in b/configure.in index 5c7c7256db..f4ee9c33be 100644 --- a/configure.in +++ b/configure.in @@ -1255,6 +1255,29 @@ AC_MSG_RESULT([no]) 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 14200ad5a6..43a44a8518 100644 --- a/memcheck/tests/Makefile.am +++ b/memcheck/tests/Makefile.am @@ -251,8 +251,14 @@ endif 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 @@ mismatches_SOURCES = mismatches.cpp 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 3a22567764..f9393c7753 100644 --- a/memcheck/tests/badfree.c +++ b/memcheck/tests/badfree.c @@ -2,7 +2,7 @@ #include #include - +static void* return_arg(void* q); int main ( void ) { void* p = (void*)0x87654321; @@ -12,7 +12,18 @@ int main ( void ) 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 abf2d3887e..6cab2878d8 100644 --- a/memcheck/tests/xml1.c +++ b/memcheck/tests/xml1.c @@ -2,7 +2,7 @@ #include #include - +static void* return_arg(void* p); int frame3 ( void ) { int *a = malloc(10 * sizeof(int)); @@ -25,7 +25,7 @@ int frame3 ( void ) free(a); // more invalid frees - free(&n); + free(return_arg(&n)); // leak .. a = malloc(99 * sizeof(int)); @@ -48,3 +48,14 @@ int main ( void ) { 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; +} + -- 2.47.3