12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #! /bin/bash
- # Convert this package for use with valgrind.
- # Copyright (C) 2002-2018 Free Software Foundation, Inc.
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <https://www.gnu.org/licenses/>.
- # Convert Makefile.am files:
- # find tests -name check.mk | xargs grep -wl PATH |
- # xargs perl -pi -e 's,src(\$\(PATH_SEPARATOR\)),src/vg$1,'
- # To restore:
- # find tests -name check.mk | xargs grep -wl PATH |
- # xargs perl -pi -e 's,src/vg,src,'
- #
- # Create this symlink for suppressions (this is no longer necessary,
- # with Linux kernel 2.6.9 and valgrind-2.2.0):
- # ln -s $PWD/.vg-suppressions /tmp/cu-vg
- # Create src/vg:
- coreutils=$(echo 'spy:;@echo $(all_programs) $(noinst_PROGRAMS)' |
- (cd src; make -f Makefile -f - spy | tr -s '\n ' ' '))
- mkdir -p src/vg
- pwd=`pwd`
- srcdir=$pwd/src
- _path='export PATH='$srcdir':${PATH#*:}'
- pre='#!/bin/sh\n'"$_path"'\n'
- n=15 # stack trace depth
- log_fd=3 # One can redirect this to file like 3>vg.log
- test -e /tmp/cu-vg && suppressions='--supressions=/tmp/cu-vg'
- vg="exec /usr/bin/valgrind $suppressions --log-fd=$log_fd \
- --leak-check=yes --track-fds=yes --leak-check=full --num-callers=$n"
- cat <<EOF > src/vg/gen
- for i in $coreutils; do
- printf "$pre$vg -- \$i"' "\$@"\n' > \$i
- chmod a+x \$i
- done
- EOF
- cd src/vg
- . ./gen
|