Add a --valgrind configure option.
authorReimar Döffinger <Reimar.Doeffinger@gmx.de>
Fri, 20 Jan 2012 19:42:31 +0000 (20:42 +0100)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 21 Jan 2012 11:04:46 +0000 (12:04 +0100)
If specified runs "make fate" through valgrind using the
given valgrind binary.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
configure
tests/fate-valgrind.supp [new file with mode: 0644]

index 3bace2b..15f7d7f 100755 (executable)
--- a/configure
+++ b/configure
@@ -269,6 +269,9 @@ Developer options (useful when working on FFmpeg itself):
   --disable-optimizations  disable compiler optimizations
   --enable-extra-warnings  enable more compiler warnings
   --disable-stripping      disable stripping of executables and shared libraries
+  --valgrind=VALGRIND      run "make fate" tests through valgrind to detect memory
+                           leaks and errors, using the specified valgrind binary.
+                           Cannot be combined with --target-exec
   --samples=PATH           location of test samples for FATE, if not set use
                            \$FATE_SAMPLES at make invocation time.
 
@@ -1315,6 +1318,7 @@ CMDLINE_SET="
     target_exec
     target_os
     target_path
+    valgrind
 "
 
 CMDLINE_APPEND="
@@ -3239,6 +3243,7 @@ fi
 
 enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
 enabled coverage && add_cflags "-fprofile-arcs -ftest-coverage" && add_ldflags "-fprofile-arcs -ftest-coverage"
+test -n "$valgrind" && target_exec="$valgrind --error-exitcode=1 --malloc-fill=0x2a --track-origins=yes --leak-check=full --gen-suppressions=all --suppressions=tests/fate-valgrind.supp"
 
 # add some useful compiler flags if supported
 check_cflags -Wdeclaration-after-statement
diff --git a/tests/fate-valgrind.supp b/tests/fate-valgrind.supp
new file mode 100644 (file)
index 0000000..db72c54
--- /dev/null
@@ -0,0 +1,31 @@
+# seems fixed in newer versions
+# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=577135
+{
+   zlib-inflate
+   Memcheck:Cond
+   fun:inflateReset2
+   fun:inflateInit2_
+}
+# libc overreads on purpose
+# http://sourceware.org/bugzilla/show_bug.cgi?id=12424
+{
+   eval-strtod
+   Memcheck:Addr8
+   fun:__GI___strncasecmp_l
+   fun:____strtod_l_internal
+   fun:av_strtod
+}
+{
+   eval-strtod
+   Memcheck:Value8
+   fun:__GI___strncasecmp_l
+   fun:____strtod_l_internal
+   fun:av_strtod
+}
+{
+   eval-strtod
+   Memcheck:Cond
+   fun:__GI___strncasecmp_l
+   fun:____strtod_l_internal
+   fun:av_strtod
+}