diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2024-07-21 23:54:01 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2024-07-22 14:26:17 -0700 |
| commit | dbbe2f1094cf140e32ffd1e4bd61e26f4567ad0a (patch) | |
| tree | b9a26f34414372896a52d8acd852f0a7f35710d4 | |
| parent | 105b91d30f732d127a7f23a1a1d4a2c794c05d3d (diff) | |
| download | zig-dbbe2f1094cf140e32ffd1e4bd61e26f4567ad0a.tar.gz zig-dbbe2f1094cf140e32ffd1e4bd61e26f4567ad0a.zip | |
libfuzzer: log all the libcalls to stderr
| -rw-r--r-- | lib/fuzzer.zig | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/fuzzer.zig b/lib/fuzzer.zig index d48a4993be..49dd33894b 100644 --- a/lib/fuzzer.zig +++ b/lib/fuzzer.zig @@ -9,3 +9,54 @@ export fn __sanitizer_cov_8bit_counters_init(start: [*]u8, stop: [*]u8) void { export fn __sanitizer_cov_pcs_init(pcs_beg: [*]const usize, pcs_end: [*]const usize) void { std.debug.print("__sanitizer_cov_pcs_init pcs_beg={*}, pcs_end={*}\n", .{ pcs_beg, pcs_end }); } + +export fn __sanitizer_cov_trace_const_cmp1(arg1: u8, arg2: u8) void { + handleCmp(@returnAddress(), arg1, arg2); +} + +export fn __sanitizer_cov_trace_cmp1(arg1: u8, arg2: u8) void { + handleCmp(@returnAddress(), arg1, arg2); +} + +export fn __sanitizer_cov_trace_const_cmp2(arg1: u16, arg2: u16) void { + handleCmp(@returnAddress(), arg1, arg2); +} + +export fn __sanitizer_cov_trace_cmp2(arg1: u16, arg2: u16) void { + handleCmp(@returnAddress(), arg1, arg2); +} + +export fn __sanitizer_cov_trace_const_cmp4(arg1: u32, arg2: u32) void { + handleCmp(@returnAddress(), arg1, arg2); +} + +export fn __sanitizer_cov_trace_cmp4(arg1: u32, arg2: u32) void { + handleCmp(@returnAddress(), arg1, arg2); +} + +export fn __sanitizer_cov_trace_const_cmp8(arg1: u64, arg2: u64) void { + handleCmp(@returnAddress(), arg1, arg2); +} + +export fn __sanitizer_cov_trace_cmp8(arg1: u64, arg2: u64) void { + handleCmp(@returnAddress(), arg1, arg2); +} + +export fn __sanitizer_cov_trace_switch(val: u64, cases_ptr: [*]u64) void { + const pc = @returnAddress(); + const len = cases_ptr[0]; + const val_size_in_bits = cases_ptr[1]; + const cases = cases_ptr[2..][0..len]; + std.debug.print("0x{x}: switch on value {d} ({d} bits) with {d} cases\n", .{ + pc, val, val_size_in_bits, cases.len, + }); +} + +export fn __sanitizer_cov_trace_pc_indir(callee: usize) void { + const pc = @returnAddress(); + std.debug.print("0x{x}: indirect call to 0x{x}\n", .{ pc, callee }); +} + +fn handleCmp(pc: usize, arg1: u64, arg2: u64) void { + std.debug.print("0x{x}: comparison of {d} and {d}\n", .{ pc, arg1, arg2 }); +} |
