Skip to content

Commit 30dc0d0

Browse files
authored
Merge pull request diffblue#519 from diffblue/smowton/merge/20180730
SEC-562: Smowton/merge/20180730
2 parents 467a30c + 2c70604 commit 30dc0d0

File tree

467 files changed

+3775
-1791
lines changed

Some content is hidden

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

467 files changed

+3775
-1791
lines changed

cbmc/.gitignore

+4-4
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,10 @@ src/clobber/clobber
112112
src/clobber/clobber.exe
113113
src/big-int/test-bigint
114114
src/big-int/test-bigint.exe
115-
jbmc/src/jbmc/janalyzer
116-
jbmc/src/jbmc/janalyzer.exe
117-
jbmc/src/jbmc/jdiff
118-
jbmc/src/jbmc/jdiff.exe
115+
jbmc/src/janalyzer/janalyzer
116+
jbmc/src/janalyzer/janalyzer.exe
117+
jbmc/src/jdiff/jdiff
118+
jbmc/src/jdiff/jdiff.exe
119119
jbmc/src/jbmc/jbmc
120120
jbmc/src/jbmc/jbmc.exe
121121

cbmc/.travis.yml

+1-7
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ jobs:
5757
packages:
5858
- cmake
5959
- google-cloud-sdk
60+
- graphviz
6061
cache:
6162
directories:
6263
- ${TRAVIS_BUILD_DIR}/doxygen/build/bin
@@ -101,7 +102,6 @@ jobs:
101102
- g++-5
102103
- libubsan0
103104
- parallel
104-
- libc6-dev-i386
105105
before_install:
106106
- mkdir bin
107107
- ln -s /usr/bin/gcc-5 bin/gcc
@@ -136,7 +136,6 @@ jobs:
136136
- libwww-perl
137137
- g++-5
138138
- libubsan0
139-
- libc6-dev-i386
140139
before_install:
141140
- mkdir bin
142141
- ln -s /usr/bin/gcc-5 bin/gcc
@@ -165,7 +164,6 @@ jobs:
165164
- libstdc++-5-dev
166165
- libubsan0
167166
- parallel
168-
- libc6-dev-i386
169167
before_install:
170168
- mkdir bin
171169
- ln -s /usr/bin/gcc-5 bin/gcc
@@ -194,7 +192,6 @@ jobs:
194192
- g++-5
195193
- libstdc++-5-dev
196194
- libubsan0
197-
- libc6-dev-i386
198195
before_install:
199196
- mkdir bin
200197
- ln -s /usr/bin/gcc-5 bin/gcc
@@ -220,7 +217,6 @@ jobs:
220217
- ubuntu-toolchain-r-test
221218
packages:
222219
- g++-5
223-
- libc6-dev-i386
224220
before_install:
225221
- mkdir bin
226222
- ln -s /usr/bin/gcc-5 bin/gcc
@@ -246,7 +242,6 @@ jobs:
246242
- ubuntu-toolchain-r-test
247243
packages:
248244
- g++-7
249-
- libc6-dev-i386
250245
before_install:
251246
- mkdir bin
252247
- ln -s /usr/bin/gcc-7 bin/gcc
@@ -278,7 +273,6 @@ jobs:
278273
- libstdc++-5-dev
279274
- libubsan0
280275
- parallel
281-
- libc6-dev-i386
282276
before_install:
283277
- mkdir bin
284278
# Use gcc/g++ 5 for tests, as Clang doesn't work yet

cbmc/CODEOWNERS

+41-41
Original file line numberDiff line numberDiff line change
@@ -3,58 +3,58 @@
33

44
# These files should rarely change
55

