Skip to content

Commit 531bc26

Browse files
author
Peter Schrammel
committed
Merge branch 'master' of https://github.com/diffblue/cbmc into fault-localization
2 parents 06a464a + c4d98e4 commit 531bc26

File tree

453 files changed

+13883
-6269
lines changed

Some content is hidden

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

453 files changed

+13883
-6269
lines changed

.gitattributes

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
*.cpp text
2+
*.c text
3+
*.h text
4+
*.y text
5+
*.tex text
6+
*.shtml text
7+
*.html text
8+
*.css text
9+
*.inc text
10+
test.desc text
11+
Makefile text

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ src/xmllang/xml_y.tab.h
5454
# binaries
5555
src/cbmc/cbmc
5656
src/cbmc/cbmc.exe
57+
src/cegis/cegis
58+
src/cegis/cegis.exe
5759
src/goto-analyzer/goto-analyzer
5860
src/goto-analyzer/goto-analyzer.exe
5961
src/goto-cc/goto-cc

COMPILING

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ environments:
1515
- Cygwin
1616
(We recommend the i686-pc-mingw32-g++ cross compiler, version 4.7 or above.)
1717

18-
- Microsoft's Visual Studio 2012, 2013 or 2015 (older versions won't work)
18+
- Microsoft's Visual Studio version 12 (2013), version 14 (2015),
19+
or version 15 (older versions won't work)
1920

2021
The rest of this document is split up into three parts: compilation on
2122
Linux, MacOS, Windows. Please read the section appropriate for your
@@ -52,14 +53,10 @@ We assume that you have a Debian/Ubuntu or Red Hat-like distribution.
5253
COMPILATION ON SOLARIS 11
5354
-------------------------
5455

55-
0) We recommend you get OpenCSW. Follow the instructions at
56-
57-
http://www.opencsw.org/manual/for-administrators/getting-started.html
58-
5956
1) As root, get the necessary development tools:
6057

61-
pkg install system/header
62-
/opt/csw/bin/pkgutil -i gzip coreutils wget CSWpm-libwww-perl git flex bison CSWgcc4g++
58+
pkg install system/header developer/lexer/flex developer/parser/bison developer/versioning/git
59+
pkg install --accept developer/gcc-49
6360

6461
2) As a user, get the CBMC source via
6562

@@ -70,13 +67,16 @@ COMPILATION ON SOLARIS 11
7067
cd cbmc-git
7168
wget http://ftp.debian.org/debian/pool/main/m/minisat2/minisat2_2.2.1.orig.tar.gz
7269
gtar xfz minisat_2.2.1.orig.tar.gz
70+
mv minisat2-2.2.1 minisat-2.2.1
7371
(cd minisat-2.2.1; patch -p1 < ../scripts/minisat-2.2.1-patch)
7472

7573
4) Type
7674

77-
cd src; gmake CXX=/opt/csw/bin/g++
75+
cd src; gmake
76+
77+
That should do it. To run, you will need
7878

79-
That should do it.
79+
export LD_LIBRARY_PATH=/usr/gcc/4.9/lib
8080

8181
Do not attempt to compile with gcc-45 that comes with Solaris 11.
8282
It will mis-optimize MiniSat2.
@@ -165,7 +165,7 @@ Follow these instructions:
165165
BUILD_ENV = MinGW
166166

167167
3B) To compile with Visual Studio, make sure you have at least Visual
168-
Studio 2012, and adjust the second line of config.inc to say
168+
Studio version 12 (2013), and adjust the second line of config.inc to say
169169

170170
BUILD_ENV = MSVC
171171

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
int identifier_\u0201_;
2+
int \u0201_abc;
3+
4+
#define STATIC_ASSERT(condition) \
5+
int some_array##__LINE__[(condition) ? 1 : -1];
6+
7+
char my_string[]="\u0201";
8+
STATIC_ASSERT(sizeof(my_string)==3);
9+
10+
// also as character literal
11+
STATIC_ASSERT(L'\u0201'==0x0201);
12+
13+
int main()
14+
{
15+
identifier_ȁ_=10;
16+
ȁ_abc=10;
17+
}
18+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
^CONVERSION ERROR$
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include <assert.h>
2+
3+
int a[(int)(10./1.)];
4+
int b[(int)2] = { 10, 20 };
5+
int c[(int)(10./1.)] = { 10, 20 };
6+
int d[(int)(10/1)] = { 10, 20 };
7+
8+
int main (void) {
9+
if (a[0]) {
10+
assert(b[1] + c[2] > 20);
11+
}
12+
13+
return 1;
14+
}
15+
16+
extern int g_array[];
17+
int array[(int)(10./1)];
18+
19+
int array2[(int)(10./1)];
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
^CONVERSION ERROR$

regression/ansi-c/enum7/main.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
int main(void)
2+
{
3+
enum enum_tag { A = 2 };
4+
5+
{
6+
enum enum_tag { A = 3 };
7+
}
8+
}

