authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-12-17 23:23:32-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-12-23 22:15:10-08:00
log54865e0483bf02bc1ace9f06c00071fce32534cc
tree5097441c0d3e726b1bb14f003794355dd248cd1f
parenta5b719e9eb0a196a43a88af8f62c897d1ecfa04f

compiler: fix compilation when linking libc


4 files changed, 16 insertions(+), 11 deletions(-)

lib/compiler/test_runner.zig+1-1
......@@ -224,7 +224,7 @@ fn mainTerminal() void {
224224 var skip_count: usize = 0;
225225 var fail_count: usize = 0;
226226 var fuzz_count: usize = 0;
227 const root_node = if (builtin.fuzz) std.Progress.Node.none else std.Progress.start(.{
227 const root_node = if (builtin.fuzz) std.Progress.Node.none else std.Progress.start(runner_threaded_io.io(), .{
228228 .root_name = "Test",
229229 .estimated_total_items = test_fn_list.len,
230230 });
lib/std/Io/Threaded.zig+2-2
......@@ -6804,7 +6804,7 @@ fn fileWritePositional(
68046804
68056805 try current_thread.beginSyscall();
68066806 while (true) {
6807 const rc = pwritev_sym(file.handle, &iovecs, iovlen, @bitCast(offset));
6807 const rc = pwritev_sym(file.handle, &iovecs, @intCast(iovlen), @bitCast(offset));
68086808 switch (posix.errno(rc)) {
68096809 .SUCCESS => {
68106810 current_thread.endSyscall();
......@@ -6923,7 +6923,7 @@ fn fileWriteStreaming(
69236923
69246924 try current_thread.beginSyscall();
69256925 while (true) {
6926 const rc = posix.system.writev(file.handle, &iovecs, iovlen);
6926 const rc = posix.system.writev(file.handle, &iovecs, @intCast(iovlen));
69276927 switch (posix.errno(rc)) {
69286928 .SUCCESS => {
69296929 current_thread.endSyscall();
lib/std/testing.zig+10-5
......@@ -370,7 +370,8 @@ pub fn expectEqualSlices(comptime T: type, expected: []const T, actual: []const
370370 if (!backend_can_print) return error.TestExpectedEqual;
371371 if (io.lockStderr(&.{}, null)) |stderr| {
372372 defer io.unlockStderr();
373 failEqualSlices(T, expected, actual, diff_index, &stderr.interface, stderr.mode) catch {};
373 const w = &stderr.file_writer.interface;
374 failEqualSlices(T, expected, actual, diff_index, w, stderr.terminal_mode) catch {};
374375 } else |_| {}
375376 return error.TestExpectedEqual;
376377}
......@@ -475,13 +476,13 @@ fn SliceDiffer(comptime T: type) type {
475476 for (self.expected, 0..) |value, i| {
476477 const full_index = self.start_index + i;
477478 const diff = if (i < self.actual.len) !std.meta.eql(self.actual[i], value) else true;
478 if (diff) try t.setColor(writer, .red);
479 if (diff) try t.setColor(.red);
479480 if (@typeInfo(T) == .pointer) {
480481 try writer.print("[{}]{*}: {any}\n", .{ full_index, value, value });
481482 } else {
482483 try writer.print("[{}]: {any}\n", .{ full_index, value });
483484 }
484 if (diff) try t.setColor(writer, .reset);
485 if (diff) try t.setColor(.reset);
485486 }
486487 }
487488 };
......@@ -538,10 +539,14 @@ const BytesDiffer = struct {
538539 }
539540 }
540541
542 fn terminal(self: *const BytesDiffer, writer: *Io.Writer) Io.Terminal {
543 return .{ .writer = writer, .mode = self.terminal_mode };
544 }
545
541546 fn writeDiff(self: BytesDiffer, writer: *Io.Writer, comptime fmt: []const u8, args: anytype, diff: bool) !void {
542 if (diff) try self.file_writer_mode.setColor(writer, .red);
547 if (diff) try self.terminal(writer).setColor(.red);
543548 try writer.print(fmt, args);
544 if (diff) try self.file_writer_mode.setColor(writer, .reset);
549 if (diff) try self.terminal(writer).setColor(.reset);
545550 }
546551};
547552
src/Compilation.zig+3-3
......@@ -6270,7 +6270,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr
62706270 }
62716271
62726272 if (comp.verbose_cc) {
6273 dumpArgv(io, argv.items);
6273 try dumpArgv(io, argv.items);
62746274 }
62756275
62766276 const err = std.process.execv(arena, argv.items);
......@@ -6316,7 +6316,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr
63166316 }
63176317
63186318 if (comp.verbose_cc) {
6319 dumpArgv(io, argv.items);
6319 try dumpArgv(io, argv.items);
63206320 }
63216321
63226322 // Just to save disk space, we delete the files that are never needed again.
......@@ -6358,7 +6358,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: std.Pr
63586358 var stderr_reader = child.stderr.?.readerStreaming(io, &.{});
63596359 const stderr = try stderr_reader.interface.allocRemaining(arena, .limited(std.math.maxInt(u32)));
63606360
6361 const term = child.wait() catch |err| {
6361 const term = child.wait(io) catch |err| {
63626362 return comp.failCObj(c_object, "failed to spawn zig clang {s}: {s}", .{ argv.items[0], @errorName(err) });
63636363 };
63646364