authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2026-04-25 19:19:04+01:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-04-25 21:49:38+02:00
log9ba89394df62b8b080d667075e3a592c5a9594a5
treeadee580b4c2f72f8754aed0e58bf8356c1ab6849
parent31bc385a96b98858889837f8b8256b7e2bf7be4c
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

compiler: raise FD limit before opening link inputs


1 files changed, 5 insertions(+), 2 deletions(-)

src/main.zig+5-2
...@@ -977,6 +977,11 @@ fn buildOutputType(...@@ -977,6 +977,11 @@ fn buildOutputType(
977 var cc_argv: std.ArrayList([]const u8) = .empty;977 var cc_argv: std.ArrayList([]const u8) = .empty;
978 var deps: std.ArrayList(CliModule.Dep) = .empty;978 var deps: std.ArrayList(CliModule.Dep) = .empty;
979979
980 // We need to raise the FD limit *before* CLI parsing, because we open link inputs during CLI
981 // parsing (in `createModule`), so a large number of link inputs could push us past the limit on
982 // targets with a low soft limit (e.g. macOS has a default limit of 256).
983 process.raiseFileDescriptorLimit();
984
980 // Contains every module specified via -M. The dependencies are added985 // Contains every module specified via -M. The dependencies are added
981 // after argument parsing is completed. We use a StringArrayHashMap to make986 // after argument parsing is completed. We use a StringArrayHashMap to make
982 // error output consistent. "root" is special.987 // error output consistent. "root" is special.
...@@ -3534,8 +3539,6 @@ fn buildOutputType(...@@ -3534,8 +3539,6 @@ fn buildOutputType(
3534 break :b .whole;3539 break :b .whole;
3535 };3540 };
35363541
3537 process.raiseFileDescriptorLimit();
3538
3539 var file_system_inputs: std.ArrayList(u8) = .empty;3542 var file_system_inputs: std.ArrayList(u8) = .empty;
3540 defer file_system_inputs.deinit(gpa);3543 defer file_system_inputs.deinit(gpa);
35413544