authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-09-09 19:57:31-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-09-11 13:41:29-07:00
log2b76221a468d1d4556b8f512a069b703f621cc2c
treea4982f04f7ed30d94584605554feeefbe3da172d
parent892ce7ef527c863d84f3085f79f1a5aec7161c2c

libfuzzer: use a function pointer instead of extern

solves the problem presented in the previous commit message

2 files changed, 5 insertions(+), 5 deletions(-)

lib/compiler/test_runner.zig+2-3
...@@ -345,7 +345,7 @@ const FuzzerSlice = extern struct {...@@ -345,7 +345,7 @@ const FuzzerSlice = extern struct {
345345
346var is_fuzz_test: bool = undefined;346var is_fuzz_test: bool = undefined;
347347
348extern fn fuzzer_start() void;348extern fn fuzzer_start(testOne: *const fn ([*]const u8, usize) callconv(.C) void) void;
349extern fn fuzzer_init(cache_dir: FuzzerSlice) void;349extern fn fuzzer_init(cache_dir: FuzzerSlice) void;
350extern fn fuzzer_coverage_id() u64;350extern fn fuzzer_coverage_id() u64;
351351
...@@ -394,8 +394,7 @@ pub fn fuzz(...@@ -394,8 +394,7 @@ pub fn fuzz(
394 }394 }
395 };395 };
396 if (builtin.fuzz) {396 if (builtin.fuzz) {
397 @export(&global.fuzzer_one, .{ .name = "fuzzer_one" });397 fuzzer_start(&global.fuzzer_one);
398 fuzzer_start();
399 return;398 return;
400 }399 }
401400
lib/fuzzer.zig+3-2
...@@ -423,9 +423,10 @@ export fn fuzzer_coverage_id() u64 {...@@ -423,9 +423,10 @@ export fn fuzzer_coverage_id() u64 {
423 return fuzzer.coverage_id;423 return fuzzer.coverage_id;
424}424}
425425
426extern fn fuzzer_one(input_ptr: [*]const u8, input_len: usize) callconv(.C) void;426var fuzzer_one: *const fn (input_ptr: [*]const u8, input_len: usize) callconv(.C) void = undefined;
427427
428export fn fuzzer_start() void {428export fn fuzzer_start(testOne: @TypeOf(fuzzer_one)) void {
429 fuzzer_one = testOne;
429 fuzzer.start() catch |err| switch (err) {430 fuzzer.start() catch |err| switch (err) {
430 error.OutOfMemory => fatal("out of memory", .{}),431 error.OutOfMemory => fatal("out of memory", .{}),
431 };432 };