Skip to content

Commit c6fc80d

Browse files
authored
Merge pull request #35 from peterschrammel/jbmc-wrapper-source-list
Accept multiple source files
2 parents a80c970 + a21cd34 commit c6fc80d

File tree

4 files changed

+19
-14
lines changed

4 files changed

+19
-14
lines changed

2ls.inc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22

33
TOOL_BINARY=./2ls-binary
44
TOOL_NAME=2LS
5+
FIND_OPTIONS=""
56

67
# function to run the tool
78

89
run()
910
{
1011
gmon_suffix=$GMON_OUT_PREFIX
1112
export GMON_OUT_PREFIX="goto-cc_$gmon_suffix"
12-
./goto-cc -m$BIT_WIDTH --function $ENTRY $BM -o $LOG.bin
13+
./goto-cc -m$BIT_WIDTH --function $ENTRY "${BM[@]}" -o $LOG.bin
1314

1415
export GMON_OUT_PREFIX="2ls_$gmon_suffix"
1516
# add property-specific options

cbmc.inc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
TOOL_BINARY=./cbmc-binary
44
TOOL_NAME=CBMC
5+
FIND_OPTIONS=""
56

67
# function to run the tool
78

@@ -13,7 +14,7 @@ run()
1314

1415
gmon_suffix=$GMON_OUT_PREFIX
1516
export GMON_OUT_PREFIX="goto-cc_$gmon_suffix"
16-
./goto-cc -m$BIT_WIDTH --function $ENTRY $BM -o $LOG.bin
17+
./goto-cc -m$BIT_WIDTH --function $ENTRY "${BM[@]}" -o $LOG.bin
1718

1819
export GMON_OUT_PREFIX="cbmc_$gmon_suffix"
1920
timeout 875 bash -c ' \

jbmc.inc

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22

33
TOOL_BINARY=./jbmc-binary
44
TOOL_NAME=JBMC
5+
FIND_OPTIONS="-name '*.java'"
56

67
# function to run the tool
78

89
run()
910
{
10-
unzip $BM -d $BM_DIR
11-
make -C $BM_DIR
12-
BM=$BM_DIR/target/task.jar
11+
mkdir -p $BM_DIR/classes
12+
javac -g -cp $BM_DIR/classes -d $BM_DIR/classes "${BM[@]}"
13+
jar -cfe $BM_DIR/task.jar Main -C $BM_DIR/classes .
14+
export TASK="$BM_DIR/task.jar"
1315

1416
MORE_OPTIONS="--throw-runtime-exceptions --max-nondet-string-length 100 --classpath core-models.jar"
1517

@@ -24,11 +26,11 @@ ulimit -v 15000000 ; \
2426
EC=42 ; \
2527
for c in 2 6 12 17 21 40 200 400 1025 2049 268435456 ; do \
2628
echo "Unwind: $c" > $LOG.latest ; \
27-
./jbmc-binary $MORE_OPTIONS --graphml-witness $LOG.witness --unwind $c --stop-on-fail --$BIT_WIDTH --object-bits $OBJ_BITS $PROPERTY --function $ENTRY $BM >> $LOG.latest 2>&1 ; \
29+
./jbmc-binary $MORE_OPTIONS --graphml-witness $LOG.witness --unwind $c --stop-on-fail --$BIT_WIDTH --object-bits $OBJ_BITS $PROPERTY --function $ENTRY $TASK >> $LOG.latest 2>&1 ; \
2830
ec=$? ; \
2931
if [ $ec -eq 0 ] ; then \
3032
if ! tail -n 10 $LOG.latest | grep -q "^VERIFICATION SUCCESSFUL$" ; then ec=1 ; else \
31-
./jbmc-binary $MORE_OPTIONS --unwinding-assertions --unwind $c --stop-on-fail --$BIT_WIDTH --object-bits $OBJ_BITS $PROPERTY --function $ENTRY $BM > /dev/null 2>&1 || ec=42 ; \
33+
./jbmc-binary $MORE_OPTIONS --unwinding-assertions --unwind $c --stop-on-fail --$BIT_WIDTH --object-bits $OBJ_BITS $PROPERTY --function $ENTRY $TASK > /dev/null 2>&1 || ec=42 ; \
3234
fi ; \
3335
fi ; \
3436
if [ $ec -eq 10 ] ; then \

tool-wrapper.inc

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,16 @@ process_graphml()
7272
<data key=\"witness-type\">$(echo $TYPE)<\/data>
7373
<data key=\"producer\">$(echo $TOOL_NAME)<\/data>
7474
<data key=\"specification\">$(<$PROP_FILE)<\/data>
75-
<data key=\"programfile\">$(echo $BM | sed 's8/8\\/8g')<\/data>
76-
<data key=\"programhash\">$(sha1sum $BM | awk '{print $1}')<\/data>
75+
<data key=\"programfile\">$(echo ${BM[0]} | sed 's8/8\\/8g')<\/data>
76+
<data key=\"programhash\">$(sha1sum ${BM[0]} | awk '{print $1}')<\/data>
7777
<data key=\"architecture\">${BIT_WIDTH}bit<\/data>\\Q/"
7878
fi
7979
}
8080

8181
OBJ_BITS="11"
8282
BIT_WIDTH="64"
83-
BM=""
83+
declare -a BM
84+
BM=()
8485
PROP_FILE=""
8586
WITNESS_FILE=""
8687

@@ -90,16 +91,16 @@ while [ -n "$1" ] ; do
9091
--propertyfile) PROP_FILE="$2" ; shift 2 ;;
9192
--graphml-witness) WITNESS_FILE="$2" ; shift 2 ;;
9293
--version) $TOOL_BINARY --version ; exit 0 ;;
93-
*) BM="$1" ; shift 1 ;;
94+
*) SRC=(`eval "find $1 $FIND_OPTIONS"`) ; BM=("${BM[@]}" "${SRC[@]}") ; shift 1 ;;
9495
esac
9596
done
9697

97-
if [ -z "$BM" ] || [ -z "$PROP_FILE" ] ; then
98+
if [ -z "${BM[0]}" ] || [ -z "$PROP_FILE" ] ; then
9899
echo "Missing benchmark or property file"
99100
exit 1
100101
fi
101102

102-
if [ ! -s "$BM" ] || [ ! -s "$PROP_FILE" ] ; then
103+
if [ ! -s "${BM[0]}" ] || [ ! -s "$PROP_FILE" ] ; then
103104
echo "Empty benchmark or property file"
104105
exit 1
105106
fi
@@ -122,7 +123,7 @@ export BM
122123
export PROP
123124
export OBJ_BITS
124125

125-
export GMON_OUT_PREFIX=`basename $BM`.gmon.out
126+
export GMON_OUT_PREFIX=`basename ${BM[0]}`.gmon.out
126127

127128
export BM_DIR=`mktemp -d -t ${TOOL_NAME}-benchmark.XXXXXX`
128129

0 commit comments

Comments
 (0)