stop_normal()1void stop_normal() { 2 for (int i = 0; i < 100; i++); 3 } 4 stop_symbolic_read_symbolic_tracking_disabled()5void stop_symbolic_read_symbolic_tracking_disabled() { 6 int x[100]; 7 x[0] += 1; 8 } 9 stop_error()10void stop_error() { 11 // ?? 12 } 13 stop_syscall()14void stop_syscall() { 15 // tested elsewhere 16 } 17 stop_execnone()18void stop_execnone() { 19 // I have no idea how to test this 20 } 21 stop_nostart()22void stop_nostart() { 23 // also that 24 } 25 26 char buf[] = {0x41, 0x41, 0x41, 0x41, 0}; 27 stop_segfault()28void stop_segfault() { 29 ((void (*)())buf)(); 30 } 31 stop_symbolic_read_addr()32void stop_symbolic_read_addr() { 33 long x; 34 int y = *(int *)x; 35 } 36 stop_symbolic_write_addr()37void stop_symbolic_write_addr() { 38 long x; 39 *(int *)x = 1; 40 } 41 stop_symbolic_block_exit()42void 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()50void stop_symbolic_condition() { 51 // How to generate an VEX ITE expr with symbolic condition? 52 } 53 main(int argc,char ** argv)54int 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