| ... | ... | @@ -9,3 +9,54 @@ export fn __sanitizer_cov_8bit_counters_init(start: [*]u8, stop: [*]u8) void { |
| 9 | 9 | export fn __sanitizer_cov_pcs_init(pcs_beg: [*]const usize, pcs_end: [*]const usize) void { |
| 10 | 10 | std.debug.print("__sanitizer_cov_pcs_init pcs_beg={*}, pcs_end={*}\n", .{ pcs_beg, pcs_end }); |
| 11 | 11 | } |
| 12 | |
| 13 | export fn __sanitizer_cov_trace_const_cmp1(arg1: u8, arg2: u8) void { |
| 14 | handleCmp(@returnAddress(), arg1, arg2); |
| 15 | } |
| 16 | |
| 17 | export fn __sanitizer_cov_trace_cmp1(arg1: u8, arg2: u8) void { |
| 18 | handleCmp(@returnAddress(), arg1, arg2); |
| 19 | } |
| 20 | |
| 21 | export fn __sanitizer_cov_trace_const_cmp2(arg1: u16, arg2: u16) void { |
| 22 | handleCmp(@returnAddress(), arg1, arg2); |
| 23 | } |
| 24 | |
| 25 | export fn __sanitizer_cov_trace_cmp2(arg1: u16, arg2: u16) void { |
| 26 | handleCmp(@returnAddress(), arg1, arg2); |
| 27 | } |
| 28 | |
| 29 | export fn __sanitizer_cov_trace_const_cmp4(arg1: u32, arg2: u32) void { |
| 30 | handleCmp(@returnAddress(), arg1, arg2); |
| 31 | } |
| 32 | |
| 33 | export fn __sanitizer_cov_trace_cmp4(arg1: u32, arg2: u32) void { |
| 34 | handleCmp(@returnAddress(), arg1, arg2); |
| 35 | } |
| 36 | |
| 37 | export fn __sanitizer_cov_trace_const_cmp8(arg1: u64, arg2: u64) void { |
| 38 | handleCmp(@returnAddress(), arg1, arg2); |
| 39 | } |
| 40 | |
| 41 | export fn __sanitizer_cov_trace_cmp8(arg1: u64, arg2: u64) void { |
| 42 | handleCmp(@returnAddress(), arg1, arg2); |
| 43 | } |
| 44 | |
| 45 | export fn __sanitizer_cov_trace_switch(val: u64, cases_ptr: [*]u64) void { |
| 46 | const pc = @returnAddress(); |
| 47 | const len = cases_ptr[0]; |
| 48 | const val_size_in_bits = cases_ptr[1]; |
| 49 | const cases = cases_ptr[2..][0..len]; |
| 50 | std.debug.print("0x{x}: switch on value {d} ({d} bits) with {d} cases\n", .{ |
| 51 | pc, val, val_size_in_bits, cases.len, |
| 52 | }); |
| 53 | } |
| 54 | |
| 55 | export fn __sanitizer_cov_trace_pc_indir(callee: usize) void { |
| 56 | const pc = @returnAddress(); |
| 57 | std.debug.print("0x{x}: indirect call to 0x{x}\n", .{ pc, callee }); |
| 58 | } |
| 59 | |
| 60 | fn handleCmp(pc: usize, arg1: u64, arg2: u64) void { |
| 61 | std.debug.print("0x{x}: comparison of {d} and {d}\n", .{ pc, arg1, arg2 }); |
| 62 | } |