Skip to content

Commit 7b6f678

Browse files
author
owen-jones-diffblue
authored
Merge pull request diffblue#431 from diffblue/CBMC_merge_2018-05-30
Cbmc merge 2018-05-30
2 parents 6b050a2 + 05a8abf commit 7b6f678

File tree

2,835 files changed

+5238
-3805
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,835 files changed

+5238
-3805
lines changed

cbmc/.gitignore

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,15 @@ src/ansi-c/gcc_builtin_headers_mips.inc
4949
src/ansi-c/gcc_builtin_headers_power.inc
5050
src/ansi-c/gcc_builtin_headers_ubsan.inc
5151
src/ansi-c/windows_builtin_headers.inc
52-
src/java_bytecode/java_core_models.inc
52+
jbmc/src/java_bytecode/java_core_models.inc
5353

5454
# regression/test files
5555
*.out
5656
regression/**/tests.log
5757
regression/**/*.gb
5858
regression/**/*.smt2
59+
jbmc/regression/**/tests.log
60+
jbmc/regression/**/tests-symex-driven-loading.log
5961

6062
# regression/coverage file
6163
/regression/coverage_**
@@ -64,8 +66,6 @@ regression/**/*.smt2
6466
*~
6567

6668
# libs downloaded by make [name]-download
67-
libzip/
68-
zlib/
6969
minisat*/
7070
glucose-syrup/
7171
boost-include/
@@ -96,38 +96,35 @@ src/memory-models/mm_y.tab.h
9696
# binaries
9797
src/cbmc/cbmc
9898
src/cbmc/cbmc.exe
99-
src/cegis/cegis
100-
src/cegis/cegis.exe
10199
src/goto-analyzer/goto-analyzer
102100
src/goto-analyzer/goto-analyzer.exe
103101
src/goto-cc/goto-cc
104102
src/goto-cc/goto-cc.exe
105103
src/goto-cc/goto-cl.exe
106104
src/goto-instrument/goto-instrument
107105
src/goto-instrument/goto-instrument.exe
108-
src/jbmc/jbmc
109-
src/musketeer/musketeer
110-
src/musketeer/musketeer.exe
111106
src/solvers/smt2_solver
112107
src/solvers/smt2_solver.exe
113-
src/symex/symex
114-
src/symex/symex.exe
115108
src/goto-diff/goto-diff
116109
src/goto-diff/goto-diff.exe
117110
src/clobber/clobber
118111
src/clobber/clobber.exe
119112
src/big-int/test-bigint
120113
src/big-int/test-bigint.exe
114+
jbmc/src/jbmc/janalyzer
115+
jbmc/src/jbmc/janalyzer.exe
116+
jbmc/src/jbmc/jdiff
117+
jbmc/src/jbmc/jdiff.exe
118+
jbmc/src/jbmc/jbmc
119+
jbmc/src/jbmc/jbmc.exe
121120

122121
# build tools
123122
src/ansi-c/file_converter
124123
src/ansi-c/file_converter.exe
125124
src/ansi-c/library/converter
126125
src/ansi-c/library/converter.exe
127-
src/java_bytecode/converter
128-
src/java_bytecode/converter.exe
129-
src/util/irep_ids_convert
130-
src/util/irep_ids_convert.exe
126+
jbmc/src/java_bytecode/converter
127+
jbmc/src/java_bytecode/converter.exe
131128
build/
132129

133130
*.pyc

cbmc/.travis.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,10 +99,7 @@ jobs:
9999
before_install:
100100
- HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache parallel
101101
- export PATH=$PATH:/usr/local/opt/ccache/libexec
102-
env:
103-
- COMPILER="ccache clang++"
104-
- EXTRA_CXXFLAGS="-Qunused-arguments -fcolor-diagnostics"
105-
- CCACHE_CPP2=yes
102+
env: COMPILER="ccache clang++"
106103

107104
# Ubuntu Linux with glibc using g++-5, debug mode
108105
- stage: Test different OS/CXX/Flags
@@ -237,7 +234,7 @@ jobs:
237234
description: "Travis build of ${TRAVIS_COMMIT}"
238235
notification_email: "[email protected]"
239236
build_command_prepend: "make -C src minisat2-download"
240-
build_command: "make -C src -j2"
237+
build_command: "make -C src -j2; make -C jbmc/src -j2"
241238
branch_pattern: "develop"
242239
before_install:
243240
- |
@@ -267,12 +264,16 @@ install:
267264
- make -C src/ansi-c library_check
268265
- make -C src "CXX=${COMPILER} -DUSE_BOOST ${EXTRA_CXXFLAGS}" -j3
269266
- make -C src "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j3 clobber.dir memory-models.dir
267+
- make -C jbmc/src "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j3
270268

