Create a suppressions file for valgrind with JIT.
This commit is contained in:
parent
7f12be426c
commit
297024d65b
|
@ -179,6 +179,11 @@ this work, the new command was added to several test files and the testing
|
|||
scripts were modified. The pcre2grep tests can now also be run when there is no
|
||||
LF in the default newline convention.
|
||||
|
||||
51. The RunTest script has been modified so that, when JIT is used and valgrind
|
||||
is specified, a valgrind suppressions file is set up to ignore "Invalid read of
|
||||
size 16" errors because these are false positives when the hardware supports
|
||||
the SSE2 instruction set.
|
||||
|
||||
|
||||
Version 10.20 30-June-2015
|
||||
--------------------------
|
||||
|
|
30
RunTest
30
RunTest
|
@ -157,7 +157,7 @@ checkresult()
|
|||
|
||||
checkspecial()
|
||||
{
|
||||
$valgrind ./pcre2test $1 >>testtry
|
||||
$valgrind $vjs ./pcre2test $1 >>testtry
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "** pcre2test $1 failed - check testtry"
|
||||
exit 1
|
||||
|
@ -194,6 +194,7 @@ bigstack=
|
|||
sim=
|
||||
skip=
|
||||
valgrind=
|
||||
vjs=
|
||||
|
||||
# This is in case the caller has set aliases (as I do - PH)
|
||||
unset cp ls mv rm
|
||||
|
@ -377,11 +378,18 @@ fi
|
|||
$sim ./pcre2test -C unicode >/dev/null
|
||||
utf=$?
|
||||
|
||||
# When JIT is used with valgrind, we need to set up valgrind suppressions as
|
||||
# otherwise there are a lot of false positive valgrind reports when the
|
||||
# the hardware supports SSE2.
|
||||
|
||||
jitopt=
|
||||
$sim ./pcre2test -C jit >/dev/null
|
||||
jit=$?
|
||||
if [ $jit -ne 0 -a "$nojit" != "yes" ] ; then
|
||||
jitopt=-jit
|
||||
if [ "$valgrind" != "" ] ; then
|
||||
vjs="--suppressions=$testdata/valgrind-jit.supp"
|
||||
fi
|
||||
fi
|
||||
|
||||
# If no specific tests were requested, select all. Those that are not
|
||||
|
@ -459,7 +467,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
if [ $do1 = yes ] ; then
|
||||
echo $title1
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput1 testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput1 testtry
|
||||
checkresult $? 1 "$opt"
|
||||
done
|
||||
fi
|
||||
|
@ -469,7 +477,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
if [ $do2 = yes ] ; then
|
||||
echo $title2 "(excluding UTF-$bits)"
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $test2stack $bmode $opt $testdata/testinput2 testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $test2stack $bmode $opt $testdata/testinput2 testtry
|
||||
if [ $? = 0 ] ; then
|
||||
checkresult $? 2 "$opt"
|
||||
else
|
||||
|
@ -529,7 +537,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
if [ "$locale" != "" ] ; then
|
||||
echo $title3 "(using '$locale' locale)"
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $opt $infile testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $defaultstack $bmode $opt $infile testtry
|
||||
if [ $? = 0 ] ; then
|
||||
case "$opt" in
|
||||
-jit) with=" with JIT";;
|
||||
|
@ -566,7 +574,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
echo " Skipped because UTF-$bits support is not available"
|
||||
else
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput4 testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput4 testtry
|
||||
checkresult $? 4 "$opt"
|
||||
done
|
||||
fi
|
||||
|
@ -578,7 +586,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
echo " Skipped because UTF-$bits support is not available"
|
||||
else
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput5 testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput5 testtry
|
||||
checkresult $? 5 "$opt"
|
||||
done
|
||||
fi
|
||||
|
@ -630,7 +638,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
echo " Skipped when running 16/32-bit tests"
|
||||
else
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput9 testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput9 testtry
|
||||
checkresult $? 9 "$opt"
|
||||
done
|
||||
fi
|
||||
|
@ -646,7 +654,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
echo " Skipped because UTF-$bits support is not available"
|
||||
else
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput10 testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput10 testtry
|
||||
checkresult $? 10 "$opt"
|
||||
done
|
||||
fi
|
||||
|
@ -660,7 +668,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
echo " Skipped when running 8-bit tests"
|
||||
else
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput11 testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput11 testtry
|
||||
checkresult $? 11-$bits "$opt"
|
||||
done
|
||||
fi
|
||||
|
@ -677,7 +685,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
echo " Skipped because UTF-$bits support is not available"
|
||||
else
|
||||
for opt in "" $jitopt; do
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput12 testtry
|
||||
$sim $valgrind ${opt:+$vjs} ./pcre2test -q $defaultstack $bmode $opt $testdata/testinput12 testtry
|
||||
checkresult $? 12-$bits "$opt"
|
||||
done
|
||||
fi
|
||||
|
@ -734,7 +742,7 @@ for bmode in "$test8" "$test16" "$test32"; do
|
|||
if [ $jit -eq 0 -o "$nojit" = "yes" ] ; then
|
||||
echo " Skipped because JIT is not available or nojit was specified"
|
||||
else
|
||||
$sim $valgrind ./pcre2test -q $defaultstack $bmode $testdata/testinput17 testtry
|
||||
$sim $valgrind $vjs ./pcre2test -q $defaultstack $bmode $testdata/testinput17 testtry
|
||||
checkresult $? 17 ""
|
||||
fi
|
||||
fi
|
||||
|
|
|
@ -10,13 +10,16 @@
|
|||
# tests, in order to run those that are giving errors. The following options
|
||||
# do this:
|
||||
#
|
||||
# -noasan skip the test that uses -fsanitize=address
|
||||
# -nousan skip the test that uses -fsanitize=undefined
|
||||
# -nodebug skip the test that uses --enable-debug
|
||||
# -nojit skip JIT tests
|
||||
# -nomain skip the main set of tests
|
||||
# -notmp skip the test in a temporary directory
|
||||
# -novalgrind skip the valgrind tests
|
||||
# -noasan skip the test that uses -fsanitize=address
|
||||
# -nousan skip the test that uses -fsanitize=undefined
|
||||
# -nodebug skip the test that uses --enable-debug
|
||||
# -nojit skip all JIT tests
|
||||
# -nojitmain skip non-valgrind JIT tests
|
||||
# -nojitvalgrind skip JIT tests with valgrind
|
||||
# -nomain skip the main set of tests
|
||||
# -nomainvalgrind skip the non-JIT valgrind tests
|
||||
# -notmp skip the test in a temporary directory
|
||||
# -novalgrind skip the valgrind tests
|
||||
|
||||
# The -v option causes a call to 'pcre2test -C' to happen for each
|
||||
# configuration.
|
||||
|
@ -25,26 +28,35 @@ useasan=1
|
|||
useusan=1
|
||||
usedebug=1
|
||||
usejit=1
|
||||
usejitvalgrind=1
|
||||
usemain=1
|
||||
usemainvalgrind=1
|
||||
usetmp=1
|
||||
usevalgrind=1
|
||||
verbose=0
|
||||
|
||||
while [ $# -gt 0 ] ; do
|
||||
case $1 in
|
||||
-noasan) useasan=0;;
|
||||
-nousan) useusan=0;;
|
||||
-nodebug) usedebug=0;;
|
||||
-nojit) usejit=0;;
|
||||
-nomain) usemain=0;;
|
||||
-notmp) usetmp=0;;
|
||||
-novalgrind) usevalgrind=0;;
|
||||
-v) verbose=1;;
|
||||
*) echo "Unknown option '$1'"; exit 1;;
|
||||
-noasan) useasan=0;;
|
||||
-nousan) useusan=0;;
|
||||
-nodebug) usedebug=0;;
|
||||
-nojit) usejit=0; usejitvalgrind=0;;
|
||||
-nojitmain) usejit=0;;
|
||||
-nojitvalgrind) usejitvalgrind=0;;
|
||||
-nomain) usemain=0; usemainvalgrind=0;;
|
||||
-nomainvalgrind) usemainvalgrind=0;;
|
||||
-notmp) usetmp=0;;
|
||||
-novalgrind) usevalgrind=0;;
|
||||
-v) verbose=1;;
|
||||
*) echo "Unknown option '$1'"; exit 1;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ $usejitvalgrind -eq 0 -a $usemainvalgrind -eq 0 ] ; then
|
||||
usevalgrind=0
|
||||
fi
|
||||
|
||||
# This is in case the caller has set aliases (as I do - PH)
|
||||
|
||||
unset cp ls mv rm
|
||||
|
@ -103,22 +115,21 @@ runtest()
|
|||
fi
|
||||
|
||||
CFLAGS="$CFLAGS" \
|
||||
$srcdir/configure $opts >/dev/null 2>teststderr
|
||||
|
||||
$srcdir/configure $opts >/dev/null 2>teststderrM
|
||||
if [ $? -ne 0 ]; then
|
||||
echo " "
|
||||
echo "******** Error while configuring ********"
|
||||
cat teststderr
|
||||
cat teststderrM
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Making"
|
||||
make -j >/dev/null 2>teststderr
|
||||
if [ $? -ne 0 -o -s teststderr ]; then
|
||||
make -j >/dev/null 2>teststderrM
|
||||
if [ $? -ne 0 -o -s teststderrM ]; then
|
||||
echo " "
|
||||
echo "******** Errors or warnings while making ********"
|
||||
echo " "
|
||||
cat teststderr
|
||||
cat teststderrM
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -132,23 +143,27 @@ runtest()
|
|||
pcre2_8=$?
|
||||
|
||||
echo "Running PCRE2 library tests $withvalgrind"
|
||||
$srcdir/RunTest $valgrind >teststdout 2>teststderr
|
||||
if [ $? -ne 0 -o -s teststderr ]; then
|
||||
$srcdir/RunTest $valgrind >teststdoutM 2>teststderrM
|
||||
|
||||
if [ $? -ne 0 -o -s teststderrM ]; then
|
||||
echo " "
|
||||
echo "**** Test failed ****"
|
||||
cat teststderr
|
||||
if [ -s teststdout ] ; then cat teststdout; fi
|
||||
if [ -s teststderrM ] ; then
|
||||
cat teststderrM
|
||||
else
|
||||
cat teststdoutM
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ $pcre2_8 -gt 0 ]; then
|
||||
echo "Running pcre2grep tests $withvalgrind"
|
||||
$srcdir/RunGrepTest $valgrind >teststdout 2>teststderr
|
||||
if [ $? -ne 0 -o -s teststderr ]; then
|
||||
$srcdir/RunGrepTest $valgrind >teststdoutM 2>teststderrM
|
||||
if [ $? -ne 0 -o -s teststderrM ]; then
|
||||
echo " "
|
||||
echo "**** Test failed ****"
|
||||
cat teststderr
|
||||
cat teststdout
|
||||
cat teststderrM
|
||||
cat teststdoutM
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
|
@ -157,12 +172,12 @@ runtest()
|
|||
|
||||
if [ "$jit" -gt 0 ]; then
|
||||
echo "Running JIT regression tests $withvalgrind"
|
||||
$cvalgrind $srcdir/pcre2_jit_test >teststdout 2>teststderr
|
||||
if [ $? -ne 0 -o -s teststderr ]; then
|
||||
$cvalgrind $srcdir/pcre2_jit_test >teststdoutM 2>teststderrM
|
||||
if [ $? -ne 0 -o -s teststderrM ]; then
|
||||
echo " "
|
||||
echo "**** Test failed ****"
|
||||
cat teststderr
|
||||
cat teststdout
|
||||
cat teststderrM
|
||||
cat teststdoutM
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
|
@ -180,9 +195,16 @@ testtotal=`expr 20 \* $usemain + \
|
|||
1 \* $ISGCC \* $usemain \* $useasan + \
|
||||
1 \* $ISGCC \* $usemain \* $useusan + \
|
||||
13 \* $usejit + \
|
||||
\( 3 + 2 \* $usejit \) \* $usevalgrind`
|
||||
3 \* $usemainvalgrind + \
|
||||
2 \* $usejitvalgrind`
|
||||
|
||||
testcount=0
|
||||
|
||||
if [ $testtotal -eq 0 ] ; then
|
||||
echo "** No tests selected"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
valgrind=
|
||||
cvalgrind=
|
||||
withvalgrind=
|
||||
|
@ -244,7 +266,7 @@ if [ $usemain -ne 0 ]; then
|
|||
echo "---------- Maximally configured test with --enable-debug ----------"
|
||||
opts="--disable-shared $enable_jit --enable-pcre2-16 --enable-pcre2-32 --enable-debug"
|
||||
runtest
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "---------- Non-JIT tests in the current directory ----------"
|
||||
for opts in \
|
||||
|
@ -304,16 +326,18 @@ if [ $usevalgrind -ne 0 ]; then
|
|||
cvalgrind="valgrind -q --smc-check=all"
|
||||
withvalgrind="with valgrind"
|
||||
|
||||
for opts in \
|
||||
"--disable-stack-for-recursion --disable-shared" \
|
||||
"--with-link-size=3 --enable-pcre2-16 --enable-pcre2-32 --disable-shared" \
|
||||
"--disable-unicode --disable-shared"
|
||||
do
|
||||
opts="--enable-valgrind $opts"
|
||||
runtest
|
||||
done
|
||||
if [ $usemainvalgrind -ne 0 ]; then
|
||||
for opts in \
|
||||
"--disable-stack-for-recursion --disable-shared" \
|
||||
"--with-link-size=3 --enable-pcre2-16 --enable-pcre2-32 --disable-shared" \
|
||||
"--disable-unicode --disable-shared"
|
||||
do
|
||||
opts="--enable-valgrind $opts"
|
||||
runtest
|
||||
done
|
||||
fi
|
||||
|
||||
if [ $usejit -ne 0 ]; then
|
||||
if [ $usejitvalgrind -ne 0 ]; then
|
||||
for opts in \
|
||||
"--enable-jit --disable-shared" \
|
||||
"--enable-jit --enable-pcre2-16 --enable-pcre2-32"
|
||||
|
@ -341,26 +365,26 @@ if [ -f Makefile ]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
echo "---------- Tests in the $tmp directory ----------"
|
||||
srcdir=`pwd`
|
||||
export srcdir
|
||||
|
||||
if [ ! -e $tmp ]; then
|
||||
mkdir $tmp
|
||||
fi
|
||||
|
||||
if [ ! -d $tmp ]; then
|
||||
echo "** Failed to create $tmp or it is not a directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd $tmp
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "** Failed to cd to $tmp"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ $usetmp -ne 0 ]; then
|
||||
echo "---------- Tests in the $tmp directory ----------"
|
||||
srcdir=`pwd`
|
||||
export srcdir
|
||||
|
||||
if [ ! -e $tmp ]; then
|
||||
mkdir $tmp
|
||||
fi
|
||||
|
||||
if [ ! -d $tmp ]; then
|
||||
echo "** Failed to create $tmp or it is not a directory"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd $tmp
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "** Failed to cd to $tmp"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for opts in \
|
||||
"--disable-shared"
|
||||
do
|
||||
|
@ -369,8 +393,8 @@ if [ $usetmp -ne 0 ]; then
|
|||
fi
|
||||
|
||||
echo "Removing $tmp"
|
||||
|
||||
rm -rf $tmp
|
||||
rm -rf teststdoutM teststderrM
|
||||
|
||||
echo "All done"
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
name
|
||||
Memcheck:Addr16
|
||||
obj:*
|
||||
obj:*
|
||||
obj:*
|
||||
}
|
Loading…
Reference in New Issue