6-
src/big-int/ @kroening
7-
src/ansi-c/ @kroening @tautschnig
8-
src/assembler/ @kroening @tautschnig
9-
src/goto-cc/ @kroening @tautschnig
10-
src/linking/ @kroening @tautschnig
11-
src/memory-models/ @kroening @tautschnig
12-
src/goto-symex/ @kroening @tautschnig @peterschrammel
13-
src/json/ @kroening @tautschnig @peterschrammel
14-
src/langapi/ @kroening @tautschnig @peterschrammel
15-
src/xmllang/ @kroening @tautschnig @peterschrammel
16-
src/nonstd/ @smowton @peterschrammel
17-
src/solvers/cvc @martin-cs @kroening
18-
src/solvers/flattening @martin-cs @kroening @tautschnig @peterschrammel
19-
src/solvers/floatbv @martin-cs @kroening
20-
src/solvers/miniBDD @tautschnig @kroening
21-
src/solvers/prop @martin-cs @kroening @tautschnig @peterschrammel
22-
src/solvers/sat @martin-cs @kroening @tautschnig @peterschrammel
23-
src/solvers/smt2 @martin-cs @tautschnig @peterschrammel
24-
jbmc/src/miniz/ @smowton @mgudemann @peterschrammel
6+
/src/big-int/ @kroening
7+
/src/ansi-c/ @kroening @tautschnig
8+
/src/assembler/ @kroening @tautschnig
9+
/src/goto-cc/ @kroening @tautschnig
10+
/src/linking/ @kroening @tautschnig
11+
/src/memory-models/ @kroening @tautschnig
12+
/src/goto-symex/ @kroening @tautschnig @peterschrammel
13+
/src/json/ @kroening @tautschnig @peterschrammel
14+
/src/langapi/ @kroening @tautschnig @peterschrammel
15+
/src/xmllang/ @kroening @tautschnig @peterschrammel
16+
/src/nonstd/ @smowton @peterschrammel
17+
/src/solvers/cvc @martin-cs @kroening
18+
/src/solvers/flattening @martin-cs @kroening @tautschnig @peterschrammel
19+
/src/solvers/floatbv @martin-cs @kroening
20+
/src/solvers/miniBDD @tautschnig @kroening
21+
/src/solvers/prop @martin-cs @kroening @tautschnig @peterschrammel
22+
/src/solvers/sat @martin-cs @kroening @tautschnig @peterschrammel
23+
/src/solvers/smt2 @martin-cs @tautschnig @peterschrammel
24+
/jbmc/src/miniz/ @smowton @mgudemann @peterschrammel
2525

2626

2727
# These files change frequently and changes are high-risk
2828

29-
src/cbmc/ @smowton @kroening @tautschnig @peterschrammel
30-
src/goto-programs/ @smowton @kroening @tautschnig @peterschrammel @pkesseli
31-
src/util/ @smowton @kroening @tautschnig @peterschrammel @pkesseli
32-
src/solvers/refinement @martin-cs @romainbrenguier @peterschrammel
33-
jbmc/src/java_bytecode/ @smowton @mgudemann @thk123 @cristina-david @cesaro @pkesseli @NathanJPhillips @peterschrammel
34-
src/analyses/ @martin-cs @peterschrammel @chrisr-diffblue @thk123 @smowton
35-
src/pointer-analysis/ @martin-cs @peterschrammel @chrisr-diffblue @smowton
29+
/src/cbmc/ @smowton @kroening @tautschnig @peterschrammel
30+
/src/goto-programs/ @smowton @kroening @tautschnig @peterschrammel @pkesseli
31+
/src/util/ @smowton @kroening @tautschnig @peterschrammel @pkesseli
32+
/src/solvers/refinement @martin-cs @romainbrenguier @peterschrammel
33+
/jbmc/src/java_bytecode/ @smowton @mgudemann @thk123 @cristina-david @cesaro @pkesseli @NathanJPhillips @peterschrammel
34+
/src/analyses/ @martin-cs @peterschrammel @chrisr-diffblue @thk123 @smowton
35+
/src/pointer-analysis/ @martin-cs @peterschrammel @chrisr-diffblue @smowton
3636

3737

3838
# These files change frequently and changes are medium-risk
3939

40-
src/goto-analyzer/ @martin-cs @chrisr-diffblue @peterschrammel
41-
src/goto-instrument/ @martin-cs @chrisr-diffblue @peterschrammel
42-
src/goto-diff/ @tautschnig @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
46-
src/cpp/ @kroening @tautschnig @peterschrammel
40+
/src/goto-analyzer/ @martin-cs @chrisr-diffblue @peterschrammel
41+
/src/goto-instrument/ @martin-cs @chrisr-diffblue @peterschrammel
42+
/src/goto-diff/ @tautschnig @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
46+
/src/cpp/ @kroening @tautschnig @peterschrammel
4747

4848

4949
# These files change frequently and changes are low-risk
5050

51-
src/util/irep_ids.def @diffblue/cbmc-developers
51+
/src/util/irep_ids.def
5252

53-
unit/ @diffblue/cbmc-developers
54-
regression/ @diffblue/cbmc-developers
55-
jbmc/unit/ @diffblue/cbmc-developers
56-
jbmc/regression/ @diffblue/cbmc-developers
53+
/unit/
54+
/regression/
55+
/jbmc/unit/
56+
/jbmc/regression/
5757

58-
scripts/ @diffblue/devops @thk123 @forejtv @peterschrammel
59-
.travis.yml @diffblue/devops @thk123 @forejtv @peterschrammel
60-
appveyor.yml @diffblue/devops @thk123 @forejtv @peterschrammel
58+
/scripts/ @diffblue/devops @thk123 @forejtv @peterschrammel
59+
/.travis.yml @diffblue/devops @thk123 @forejtv @peterschrammel
60+
/appveyor.yml @diffblue/devops @thk123 @forejtv @peterschrammel

