diff options
Diffstat (limited to 't/valgrind/valgrind.sh')
-rwxr-xr-x | t/valgrind/valgrind.sh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/t/valgrind/valgrind.sh b/t/valgrind/valgrind.sh new file mode 100755 index 000000000000..669ebaf68be0 --- /dev/null +++ b/t/valgrind/valgrind.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +base=$(basename "$0") +case "$base" in +test-*) + program="$GIT_VALGRIND/../../t/helper/$base" + ;; +*) + program="$GIT_VALGRIND/../../$base" + ;; +esac + +TOOL_OPTIONS='--leak-check=no' + +test -z "$GIT_VALGRIND_ENABLED" && +exec "$program" "$@" + +case "$GIT_VALGRIND_MODE" in +memcheck-fast) + ;; +memcheck) + VALGRIND_VERSION=$(valgrind --version) + VALGRIND_MAJOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*\([0-9]*\)') + VALGRIND_MINOR=$(expr "$VALGRIND_VERSION" : '[^0-9]*[0-9]*\.\([0-9]*\)') + test 3 -gt "$VALGRIND_MAJOR" || + test 3 -eq "$VALGRIND_MAJOR" -a 4 -gt "$VALGRIND_MINOR" || + TOOL_OPTIONS="$TOOL_OPTIONS --track-origins=yes" + ;; +*) + TOOL_OPTIONS="--tool=$GIT_VALGRIND_MODE" +esac + +exec valgrind -q --error-exitcode=126 \ + --gen-suppressions=all \ + --suppressions="$GIT_VALGRIND/default.supp" \ + $TOOL_OPTIONS \ + --log-fd=4 \ + --input-fd=4 \ + $GIT_VALGRIND_OPTIONS \ + "$program" "$@" |