From 4a1383d987130978bc66ba7cd7172c398684978d Mon Sep 17 00:00:00 2001 From: murtaza Date: Fri, 13 Feb 2026 16:14:10 +0100 Subject: [PATCH] process.Child: use std.posix.SIG instead of u32 for Child.Term stopped field --- lib/compiler/reduce.zig | 2 +- lib/compiler/std-docs.zig | 2 +- lib/std/Build.zig | 4 ++-- lib/std/Build/Step.zig | 2 +- lib/std/Build/Step/Run.zig | 6 +++--- lib/std/Build/WebServer.zig | 2 +- lib/std/Io/Threaded.zig | 2 +- lib/std/Io/Uring.zig | 2 +- lib/std/c.zig | 34 +++++++++++++++++----------------- lib/std/os/emscripten.zig | 2 +- lib/std/os/linux.zig | 4 ++-- lib/std/process/Child.zig | 2 +- lib/std/zig/system.zig | 2 +- src/Compilation.zig | 4 ++-- src/link/Lld.zig | 2 +- src/main.zig | 6 +++--- tools/doctest.zig | 2 +- tools/incr-check.zig | 6 +++--- tools/update_clang_options.zig | 1 - tools/update_cpu_features.zig | 2 +- 20 files changed, 44 insertions(+), 45 deletions(-) diff --git a/lib/compiler/reduce.zig b/lib/compiler/reduce.zig index b5051d2905106b6b4c627ef1be92ab0369f0d3ba..8d4f270a7946ca32ae04aa996df91a1decc22743 100644 --- a/lib/compiler/reduce.zig +++ b/lib/compiler/reduce.zig @@ -292,7 +292,7 @@ fn termToInteresting(term: std.process.Child.Term) Interestingness { return .boring; }, .stopped => |sig| { - std.debug.print("interestingness check stopped with signal {d}\n", .{sig}); + std.debug.print("interestingness check stopped with signal {t}\n", .{sig}); return .boring; }, .unknown => { diff --git a/lib/compiler/std-docs.zig b/lib/compiler/std-docs.zig index 69595726f48d3f658468bb35c98f6bc629413b68..e1ef5178a88450ffa6b6dc214eb820ace1b07931 100644 --- a/lib/compiler/std-docs.zig +++ b/lib/compiler/std-docs.zig @@ -425,7 +425,7 @@ fn buildWasmBinary( }, .stopped => |sig| { std.log.err( - "the following command stopped unexpectedly with signal {d}:\n{s}", + "the following command stopped unexpectedly with signal {t}:\n{s}", .{ sig, try std.Build.Step.allocPrintCmd(arena, .inherit, null, argv.items) }, ); return error.WasmCompilationFailed; diff --git a/lib/std/Build.zig b/lib/std/Build.zig index 76d636882b014d3ba8d8d045c4780cc5897f0cb9..3759706a460889ec45e13e8bc1973fed45bba463 100644 --- a/lib/std/Build.zig +++ b/lib/std/Build.zig @@ -1899,11 +1899,11 @@ pub fn runAllowFail( } return stdout; }, - .signal => |sig| { + .signal, .stopped => |sig| { out_code.* = @as(u8, @truncate(@intFromEnum(sig))); return error.ProcessTerminated; }, - .stopped, .unknown => |code| { + .unknown => |code| { out_code.* = @as(u8, @truncate(code)); return error.ProcessTerminated; }, diff --git a/lib/std/Build/Step.zig b/lib/std/Build/Step.zig index 03aac38e20a20510fda9e4ba131994224ca8fe09..9df1b9d0383db5fa8cdc582d6c7bc6e466132781 100644 --- a/lib/std/Build/Step.zig +++ b/lib/std/Build/Step.zig @@ -728,7 +728,7 @@ pub fn handleChildProcessTerm(s: *Step, term: std.process.Child.Term) error{ Mak return switch (term) { .exited => |code| if (code != 0) s.fail("process exited with error code {d}", .{code}), .signal => |sig| s.fail("process terminated with signal {t}", .{sig}), - .stopped => |sig| s.fail("process stopped with signal {d}", .{sig}), + .stopped => |sig| s.fail("process stopped with signal {t}", .{sig}), .unknown => s.fail("process terminated unexpectedly", .{}), }; } diff --git a/lib/std/Build/Step/Run.zig b/lib/std/Build/Step/Run.zig index da20a15e78e03b1a32613513eaddcc81a87a1819..76acbcb4b799e42b1d54f07a1e36ba950317a029 100644 --- a/lib/std/Build/Step/Run.zig +++ b/lib/std/Build/Step/Run.zig @@ -1173,7 +1173,7 @@ fn formatTerm(term: ?process.Child.Term, w: *std.Io.Writer) std.Io.Writer.Error! if (term) |t| switch (t) { .exited => |code| try w.print("exited with code {d}", .{code}), .signal => |sig| try w.print("terminated with signal {t}", .{sig}), - .stopped => |sig| try w.print("stopped with signal {d}", .{sig}), + .stopped => |sig| try w.print("stopped with signal {t}", .{sig}), .unknown => |code| try w.print("terminated for unknown reason with code {d}", .{code}), } else { try w.writeAll("exited with any code"); @@ -2804,8 +2804,8 @@ fn hashStdIo(hh: *std.Build.Cache.HashHelper, stdio: StdIo) void { .expect_term => |term| { hh.add(@as(std.meta.Tag(process.Child.Term), term)); switch (term) { - inline .exited, .signal => |x| hh.add(x), - .stopped, .unknown => |x| hh.add(x), + inline .exited, .signal, .stopped => |x| hh.add(x), + .unknown => |x| hh.add(x), } }, } diff --git a/lib/std/Build/WebServer.zig b/lib/std/Build/WebServer.zig index ff21739fa364b9cb9526e87bcbebc79e3c4fbce2..ea7e0a6e26a91b33b9c80c67ccdbf3a6fdfc8fc4 100644 --- a/lib/std/Build/WebServer.zig +++ b/lib/std/Build/WebServer.zig @@ -683,7 +683,7 @@ fn buildClientWasm(ws: *WebServer, arena: Allocator, optimize: std.builtin.Optim }, .stopped => |sig| { log.err( - "the following command stopped unexpectedly with signal {d}:\n{s}", + "the following command stopped unexpectedly with signal {t}:\n{s}", .{ sig, try Build.Step.allocPrintCmd(arena, .inherit, null, argv.items) }, ); return error.WasmCompilationFailed; diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig index 0bec8a068f59241d17c8e4fb70919b3c79db1988..ec63fb28d227bb90cde52651b33ac6c4b6df6445 100644 --- a/lib/std/Io/Threaded.zig +++ b/lib/std/Io/Threaded.zig @@ -15273,7 +15273,7 @@ fn childWaitPosix(child: *process.Child) process.Child.WaitError!process.Child.T return switch (code) { .EXITED => .{ .exited = @truncate(status) }, .KILLED, .DUMPED => .{ .signal = @enumFromInt(status) }, - .TRAPPED, .STOPPED => .{ .stopped = status }, + .TRAPPED, .STOPPED => .{ .stopped = @enumFromInt(status) }, _, .CONTINUED => .{ .unknown = status }, }; }, diff --git a/lib/std/Io/Uring.zig b/lib/std/Io/Uring.zig index b28d78db790904793da9c857243bae1b644532de..759a9bac20fa6257b36ea93d220fa5e977f05905 100644 --- a/lib/std/Io/Uring.zig +++ b/lib/std/Io/Uring.zig @@ -4729,7 +4729,7 @@ fn childWait(userdata: ?*anyopaque, child: *process.Child) process.Child.WaitErr return switch (code) { .EXITED => .{ .exited = @truncate(status) }, .KILLED, .DUMPED => .{ .signal = @enumFromInt(status) }, - .TRAPPED, .STOPPED => .{ .stopped = status }, + .TRAPPED, .STOPPED => .{ .stopped = @enumFromInt(status) }, _, .CONTINUED => .{ .unknown = status }, }; }, diff --git a/lib/std/c.zig b/lib/std/c.zig index 90efa67884e844c8ce4514929ac6dd37b911e07a..f0b03917855a2261fad5352220329c6904f922dc 100644 --- a/lib/std/c.zig +++ b/lib/std/c.zig @@ -3721,14 +3721,14 @@ pub const W = switch (native_os) { pub fn TERMSIG(x: u32) SIG { return @enumFromInt(status(x)); } - pub fn STOPSIG(x: u32) u32 { - return x >> 8; + pub fn STOPSIG(x: u32) SIG { + return @enumFromInt(x >> 8); } pub fn IFEXITED(x: u32) bool { return status(x) == 0; } pub fn IFSTOPPED(x: u32) bool { - return status(x) == stopped and STOPSIG(x) != 0x13; + return status(x) == stopped and @as(u32, @intFromEnum(STOPSIG(x))) != 0x13; } pub fn IFSIGNALED(x: u32) bool { return status(x) != stopped and status(x) != 0; @@ -3754,8 +3754,8 @@ pub const W = switch (native_os) { pub fn TERMSIG(s: u32) SIG { return @enumFromInt(s & 0x7f); } - pub fn STOPSIG(s: u32) u32 { - return EXITSTATUS(s); + pub fn STOPSIG(s: u32) SIG { + return @enumFromInt(EXITSTATUS(s)); } pub fn IFEXITED(s: u32) bool { return (s & 0x7f) == 0; @@ -3782,8 +3782,8 @@ pub const W = switch (native_os) { pub fn TERMSIG(s: u32) SIG { return @enumFromInt(s & 0x7f); } - pub fn STOPSIG(s: u32) u32 { - return EXITSTATUS(s); + pub fn STOPSIG(s: u32) SIG { + return @enumFromInt(EXITSTATUS(s)); } pub fn IFEXITED(s: u32) bool { return (s & 0x7f) == 0; @@ -3816,8 +3816,8 @@ pub const W = switch (native_os) { pub fn TERMSIG(s: u32) SIG { return @enumFromInt(s & 0x7f); } - pub fn STOPSIG(s: u32) u32 { - return EXITSTATUS(s); + pub fn STOPSIG(s: u32) SIG { + return @enumFromInt(EXITSTATUS(s)); } pub fn IFEXITED(s: u32) bool { return (s & 0x7f) == 0; @@ -3850,8 +3850,8 @@ pub const W = switch (native_os) { pub fn TERMSIG(s: u32) SIG { return @enumFromInt(s & 0x7f); } - pub fn STOPSIG(s: u32) u32 { - return EXITSTATUS(s); + pub fn STOPSIG(s: u32) SIG { + return @enumFromInt(EXITSTATUS(s)); } pub fn IFEXITED(s: u32) bool { return (s & 0x7f) == 0; @@ -3879,8 +3879,8 @@ pub const W = switch (native_os) { return @enumFromInt((s >> 8) & 0xff); } - pub fn STOPSIG(s: u32) u32 { - return (s >> 16) & 0xff; + pub fn STOPSIG(s: u32) SIG { + return @enumFromInt((s >> 16) & 0xff); } pub fn IFEXITED(s: u32) bool { @@ -3906,8 +3906,8 @@ pub const W = switch (native_os) { pub fn TERMSIG(s: u32) SIG { return @enumFromInt(s & 0x7f); } - pub fn STOPSIG(s: u32) u32 { - return EXITSTATUS(s); + pub fn STOPSIG(s: u32) SIG { + return @enumFromInt(EXITSTATUS(s)); } pub fn IFEXITED(s: u32) bool { return (s & 0x7f) == 0; @@ -3938,8 +3938,8 @@ pub const W = switch (native_os) { return @intCast((s & 0xff00) >> 8); } - pub fn STOPSIG(s: u32) u32 { - return EXITSTATUS(s); + pub fn STOPSIG(s: u32) SIG { + return @enumFromInt(EXITSTATUS(s)); } pub fn TERMSIG(s: u32) SIG { diff --git a/lib/std/os/emscripten.zig b/lib/std/os/emscripten.zig index ba4d9082a00093a73160242aad84fcf4feabdd58..9ce7e143d4d989d95f9c4d5a8109ea373b509b46 100644 --- a/lib/std/os/emscripten.zig +++ b/lib/std/os/emscripten.zig @@ -228,7 +228,7 @@ pub const W = struct { return @enumFromInt(s & 0x7f); } pub fn STOPSIG(s: u32) u32 { - return EXITSTATUS(s); + return @enumFromInt(EXITSTATUS(s)); } pub fn IFEXITED(s: u32) bool { return (s & 0x7f) == 0; diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index eb4908f3318a4bc8dff8c3bc11dc1b7ed1bc448b..424f80bb6a3fbe00e0ffc5ca69379ded3d407c5c 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -3883,8 +3883,8 @@ pub const W = struct { pub fn TERMSIG(s: u32) SIG { return @enumFromInt(s & 0x7f); } - pub fn STOPSIG(s: u32) u32 { - return EXITSTATUS(s); + pub fn STOPSIG(s: u32) SIG { + return @enumFromInt(EXITSTATUS(s)); } pub fn IFEXITED(s: u32) bool { return (s & 0x7f) == 0; diff --git a/lib/std/process/Child.zig b/lib/std/process/Child.zig index 0cc60a23e999239401c7531cade47eff2d27e52d..65f6429e59f399fcb34137587d3f73ac9a35c24b 100644 --- a/lib/std/process/Child.zig +++ b/lib/std/process/Child.zig @@ -94,7 +94,7 @@ pub const ResourceUsageStatistics = struct { pub const Term = union(enum) { exited: u8, signal: std.posix.SIG, - stopped: u32, + stopped: std.posix.SIG, unknown: u32, }; diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index 788ece9d6df6881f254c9eec403d1e7309e0f242..61f78093d6927fee7ee68dc274390b604be1535c 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -1195,7 +1195,7 @@ fn detectAndroidApiLevel(io: Io) !u32 { return error.ApiLevelQueryFailed; }, .stopped => |sig| { - std.log.err("getprop stopped abnormally with signal: {d}", .{sig}); + std.log.err("getprop stopped abnormally with signal: {t}", .{sig}); return error.ApiLevelQueryFailed; }, .unknown => { diff --git a/src/Compilation.zig b/src/Compilation.zig index 9164f889af793e0fbd6531af6fe7fb860b6ea1a2..695dd8918fd7d7ff10f11f9ffff3b33b724aef84 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -5872,7 +5872,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr }, .stopped => |sig| { log.err("clang failed with stderr: {s}", .{stderr}); - return comp.failCObj(c_object, "clang stopped with signal {d}", .{sig}); + return comp.failCObj(c_object, "clang stopped with signal {t}", .{sig}); }, .unknown => { log.err("clang terminated with stderr: {s}", .{stderr}); @@ -6302,7 +6302,7 @@ fn spawnZigRc( return comp.failWin32Resource(win32_resource, "zig rc terminated unexpectedly", .{}); }, .stopped => |sig| { - log.err("zig rc stopped {d} with stderr:\n{s}", .{ sig, stderr }); + log.err("zig rc stopped {t} with stderr:\n{s}", .{ sig, stderr }); return comp.failWin32Resource(win32_resource, "zig rc terminated unexpectedly", .{}); }, .unknown => { diff --git a/src/link/Lld.zig b/src/link/Lld.zig index 9a6f4f392be21ebb3cae4a995c68d1a8fcbb6e87..ffb9020e7f64e3f4caa169407730d4365aa7c080 100644 --- a/src/link/Lld.zig +++ b/src/link/Lld.zig @@ -1733,7 +1733,7 @@ fn spawnLld(comp: *Compilation, arena: Allocator, argv: []const []const u8) !voi }, .stopped => |sig| { if (comp.clang_passthrough_mode) std.process.abort(); - return diags.fail("{s} stopped with signal {d} and stderr:\n{s}", .{ argv[0], sig, stderr }); + return diags.fail("{s} stopped with signal {t} and stderr:\n{s}", .{ argv[0], sig, stderr }); }, .unknown => |code| { if (comp.clang_passthrough_mode) std.process.abort(); diff --git a/src/main.zig b/src/main.zig index f8286432e45653566b977db8b559546869636cfc..50e8f258746ca399af2c88e45c1d5d4114e4d50c 100644 --- a/src/main.zig +++ b/src/main.zig @@ -4582,7 +4582,7 @@ fn runOrTest( }, .stopped => |sig| { const cmd = try std.mem.join(arena, " ", argv.items); - fatal("the following command stopped with signal {d}:\n{s}", .{ sig, cmd }); + fatal("the following command stopped with signal {t}:\n{s}", .{ sig, cmd }); }, .unknown => { process.exit(1); @@ -5637,7 +5637,7 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, io: Io, args: []const []const u8, }, .stopped => |sig| { const cmd = try std.mem.join(arena, " ", child_argv.items); - fatal("the following build command stopped with signal {d}:\n{s}", .{ sig, cmd }); + fatal("the following build command stopped with signal {t}:\n{s}", .{ sig, cmd }); }, .unknown => { const cmd = try std.mem.join(arena, " ", child_argv.items); @@ -5943,7 +5943,7 @@ fn jitCmdInner( }, .stopped => |sig| { const cmd = try std.mem.join(arena, " ", child_argv.items); - fatal("the following build command stopped with signal {d}:\n{s}", .{ sig, cmd }); + fatal("the following build command stopped with signal {t}:\n{s}", .{ sig, cmd }); }, .unknown => { const cmd = try std.mem.join(arena, " ", child_argv.items); diff --git a/tools/doctest.zig b/tools/doctest.zig index 50b1a747b0343482805f405be34681f483ce5fff..2b0d7431b7e2bcf541f1ddd8dbe4ef3b17e70fae 100644 --- a/tools/doctest.zig +++ b/tools/doctest.zig @@ -1142,7 +1142,7 @@ fn run( return error.ChildCrashed; }, .stopped => |sig| { - std.debug.print("{s}\nThe following command stopped with signal {d}:\n", .{ result.stderr, sig }); + std.debug.print("{s}\nThe following command stopped with signal {t}:\n", .{ result.stderr, sig }); dumpArgs(args); return error.ChildCrashed; }, diff --git a/tools/incr-check.zig b/tools/incr-check.zig index b825c0fdbf315966abe8981c2e59832087981d22..97ed993c2bed3747c8da1d9c65a13e02bd20d4e9 100644 --- a/tools/incr-check.zig +++ b/tools/incr-check.zig @@ -569,7 +569,7 @@ const Eval = struct { eval.fatal("generated executable '{s}' terminated with signal {t}", .{ binary_path, sig }); }, .stopped => |sig| { - eval.fatal("generated executable '{s}' stopped with signal {d}", .{ binary_path, sig }); + eval.fatal("generated executable '{s}' stopped with signal {t}", .{ binary_path, sig }); }, .unknown => { eval.fatal("generated executable '{s}' terminated unexpectedly", .{binary_path}); @@ -639,7 +639,7 @@ const Eval = struct { switch (result.term) { .exited => |code| eval.fatal("zig cc for '{s}' failed with code {d}", .{ c_path, code }), .signal => |sig| eval.fatal("zig cc for '{s}' terminated unexpectedly with signal {t}", .{ c_path, sig }), - .stopped => |sig| eval.fatal("zig cc for '{s}' stopped unexpectedly with signal {d}", .{ c_path, sig }), + .stopped => |sig| eval.fatal("zig cc for '{s}' stopped unexpectedly with signal {t}", .{ c_path, sig }), .unknown => eval.fatal("zig cc for '{s}' terminated unexpectedly", .{c_path}), } } @@ -919,7 +919,7 @@ fn waitChild(child: *std.process.Child, eval: *Eval) void { switch (term) { .exited => |code| if (code != 0) eval.fatal("compiler failed with code {d}", .{code}), .signal => |sig| eval.fatal("compiler terminated with signal {t}", .{sig}), - .stopped => |sig| eval.fatal("compiler stopped unexpectedly with signal {d}", .{sig}), + .stopped => |sig| eval.fatal("compiler stopped unexpectedly with signal {t}", .{sig}), .unknown => eval.fatal("compiler terminated unexpectedly", .{}), } } diff --git a/tools/update_clang_options.zig b/tools/update_clang_options.zig index de3da1b6f4f57016ed29359f25d21e9d9b18dddf..49b8e72f58372ee2a5c63ec2e0132d9fbdfd1fdb 100644 --- a/tools/update_clang_options.zig +++ b/tools/update_clang_options.zig @@ -699,7 +699,6 @@ pub fn main(init: std.process.Init) !void { .unknown => { fatal("llvm-tblgen crashed\n", .{}); }, - else => fatal("llvm-tblgen crashed", .{}), }; const parsed = try json.parseFromSlice(json.Value, arena, json_text, .{}); diff --git a/tools/update_cpu_features.zig b/tools/update_cpu_features.zig index e42c533b5120c8459be312adf8a561d1e2aeda3f..8a8e15558b19db009ea978730813452aeb621889 100644 --- a/tools/update_cpu_features.zig +++ b/tools/update_cpu_features.zig @@ -2017,7 +2017,7 @@ fn processOneTarget(io: Io, job: Job) void { std.process.exit(1); }, .stopped => |sig| { - std.debug.print("llvm-tblgen stopped with signal {d}\n", .{sig}); + std.debug.print("llvm-tblgen stopped with signal {t}\n", .{sig}); std.process.exit(1); }, .unknown => { -- 2.54.0