cbmc/CODING_STANDARD.md

+6
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,12 @@ Formatting is enforced using clang-format. For more information about this, see
197197
which safely manages the pointer. As such, `new` should only be used in
198198
constructors, and `delete` in destructors. Never use `malloc` or `free`.
199199

200+
# CProver conventions
201+
- Avoid if at all possible using irept methods like `get(ID_name)`, instead cast
202+
to a derived type (e.g. `class_typet`) and use the wrapper method `get_name`
203+
- Use `can_cast_type`/`can_cast_expr` instead of directly checking the `id()`
204+
of an `irept`.
205+
200206
# Architecture-specific code
201207
- Avoid if possible.
202208
- Use `__LINUX__`, `__MACH__`, and `_WIN32` to distinguish the architectures.

cbmc/COMPILING.md

+17-8
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ We assume that you have a Debian/Ubuntu or Red Hat-like distribution.
2929
```
3030
Note that you need g++ version 5.0 or newer.
3131

32+
On Amazon Linux and similar distributions, do as root:
33+
```
34+
yum install gcc72-c++ flex bison perl-libwww-perl patch
35+
```
36+
3237
To compile JBMC, you additionally need the JDK and the java-models-library.
3338
For the JDK, on Debian-like distributions, do as root:
3439
```
@@ -66,7 +71,7 @@ We assume that you have a Debian/Ubuntu or Red Hat-like distribution.
6671

6772
5. To compile JBMC, do
6873
```
69-
make -C jbmc/src java-models-library-download
74+
make -C jbmc/src setup-submodules
7075
make -C jbmc/src
7176
```
7277

@@ -92,7 +97,7 @@ We assume that you have a Debian/Ubuntu or Red Hat-like distribution.
9297
```
9398
4. To compile JBMC, type
9499
```
95-
gmake -C jbmc/src java-models-library-download
100+
gmake -C jbmc/src setup-submodules
96101
gmake -C jbmc/src
97102
```
98103

@@ -118,7 +123,7 @@ We assume that you have a Debian/Ubuntu or Red Hat-like distribution.
118123
```
119124
4. To compile JBMC, do
120125
```
121-
gmake -C jbmc/src java-models-library-download
126+
gmake -C jbmc/src setup-submodules
122127
gmake -C jbmc/src
123128
```
124129

@@ -144,7 +149,7 @@ Follow these instructions:
144149
```
145150
4. To compile JBMC, do
146151
```
147-
make -C jbmc/src java-models-library-download
152+
make -C jbmc/src setup-submodules
148153
make -C jbmc/src
149154
```
150155

@@ -185,9 +190,9 @@ Follow these instructions:
185190
make -C src DOWNLOADER=wget minisat2-download
186191
make -C src
187192
```
188-
5. To compile JMBC, open the Cygwin shell and type
193+
5. To compile JBMC, open the Cygwin shell and type
189194
```
190-
make -C jbmc/src java-models-library-download
195+
make -C jbmc/src setup-submodules
191196
make -C jbmc/src
192197
```
193198
@@ -240,7 +245,11 @@ require manual modification of build files.
240245
2. Navigate to the *top level* folder of the project. This is different from
241246
the Makefile build, which requires you to navigate to the `src` directory
242247
first.
243-
3. Generate build files with CMake:
248+
3. Update git submodules:
249+
```
250+
git submodule update --init
251+
```
252+
4. Generate build files with CMake:
244253
```
245254
cmake -H. -Bbuild
246255
```
@@ -264,7 +273,7 @@ require manual modification of build files.
264273
Finally, to enable building universal binaries on macOS, you can pass the
265274
flag `-DCMAKE_OSX_ARCHITECTURES=i386;x86_64`. If you don't supply this flag,
266275
the build will just be for the architecture of your machine.
267-
4. Run the build:
276+
5. Run the build:
268277
```
269278
cmake --build build
270279
```

cbmc/appveyor.yml

-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ test_script:
8484
rmdir /s /q jbmc\VarLengthArrayTrace1
8585
rmdir /s /q jbmc\classpath1
8686
rmdir /s /q jbmc\jar-file3
87-
rmdir /s /q jbmc\tableswitch2
8887
cd ../..
8988
9089
make -C jbmc/regression test BUILD_ENV=MSVC

cbmc/buildspec-windows.yml