271269
script:
272270
- if [ -e bin/gcc ] ; then export PATH=$PWD/bin:$PATH ; fi ;
273271
- env UBSAN_OPTIONS=print_stacktrace=1 make -C regression test-parallel "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2 JOBS=2
274272
- make -C unit "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2
275273
- make -C unit test
274+
- env UBSAN_OPTIONS=print_stacktrace=1 make -C jbmc/regression test-parallel "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2 JOBS=2
275+
- make -C jbmc/unit "CXX=${COMPILER} ${EXTRA_CXXFLAGS}" -j2
276+
- make -C jbmc/unit test
276277

277278
before_cache:
278279
- ccache -s

cbmc/CMakeLists.txt

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,15 @@ set(sat_impl "minisat2" CACHE STRING
3737
"This setting controls the SAT library which is used. Valid values are 'minisat2' and 'glucose'"
3838
)
3939

40-
add_subdirectory(src)
41-
4240
if(${enable_cbmc_tests})
4341
enable_testing()
4442
endif()
45-
add_subdirectory(unit)
43+
44+
add_subdirectory(src)
4645
add_subdirectory(regression)
46+
add_subdirectory(unit)
47+
48+
add_subdirectory(jbmc)
4749

4850
set_target_properties(
4951
analyses
@@ -66,15 +68,11 @@ set_target_properties(
6668
goto-instrument-lib
6769
goto-programs
6870
goto-symex
69-
java_bytecode
70-
jbmc
71-
jbmc-lib
7271
jsil
7372
json
7473
langapi
7574
linking
7675
miniBDD
77-
miniz
7876
mmcc
7977
pointer-analysis
8078
solvers
@@ -84,6 +82,17 @@ set_target_properties(
8482
util
8583
xml
8684

85+
java_bytecode
86+
jbmc
87+
jbmc-lib
88+
janalyzer
89+
janalyzer-lib
90+
jdiff
91+
jdiff-lib
92+
java-testing-utils
93+
java-unit
94+
miniz
95+
8796
PROPERTIES
8897
CXX_STANDARD 11
8998
CXX_STANDARD_REQUIRED true

cbmc/CODEOWNERS

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ src/solvers/miniBDD @tautschnig @kroening
2121
src/solvers/prop @martin-cs @kroening @tautschnig @peterschrammel
2222
src/solvers/sat @martin-cs @kroening @tautschnig @peterschrammel
2323
src/solvers/smt2 @martin-cs @tautschnig @peterschrammel
24-
src/miniz/ @smowton @mgudemann @peterschrammel
24+
jbmc/src/miniz/ @smowton @mgudemann @peterschrammel
2525

2626

2727
# These files change frequently and changes are high-risk
@@ -30,7 +30,7 @@ src/cbmc/ @smowton @kroening @tautschnig @peterschrammel
3030
src/goto-programs/ @smowton @kroening @tautschnig @peterschrammel @pkesseli
3131
src/util/ @smowton @kroening @tautschnig @peterschrammel @pkesseli
3232
src/solvers/refinement @martin-cs @romainbrenguier @peterschrammel
33-
src/java_bytecode/ @smowton @mgudemann @thk123 @cristina-david @cesaro @pkesseli @NathanJPhillips @peterschrammel
33+
jbmc/src/java_bytecode/ @smowton @mgudemann @thk123 @cristina-david @cesaro @pkesseli @NathanJPhillips @peterschrammel
3434
src/analyses/ @martin-cs @peterschrammel @chrisr-diffblue @thk123 @smowton
3535
src/pointer-analysis/ @martin-cs @peterschrammel @chrisr-diffblue @smowton
3636

@@ -40,7 +40,9 @@ src/pointer-analysis/ @martin-cs @peterschrammel @chrisr-diffblue @smowton
4040
src/goto-analyzer/ @martin-cs @chrisr-diffblue @peterschrammel
4141
src/goto-instrument/ @martin-cs @chrisr-diffblue @peterschrammel
4242
src/goto-diff/ @tautschnig @peterschrammel
43-
src/jbmc/ @smowton @mgudemann @cristina-david @cesaro @pkesseli @peterschrammel
43+
jbmc/src/jbmc/ @smowton @mgudemann @cristina-david @cesaro @pkesseli @peterschrammel
44+
jbmc/src/janalyzer/ @smowton @mgudemann @cristina-david @cesaro @pkesseli @peterschrammel
45+
jbmc/src/jdiff/ @smowton @mgudemann @cristina-david @cesaro @pkesseli @peterschrammel
4446
src/cpp/ @kroening @tautschnig @peterschrammel
4547

4648

@@ -50,6 +52,8 @@ src/util/irep_ids.def @diffblue/cbmc-developers
5052

5153
unit/ @diffblue/cbmc-developers
5254
regression/ @diffblue/cbmc-developers
55+
jbmc/unit/ @diffblue/cbmc-developers
56+
jbmc/regression/ @diffblue/cbmc-developers
5357

5458
scripts/ @diffblue/devops @thk123 @forejtv @peterschrammel
5559
.travis.yml @diffblue/devops @thk123 @forejtv @peterschrammel

cbmc/CODING_STANDARD.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ Formatting is enforced using clang-format. For more information about this, see
156156
- Make references `const` whenever possible
157157
- Make member functions `const` whenever possible
158158
- Do not hide base class functions
159-
- You are encouraged to use `override`
159+
- When overriding a virtual function, use `override` (without `virtual`)
160160
- Single argument constructors must be `explicit`
161161
- Avoid implicit conversions
162162
- Avoid `friend` declarations

cbmc/COMPILING.md

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ We assume that you have a Debian/Ubuntu or Red Hat-like distribution.
2828
yum install gcc gcc-c++ flex bison perl-libwww-perl patch devtoolset-6 java-1.7.0-openjdk-devel
2929
```
3030
Note that you need g++ version 4.9 or newer.
31+
32+
To compile JBMC, you additionally need the JDK:
33+
On Debian-like distributions, do
34+
```
35+
apt-get install openjdk-7-jdk
36+
```
37+
On Red Hat/Fedora or derivates, do
38+
```
39+
yum install java-1.7.0-openjdk-devel
40+
```
41+
3142
2. As a user, get the CBMC source via
3243
```
3344
git clone https://github.com/diffblue/cbmc cbmc-git
@@ -93,7 +104,11 @@ We assume that you have a Debian/Ubuntu or Red Hat-like distribution.
93104
```
94105
pkg install bash gmake git www/p5-libwww patch flex bison openjdk
95106
```
96-
2. As a user, get the CBMC source via
107+
To compile JBMC, additionally install
108+
```
109+
pkg install openjdk
110+
```
111+
2. As a user, get the CBMC source via
97112
```
98113
git clone https://github.com/diffblue/cbmc cbmc-git
99114
```
@@ -183,14 +198,14 @@ require manual modification of build files.
183198
1. Ensure you have all the build dependencies installed. Build dependencies are
184199
the same as for the makefile build, but with the addition of CMake version
185200
3.2 or higher. The installed CMake version can be queried with `cmake
186-
--version`. To install all build dependencies:
201+
--version`. To install cmake:
187202
- On Debian-like distributions, do
188203
```
189-
apt-get install cmake g++ gcc flex bison make git libwww-perl patch openjdk-7-jdk
204+
apt-get install cmake
190205
```
191206
- On Red Hat/Fedora or derivates, do
192207
```
193-
yum install cmake gcc gcc-c++ flex bison perl-libwww-perl patch devtoolset-6 java-1.7.0-openjdk-devel
208+
yum install cmake
194209
```
195210
- On macOS, do
196211
```

cbmc/appveyor.yml

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ build_script:
5353
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64
5454
sed -i "s/BUILD_ENV[ ]*=.*/BUILD_ENV = MSVC/" src/config.inc
5555
make -C src -j2
56+
make -C jbmc/src -j2
5657
5758
test_script:
5859
- cmd: |
5960
cd regression
60-
6161
rem HACK disable failing tests
6262
rmdir /s /q ansi-c\arch_flags_mcpu_bad
6363
rmdir /s /q ansi-c\arch_flags_mcpu_good
@@ -90,15 +90,24 @@ test_script:
9090
rmdir /s /q cpp\nullptr1
9191
rmdir /s /q cpp\sizeof1
9292
rmdir /s /q cpp\static_assert1
93-
rmdir /s /q cbmc-java\VarLengthArrayTrace1
94-
rmdir /s /q cbmc-java\classpath1
95-
rmdir /s /q cbmc-java\jar-file3
96-
rmdir /s /q cbmc-java\tableswitch2
9793
rmdir /s /q goto-gcc
9894
rmdir /s /q goto-instrument\slice08
95+
cd ..
9996
100-
make test
97+
make -C regression test
10198
102-
cd ..
103-
make -C unit all
99+
make -C unit all -j2
104100
make -C unit test
101+
102+
cd jbmc/regression
103+
rmdir /s /q jbmc\VarLengthArrayTrace1
104+
rmdir /s /q jbmc\classpath1
105+
rmdir /s /q jbmc\jar-file3
106+
rmdir /s /q jbmc\tableswitch2
107+
rmdir /s /q jbmc-concurrency\explicit_thread_blocks
108+
cd ../..
109+
110+
make -C jbmc/regression test
111+
112+
make -C jbmc/unit all -j2
113+
make -C jbmc/unit test

cbmc/doc/cbmc-user-manual.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2193,8 +2193,8 @@ section on [Assumptions and Assertions](modeling-assertions.shtml).
21932193
#### \_\_CPROVER\_same\_object, \_\_CPROVER\_POINTER\_OBJECT, \_\_CPROVER\_POINTER\_OFFSET, \_\_CPROVER\_DYNAMIC\_OBJECT
21942194

21952195
_Bool __CPROVER_same_object(const void *, const void *);
2196-
unsigned __CPROVER_POINTER_OBJECT(const void *p);
2197-
signed __CPROVER_POINTER_OFFSET(const void *p);
2196+
__CPROVER_size_t __CPROVER_POINTER_OBJECT(const void *p);
2197+
__CPROVER_ssize_t __CPROVER_POINTER_OFFSET(const void *p);
21982198
_Bool __CPROVER_DYNAMIC_OBJECT(const void *p);
21992199

22002200
The function **\_\_CPROVER\_same\_object** returns true if the two

cbmc/jbmc/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
add_subdirectory(regression)
2+
add_subdirectory(src)
3+
add_subdirectory(unit)

cbmc/jbmc/README.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
[![Build Status][travis_img]][travis] [![Build Status][appveyor_img]][appveyor]
2+
3+
About
4+
=====
5+
6+
JBMC is a Bounded Model Checker for Java programs. It supports
7+
checking for runtime exceptions and user-definde assertions.
8+
The verification is performed by unwinding the loops in the program
9+
and passing the resulting equation to a decision procedure.
10+
11+
[More info...](http://www.cprover.org/jbmc)
12+
13+
Versions
14+
========
15+
16+
Get the [latest release](https://github.com/diffblue/cbmc/releases)
17+
* Releases are tested and for production use.
18+
19+
Get the current *develop* version: `git clone https://github.com/diffblue/cbmc.git`
20+
* Develop versions are not recommended for production use.
21+
22+
Prerequisites
23+
============
24+
25+
JBMC compiles CBMC as part of its build process and as such has all the pre-requisites of CBMC. These can be viewed at: [diffblue/cbmc:COMPILING](http://github.com/diffblue/cbmc/blob/master/COMPILING)
26+
27+
Compilation
28+
===========
29+
30+
To compile you need to run the command:
31+
32+
```bash
33+
make -C jbmc/src
34+
```
35+
Output
36+
======
37+
38+
Compiling produces an executable called `jbmc` which by default can be found in `jbmc/src/jbmc/jbmc`
39+
40+
Reporting bugs and contributing to the code base
41+
================================================
42+
43+
See [CBMC](https://github.com/diffblue/cbmc/blob/develop/README.md))
44+
45+
License
46+
=======
47+
4-clause BSD license, see `LICENSE` file.
48+
49+
[travis]: https://travis-ci.org/diffblue/cbmc
50+
[travis_img]: https://travis-ci.org/diffblue/cbmc.svg?branch=develop
51+
[appveyor]: https://ci.appveyor.com/project/diffblue/cbmc/
52+
[appveyor_img]: https://ci.appveyor.com/api/projects/status/github/diffblue/cbmc?svg=true&branch=develop

cbmc/jbmc/regression/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
set(test_pl_path "${CBMC_SOURCE_DIR}/../regression/test.pl")
2+
3+
# For the best possible utilisation of multiple cores when
4+
# running tests in parallel, it is important that these directories are
5+
# listed with decreasing runtimes (i.e. longest running at the top)
6+
add_subdirectory(jbmc)
7+
add_subdirectory(strings-smoke-tests)
8+
add_subdirectory(jbmc-strings)
9+
add_subdirectory(jdiff)
10+
add_subdirectory(janalyzer-taint)
11+
add_subdirectory(jbmc-concurrency)
12+
add_subdirectory(jbmc-inheritance)
13+
add_subdirectory(jbmc-cover)

0 commit comments

Comments
 (0)