diff options
| author | Matthew Lugg <mlugg@mlugg.co.uk> | 2025-11-20 17:48:35 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-20 17:48:35 +0000 |
| commit | 8a73fc8d8ee0065e4d07e473ce6ab095cebfaece (patch) | |
| tree | 36bed2955666bdfce7b96e2f33c9409bd26f03c1 /tools/dump-cov.zig | |
| parent | a9568ed2963298864e5c9a92a3eafe81771128ff (diff) | |
| parent | a87b5332319b20347916f77e57253e2df4b2a3af (diff) | |
| download | zig-8a73fc8d8ee0065e4d07e473ce6ab095cebfaece.tar.gz zig-8a73fc8d8ee0065e4d07e473ce6ab095cebfaece.zip | |
Merge pull request #25981 from mlugg/macos-fuzz-2
make the fuzzer vaguely work on macOS
Diffstat (limited to 'tools/dump-cov.zig')
| -rw-r--r-- | tools/dump-cov.zig | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/tools/dump-cov.zig b/tools/dump-cov.zig index 249783b927..3dd91de612 100644 --- a/tools/dump-cov.zig +++ b/tools/dump-cov.zig @@ -8,31 +8,50 @@ const assert = std.debug.assert; const SeenPcsHeader = std.Build.abi.fuzz.SeenPcsHeader; pub fn main() !void { - var general_purpose_allocator: std.heap.GeneralPurposeAllocator(.{}) = .init; - defer _ = general_purpose_allocator.deinit(); - const gpa = general_purpose_allocator.allocator(); + var debug_allocator: std.heap.DebugAllocator(.{}) = .init; + defer _ = debug_allocator.deinit(); + const gpa = debug_allocator.allocator(); - var arena_instance = std.heap.ArenaAllocator.init(gpa); + var arena_instance: std.heap.ArenaAllocator = .init(gpa); defer arena_instance.deinit(); const arena = arena_instance.allocator(); + var threaded: std.Io.Threaded = .init(gpa); + defer threaded.deinit(); + const io = threaded.io(); + const args = try std.process.argsAlloc(arena); + + const target_query_str = switch (args.len) { + 3 => "native", + 4 => args[3], + else => return fatal( + \\usage: {0s} path/to/exe path/to/coverage [target] + \\ if omitted, 'target' defaults to 'native' + \\ example: {0s} zig-out/test .zig-cache/v/xxxxxxxx x86_64-linux + , .{if (args.len == 0) "dump-cov" else args[0]}), + }; + + const target = std.zig.resolveTargetQueryOrFatal(io, try .parse(.{ + .arch_os_abi = target_query_str, + })); + const exe_file_name = args[1]; const cov_file_name = args[2]; const exe_path: Path = .{ - .root_dir = std.Build.Cache.Directory.cwd(), + .root_dir = .cwd(), .sub_path = exe_file_name, }; const cov_path: Path = .{ - .root_dir = std.Build.Cache.Directory.cwd(), + .root_dir = .cwd(), .sub_path = cov_file_name, }; - var coverage = std.debug.Coverage.init; + var coverage: std.debug.Coverage = .init; defer coverage.deinit(gpa); - var debug_info = std.debug.Info.load(gpa, exe_path, &coverage) catch |err| { + var debug_info = std.debug.Info.load(gpa, exe_path, &coverage, target.ofmt, target.cpu.arch) catch |err| { fatal("failed to load debug info for {f}: {s}", .{ exe_path, @errorName(err) }); }; defer debug_info.deinit(gpa); |
