Skip to content

Commit 76a3f06

Browse files
committed
adding sv-comp old script for the ant build version of spf
1 parent c98bfae commit 76a3f06

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

jpf-sv-comp

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#!/bin/bash
2+
3+
# parse arguments
4+
declare -a BM
5+
BM=()
6+
PROP_FILE=""
7+
WITNESS_FILE=""
8+
9+
TOOL_BINARY=jpf-core/bin/jpf
10+
FIND_OPTIONS="-name '*.java'"
11+
12+
while [ -n "$1" ] ; do
13+
case "$1" in
14+
--32|--64) BIT_WIDTH="${1##--}" ; shift 1 ;;
15+
--propertyfile) PROP_FILE="$2" ; shift 2 ;;
16+
--graphml-witness) WITNESS_FILE="$2" ; shift 2 ;;
17+
--version) date -r jpf-symbc/build/jpf-symbc.jar ; exit 0 ;;
18+
*) SRC=(`eval "find $1 $FIND_OPTIONS"`) ; BM=("${BM[@]}" "${SRC[@]}") ; shift 1 ;;
19+
esac
20+
done
21+
22+
if [ -z "${BM[0]}" ] || [ -z "$PROP_FILE" ] ; then
23+
echo "Missing benchmark or property file"
24+
exit 1
25+
fi
26+
27+
if [ ! -s "${BM[0]}" ] || [ ! -s "$PROP_FILE" ] ; then
28+
echo "Empty benchmark or property file"
29+
exit 1
30+
fi
31+
32+
LOG=`mktemp -t jpf-log.XXXXXX`
33+
DIR=`mktemp -d -t jpf-benchmark.XXXXXX`
34+
35+
trap "rm -rf $DIR" EXIT
36+
37+
mkdir -p $DIR/target/classes
38+
39+
/usr/lib/jvm/java-8-openjdk-amd64/bin/javac -g -cp $CLASSPATH_ADDED:$DIR/target/classes -d $DIR/target/classes "${BM[@]}"
40+
41+
# create configuration file
42+
echo "target=Main" > $DIR/config.jpf
43+
echo "classpath=`pwd`/jpf-symbc/build/classes:$DIR/target/classes:$CLASSPATH_ADDED" >> $DIR/config.jpf
44+
echo "symbolic.dp=z3bitvector" >> $DIR/config.jpf
45+
echo "symbolic.bvlength=64" >> $DIR/config.jpf
46+
echo "search.depth_limit=13" >> $DIR/config.jpf
47+
echo "symbolic.strings=true" >> $DIR/config.jpf
48+
echo "symbolic.string_dp_timeout_ms=3000" >> $DIR/config.jpf
49+
echo "symbolic.lazy=on" >> $DIR/config.jpf
50+
echo "symbolic.arrays=true" >> $DIR/config.jpf
51+
echo $DIR/config.jpf
52+
53+
# run SPF
54+
export LD_LIBRARY_PATH=`pwd`/lib:$LD_LIBRARY_PATH
55+
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
56+
if test -z "$JVM_FLAGS"; then
57+
JVM_FLAGS="-Xmx1024m -ea"
58+
fi
59+
/usr/lib/jvm/java-8-openjdk-amd64/bin/java $JVM_FLAGS -jar $(pwd)/jpf-core/build/RunJPF.jar $DIR/config.jpf | tee $LOG
60+
61+
# check the result
62+
grep "no errors detected" $LOG > /dev/null
63+
if [ $? -eq 0 ]; then
64+
echo "SAFE"
65+
else
66+
grep "^error.*NoUncaughtExceptionsProperty.*AssertionError" $LOG > /dev/null
67+
if [ $? -eq 0 ]; then
68+
echo "UNSAFE"
69+
else
70+
echo "UNKNOWN"
71+
fi
72+
fi

0 commit comments

Comments
 (0)