+8-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ phases:
2020
- |
2121
$env:Path = "C:\tools\cygwin\bin;$env:Path"
2222
cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -j4 -C jbmc/src setup-submodules" && bash -c "make -j4 -C jbmc/src BUILD_ENV=MSVC" '
23-
cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -j4 -C jbmc/unit all BUILD_ENV=MSVC ; exit 0" '
23+
cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -j4 -C jbmc/unit all BUILD_ENV=MSVC" '
2424
2525
post_build:
2626
commands:
@@ -45,6 +45,11 @@ phases:
4545
Remove-Item goto-instrument\slice08 -Force -Recurse
4646
Remove-Item goto-analyzer/constant_propagation_nondet_rounding_mode -Force -Recurse
4747
cd ..
48+
cd jbmc/regression
49+
Remove-Item jbmc\VarLengthArrayTrace1 -Force -Recurse
50+
Remove-Item jbmc\classpath1 -Force -Recurse
51+
Remove-Item jbmc\jar-file3 -Force -Recurse
52+
cd ../..
4853
4954
- |
5055
$env:Path = "C:\tools\cygwin\bin;$env:Path"
@@ -56,11 +61,11 @@ phases:
5661
5762
- |
5863
$env:Path = "C:\tools\cygwin\bin;$env:Path"
59-
cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C jbmc/regression test BUILD_ENV=MSVC ; exit 0" '
64+
cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C jbmc/regression test BUILD_ENV=MSVC" '
6065
6166
- |
6267
$env:Path = "C:\tools\cygwin\bin;$env:Path"
63-
cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C jbmc/unit test BUILD_ENV=MSVC ; exit 0" '
68+
cmd /c 'call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 && bash -c "make -C jbmc/unit test BUILD_ENV=MSVC" '
6469
6570
artifacts:
6671
files:

cbmc/jbmc/README.md

+8-2
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ JBMC compiles CBMC as part of its build process and as such has all the pre-requ
2727
Compilation
2828
===========
2929

30-
To compile you need to run the command:
30+
Before compilation, run the commands:
31+
32+
```bash
33+
make -C src DOWNLOADER=wget minisat2-download
34+
make -C jbmc/src setup-submodules
35+
```
36+
37+
Then compile using:
3138

3239
```bash
33-
make -C jbmc/src java-models-library-download
3440
make -C jbmc/src
3541
```
3642

cbmc/jbmc/regression/jbmc-cover/generics/test.desc

-2
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,3 @@ file AbstractTest.java line 18 .* SATISFIED
77
file AbstractTest.java line 19 .* SATISFIED
88
file AbstractTest.java line 20 .* SATISFIED
99
file AbstractTest.java line 21 .* SATISFIED
10-
11-

cbmc/jbmc/regression/jbmc-strings/CharacterGetNumericValue/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
CORE
22
test.class
3-
--refine-strings --string-max-length 1000
3+
--max-nondet-string-length 1000
44
^EXIT=10$
55
^SIGNAL=0$
66
assertion at file test.java line 8 .* SUCCESS$
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
CORE
22
Test.class
3-
--function Test.testme
3+
--no-refine-strings --function Test.testme
44
^EXIT=0$
55
^SIGNAL=0$
66
^VERIFICATION SUCCESSFUL$
77
--
88
type mismatch
99
--
1010
Before cbmc#2472 this would assume that StringBuilder's direct parent was
11-
java.lang.Object, causing a type mismatch when --refine-strings was not in use
11+
java.lang.Object, causing a type mismatch when --no-refine-strings was in use
1212
(which at the time would assume that parent-child relationship)

cbmc/jbmc/regression/jbmc-strings/RegexMatches01/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FUTURE
22
RegexMatches01.class
3-
--refine-strings --string-max-length 1000 --unwind 100
3+
--max-nondet-string-length 1000 --unwind 100
44
^EXIT=0$
55
^SIGNAL=0$
66
^VERIFICATION SUCCESSFUL$

cbmc/jbmc/regression/jbmc-strings/RegexMatches02/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FUTURE
22
RegexMatches02.class
3-
--refine-strings --string-max-length 1000 --unwind 100
3+
--max-nondet-string-length 1000 --unwind 100
44
^EXIT=10$
55
^SIGNAL=0$
66
^VERIFICATION FAILED$

cbmc/jbmc/regression/jbmc-strings/RegexSubstitution01/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FUTURE
22
RegexSubstitution01.class
3-
--refine-strings --string-max-length 1000
3+
--max-nondet-string-length 1000
44
^EXIT=0$
55
^SIGNAL=0$
66
^VERIFICATION SUCCESSFUL$

cbmc/jbmc/regression/jbmc-strings/RegexSubstitution02/test.desc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
FUTURE
22
RegexSubstitution02.class
3-
--refine-strings --string-max-length 1000
3+
--max-nondet-string-length 1000
44
^EXIT=10$
55
^SIGNAL=0$
66
^VERIFICATION FAILED$

0 commit comments

Comments
 (0)