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 {
345345
346346var 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;
349349extern fn fuzzer_init(cache_dir: FuzzerSlice) void;
350350extern fn fuzzer_coverage_id() u64;
351351
......@@ -394,8 +394,7 @@ pub fn fuzz(
394394 }
395395 };
396396 if (builtin.fuzz) {
397 @export(&global.fuzzer_one, .{ .name = "fuzzer_one" });
398 fuzzer_start();
397 fuzzer_start(&global.fuzzer_one);
399398 return;
400399 }
401400
lib/fuzzer.zig+3-2
......@@ -423,9 +423,10 @@ export fn fuzzer_coverage_id() u64 {
423423 return fuzzer.coverage_id;
424424}
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;
429430 fuzzer.start() catch |err| switch (err) {
430431 error.OutOfMemory => fatal("out of memory", .{}),
431432 };