authorgravatar for rpkak@noreply.codeberg.orgrpkak <rpkak@noreply.codeberg.org> 2026-07-13 11:37:57+02:00
committergravatar for rpkak@noreply.codeberg.orgrpkak <rpkak@noreply.codeberg.org> 2026-07-16 23:14:49+02:00
logbcaf025a6241b80826dfc13aca7ea4a56c467f55
tree97be604ca1e33fdf277fb7012e7cf3f2b0173fa6
parentbb80906868d26b9eec6ecd2ed2d7593ccbe88ae5
signaturebadge-check Signed by SSH key SHA256:A2g6ATENrgLKQcUdthsn72P0njmQxnHSimzwnyJsZzo

Prelink Progress Node


5 files changed, 18 insertions(+), 9 deletions(-)

src/Compilation.zig+11-5
......@@ -2912,12 +2912,18 @@ pub fn update(comp: *Compilation, main_progress_node: std.Progress.Node) UpdateE
29122912 // we also want it around during `flush`.
29132913 if (comp.bin_file) |lf| {
29142914 // mirrors logic in `Compilation.flush`:
2915 // Always: linker flush
2916 var initial_estimated_total: usize = 1;
2917 const llvm = if (comp.zcu) |zcu| zcu.llvm_object != null else false;
29152918 // For llvm: "LLVM Emit Object" and "Parse Object" with the zcu object
2916 // Always: flush of the linker
2917 const initial_estimated_total: usize = if (comp.zcu) |zcu|
2918 if (zcu.llvm_object) |_| 3 else 1
2919 else
2920 1;
2919 if (llvm) {
2920 initial_estimated_total += 2;
2921 }
2922 // Prelink
2923 if (!lf.post_prelink or llvm) {
2924 initial_estimated_total += 1;
2925 }
2926
29212927 comp.link_prog_node = main_progress_node.start("Linking", initial_estimated_total);
29222928 lf.startProgress(comp.link_prog_node);
29232929 }
src/link.zig+1-1
......@@ -1243,7 +1243,7 @@ pub const File = struct {
12431243 dev.check(tag.devFeature());
12441244 try @as(*tag.Type(), @fieldParentPtr("base", base)).prelink(base.comp.link_prog_node);
12451245 },
1246 else => {},
1246 else => base.comp.link_prog_node.completeOne(),
12471247 }
12481248
12491249 base.post_prelink = true;
src/link/Coff.zig+3-1
......@@ -5370,7 +5370,9 @@ fn loadDll(coff: *Coff, path: std.Build.Cache.Path, fr: *Io.File.Reader) LoadInp
53705370}
53715371
53725372pub fn prelink(coff: *Coff, prog_node: std.Progress.Node) link.Error!void {
5373 _ = prog_node;
5373 const sub_prog_node = prog_node.start("COFF Prelink", 0);
5374 defer sub_prog_node.end();
5375
53745376 const base = coff.base;
53755377 const comp = base.comp;
53765378
src/link/Elf2.zig+3-1
......@@ -5749,7 +5749,9 @@ fn updateInitFiniArraySectionSize(
57495749}
57505750
57515751pub fn prelink(elf: *Elf, prog_node: std.Progress.Node) link.Error!void {
5752 _ = prog_node;
5752 const sub_prog_node = prog_node.start("ELF Prelink", 0);
5753 defer sub_prog_node.end();
5754
57535755 const diags = &elf.base.comp.link_diags;
57545756 elf.prelinkInner() catch |err| switch (err) {
57555757 error.MappedFileIo => return diags.fail("failed to write output file: {t}", .{elf.mf.io_err.?}),
src/link/Wasm.zig-1
......@@ -3398,7 +3398,6 @@ pub fn prelink(wasm: *Wasm, prog_node: std.Progress.Node) link.Error!void {
33983398 const tracy = trace(@src());
33993399 defer tracy.end();
34003400
3401 prog_node.increaseEstimatedTotalItems(1);
34023401 const sub_prog_node = prog_node.start("Wasm Prelink", 0);
34033402 defer sub_prog_node.end();
34043403