From 8f4cb4614fa7fe275dff360e9f281cb43b99261a Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 26 Aug 2025 23:09:31 -0700 Subject: compiler: update not to use GenericWriter --- src/libs/freebsd.zig | 75 +++++++++++++++++++++++++--------------------------- src/libs/glibc.zig | 49 +++++++++++++++++----------------- src/libs/musl.zig | 6 ++--- src/libs/netbsd.zig | 45 +++++++++++++++---------------- 4 files changed, 84 insertions(+), 91 deletions(-) (limited to 'src/libs') diff --git a/src/libs/freebsd.zig b/src/libs/freebsd.zig index 48d17bd5f6..60212480ac 100644 --- a/src/libs/freebsd.zig +++ b/src/libs/freebsd.zig @@ -512,7 +512,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye { var map_contents = std.array_list.Managed(u8).init(arena); for (metadata.all_versions[0 .. target_ver_index + 1]) |ver| { - try map_contents.writer().print("FBSD_{d}.{d} {{ }};\n", .{ ver.major, ver.minor }); + try map_contents.print("FBSD_{d}.{d} {{ }};\n", .{ ver.major, ver.minor }); } try o_directory.handle.writeFile(.{ .sub_path = all_map_basename, .data = map_contents.items }); map_contents.deinit(); @@ -524,20 +524,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye for (libs, 0..) |lib, lib_i| { stubs_asm.shrinkRetainingCapacity(0); - const stubs_writer = stubs_asm.writer(); - - try stubs_writer.writeAll(".text\n"); + try stubs_asm.appendSlice(".text\n"); var sym_i: usize = 0; - var sym_name_buf = std.array_list.Managed(u8).init(arena); + var sym_name_buf: std.Io.Writer.Allocating = .init(arena); var opt_symbol_name: ?[]const u8 = null; var versions = try std.DynamicBitSetUnmanaged.initEmpty(arena, metadata.all_versions.len); var weak_linkages = try std.DynamicBitSetUnmanaged.initEmpty(arena, metadata.all_versions.len); - var inc_fbs = std.io.fixedBufferStream(metadata.inclusions); - var inc_reader = inc_fbs.reader(); + var inc_reader: std.Io.Reader = .fixed(metadata.inclusions); - const fn_inclusions_len = try inc_reader.readInt(u16, .little); + const fn_inclusions_len = try inc_reader.takeInt(u16, .little); // Pick the default symbol version: // - If there are no versions, don't emit it @@ -550,19 +547,19 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye while (sym_i < fn_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); - try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); + _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); - opt_symbol_name = sym_name_buf.items; + opt_symbol_name = sym_name_buf.written(); versions.unsetAll(); weak_linkages.unsetAll(); chosen_def_ver_index = 255; chosen_unversioned_ver_index = 255; - break :n sym_name_buf.items; + break :n sym_name_buf.written(); }; { - const targets = try std.leb.readUleb128(u64, inc_reader); - var lib_index = try inc_reader.readByte(); + const targets = try inc_reader.takeLeb128(u64); + var lib_index = try inc_reader.takeByte(); const is_unversioned = (lib_index & (1 << 5)) != 0; const is_weak = (lib_index & (1 << 6)) != 0; @@ -576,7 +573,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = try inc_reader.readByte(); + const byte = try inc_reader.takeByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index) { @@ -608,7 +605,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye // .globl _Exit // .type _Exit, %function // _Exit: .long 0 - try stubs_writer.print( + try stubs_asm.print( \\.balign {d} \\.{s} {s} \\.type {s}, %function @@ -640,7 +637,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye .{ sym_name, ver.major, ver.minor }, ); - try stubs_writer.print( + try stubs_asm.print( \\.balign {d} \\.{s} {s} \\.type {s}, %function @@ -665,14 +662,14 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye } } - try stubs_writer.writeAll(".data\n"); + try stubs_asm.appendSlice(".data\n"); // FreeBSD's `libc.so.7` contains strong references to `__progname` and `environ` which are // defined in the statically-linked startup code. Those references cause the linker to put // the symbols in the dynamic symbol table. We need to create dummy references to them here // to get the same effect. if (std.mem.eql(u8, lib.name, "c")) { - try stubs_writer.print( + try stubs_asm.print( \\.balign {d} \\.globl __progname \\.globl environ @@ -686,7 +683,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye }); } - const obj_inclusions_len = try inc_reader.readInt(u16, .little); + const obj_inclusions_len = try inc_reader.takeInt(u16, .little); var sizes = try arena.alloc(u16, metadata.all_versions.len); @@ -696,21 +693,21 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye while (sym_i < obj_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); - try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); + _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); - opt_symbol_name = sym_name_buf.items; + opt_symbol_name = sym_name_buf.written(); versions.unsetAll(); weak_linkages.unsetAll(); chosen_def_ver_index = 255; chosen_unversioned_ver_index = 255; - break :n sym_name_buf.items; + break :n sym_name_buf.written(); }; { - const targets = try std.leb.readUleb128(u64, inc_reader); - const size = try std.leb.readUleb128(u16, inc_reader); - var lib_index = try inc_reader.readByte(); + const targets = try inc_reader.takeLeb128(u64); + const size = try inc_reader.takeLeb128(u16); + var lib_index = try inc_reader.takeByte(); const is_unversioned = (lib_index & (1 << 5)) != 0; const is_weak = (lib_index & (1 << 6)) != 0; @@ -724,7 +721,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = try inc_reader.readByte(); + const byte = try inc_reader.takeByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index) { @@ -758,7 +755,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye // .type malloc_conf, %object // .size malloc_conf, 4 // malloc_conf: .fill 4, 1, 0 - try stubs_writer.print( + try stubs_asm.print( \\.balign {d} \\.{s} {s} \\.type {s}, %object @@ -794,7 +791,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye .{ sym_name, ver.major, ver.minor }, ); - try stubs_asm.writer().print( + try stubs_asm.print( \\.balign {d} \\.{s} {s} \\.type {s}, %object @@ -822,9 +819,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye } } - try stubs_writer.writeAll(".tdata\n"); + try stubs_asm.appendSlice(".tdata\n"); - const tls_inclusions_len = try inc_reader.readInt(u16, .little); + const tls_inclusions_len = try inc_reader.takeInt(u16, .little); sym_i = 0; opt_symbol_name = null; @@ -832,21 +829,21 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye while (sym_i < tls_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); - try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); + _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); - opt_symbol_name = sym_name_buf.items; + opt_symbol_name = sym_name_buf.written(); versions.unsetAll(); weak_linkages.unsetAll(); chosen_def_ver_index = 255; chosen_unversioned_ver_index = 255; - break :n sym_name_buf.items; + break :n sym_name_buf.written(); }; { - const targets = try std.leb.readUleb128(u64, inc_reader); - const size = try std.leb.readUleb128(u16, inc_reader); - var lib_index = try inc_reader.readByte(); + const targets = try inc_reader.takeLeb128(u64); + const size = try inc_reader.takeLeb128(u16); + var lib_index = try inc_reader.takeByte(); const is_unversioned = (lib_index & (1 << 5)) != 0; const is_weak = (lib_index & (1 << 6)) != 0; @@ -860,7 +857,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = try inc_reader.readByte(); + const byte = try inc_reader.takeByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index) { @@ -894,7 +891,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye // .type _ThreadRuneLocale, %object // .size _ThreadRuneLocale, 4 // _ThreadRuneLocale: .fill 4, 1, 0 - try stubs_writer.print( + try stubs_asm.print( \\.balign {d} \\.{s} {s} \\.type {s}, %tls_object @@ -930,7 +927,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye .{ sym_name, ver.major, ver.minor }, ); - try stubs_writer.print( + try stubs_asm.print( \\.balign {d} \\.{s} {s} \\.type {s}, %tls_object diff --git a/src/libs/glibc.zig b/src/libs/glibc.zig index b228ad60ad..1f3302da83 100644 --- a/src/libs/glibc.zig +++ b/src/libs/glibc.zig @@ -752,9 +752,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye var map_contents = std.array_list.Managed(u8).init(arena); for (metadata.all_versions[0 .. target_ver_index + 1]) |ver| { if (ver.patch == 0) { - try map_contents.writer().print("GLIBC_{d}.{d} {{ }};\n", .{ ver.major, ver.minor }); + try map_contents.print("GLIBC_{d}.{d} {{ }};\n", .{ ver.major, ver.minor }); } else { - try map_contents.writer().print("GLIBC_{d}.{d}.{d} {{ }};\n", .{ ver.major, ver.minor, ver.patch }); + try map_contents.print("GLIBC_{d}.{d}.{d} {{ }};\n", .{ ver.major, ver.minor, ver.patch }); } } try o_directory.handle.writeFile(.{ .sub_path = all_map_basename, .data = map_contents.items }); @@ -773,7 +773,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye try stubs_asm.appendSlice(".text\n"); var sym_i: usize = 0; - var sym_name_buf = std.array_list.Managed(u8).init(arena); + var sym_name_buf: std.Io.Writer.Allocating = .init(arena); var opt_symbol_name: ?[]const u8 = null; var versions_buffer: [32]u8 = undefined; var versions_len: usize = undefined; @@ -794,24 +794,23 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye // twice, which causes a "duplicate symbol" assembler error. var versions_written = std.AutoArrayHashMap(Version, void).init(arena); - var inc_fbs = std.io.fixedBufferStream(metadata.inclusions); - var inc_reader = inc_fbs.reader(); + var inc_reader: std.Io.Reader = .fixed(metadata.inclusions); - const fn_inclusions_len = try inc_reader.readInt(u16, .little); + const fn_inclusions_len = try inc_reader.takeInt(u16, .little); while (sym_i < fn_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); - try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); + _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); - opt_symbol_name = sym_name_buf.items; + opt_symbol_name = sym_name_buf.written(); versions_buffer = undefined; versions_len = 0; - break :n sym_name_buf.items; + break :n sym_name_buf.written(); }; - const targets = try std.leb.readUleb128(u64, inc_reader); - var lib_index = try inc_reader.readByte(); + const targets = try inc_reader.takeLeb128(u64); + var lib_index = try inc_reader.takeByte(); const is_terminal = (lib_index & (1 << 7)) != 0; if (is_terminal) { @@ -825,7 +824,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = try inc_reader.readByte(); + const byte = try inc_reader.takeByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index) { @@ -880,7 +879,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye "{s}_{d}_{d}", .{ sym_name, ver.major, ver.minor }, ); - try stubs_asm.writer().print( + try stubs_asm.print( \\.balign {d} \\.globl {s} \\.type {s}, %function @@ -905,7 +904,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye "{s}_{d}_{d}_{d}", .{ sym_name, ver.major, ver.minor, ver.patch }, ); - try stubs_asm.writer().print( + try stubs_asm.print( \\.balign {d} \\.globl {s} \\.type {s}, %function @@ -950,7 +949,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye // versions where the symbol didn't exist. We only care about modern glibc versions, so use // a strong reference. if (std.mem.eql(u8, lib.name, "c")) { - try stubs_asm.writer().print( + try stubs_asm.print( \\.balign {d} \\.globl _IO_stdin_used \\{s} _IO_stdin_used @@ -963,7 +962,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye try stubs_asm.appendSlice(".data\n"); - const obj_inclusions_len = try inc_reader.readInt(u16, .little); + const obj_inclusions_len = try inc_reader.takeInt(u16, .little); var sizes = try arena.alloc(u16, metadata.all_versions.len); @@ -974,17 +973,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye while (sym_i < obj_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); - try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); + _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); - opt_symbol_name = sym_name_buf.items; + opt_symbol_name = sym_name_buf.written(); versions_buffer = undefined; versions_len = 0; - break :n sym_name_buf.items; + break :n sym_name_buf.written(); }; - const targets = try std.leb.readUleb128(u64, inc_reader); - const size = try std.leb.readUleb128(u16, inc_reader); - var lib_index = try inc_reader.readByte(); + const targets = try inc_reader.takeLeb128(u64); + const size = try inc_reader.takeLeb128(u16); + var lib_index = try inc_reader.takeByte(); const is_terminal = (lib_index & (1 << 7)) != 0; if (is_terminal) { @@ -998,7 +997,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = try inc_reader.readByte(); + const byte = try inc_reader.takeByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index) { @@ -1055,7 +1054,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye "{s}_{d}_{d}", .{ sym_name, ver.major, ver.minor }, ); - try stubs_asm.writer().print( + try stubs_asm.print( \\.balign {d} \\.globl {s} \\.type {s}, %object @@ -1083,7 +1082,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye "{s}_{d}_{d}_{d}", .{ sym_name, ver.major, ver.minor, ver.patch }, ); - try stubs_asm.writer().print( + try stubs_asm.print( \\.balign {d} \\.globl {s} \\.type {s}, %object diff --git a/src/libs/musl.zig b/src/libs/musl.zig index 9c10e71e1e..ba9693a6c3 100644 --- a/src/libs/musl.zig +++ b/src/libs/musl.zig @@ -140,21 +140,21 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro if (!is_arch_specific) { // Look for an arch specific override. override_path.shrinkRetainingCapacity(0); - try override_path.writer().print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.s", .{ + try override_path.print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.s", .{ dirname, arch_name, noextbasename, }); if (source_table.contains(override_path.items)) continue; override_path.shrinkRetainingCapacity(0); - try override_path.writer().print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.S", .{ + try override_path.print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.S", .{ dirname, arch_name, noextbasename, }); if (source_table.contains(override_path.items)) continue; override_path.shrinkRetainingCapacity(0); - try override_path.writer().print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.c", .{ + try override_path.print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.c", .{ dirname, arch_name, noextbasename, }); if (source_table.contains(override_path.items)) diff --git a/src/libs/netbsd.zig b/src/libs/netbsd.zig index 04aa4ccfeb..f758f6de7e 100644 --- a/src/libs/netbsd.zig +++ b/src/libs/netbsd.zig @@ -460,18 +460,15 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye for (libs, 0..) |lib, lib_i| { stubs_asm.shrinkRetainingCapacity(0); - const stubs_writer = stubs_asm.writer(); - - try stubs_writer.writeAll(".text\n"); + try stubs_asm.appendSlice(".text\n"); var sym_i: usize = 0; - var sym_name_buf = std.array_list.Managed(u8).init(arena); + var sym_name_buf: std.Io.Writer.Allocating = .init(arena); var opt_symbol_name: ?[]const u8 = null; - var inc_fbs = std.io.fixedBufferStream(metadata.inclusions); - var inc_reader = inc_fbs.reader(); + var inc_reader: std.Io.Reader = .fixed(metadata.inclusions); - const fn_inclusions_len = try inc_reader.readInt(u16, .little); + const fn_inclusions_len = try inc_reader.takeInt(u16, .little); var chosen_ver_index: usize = 255; var chosen_is_weak: bool = undefined; @@ -479,17 +476,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye while (sym_i < fn_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); - try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); + _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); - opt_symbol_name = sym_name_buf.items; + opt_symbol_name = sym_name_buf.written(); chosen_ver_index = 255; - break :n sym_name_buf.items; + break :n sym_name_buf.written(); }; { - const targets = try std.leb.readUleb128(u64, inc_reader); - var lib_index = try inc_reader.readByte(); + const targets = try inc_reader.takeLeb128(u64); + var lib_index = try inc_reader.takeByte(); const is_weak = (lib_index & (1 << 6)) != 0; const is_terminal = (lib_index & (1 << 7)) != 0; @@ -502,7 +499,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = try inc_reader.readByte(); + const byte = try inc_reader.takeByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index and @@ -525,7 +522,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye // .globl _Exit // .type _Exit, %function // _Exit: .long 0 - try stubs_writer.print( + try stubs_asm.print( \\.balign {d} \\.{s} {s} \\.type {s}, %function @@ -542,9 +539,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye } } - try stubs_writer.writeAll(".data\n"); + try stubs_asm.appendSlice(".data\n"); - const obj_inclusions_len = try inc_reader.readInt(u16, .little); + const obj_inclusions_len = try inc_reader.takeInt(u16, .little); sym_i = 0; opt_symbol_name = null; @@ -554,18 +551,18 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye while (sym_i < obj_inclusions_len) : (sym_i += 1) { const sym_name = opt_symbol_name orelse n: { sym_name_buf.clearRetainingCapacity(); - try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); + _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); - opt_symbol_name = sym_name_buf.items; + opt_symbol_name = sym_name_buf.written(); chosen_ver_index = 255; - break :n sym_name_buf.items; + break :n sym_name_buf.written(); }; { - const targets = try std.leb.readUleb128(u64, inc_reader); - const size = try std.leb.readUleb128(u16, inc_reader); - var lib_index = try inc_reader.readByte(); + const targets = try inc_reader.takeLeb128(u64); + const size = try inc_reader.takeLeb128(u16); + var lib_index = try inc_reader.takeByte(); const is_weak = (lib_index & (1 << 6)) != 0; const is_terminal = (lib_index & (1 << 7)) != 0; @@ -578,7 +575,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); while (true) { - const byte = try inc_reader.readByte(); + const byte = try inc_reader.takeByte(); const last = (byte & 0b1000_0000) != 0; const ver_i = @as(u7, @truncate(byte)); if (ok_lib_and_target and ver_i <= target_ver_index and @@ -603,7 +600,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye // .type malloc_conf, %object // .size malloc_conf, 4 // malloc_conf: .fill 4, 1, 0 - try stubs_writer.print( + try stubs_asm.print( \\.balign {d} \\.{s} {s} \\.type {s}, %object -- cgit v1.2.3