authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-12-24 15:22:14-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-12-26 19:58:56-08:00
log3ad9a6a6045aec32b590387eddbc8ba3d598bcfc
tree6b6a3126600d034dd9ff008f2aa728c449d1dfc3
parenta7d2cb704596459b89bb85fb59908d384dd9bba3

incr-check: more general --debug-log CLI


1 files changed, 13 insertions(+), 21 deletions(-)

tools/incr-check.zig+13-21
...@@ -4,7 +4,7 @@ const Dir = std.Io.Dir;...@@ -4,7 +4,7 @@ const Dir = std.Io.Dir;
4const Allocator = std.mem.Allocator;4const Allocator = std.mem.Allocator;
5const Cache = std.Build.Cache;5const Cache = std.Build.Cache;
66
7const usage = "usage: incr-check <zig binary path> <input file> [--zig-lib-dir lib] [--debug-zcu] [--debug-dwarf] [--debug-link] [--preserve-tmp] [--zig-cc-binary /path/to/zig]";7const usage = "usage: incr-check <zig binary path> <input file> [--zig-lib-dir lib] [--debug-log foo] [--preserve-tmp] [--zig-cc-binary /path/to/zig]";
88
9pub fn main() !void {9pub fn main() !void {
10 const fatal = std.process.fatal;10 const fatal = std.process.fatal;
...@@ -23,27 +23,25 @@ pub fn main() !void {...@@ -23,27 +23,25 @@ pub fn main() !void {
23 var opt_input_file_name: ?[]const u8 = null;23 var opt_input_file_name: ?[]const u8 = null;
24 var opt_lib_dir: ?[]const u8 = null;24 var opt_lib_dir: ?[]const u8 = null;
25 var opt_cc_zig: ?[]const u8 = null;25 var opt_cc_zig: ?[]const u8 = null;
26 var debug_zcu = false;
27 var debug_dwarf = false;
28 var debug_link = false;
29 var preserve_tmp = false;26 var preserve_tmp = false;
30 var enable_qemu: bool = false;27 var enable_qemu: bool = false;
31 var enable_wine: bool = false;28 var enable_wine: bool = false;
32 var enable_wasmtime: bool = false;29 var enable_wasmtime: bool = false;
33 var enable_darling: bool = false;30 var enable_darling: bool = false;
3431
32 var debug_log_args: std.ArrayList([]const u8) = .empty;
33
35 var arg_it = try std.process.argsWithAllocator(arena);34 var arg_it = try std.process.argsWithAllocator(arena);
36 _ = arg_it.skip();35 _ = arg_it.skip();
37 while (arg_it.next()) |arg| {36 while (arg_it.next()) |arg| {
38 if (arg.len > 0 and arg[0] == '-') {37 if (arg.len > 0 and arg[0] == '-') {
39 if (std.mem.eql(u8, arg, "--zig-lib-dir")) {38 if (std.mem.eql(u8, arg, "--zig-lib-dir")) {
40 opt_lib_dir = arg_it.next() orelse fatal("expected arg after '--zig-lib-dir'\n{s}", .{usage});39 opt_lib_dir = arg_it.next() orelse fatal("expected arg after --zig-lib-dir\n{s}", .{usage});
41 } else if (std.mem.eql(u8, arg, "--debug-zcu")) {40 } else if (std.mem.eql(u8, arg, "--debug-log")) {
42 debug_zcu = true;41 try debug_log_args.append(
43 } else if (std.mem.eql(u8, arg, "--debug-dwarf")) {42 arena,
44 debug_dwarf = true;43 arg_it.next() orelse fatal("expected arg after --debug-log\n{s}", .{usage}),
45 } else if (std.mem.eql(u8, arg, "--debug-link")) {44 );
46 debug_link = true;
47 } else if (std.mem.eql(u8, arg, "--preserve-tmp")) {45 } else if (std.mem.eql(u8, arg, "--preserve-tmp")) {
48 preserve_tmp = true;46 preserve_tmp = true;
49 } else if (std.mem.eql(u8, arg, "-fqemu")) {47 } else if (std.mem.eql(u8, arg, "-fqemu")) {
...@@ -55,7 +53,7 @@ pub fn main() !void {...@@ -55,7 +53,7 @@ pub fn main() !void {
55 } else if (std.mem.eql(u8, arg, "-fdarling")) {53 } else if (std.mem.eql(u8, arg, "-fdarling")) {
56 enable_darling = true;54 enable_darling = true;
57 } else if (std.mem.eql(u8, arg, "--zig-cc-binary")) {55 } else if (std.mem.eql(u8, arg, "--zig-cc-binary")) {
58 opt_cc_zig = arg_it.next() orelse fatal("expect arg after '--zig-cc-binary'\n{s}", .{usage});56 opt_cc_zig = arg_it.next() orelse fatal("expected arg after --zig-cc-binary\n{s}", .{usage});
59 } else {57 } else {
60 fatal("unknown option '{s}'\n{s}", .{ arg, usage });58 fatal("unknown option '{s}'\n{s}", .{ arg, usage });
61 }59 }
...@@ -108,7 +106,7 @@ pub fn main() !void {...@@ -108,7 +106,7 @@ pub fn main() !void {
108106
109 const host = try std.zig.system.resolveTargetQuery(io, .{});107 const host = try std.zig.system.resolveTargetQuery(io, .{});
110108
111 const debug_log_verbose = debug_zcu or debug_dwarf or debug_link;109 const debug_log_verbose = debug_log_args.items.len != 0;
112110
113 for (case.targets) |target| {111 for (case.targets) |target| {
114 const target_prog_node = node: {112 const target_prog_node = node: {
...@@ -146,14 +144,8 @@ pub fn main() !void {...@@ -146,14 +144,8 @@ pub fn main() !void {
146 .llvm => try child_args.appendSlice(arena, &.{ "-fllvm", "-flld" }),144 .llvm => try child_args.appendSlice(arena, &.{ "-fllvm", "-flld" }),
147 .cbe => try child_args.appendSlice(arena, &.{ "-ofmt=c", "-lc" }),145 .cbe => try child_args.appendSlice(arena, &.{ "-ofmt=c", "-lc" }),
148 }146 }
149 if (debug_zcu) {147 for (debug_log_args.items) |arg| {
150 try child_args.appendSlice(arena, &.{ "--debug-log", "zcu" });148 try child_args.appendSlice(arena, &.{ "--debug-log", arg });
151 }
152 if (debug_dwarf) {
153 try child_args.appendSlice(arena, &.{ "--debug-log", "dwarf" });
154 }
155 if (debug_link) {
156 try child_args.appendSlice(arena, &.{ "--debug-log", "link", "--debug-log", "link_state", "--debug-log", "link_relocs" });
157 }149 }
158 for (case.modules) |mod| {150 for (case.modules) |mod| {
159 try child_args.appendSlice(arena, &.{ "--dep", mod.name });151 try child_args.appendSlice(arena, &.{ "--dep", mod.name });