stop_normal()1 void stop_normal() {
2     for (int i = 0; i < 100; i++);
3 }
4 
stop_symbolic_read_symbolic_tracking_disabled()5 void stop_symbolic_read_symbolic_tracking_disabled() {
6     int x[100];
7     x[0] += 1;
8 }
9 
stop_error()10 void stop_error() {
11     // ??
12 }
13 
stop_syscall()14 void stop_syscall() {
15     // tested elsewhere
16 }
17 
stop_execnone()18 void stop_execnone() {
19     // I have no idea how to test this
20 }
21 
stop_nostart()22 void stop_nostart() {
23     // also that
24 }
25 
26 char buf[] = {0x41, 0x41, 0x41, 0x41, 0};
27 
stop_segfault()28 void stop_segfault() {
29     ((void (*)())buf)();
30 }
31 
stop_symbolic_read_addr()32 void stop_symbolic_read_addr() {
33     long x;
34     int y = *(int *)x;
35 }
36 
stop_symbolic_write_addr()37 void stop_symbolic_write_addr() {
38     long x;
39     *(int *)x = 1;
40 }
41 
stop_symbolic_block_exit()42 void stop_symbolic_block_exit() {
43     int x[100];
44     x[0] += 1;
45     if (x[0] == 10) {
46         x[1] = 1;
47     }
48 }
49 
stop_symbolic_condition()50 void stop_symbolic_condition() {
51     // How to generate an VEX ITE expr with symbolic condition?
52 }
53 
main(int argc,char ** argv)54 int main(int argc, char** argv) {
55     switch (argc) {
56         case 1:
57             stop_normal();
58             break;
59         case 2:
60             stop_symbolic_read_symbolic_tracking_disabled();
61             break;
62         case 3:
63             stop_error();
64             break;
65         case 4:
66             stop_syscall();
67             break;
68         case 5:
69             stop_execnone();
70             break;
71         case 6:
72             stop_nostart();
73             break;
74         case 7:
75             stop_segfault();
76             break;
77         case 8:
78             stop_symbolic_read_addr();
79             break;
80         case 9:
81             stop_symbolic_write_addr();
82             break;
83         case 10:
84             stop_symbolic_block_exit();
85             break;
86         case 11:
87             stop_symbolic_condition();
88             break;
89     }
90 }
91