File tree Expand file tree Collapse file tree 3 files changed +59
-2
lines changed
Expand file tree Collapse file tree 3 files changed +59
-2
lines changed Original file line number Diff line number Diff line change 11CBMC =../cbmc
222LS =../2ls
3+ JBMC =../cbmc
34YEAR =2018
45
5- all : cbmc 2ls
6+ all : cbmc 2ls jbmc
67
78cbmc : cbmc.zip
89
9102ls : 2ls.zip
1011
11- .PHONY : cbmc 2ls
12+ jbmc : jbmc.zip
13+
14+ .PHONY : cbmc 2ls jbmc
1215
1316% -wrapper : % .inc tool-wrapper.inc
1417 echo " #!/bin/bash" > $@
@@ -36,3 +39,14 @@ cbmc.zip: cbmc.inc tool-wrapper.inc $(CBMC)/LICENSE $(CBMC)/src/cbmc/cbmc
3639 zip -r $@ $(basename $@ )
3740 cd $(basename $@ ) && rm 2ls 2ls-binary LICENSE
3841 rmdir $(basename $@ )
42+
43+ jbmc.zip : jbmc.inc tool-wrapper.inc $(JBMC ) /LICENSE $(JBMC ) /src/jbmc/jbmc
44+ mkdir -p $(basename $@ )
45+ $(MAKE ) jbmc-wrapper
46+ mv jbmc-wrapper $(basename $@ ) /jbmc
47+ cp $(JBMC ) /LICENSE $(basename $@ ) /
48+ cp $(JBMC ) /src/jbmc/jbmc $(basename $@ ) /jbmc-binary
49+ chmod a+rX $(basename $@ ) /*
50+ zip -r $@ $(basename $@ )
51+ cd $(basename $@ ) && rm jbmc jbmc-binary LICENSE
52+ rmdir $(basename $@ )
Original file line number Diff line number Diff line change 1+ # tool
2+
3+ TOOL_BINARY =. /jbmc -binary
4+ TOOL_NAME = JBMC
5+
6+ # function to run the tool
7+
8+ run ()
9+ {
10+ if [ "$PROP" = "termination" ] ; then
11+ PROPERTY = "$PROPERTY --no-assertions --no-self-loops-to-assumptions"
12+ fi
13+
14+ timeout 875 bash -c ' \
15+ \
16+ ulimit -v 15000000 ; \
17+ \
18+ EC=42 ; \
19+ for c in 2 6 12 17 21 40 200 400 1025 2049 268435456 ; do \
20+ echo "Unwind: $c" > $LOG.latest ; \
21+ ./jbmc-binary --graphml-witness $LOG.witness --unwind $c --stop-on-fail $BIT_WIDTH --object-bits $OBJ_BITS $PROPERTY --function $ENTRY $BM >> $LOG.latest 2>&1 ; \
22+ ec=$? ; \
23+ if [ $ec -eq 0 ] ; then \
24+ if ! tail -n 10 $LOG.latest | grep -q "^VERIFICATION SUCCESSFUL$" ; then ec=1 ; else \
25+ ./jbmc-binary --unwinding-assertions --unwind $c --stop-on-fail $BIT_WIDTH --object-bits $OBJ_BITS $PROPERTY --function $ENTRY $BM > /dev/null 2>&1 || ec=42 ; \
26+ fi ; \
27+ fi ; \
28+ if [ $ec -eq 10 ] ; then \
29+ if ! tail -n 10 $LOG.latest | grep -q "^VERIFICATION FAILED$" ; then ec=1 ; fi ; \
30+ fi ; \
31+ \
32+ case $ec in \
33+ 0) EC=0 ; mv $LOG.latest $LOG.ok ; echo "EC=$EC" >> $LOG.ok ; break ;; \
34+ 10) EC=10 ; mv $LOG.latest $LOG.ok ; echo "EC=$EC" >> $LOG.ok ; break ;; \
35+ 42) EC=42 ; mv $LOG.latest $LOG.ok ; echo "EC=$EC" >> $LOG.ok ;; \
36+ *) if [ $EC -ne 0 ] ; then EC=$ec ; mv $LOG.latest $LOG.ok ; fi ; echo "EC=$EC" >> $LOG.ok ; break ;; \
37+ esac ; \
38+ \
39+ done \
40+ '
41+ eval `tail -n 1 $LOG . ok `
42+ }
Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ if(/^CHECK\(init\((\S+)\(\)\),LTL\((\S+)\)\)$/) {
2020 print "ENTRY=$1\n";
2121 print "PROP=\"label\"\nLABEL=\"$1\"\n" if($2 =~ /^G!label\((\S+)\)$/);
2222 print "PROP=\"unreach_call\"\n" if($2 =~ /^G!call\(__VERIFIER_error\(\)\)$/);
23+ print "PROP=\"unreach_call\"\n" if($2 =~ /^Gassert$/);
2324 print "PROP=\"memsafety\"\n" if($2 =~ /^Gvalid-(free|deref|memtrack)$/);
2425 print "PROP=\"overflow\"\n" if($2 =~ /^G!overflow$/);
2526 print "PROP=\"termination\"\n" if($2 =~ /^Fend$/);
You can’t perform that action at this time.
0 commit comments