Pending Constraints in Symbolic Execution for Better Exploration and Seeding
Timotej Kapus Frank Busse Cristian Cadar Imperial College London
1
Pending Constraints in Symbolic Execution for Better Exploration and - - PowerPoint PPT Presentation
Pending Constraints in Symbolic Execution for Better Exploration and Seeding Timotej Kapus Frank Busse Cristian Cadar Imperial College London 1 Symbolic Execution Program analysis technique Active research area Used in
1
2
3
4
5
6
7
8
get_sign(x);
Known assignments ∅
9
get_sign(x); r = -1;
Known assignments ∅
10
get_sign(x); x >= 1 r = -1;
Known assignments ∅
11
get_sign(x); x >= 1 r = -1;
Known assignments x = -2 Known assignments x = -2
x < 1
12
get_sign(x); x >= 1 r = -1;
Known assignments x = -2 Known assignments x = -2 x = 7
x ≥ 1 x < 1
13
get_sign(x); x >= 1 x == 0 x < 1 r = -1;
Known assignments x = -2 x = 7
x ≥ 1
14
get_sign(x); x >= 1 x == 0 x < 1 r = -1;
Known assignments x = -2 x = 7
x ≠ 0 x ≥ 1
15
get_sign(x); x >= 1 x == 0 x < 1 x = 0 r = -1;
Known assignments x = -2 x = 7 x = 0
x = 0 x ≠ 0 x ≥ 1
16
get_sign(x); x >= 1 x == 0 x < 1 x = 0 r = -1; r = 0;
Known assignments x = -2 x = 7 x = 0
x = 0 x ≠ 0 x ≥ 1
17
get_sign(x); x >= 1 x == 0 x < 1 x = 0 r = -1; r = 0; return r;
Known assignments x = -2 x = 7 x = 0
x ≠ 0 x ≥ 1
18
get_sign(x); x >= 1 x == 0 x < 1 x = 0 x ≠ 0 r = -1; return r; r = 0; return r;
Known assignments x = -2 x = 7 x = 0
x ≥ 1
19
get_sign(x); x >= 1 x == 0 x ≥ 1 x < 1 x = 0 x ≠ 0 r = -1; r = 1; return r; r = 0; return r;
Known assignments x = -2 x = 7 x = 0
20
get_sign(x); x >= 1 x == 0 x == 0 x ≥ 1 x < 1 x = 0 x ≠ 0 r = -1; r = 1; return r; r = 0; return r;
Known assignments x = -2 x = 7 x = 0
21
get_sign(x); x >= 1 x == 0 x == 0 x ≥ 1 x < 1 x = 0 x ≠ 0 r = -1; r = 1; return r; r = 0; return r;
Known assignments x = -2 x = 7 x = 0
x = 0
22
get_sign(x); x >= 1 x == 0 x == 0 x ≥ 1 x < 1 x = 0 x ≠ 0 r = -1; r = 1; return r; r = 0; return r;
Known assignments x = -2 x = 7 x = 0
x = 0 x ≠ 0
23
get_sign(x); x >= 1 x == 0 x == 0 x ≥ 1 x < 1 x ≠ 0 x = 0 x ≠ 0 r = -1; r = 1; return r; return r; r = 0; return r;
Known assignments x = -2 x = 7 x = 0
x = 0
24
25
get_sign(x);
Known assignments ∅
26
get_sign(x); r = -1;
Known assignments ∅
27
get_sign(x); x >= 1 r = -1;
Known assignments ∅
x ≥ 1 x < 1
28
get_sign(x); x >= 1 r = -1;
Known assignments ∅
x ≥ 1 x < 1
29
get_sign(x); x >= 1 x < 1 r = -1;
Known assignments x = -2
x ≥ 1
30
get_sign(x); x >= 1 x == 0 x < 1 r = -1;
Known assignments x = -2
x ≥ 1 x = 0 x ≠ 0
x ≠ 0
31
get_sign(x); x >= 1 x == 0 x < 1 r = -1;
Known assignments x = -2
x ≥ 1 x = 0
x = 0
32
get_sign(x); x >= 1 x == 0 r = -1; x ≥ 1 x ≠ 0
Known assignments x = -2
x < 1
33
get_sign(x); x >= 1 x == 0 x < 1 r = -1;
Known assignments x = -2
x ≥ 1 x = 0 x ≠ 0 return r;
34
get_sign(x); x >= 1 x == 0 x < 1 r = -1;
Known assignments x = -2
x ≠ 0 return r; x ≥ 1 x = 0
35
get_sign(x); x >= 1 x == 0 x < 1 x = 0 x ≠ 0 r = -1; return r; r = 0; return r;
Known assignments x = -2 x = 0
x ≥ 1
36
get_sign(x); x >= 1 x == 0 x ≥ 1 x < 1 x = 0 x ≠ 0 r = -1; r = 1; return r; r = 0; return r;
Known assignments x = -2 x = 0 x = 7
37
get_sign(x); x >= 1 x == 0 x == 0 x ≥ 1 x < 1 x = 0 x ≠ 0 x = 0 x ≠ 0 r = -1; r = 1; return r; r = 0; return r;
Known assignments x = -2 x = 0 x = 7
38
get_sign(x); x >= 1 x == 0 x == 0 x ≥ 1 x < 1 x = 0 x ≠ 0 x = 0 x ≠ 0 r = -1; r = 1; return r; r = 0; return r;
Known assignments x = -2 x = 0 x = 7
return r;
39
get_sign(x); x >= 1 x == 0 x == 0 x ≥ 1 x < 1 x = 0 x ≠ 0 x = 0 x ≠ 0 r = -1; r = 1; return r; return r; r = 0; return r;
Known assignments x = -2 x = 0 x = 7
40
41
42
43
44
ase20 20
45
ase20 20
46
ase20 20
47
ase20 20
48
ase20 20
49
ase20 20
50
ase20 20
51
ase20 20
52
ase20 20
53
ase20 20
54
ase20 20 ase20 20
55
56
57
58
59
60
61
62
63
ICSE 2012
64
65
66
67
68
69
70