aboutsummaryrefslogtreecommitdiff
path: root/tools/dump-cov.zig
diff options
context:
space:
mode:
authorMatthew Lugg <mlugg@mlugg.co.uk>2025-11-20 17:48:35 +0000
committerGitHub <noreply@github.com>2025-11-20 17:48:35 +0000
commit8a73fc8d8ee0065e4d07e473ce6ab095cebfaece (patch)
tree36bed2955666bdfce7b96e2f33c9409bd26f03c1 /tools/dump-cov.zig
parenta9568ed2963298864e5c9a92a3eafe81771128ff (diff)
parenta87b5332319b20347916f77e57253e2df4b2a3af (diff)
downloadzig-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.zig35
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);