From 423cf0be91a3cf0a4eade383591f0e7d5ea5cc33 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Thu, 30 Oct 2025 10:33:07 +0900 Subject: [PATCH] Enable `obj.sanitize_coverage_trace_pc_guard` for Zig --- build.zig | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/build.zig b/build.zig index 0f45dce6e1..244b1743ca 100644 --- a/build.zig +++ b/build.zig @@ -48,6 +48,7 @@ const BunBuildOptions = struct { /// enable debug logs in release builds enable_logs: bool = false, enable_asan: bool, + enable_fuzzilli: bool, enable_valgrind: bool, use_mimalloc: bool, tracy_callstack_depth: u16, @@ -97,6 +98,7 @@ const BunBuildOptions = struct { opts.addOption(bool, "baseline", this.isBaseline()); opts.addOption(bool, "enable_logs", this.enable_logs); opts.addOption(bool, "enable_asan", this.enable_asan); + opts.addOption(bool, "enable_fuzzilli", this.enable_fuzzilli); opts.addOption(bool, "enable_valgrind", this.enable_valgrind); opts.addOption(bool, "use_mimalloc", this.use_mimalloc); opts.addOption([]const u8, "reported_nodejs_version", b.fmt("{}", .{this.reported_nodejs_version})); @@ -271,6 +273,7 @@ pub fn build(b: *Build) !void { .tracy_callstack_depth = b.option(u16, "tracy_callstack_depth", "") orelse 10, .enable_logs = b.option(bool, "enable_logs", "Enable logs in release") orelse false, .enable_asan = b.option(bool, "enable_asan", "Enable asan") orelse false, + .enable_fuzzilli = b.option(bool, "enable_fuzzilli", "Enable Fuzzilli fuzzing support (requires asan)") orelse false, .enable_valgrind = b.option(bool, "enable_valgrind", "Enable valgrind") orelse false, .use_mimalloc = b.option(bool, "use_mimalloc", "Use mimalloc as default allocator") orelse false, .llvm_codegen_threads = b.option(u32, "llvm_codegen_threads", "Number of threads to use for LLVM codegen") orelse 1, @@ -502,6 +505,7 @@ fn addMultiCheck( .codegen_path = root_build_options.codegen_path, .no_llvm = root_build_options.no_llvm, .enable_asan = root_build_options.enable_asan, + .enable_fuzzilli = root_build_options.enable_fuzzilli, .enable_valgrind = root_build_options.enable_valgrind, .use_mimalloc = root_build_options.use_mimalloc, .override_no_export_cpp_apis = root_build_options.override_no_export_cpp_apis, @@ -626,6 +630,16 @@ fn configureObj(b: *Build, opts: *BunBuildOptions, obj: *Compile) void { obj.step.dependOn(&fail_step.step); } } + + if (opts.enable_fuzzilli) { + if (!opts.enable_asan) { + const fail_step = b.addFail("enable_fuzzilli requires enable_asan to be enabled. Please set -Denable_asan=true"); + obj.step.dependOn(&fail_step.step); + } + if (!enableFastBuild(b)) { + obj.sanitize_coverage_trace_pc_guard = true; + } + } obj.bundle_compiler_rt = false; obj.bundle_ubsan_rt = false;