regression/ansi-c/enum7/test.desc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
^CONVERSION ERROR$

regression/ansi-c/float_constant1/main.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ STATIC_ASSERT(0x1.0p-95f == 2.524355e-29f);
77
// also with upper case X, P, F
88
STATIC_ASSERT(0X1.0P-95F == 2.524355e-29f);
99

10+
// nothing before the dot
11+
STATIC_ASSERT(0X.0p+1f == 0);
12+
1013
#ifdef __GNUC__
1114
_Complex c;
1215
#endif

regression/ansi-c/gcc_builtins1/main.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
#ifdef __GNUC__
22

3-
enum { E1 = __builtin_isinf(1.0) };
4-
enum { E2 = __builtin_isnan(1.0) };
5-
enum { E3 = __builtin_isinf(__builtin_inf()) };
6-
enum { E4 = __builtin_signbit(-1.0) };
7-
enum { E5 = __builtin_classify_type(1) };
8-
enum { E6 = sizeof(int) };
9-
enum { E7 = __alignof__(int) };
10-
enum { E8 = (int)1.0 };
11-
enum { E9 = __builtin_popcount(123) };
3+
enum { E01 = __builtin_isinf(1.0) };
4+
enum { E02 = __builtin_isnan(1.0) };
5+
enum { E03 = __builtin_isinf(__builtin_inf()) };
6+
enum { E04 = __builtin_signbit(-1.0) }; // clang doesn't do this one
7+
enum { E05 = __builtin_classify_type(1) };
8+
enum { E06 = sizeof(int) };
9+
enum { E07 = __alignof__(int) };
10+
enum { E08 = (int)1.0 };
11+
enum { E09 = __builtin_popcount(123) };
12+
enum { E10 = __builtin_bswap16(0xaabb) };
13+
enum { E11 = __builtin_bswap32(0xaabb) };
14+
enum { E12 = __builtin_bswap64(0xaabb) };
1215

1316
#endif
1417

regression/cbmc-concurrency/atomic_section_sc6/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ main.c
33

44
^EXIT=10$
55
^SIGNAL=0$
6-
^start_thread in atomic section detected$
6+
^file main.c line 12 function spawn: start_thread in atomic section detected$
77
--
88
^warning: ignoring

regression/cbmc-concurrency/norace_array1/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
KNOWNBUG
22
main.c
33

44
^EXIT=0$
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#include <assert.h>
2+
#include <pthread.h>
3+
#include <stdlib.h>
4+
5+
unsigned long data[2];
6+
7+
void *thread0(void *arg)
8+
{
9+
data[0] = 1;
10+
return NULL;
11+
}
12+
13+
void *thread1(void *arg)
14+
{
15+
data[1] = 1;
16+
return NULL;
17+
}
18+
19+
int main(int argc, char *argv[])
20+
{
21+
pthread_t t0;
22+
pthread_t t1;
23+
24+
pthread_create(&t0, NULL, thread0, NULL);
25+
pthread_create(&t1, NULL, thread1, NULL);
26+
pthread_join(t0, NULL);
27+
pthread_join(t1, NULL);
28+
29+
assert(data[0] == 1);
30+
assert(data[1] == 1);
31+
32+
return 0;
33+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
KNOWNBUG
2+
main.c
3+
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^VERIFICATION SUCCESSFUL$
7+
--
8+
^warning: ignoring

regression/cbmc-concurrency/norace_struct1/test.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
CORE
1+
KNOWNBUG
22
main.c
33

44
^EXIT=0$

regression/cbmc-cover/branch2/test.desc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ main.c
44
^EXIT=0$
55
^SIGNAL=0$
66
^\[main.coverage.1\] file main.c line 5 function main function main entry point: SATISFIED$
7-
^\[main.coverage.2\] file main.c line 6 function main function main block 2 branch false: SATISFIED$
8-
^\[main.coverage.3\] file main.c line 6 function main function main block 2 branch true: SATISFIED$
7+
^\[main.coverage.2\] file main.c line 6 function main function main block 3 branch false: SATISFIED$
8+
^\[main.coverage.3\] file main.c line 6 function main function main block 3 branch true: SATISFIED$
99
--
1010
^warning: ignoring

regression/cbmc-cover/mcdc1/main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ int main()
1717
else
1818
{
1919
}
20+
21+
return 1;
2022
}

