| ... | @@ -9,3 +9,54 @@ export fn __sanitizer_cov_8bit_counters_init(start: [*]u8, stop: [*]u8) void { | ... | @@ -9,3 +9,54 @@ export fn __sanitizer_cov_8bit_counters_init(start: [*]u8, stop: [*]u8) void { |
| 9 | export fn __sanitizer_cov_pcs_init(pcs_beg: [*]const usize, pcs_end: [*]const usize) void { | 9 | export fn __sanitizer_cov_pcs_init(pcs_beg: [*]const usize, pcs_end: [*]const usize) void { |
| 10 | std.debug.print("__sanitizer_cov_pcs_init pcs_beg={*}, pcs_end={*}\n", .{ pcs_beg, pcs_end }); | 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 | } |