authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-07-21 23:54:01-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-07-22 14:26:17-07:00
logdbbe2f1094cf140e32ffd1e4bd61e26f4567ad0a
treeb9a26f34414372896a52d8acd852f0a7f35710d4
parent105b91d30f732d127a7f23a1a1d4a2c794c05d3d

libfuzzer: log all the libcalls to stderr


1 files changed, 51 insertions(+), 0 deletions(-)

lib/fuzzer.zig+51
...@@ -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 {
9export fn __sanitizer_cov_pcs_init(pcs_beg: [*]const usize, pcs_end: [*]const usize) void {9export 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
13export fn __sanitizer_cov_trace_const_cmp1(arg1: u8, arg2: u8) void {
14 handleCmp(@returnAddress(), arg1, arg2);
15}
16
17export fn __sanitizer_cov_trace_cmp1(arg1: u8, arg2: u8) void {
18 handleCmp(@returnAddress(), arg1, arg2);
19}
20
21export fn __sanitizer_cov_trace_const_cmp2(arg1: u16, arg2: u16) void {
22 handleCmp(@returnAddress(), arg1, arg2);
23}
24
25export fn __sanitizer_cov_trace_cmp2(arg1: u16, arg2: u16) void {
26 handleCmp(@returnAddress(), arg1, arg2);
27}
28
29export fn __sanitizer_cov_trace_const_cmp4(arg1: u32, arg2: u32) void {
30 handleCmp(@returnAddress(), arg1, arg2);
31}
32
33export fn __sanitizer_cov_trace_cmp4(arg1: u32, arg2: u32) void {
34 handleCmp(@returnAddress(), arg1, arg2);
35}
36
37export fn __sanitizer_cov_trace_const_cmp8(arg1: u64, arg2: u64) void {
38 handleCmp(@returnAddress(), arg1, arg2);
39}
40
41export fn __sanitizer_cov_trace_cmp8(arg1: u64, arg2: u64) void {
42 handleCmp(@returnAddress(), arg1, arg2);
43}
44
45export 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
55export 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
60fn handleCmp(pc: usize, arg1: u64, arg2: u64) void {
61 std.debug.print("0x{x}: comparison of {d} and {d}\n", .{ pc, arg1, arg2 });
62}