regression/cbmc-cover/mcdc1/test.desc

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ main.c
33
--cover mcdc
44
^EXIT=0$
55
^SIGNAL=0$
6+
^\[main.coverage.1\] file main.c line 14 function main MC/DC independence condition `C && D && !E && A && !B.*: SATISFIED$
7+
^\[main.coverage.2\] file main.c line 14 function main MC/DC independence condition `C && !D && E && A && !B.*: SATISFIED$
8+
^\[main.coverage.3\] file main.c line 14 function main MC/DC independence condition `!C && D && E && A && !B.*: SATISFIED$
9+
^\[main.coverage.4\] file main.c line 14 function main MC/DC independence condition `C && D && E && A && !B.*: SATISFIED$
10+
^\[main.coverage.5\] file main.c line 14 function main MC/DC independence condition `C && D && E && !A && B.*: SATISFIED$
11+
^\[main.coverage.6\] file main.c line 14 function main MC/DC independence condition `C && D && E && !A && !B.*: SATISFIED$
612
^\*\* .* of .* covered (100.0%)$
7-
^\*\* Used 6 iterations$
13+
^\*\* Used 10 iterations$
814
--
915
^warning: ignoring

regression/cbmc-cover/mcdc2/main.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
int main()
2+
{
3+
4+
__CPROVER_bool A, B, C;
5+
6+
__CPROVER_input("A", A);
7+
__CPROVER_input("B", B);
8+
__CPROVER_input("C", C);
9+
10+
if(A||B||C)
11+
{
12+
}
13+
else
14+
{
15+
}
16+
17+
return 1;
18+
}

regression/cbmc-cover/mcdc2/test.desc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
CORE
2+
main.c
3+
--cover mcdc
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.coverage.1\] file main.c line 10 function main MC/DC independence condition `A && !B && !C.*: SATISFIED$
7+
^\[main.coverage.2\] file main.c line 10 function main MC/DC independence condition `!A && B && !C.*: SATISFIED$
8+
^\[main.coverage.3\] file main.c line 10 function main MC/DC independence condition `!A && !B && C.*: SATISFIED$
9+
^\[main.coverage.4\] file main.c line 10 function main MC/DC independence condition `!A && !B && !C.*: SATISFIED$
10+
^\*\* .* of .* covered (100.0%)$
11+
^\*\* Used 6 iterations$
12+
--
13+
^warning: ignoring

regression/cbmc-cover/mcdc3/main.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
int main()
2+
{
3+
unsigned x, y;
4+
5+
__CPROVER_input("x", x);
6+
__CPROVER_input("y", y);
7+
8+
if (!(x>3) && y<5)
9+
;
10+
11+
return 1;
12+
}

regression/cbmc-cover/mcdc3/test.desc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
CORE
2+
main.c
3+
--cover mcdc
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.coverage.1\] file main.c line 8 function main MC/DC independence condition `!(x > (unsigned int)3) && !(y < (unsigned int)5).*: SATISFIED$
7+
^\[main.coverage.2\] file main.c line 8 function main MC/DC independence condition `y < (unsigned int)5 && !(x > (unsigned int)3).*: SATISFIED$
8+
^\[main.coverage.3\] file main.c line 8 function main MC/DC independence condition `y < (unsigned int)5 && x > (unsigned int)3.*: SATISFIED$
9+
^\*\* .* of .* covered (100.0%)$
10+
^\*\* Used 4 iterations$
11+
--
12+
^warning: ignoring

regression/cbmc-cover/mcdc4/main.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
int main()
2+
{
3+
4+
__CPROVER_bool A, B, C, D;
5+
6+
__CPROVER_input("A", A);
7+
__CPROVER_input("B", B);
8+
__CPROVER_input("C", C);
9+
__CPROVER_input("D", D);
10+
11+
if((A && B) || (C && D))
12+
{
13+
}
14+
else
15+
{
16+
}
17+
18+
return 1;
19+
}

regression/cbmc-cover/mcdc4/test.desc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
CORE
2+
main.c
3+
--cover mcdc
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
^\[main.coverage.1\] file main.c line 11 function main MC/DC independence condition `A && B && C && !D.*: SATISFIED$
7+
^\[main.coverage.2\] file main.c line 11 function main MC/DC independence condition `A && !B && C && D.*: SATISFIED$
8+
^\[main.coverage.3\] file main.c line 11 function main MC/DC independence condition `A && !B && C && !D.*: SATISFIED$
9+
^\[main.coverage.4\] file main.c line 11 function main MC/DC independence condition `!C && D && A && !B.*: SATISFIED$
10+
^\[main.coverage.5\] file main.c line 11 function main MC/DC independence condition `!A && B && C && !D.*: SATISFIED$
11+
^\*\* .* of .* covered (100.0%)$
12+
^\*\* Used 9 iterations$
13+
--
14+
^warning: ignoring

regression/cbmc-cover/mcdc5/main.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
int main()
2+
{
3+
__CPROVER_bool A, B, C, D;
4+
5+
__CPROVER_input("A", A);
6+
__CPROVER_input("B", B);
7+
__CPROVER_input("C", C);
8+
__CPROVER_input("D", D);
9+
10+
if((A || B) && (C || D))
11+
{
12+
}
13+
else
14+
{
15+
}
16+
17+
return 1;
18+
}

0 commit comments

Comments
 (0)