aboutsummaryrefslogtreecommitdiffstats
path: root/make
diff options
context:
space:
mode:
Diffstat (limited to 'make')
-rwxr-xr-xmake/exec-z24
-rw-r--r--make/libtool.mk1
-rwxr-xr-xmake/valgrind-wrap10
3 files changed, 35 insertions, 0 deletions
diff --git a/make/exec-z b/make/exec-z
new file mode 100755
index 00000000..dc21dbc1
--- /dev/null
+++ b/make/exec-z
@@ -0,0 +1,24 @@
+#!/bin/sh
+# This script is used for valgrind testing. See README.maintainer.
+
+# Create a suppressions file. This can be updated by running valgrind
+# with --gen-suppressions=yes.
+test -f /tmp/a.supp || cat > /tmp/a.supp <<EOF
+{
+ zlib1
+ Memcheck:Cond
+ fun:inflateReset2
+ fun:inflateInit2_
+}
+{
+ index
+ Memcheck:Cond
+ fun:index
+ fun:expand_dynamic_string_token
+ fun:_dl_map_object
+ fun:map_doit
+}
+EOF
+
+exec valgrind --suppressions=/tmp/a.supp -q \
+ `dirname $0`/z/`basename $0` ${1+"$@"}
diff --git a/make/libtool.mk b/make/libtool.mk
index c6cf4e4d..c3af7b9f 100644
--- a/make/libtool.mk
+++ b/make/libtool.mk
@@ -102,6 +102,7 @@ endef
# Usage: $(call makebin,objs,binary,ldflags,libs)
define makebin
$(LIBTOOL) --mode=link $(CXX) $(CXXFLAGS) $(1) -o $(2) $(4) $(3)
+ if [ "$(VALGRIND)" = 1 ]; then make/valgrind-wrap $(2); fi
endef
# Install target
diff --git a/make/valgrind-wrap b/make/valgrind-wrap
new file mode 100755
index 00000000..40785bf1
--- /dev/null
+++ b/make/valgrind-wrap
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -e
+pwd
+dir=$(dirname $1)
+if [ ! -x $dir/exec-z ]; then
+ ln -f make/exec-z $dir/exec-z
+fi
+mkdir -p $dir/z
+mv $1 $dir/z
+ln -f $dir/exec-z $1