From 9d63dfaa81716a87b9c8c6dc5bdf1d07a8278b55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 24 Jan 2026 18:30:17 +0100 Subject: [PATCH] link.Lld: give better exit status information for the lld child process It's not nice to just throw away useful information. --- src/link/Lld.zig | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/link/Lld.zig b/src/link/Lld.zig index a94b1111cd5ee3f5b20ee715d0b557869f0860e4..fa94e534593a81c853c85911bf7054af03b65eab 100644 --- a/src/link/Lld.zig +++ b/src/link/Lld.zig @@ -1707,9 +1707,17 @@ fn spawnLld(comp: *Compilation, arena: Allocator, argv: []const []const u8) !voi diags.lockAndParseLldStderr(argv[1], stderr); return error.LinkFailure; }, - else => { + .signal => |sig| { if (comp.clang_passthrough_mode) std.process.abort(); - return diags.fail("{s} terminated with stderr:\n{s}", .{ argv[0], stderr }); + return diags.fail("{s} terminated with signal {t} and stderr:\n{s}", .{ argv[0], sig, stderr }); + }, + .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 }); + }, + .unknown => |code| { + if (comp.clang_passthrough_mode) std.process.abort(); + return diags.fail("{s} terminated for unknown reason with code {d} and stderr:\n{s}", .{ argv[0], code, stderr }); }, } -- 2.54.0