| author | |
| committer | |
| log | 8f4cb4614fa7fe275dff360e9f281cb43b99261a |
| tree | 8f6544f9b41a723d720cbd541740f7511fd17910 |
| parent | 5d7507214d5695842235cf0ad83849c5a2c97664 |
4 files changed, 84 insertions(+), 91 deletions(-)
src/libs/freebsd.zig+36-39| ... | @@ -512,7 +512,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -512,7 +512,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 512 | { | 512 | { |
| 513 | var map_contents = std.array_list.Managed(u8).init(arena); | 513 | var map_contents = std.array_list.Managed(u8).init(arena); |
| 514 | for (metadata.all_versions[0 .. target_ver_index + 1]) |ver| { | 514 | for (metadata.all_versions[0 .. target_ver_index + 1]) |ver| { |
| 515 | try map_contents.writer().print("FBSD_{d}.{d} {{ }};\n", .{ ver.major, ver.minor }); | 515 | try map_contents.print("FBSD_{d}.{d} {{ }};\n", .{ ver.major, ver.minor }); |
| 516 | } | 516 | } |
| 517 | try o_directory.handle.writeFile(.{ .sub_path = all_map_basename, .data = map_contents.items }); | 517 | try o_directory.handle.writeFile(.{ .sub_path = all_map_basename, .data = map_contents.items }); |
| 518 | map_contents.deinit(); | 518 | map_contents.deinit(); |
| ... | @@ -524,20 +524,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -524,20 +524,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 524 | for (libs, 0..) |lib, lib_i| { | 524 | for (libs, 0..) |lib, lib_i| { |
| 525 | stubs_asm.shrinkRetainingCapacity(0); | 525 | stubs_asm.shrinkRetainingCapacity(0); |
| 526 | 526 | ||
| 527 | const stubs_writer = stubs_asm.writer(); | 527 | try stubs_asm.appendSlice(".text\n"); |
| 528 | |||
| 529 | try stubs_writer.writeAll(".text\n"); | ||
| 530 | 528 | ||
| 531 | var sym_i: usize = 0; | 529 | var sym_i: usize = 0; |
| 532 | var sym_name_buf = std.array_list.Managed(u8).init(arena); | 530 | var sym_name_buf: std.Io.Writer.Allocating = .init(arena); |
| 533 | var opt_symbol_name: ?[]const u8 = null; | 531 | var opt_symbol_name: ?[]const u8 = null; |
| 534 | var versions = try std.DynamicBitSetUnmanaged.initEmpty(arena, metadata.all_versions.len); | 532 | var versions = try std.DynamicBitSetUnmanaged.initEmpty(arena, metadata.all_versions.len); |
| 535 | var weak_linkages = try std.DynamicBitSetUnmanaged.initEmpty(arena, metadata.all_versions.len); | 533 | var weak_linkages = try std.DynamicBitSetUnmanaged.initEmpty(arena, metadata.all_versions.len); |
| 536 | 534 | ||
| 537 | var inc_fbs = std.io.fixedBufferStream(metadata.inclusions); | 535 | var inc_reader: std.Io.Reader = .fixed(metadata.inclusions); |
| 538 | var inc_reader = inc_fbs.reader(); | ||
| 539 | 536 | ||
| 540 | const fn_inclusions_len = try inc_reader.readInt(u16, .little); | 537 | const fn_inclusions_len = try inc_reader.takeInt(u16, .little); |
| 541 | 538 | ||
| 542 | // Pick the default symbol version: | 539 | // Pick the default symbol version: |
| 543 | // - If there are no versions, don't emit it | 540 | // - If there are no versions, don't emit it |
| ... | @@ -550,19 +547,19 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -550,19 +547,19 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 550 | while (sym_i < fn_inclusions_len) : (sym_i += 1) { | 547 | while (sym_i < fn_inclusions_len) : (sym_i += 1) { |
| 551 | const sym_name = opt_symbol_name orelse n: { | 548 | const sym_name = opt_symbol_name orelse n: { |
| 552 | sym_name_buf.clearRetainingCapacity(); | 549 | sym_name_buf.clearRetainingCapacity(); |
| 553 | try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); | 550 | _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); |
| 554 | 551 | ||
| 555 | opt_symbol_name = sym_name_buf.items; | 552 | opt_symbol_name = sym_name_buf.written(); |
| 556 | versions.unsetAll(); | 553 | versions.unsetAll(); |
| 557 | weak_linkages.unsetAll(); | 554 | weak_linkages.unsetAll(); |
| 558 | chosen_def_ver_index = 255; | 555 | chosen_def_ver_index = 255; |
| 559 | chosen_unversioned_ver_index = 255; | 556 | chosen_unversioned_ver_index = 255; |
| 560 | 557 | ||
| 561 | break :n sym_name_buf.items; | 558 | break :n sym_name_buf.written(); |
| 562 | }; | 559 | }; |
| 563 | { | 560 | { |
| 564 | const targets = try std.leb.readUleb128(u64, inc_reader); | 561 | const targets = try inc_reader.takeLeb128(u64); |
| 565 | var lib_index = try inc_reader.readByte(); | 562 | var lib_index = try inc_reader.takeByte(); |
| 566 | 563 | ||
| 567 | const is_unversioned = (lib_index & (1 << 5)) != 0; | 564 | const is_unversioned = (lib_index & (1 << 5)) != 0; |
| 568 | const is_weak = (lib_index & (1 << 6)) != 0; | 565 | const is_weak = (lib_index & (1 << 6)) != 0; |
| ... | @@ -576,7 +573,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -576,7 +573,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 576 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); | 573 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); |
| 577 | 574 | ||
| 578 | while (true) { | 575 | while (true) { |
| 579 | const byte = try inc_reader.readByte(); | 576 | const byte = try inc_reader.takeByte(); |
| 580 | const last = (byte & 0b1000_0000) != 0; | 577 | const last = (byte & 0b1000_0000) != 0; |
| 581 | const ver_i = @as(u7, @truncate(byte)); | 578 | const ver_i = @as(u7, @truncate(byte)); |
| 582 | if (ok_lib_and_target and ver_i <= target_ver_index) { | 579 | 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 | ... | @@ -608,7 +605,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 608 | // .globl _Exit | 605 | // .globl _Exit |
| 609 | // .type _Exit, %function | 606 | // .type _Exit, %function |
| 610 | // _Exit: .long 0 | 607 | // _Exit: .long 0 |
| 611 | try stubs_writer.print( | 608 | try stubs_asm.print( |
| 612 | \\.balign {d} | 609 | \\.balign {d} |
| 613 | \\.{s} {s} | 610 | \\.{s} {s} |
| 614 | \\.type {s}, %function | 611 | \\.type {s}, %function |
| ... | @@ -640,7 +637,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -640,7 +637,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 640 | .{ sym_name, ver.major, ver.minor }, | 637 | .{ sym_name, ver.major, ver.minor }, |
| 641 | ); | 638 | ); |
| 642 | 639 | ||
| 643 | try stubs_writer.print( | 640 | try stubs_asm.print( |
| 644 | \\.balign {d} | 641 | \\.balign {d} |
| 645 | \\.{s} {s} | 642 | \\.{s} {s} |
| 646 | \\.type {s}, %function | 643 | \\.type {s}, %function |
| ... | @@ -665,14 +662,14 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -665,14 +662,14 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 665 | } | 662 | } |
| 666 | } | 663 | } |
| 667 | 664 | ||
| 668 | try stubs_writer.writeAll(".data\n"); | 665 | try stubs_asm.appendSlice(".data\n"); |
| 669 | 666 | ||
| 670 | // FreeBSD's `libc.so.7` contains strong references to `__progname` and `environ` which are | 667 | // FreeBSD's `libc.so.7` contains strong references to `__progname` and `environ` which are |
| 671 | // defined in the statically-linked startup code. Those references cause the linker to put | 668 | // defined in the statically-linked startup code. Those references cause the linker to put |
| 672 | // the symbols in the dynamic symbol table. We need to create dummy references to them here | 669 | // the symbols in the dynamic symbol table. We need to create dummy references to them here |
| 673 | // to get the same effect. | 670 | // to get the same effect. |
| 674 | if (std.mem.eql(u8, lib.name, "c")) { | 671 | if (std.mem.eql(u8, lib.name, "c")) { |
| 675 | try stubs_writer.print( | 672 | try stubs_asm.print( |
| 676 | \\.balign {d} | 673 | \\.balign {d} |
| 677 | \\.globl __progname | 674 | \\.globl __progname |
| 678 | \\.globl environ | 675 | \\.globl environ |
| ... | @@ -686,7 +683,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -686,7 +683,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 686 | }); | 683 | }); |
| 687 | } | 684 | } |
| 688 | 685 | ||
| 689 | const obj_inclusions_len = try inc_reader.readInt(u16, .little); | 686 | const obj_inclusions_len = try inc_reader.takeInt(u16, .little); |
| 690 | 687 | ||
| 691 | var sizes = try arena.alloc(u16, metadata.all_versions.len); | 688 | var sizes = try arena.alloc(u16, metadata.all_versions.len); |
| 692 | 689 | ||
| ... | @@ -696,21 +693,21 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -696,21 +693,21 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 696 | while (sym_i < obj_inclusions_len) : (sym_i += 1) { | 693 | while (sym_i < obj_inclusions_len) : (sym_i += 1) { |
| 697 | const sym_name = opt_symbol_name orelse n: { | 694 | const sym_name = opt_symbol_name orelse n: { |
| 698 | sym_name_buf.clearRetainingCapacity(); | 695 | sym_name_buf.clearRetainingCapacity(); |
| 699 | try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); | 696 | _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); |
| 700 | 697 | ||
| 701 | opt_symbol_name = sym_name_buf.items; | 698 | opt_symbol_name = sym_name_buf.written(); |
| 702 | versions.unsetAll(); | 699 | versions.unsetAll(); |
| 703 | weak_linkages.unsetAll(); | 700 | weak_linkages.unsetAll(); |
| 704 | chosen_def_ver_index = 255; | 701 | chosen_def_ver_index = 255; |
| 705 | chosen_unversioned_ver_index = 255; | 702 | chosen_unversioned_ver_index = 255; |
| 706 | 703 | ||
| 707 | break :n sym_name_buf.items; | 704 | break :n sym_name_buf.written(); |
| 708 | }; | 705 | }; |
| 709 | 706 | ||
| 710 | { | 707 | { |
| 711 | const targets = try std.leb.readUleb128(u64, inc_reader); | 708 | const targets = try inc_reader.takeLeb128(u64); |
| 712 | const size = try std.leb.readUleb128(u16, inc_reader); | 709 | const size = try inc_reader.takeLeb128(u16); |
| 713 | var lib_index = try inc_reader.readByte(); | 710 | var lib_index = try inc_reader.takeByte(); |
| 714 | 711 | ||
| 715 | const is_unversioned = (lib_index & (1 << 5)) != 0; | 712 | const is_unversioned = (lib_index & (1 << 5)) != 0; |
| 716 | const is_weak = (lib_index & (1 << 6)) != 0; | 713 | const is_weak = (lib_index & (1 << 6)) != 0; |
| ... | @@ -724,7 +721,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -724,7 +721,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 724 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); | 721 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); |
| 725 | 722 | ||
| 726 | while (true) { | 723 | while (true) { |
| 727 | const byte = try inc_reader.readByte(); | 724 | const byte = try inc_reader.takeByte(); |
| 728 | const last = (byte & 0b1000_0000) != 0; | 725 | const last = (byte & 0b1000_0000) != 0; |
| 729 | const ver_i = @as(u7, @truncate(byte)); | 726 | const ver_i = @as(u7, @truncate(byte)); |
| 730 | if (ok_lib_and_target and ver_i <= target_ver_index) { | 727 | 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 | ... | @@ -758,7 +755,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 758 | // .type malloc_conf, %object | 755 | // .type malloc_conf, %object |
| 759 | // .size malloc_conf, 4 | 756 | // .size malloc_conf, 4 |
| 760 | // malloc_conf: .fill 4, 1, 0 | 757 | // malloc_conf: .fill 4, 1, 0 |
| 761 | try stubs_writer.print( | 758 | try stubs_asm.print( |
| 762 | \\.balign {d} | 759 | \\.balign {d} |
| 763 | \\.{s} {s} | 760 | \\.{s} {s} |
| 764 | \\.type {s}, %object | 761 | \\.type {s}, %object |
| ... | @@ -794,7 +791,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -794,7 +791,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 794 | .{ sym_name, ver.major, ver.minor }, | 791 | .{ sym_name, ver.major, ver.minor }, |
| 795 | ); | 792 | ); |
| 796 | 793 | ||
| 797 | try stubs_asm.writer().print( | 794 | try stubs_asm.print( |
| 798 | \\.balign {d} | 795 | \\.balign {d} |
| 799 | \\.{s} {s} | 796 | \\.{s} {s} |
| 800 | \\.type {s}, %object | 797 | \\.type {s}, %object |
| ... | @@ -822,9 +819,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -822,9 +819,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 822 | } | 819 | } |
| 823 | } | 820 | } |
| 824 | 821 | ||
| 825 | try stubs_writer.writeAll(".tdata\n"); | 822 | try stubs_asm.appendSlice(".tdata\n"); |
| 826 | 823 | ||
| 827 | const tls_inclusions_len = try inc_reader.readInt(u16, .little); | 824 | const tls_inclusions_len = try inc_reader.takeInt(u16, .little); |
| 828 | 825 | ||
| 829 | sym_i = 0; | 826 | sym_i = 0; |
| 830 | opt_symbol_name = null; | 827 | opt_symbol_name = null; |
| ... | @@ -832,21 +829,21 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -832,21 +829,21 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 832 | while (sym_i < tls_inclusions_len) : (sym_i += 1) { | 829 | while (sym_i < tls_inclusions_len) : (sym_i += 1) { |
| 833 | const sym_name = opt_symbol_name orelse n: { | 830 | const sym_name = opt_symbol_name orelse n: { |
| 834 | sym_name_buf.clearRetainingCapacity(); | 831 | sym_name_buf.clearRetainingCapacity(); |
| 835 | try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); | 832 | _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); |
| 836 | 833 | ||
| 837 | opt_symbol_name = sym_name_buf.items; | 834 | opt_symbol_name = sym_name_buf.written(); |
| 838 | versions.unsetAll(); | 835 | versions.unsetAll(); |
| 839 | weak_linkages.unsetAll(); | 836 | weak_linkages.unsetAll(); |
| 840 | chosen_def_ver_index = 255; | 837 | chosen_def_ver_index = 255; |
| 841 | chosen_unversioned_ver_index = 255; | 838 | chosen_unversioned_ver_index = 255; |
| 842 | 839 | ||
| 843 | break :n sym_name_buf.items; | 840 | break :n sym_name_buf.written(); |
| 844 | }; | 841 | }; |
| 845 | 842 | ||
| 846 | { | 843 | { |
| 847 | const targets = try std.leb.readUleb128(u64, inc_reader); | 844 | const targets = try inc_reader.takeLeb128(u64); |
| 848 | const size = try std.leb.readUleb128(u16, inc_reader); | 845 | const size = try inc_reader.takeLeb128(u16); |
| 849 | var lib_index = try inc_reader.readByte(); | 846 | var lib_index = try inc_reader.takeByte(); |
| 850 | 847 | ||
| 851 | const is_unversioned = (lib_index & (1 << 5)) != 0; | 848 | const is_unversioned = (lib_index & (1 << 5)) != 0; |
| 852 | const is_weak = (lib_index & (1 << 6)) != 0; | 849 | const is_weak = (lib_index & (1 << 6)) != 0; |
| ... | @@ -860,7 +857,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -860,7 +857,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 860 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); | 857 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); |
| 861 | 858 | ||
| 862 | while (true) { | 859 | while (true) { |
| 863 | const byte = try inc_reader.readByte(); | 860 | const byte = try inc_reader.takeByte(); |
| 864 | const last = (byte & 0b1000_0000) != 0; | 861 | const last = (byte & 0b1000_0000) != 0; |
| 865 | const ver_i = @as(u7, @truncate(byte)); | 862 | const ver_i = @as(u7, @truncate(byte)); |
| 866 | if (ok_lib_and_target and ver_i <= target_ver_index) { | 863 | 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 | ... | @@ -894,7 +891,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 894 | // .type _ThreadRuneLocale, %object | 891 | // .type _ThreadRuneLocale, %object |
| 895 | // .size _ThreadRuneLocale, 4 | 892 | // .size _ThreadRuneLocale, 4 |
| 896 | // _ThreadRuneLocale: .fill 4, 1, 0 | 893 | // _ThreadRuneLocale: .fill 4, 1, 0 |
| 897 | try stubs_writer.print( | 894 | try stubs_asm.print( |
| 898 | \\.balign {d} | 895 | \\.balign {d} |
| 899 | \\.{s} {s} | 896 | \\.{s} {s} |
| 900 | \\.type {s}, %tls_object | 897 | \\.type {s}, %tls_object |
| ... | @@ -930,7 +927,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -930,7 +927,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 930 | .{ sym_name, ver.major, ver.minor }, | 927 | .{ sym_name, ver.major, ver.minor }, |
| 931 | ); | 928 | ); |
| 932 | 929 | ||
| 933 | try stubs_writer.print( | 930 | try stubs_asm.print( |
| 934 | \\.balign {d} | 931 | \\.balign {d} |
| 935 | \\.{s} {s} | 932 | \\.{s} {s} |
| 936 | \\.type {s}, %tls_object | 933 | \\.type {s}, %tls_object |
src/libs/glibc.zig+24-25| ... | @@ -752,9 +752,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -752,9 +752,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 752 | var map_contents = std.array_list.Managed(u8).init(arena); | 752 | var map_contents = std.array_list.Managed(u8).init(arena); |
| 753 | for (metadata.all_versions[0 .. target_ver_index + 1]) |ver| { | 753 | for (metadata.all_versions[0 .. target_ver_index + 1]) |ver| { |
| 754 | if (ver.patch == 0) { | 754 | if (ver.patch == 0) { |
| 755 | try map_contents.writer().print("GLIBC_{d}.{d} {{ }};\n", .{ ver.major, ver.minor }); | 755 | try map_contents.print("GLIBC_{d}.{d} {{ }};\n", .{ ver.major, ver.minor }); |
| 756 | } else { | 756 | } else { |
| 757 | try map_contents.writer().print("GLIBC_{d}.{d}.{d} {{ }};\n", .{ ver.major, ver.minor, ver.patch }); | 757 | try map_contents.print("GLIBC_{d}.{d}.{d} {{ }};\n", .{ ver.major, ver.minor, ver.patch }); |
| 758 | } | 758 | } |
| 759 | } | 759 | } |
| 760 | try o_directory.handle.writeFile(.{ .sub_path = all_map_basename, .data = map_contents.items }); | 760 | 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 | ... | @@ -773,7 +773,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 773 | try stubs_asm.appendSlice(".text\n"); | 773 | try stubs_asm.appendSlice(".text\n"); |
| 774 | 774 | ||
| 775 | var sym_i: usize = 0; | 775 | var sym_i: usize = 0; |
| 776 | var sym_name_buf = std.array_list.Managed(u8).init(arena); | 776 | var sym_name_buf: std.Io.Writer.Allocating = .init(arena); |
| 777 | var opt_symbol_name: ?[]const u8 = null; | 777 | var opt_symbol_name: ?[]const u8 = null; |
| 778 | var versions_buffer: [32]u8 = undefined; | 778 | var versions_buffer: [32]u8 = undefined; |
| 779 | var versions_len: usize = undefined; | 779 | var versions_len: usize = undefined; |
| ... | @@ -794,24 +794,23 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -794,24 +794,23 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 794 | // twice, which causes a "duplicate symbol" assembler error. | 794 | // twice, which causes a "duplicate symbol" assembler error. |
| 795 | var versions_written = std.AutoArrayHashMap(Version, void).init(arena); | 795 | var versions_written = std.AutoArrayHashMap(Version, void).init(arena); |
| 796 | 796 | ||
| 797 | var inc_fbs = std.io.fixedBufferStream(metadata.inclusions); | 797 | var inc_reader: std.Io.Reader = .fixed(metadata.inclusions); |
| 798 | var inc_reader = inc_fbs.reader(); | ||
| 799 | 798 | ||
| 800 | const fn_inclusions_len = try inc_reader.readInt(u16, .little); | 799 | const fn_inclusions_len = try inc_reader.takeInt(u16, .little); |
| 801 | 800 | ||
| 802 | while (sym_i < fn_inclusions_len) : (sym_i += 1) { | 801 | while (sym_i < fn_inclusions_len) : (sym_i += 1) { |
| 803 | const sym_name = opt_symbol_name orelse n: { | 802 | const sym_name = opt_symbol_name orelse n: { |
| 804 | sym_name_buf.clearRetainingCapacity(); | 803 | sym_name_buf.clearRetainingCapacity(); |
| 805 | try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); | 804 | _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); |
| 806 | 805 | ||
| 807 | opt_symbol_name = sym_name_buf.items; | 806 | opt_symbol_name = sym_name_buf.written(); |
| 808 | versions_buffer = undefined; | 807 | versions_buffer = undefined; |
| 809 | versions_len = 0; | 808 | versions_len = 0; |
| 810 | 809 | ||
| 811 | break :n sym_name_buf.items; | 810 | break :n sym_name_buf.written(); |
| 812 | }; | 811 | }; |
| 813 | const targets = try std.leb.readUleb128(u64, inc_reader); | 812 | const targets = try inc_reader.takeLeb128(u64); |
| 814 | var lib_index = try inc_reader.readByte(); | 813 | var lib_index = try inc_reader.takeByte(); |
| 815 | 814 | ||
| 816 | const is_terminal = (lib_index & (1 << 7)) != 0; | 815 | const is_terminal = (lib_index & (1 << 7)) != 0; |
| 817 | if (is_terminal) { | 816 | if (is_terminal) { |
| ... | @@ -825,7 +824,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -825,7 +824,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 825 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); | 824 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); |
| 826 | 825 | ||
| 827 | while (true) { | 826 | while (true) { |
| 828 | const byte = try inc_reader.readByte(); | 827 | const byte = try inc_reader.takeByte(); |
| 829 | const last = (byte & 0b1000_0000) != 0; | 828 | const last = (byte & 0b1000_0000) != 0; |
| 830 | const ver_i = @as(u7, @truncate(byte)); | 829 | const ver_i = @as(u7, @truncate(byte)); |
| 831 | if (ok_lib_and_target and ver_i <= target_ver_index) { | 830 | 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 | ... | @@ -880,7 +879,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 880 | "{s}_{d}_{d}", | 879 | "{s}_{d}_{d}", |
| 881 | .{ sym_name, ver.major, ver.minor }, | 880 | .{ sym_name, ver.major, ver.minor }, |
| 882 | ); | 881 | ); |
| 883 | try stubs_asm.writer().print( | 882 | try stubs_asm.print( |
| 884 | \\.balign {d} | 883 | \\.balign {d} |
| 885 | \\.globl {s} | 884 | \\.globl {s} |
| 886 | \\.type {s}, %function | 885 | \\.type {s}, %function |
| ... | @@ -905,7 +904,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -905,7 +904,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 905 | "{s}_{d}_{d}_{d}", | 904 | "{s}_{d}_{d}_{d}", |
| 906 | .{ sym_name, ver.major, ver.minor, ver.patch }, | 905 | .{ sym_name, ver.major, ver.minor, ver.patch }, |
| 907 | ); | 906 | ); |
| 908 | try stubs_asm.writer().print( | 907 | try stubs_asm.print( |
| 909 | \\.balign {d} | 908 | \\.balign {d} |
| 910 | \\.globl {s} | 909 | \\.globl {s} |
| 911 | \\.type {s}, %function | 910 | \\.type {s}, %function |
| ... | @@ -950,7 +949,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -950,7 +949,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 950 | // versions where the symbol didn't exist. We only care about modern glibc versions, so use | 949 | // versions where the symbol didn't exist. We only care about modern glibc versions, so use |
| 951 | // a strong reference. | 950 | // a strong reference. |
| 952 | if (std.mem.eql(u8, lib.name, "c")) { | 951 | if (std.mem.eql(u8, lib.name, "c")) { |
| 953 | try stubs_asm.writer().print( | 952 | try stubs_asm.print( |
| 954 | \\.balign {d} | 953 | \\.balign {d} |
| 955 | \\.globl _IO_stdin_used | 954 | \\.globl _IO_stdin_used |
| 956 | \\{s} _IO_stdin_used | 955 | \\{s} _IO_stdin_used |
| ... | @@ -963,7 +962,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -963,7 +962,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 963 | 962 | ||
| 964 | try stubs_asm.appendSlice(".data\n"); | 963 | try stubs_asm.appendSlice(".data\n"); |
| 965 | 964 | ||
| 966 | const obj_inclusions_len = try inc_reader.readInt(u16, .little); | 965 | const obj_inclusions_len = try inc_reader.takeInt(u16, .little); |
| 967 | 966 | ||
| 968 | var sizes = try arena.alloc(u16, metadata.all_versions.len); | 967 | var sizes = try arena.alloc(u16, metadata.all_versions.len); |
| 969 | 968 | ||
| ... | @@ -974,17 +973,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -974,17 +973,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 974 | while (sym_i < obj_inclusions_len) : (sym_i += 1) { | 973 | while (sym_i < obj_inclusions_len) : (sym_i += 1) { |
| 975 | const sym_name = opt_symbol_name orelse n: { | 974 | const sym_name = opt_symbol_name orelse n: { |
| 976 | sym_name_buf.clearRetainingCapacity(); | 975 | sym_name_buf.clearRetainingCapacity(); |
| 977 | try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); | 976 | _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); |
| 978 | 977 | ||
| 979 | opt_symbol_name = sym_name_buf.items; | 978 | opt_symbol_name = sym_name_buf.written(); |
| 980 | versions_buffer = undefined; | 979 | versions_buffer = undefined; |
| 981 | versions_len = 0; | 980 | versions_len = 0; |
| 982 | 981 | ||
| 983 | break :n sym_name_buf.items; | 982 | break :n sym_name_buf.written(); |
| 984 | }; | 983 | }; |
| 985 | const targets = try std.leb.readUleb128(u64, inc_reader); | 984 | const targets = try inc_reader.takeLeb128(u64); |
| 986 | const size = try std.leb.readUleb128(u16, inc_reader); | 985 | const size = try inc_reader.takeLeb128(u16); |
| 987 | var lib_index = try inc_reader.readByte(); | 986 | var lib_index = try inc_reader.takeByte(); |
| 988 | 987 | ||
| 989 | const is_terminal = (lib_index & (1 << 7)) != 0; | 988 | const is_terminal = (lib_index & (1 << 7)) != 0; |
| 990 | if (is_terminal) { | 989 | if (is_terminal) { |
| ... | @@ -998,7 +997,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -998,7 +997,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 998 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); | 997 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); |
| 999 | 998 | ||
| 1000 | while (true) { | 999 | while (true) { |
| 1001 | const byte = try inc_reader.readByte(); | 1000 | const byte = try inc_reader.takeByte(); |
| 1002 | const last = (byte & 0b1000_0000) != 0; | 1001 | const last = (byte & 0b1000_0000) != 0; |
| 1003 | const ver_i = @as(u7, @truncate(byte)); | 1002 | const ver_i = @as(u7, @truncate(byte)); |
| 1004 | if (ok_lib_and_target and ver_i <= target_ver_index) { | 1003 | 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 | ... | @@ -1055,7 +1054,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 1055 | "{s}_{d}_{d}", | 1054 | "{s}_{d}_{d}", |
| 1056 | .{ sym_name, ver.major, ver.minor }, | 1055 | .{ sym_name, ver.major, ver.minor }, |
| 1057 | ); | 1056 | ); |
| 1058 | try stubs_asm.writer().print( | 1057 | try stubs_asm.print( |
| 1059 | \\.balign {d} | 1058 | \\.balign {d} |
| 1060 | \\.globl {s} | 1059 | \\.globl {s} |
| 1061 | \\.type {s}, %object | 1060 | \\.type {s}, %object |
| ... | @@ -1083,7 +1082,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -1083,7 +1082,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 1083 | "{s}_{d}_{d}_{d}", | 1082 | "{s}_{d}_{d}_{d}", |
| 1084 | .{ sym_name, ver.major, ver.minor, ver.patch }, | 1083 | .{ sym_name, ver.major, ver.minor, ver.patch }, |
| 1085 | ); | 1084 | ); |
| 1086 | try stubs_asm.writer().print( | 1085 | try stubs_asm.print( |
| 1087 | \\.balign {d} | 1086 | \\.balign {d} |
| 1088 | \\.globl {s} | 1087 | \\.globl {s} |
| 1089 | \\.type {s}, %object | 1088 | \\.type {s}, %object |
src/libs/musl.zig+3-3| ... | @@ -140,21 +140,21 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro | ... | @@ -140,21 +140,21 @@ pub fn buildCrtFile(comp: *Compilation, in_crt_file: CrtFile, prog_node: std.Pro |
| 140 | if (!is_arch_specific) { | 140 | if (!is_arch_specific) { |
| 141 | // Look for an arch specific override. | 141 | // Look for an arch specific override. |
| 142 | override_path.shrinkRetainingCapacity(0); | 142 | override_path.shrinkRetainingCapacity(0); |
| 143 | try override_path.writer().print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.s", .{ | 143 | try override_path.print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.s", .{ |
| 144 | dirname, arch_name, noextbasename, | 144 | dirname, arch_name, noextbasename, |
| 145 | }); | 145 | }); |
| 146 | if (source_table.contains(override_path.items)) | 146 | if (source_table.contains(override_path.items)) |
| 147 | continue; | 147 | continue; |
| 148 | 148 | ||
| 149 | override_path.shrinkRetainingCapacity(0); | 149 | override_path.shrinkRetainingCapacity(0); |
| 150 | try override_path.writer().print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.S", .{ | 150 | try override_path.print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.S", .{ |
| 151 | dirname, arch_name, noextbasename, | 151 | dirname, arch_name, noextbasename, |
| 152 | }); | 152 | }); |
| 153 | if (source_table.contains(override_path.items)) | 153 | if (source_table.contains(override_path.items)) |
| 154 | continue; | 154 | continue; |
| 155 | 155 | ||
| 156 | override_path.shrinkRetainingCapacity(0); | 156 | override_path.shrinkRetainingCapacity(0); |
| 157 | try override_path.writer().print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.c", .{ | 157 | try override_path.print("{s}" ++ s ++ "{s}" ++ s ++ "{s}.c", .{ |
| 158 | dirname, arch_name, noextbasename, | 158 | dirname, arch_name, noextbasename, |
| 159 | }); | 159 | }); |
| 160 | if (source_table.contains(override_path.items)) | 160 | if (source_table.contains(override_path.items)) |
src/libs/netbsd.zig+21-24| ... | @@ -460,18 +460,15 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -460,18 +460,15 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 460 | for (libs, 0..) |lib, lib_i| { | 460 | for (libs, 0..) |lib, lib_i| { |
| 461 | stubs_asm.shrinkRetainingCapacity(0); | 461 | stubs_asm.shrinkRetainingCapacity(0); |
| 462 | 462 | ||
| 463 | const stubs_writer = stubs_asm.writer(); | 463 | try stubs_asm.appendSlice(".text\n"); |
| 464 | |||
| 465 | try stubs_writer.writeAll(".text\n"); | ||
| 466 | 464 | ||
| 467 | var sym_i: usize = 0; | 465 | var sym_i: usize = 0; |
| 468 | var sym_name_buf = std.array_list.Managed(u8).init(arena); | 466 | var sym_name_buf: std.Io.Writer.Allocating = .init(arena); |
| 469 | var opt_symbol_name: ?[]const u8 = null; | 467 | var opt_symbol_name: ?[]const u8 = null; |
| 470 | 468 | ||
| 471 | var inc_fbs = std.io.fixedBufferStream(metadata.inclusions); | 469 | var inc_reader: std.Io.Reader = .fixed(metadata.inclusions); |
| 472 | var inc_reader = inc_fbs.reader(); | ||
| 473 | 470 | ||
| 474 | const fn_inclusions_len = try inc_reader.readInt(u16, .little); | 471 | const fn_inclusions_len = try inc_reader.takeInt(u16, .little); |
| 475 | 472 | ||
| 476 | var chosen_ver_index: usize = 255; | 473 | var chosen_ver_index: usize = 255; |
| 477 | var chosen_is_weak: bool = undefined; | 474 | var chosen_is_weak: bool = undefined; |
| ... | @@ -479,17 +476,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -479,17 +476,17 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 479 | while (sym_i < fn_inclusions_len) : (sym_i += 1) { | 476 | while (sym_i < fn_inclusions_len) : (sym_i += 1) { |
| 480 | const sym_name = opt_symbol_name orelse n: { | 477 | const sym_name = opt_symbol_name orelse n: { |
| 481 | sym_name_buf.clearRetainingCapacity(); | 478 | sym_name_buf.clearRetainingCapacity(); |
| 482 | try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); | 479 | _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); |
| 483 | 480 | ||
| 484 | opt_symbol_name = sym_name_buf.items; | 481 | opt_symbol_name = sym_name_buf.written(); |
| 485 | chosen_ver_index = 255; | 482 | chosen_ver_index = 255; |
| 486 | 483 | ||
| 487 | break :n sym_name_buf.items; | 484 | break :n sym_name_buf.written(); |
| 488 | }; | 485 | }; |
| 489 | 486 | ||
| 490 | { | 487 | { |
| 491 | const targets = try std.leb.readUleb128(u64, inc_reader); | 488 | const targets = try inc_reader.takeLeb128(u64); |
| 492 | var lib_index = try inc_reader.readByte(); | 489 | var lib_index = try inc_reader.takeByte(); |
| 493 | 490 | ||
| 494 | const is_weak = (lib_index & (1 << 6)) != 0; | 491 | const is_weak = (lib_index & (1 << 6)) != 0; |
| 495 | const is_terminal = (lib_index & (1 << 7)) != 0; | 492 | const is_terminal = (lib_index & (1 << 7)) != 0; |
| ... | @@ -502,7 +499,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -502,7 +499,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 502 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); | 499 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); |
| 503 | 500 | ||
| 504 | while (true) { | 501 | while (true) { |
| 505 | const byte = try inc_reader.readByte(); | 502 | const byte = try inc_reader.takeByte(); |
| 506 | const last = (byte & 0b1000_0000) != 0; | 503 | const last = (byte & 0b1000_0000) != 0; |
| 507 | const ver_i = @as(u7, @truncate(byte)); | 504 | const ver_i = @as(u7, @truncate(byte)); |
| 508 | if (ok_lib_and_target and ver_i <= target_ver_index and | 505 | 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 | ... | @@ -525,7 +522,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 525 | // .globl _Exit | 522 | // .globl _Exit |
| 526 | // .type _Exit, %function | 523 | // .type _Exit, %function |
| 527 | // _Exit: .long 0 | 524 | // _Exit: .long 0 |
| 528 | try stubs_writer.print( | 525 | try stubs_asm.print( |
| 529 | \\.balign {d} | 526 | \\.balign {d} |
| 530 | \\.{s} {s} | 527 | \\.{s} {s} |
| 531 | \\.type {s}, %function | 528 | \\.type {s}, %function |
| ... | @@ -542,9 +539,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -542,9 +539,9 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 542 | } | 539 | } |
| 543 | } | 540 | } |
| 544 | 541 | ||
| 545 | try stubs_writer.writeAll(".data\n"); | 542 | try stubs_asm.appendSlice(".data\n"); |
| 546 | 543 | ||
| 547 | const obj_inclusions_len = try inc_reader.readInt(u16, .little); | 544 | const obj_inclusions_len = try inc_reader.takeInt(u16, .little); |
| 548 | 545 | ||
| 549 | sym_i = 0; | 546 | sym_i = 0; |
| 550 | opt_symbol_name = null; | 547 | opt_symbol_name = null; |
| ... | @@ -554,18 +551,18 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -554,18 +551,18 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 554 | while (sym_i < obj_inclusions_len) : (sym_i += 1) { | 551 | while (sym_i < obj_inclusions_len) : (sym_i += 1) { |
| 555 | const sym_name = opt_symbol_name orelse n: { | 552 | const sym_name = opt_symbol_name orelse n: { |
| 556 | sym_name_buf.clearRetainingCapacity(); | 553 | sym_name_buf.clearRetainingCapacity(); |
| 557 | try inc_reader.streamUntilDelimiter(sym_name_buf.writer(), 0, null); | 554 | _ = try inc_reader.streamDelimiter(&sym_name_buf.writer, 0); |
| 558 | 555 | ||
| 559 | opt_symbol_name = sym_name_buf.items; | 556 | opt_symbol_name = sym_name_buf.written(); |
| 560 | chosen_ver_index = 255; | 557 | chosen_ver_index = 255; |
| 561 | 558 | ||
| 562 | break :n sym_name_buf.items; | 559 | break :n sym_name_buf.written(); |
| 563 | }; | 560 | }; |
| 564 | 561 | ||
| 565 | { | 562 | { |
| 566 | const targets = try std.leb.readUleb128(u64, inc_reader); | 563 | const targets = try inc_reader.takeLeb128(u64); |
| 567 | const size = try std.leb.readUleb128(u16, inc_reader); | 564 | const size = try inc_reader.takeLeb128(u16); |
| 568 | var lib_index = try inc_reader.readByte(); | 565 | var lib_index = try inc_reader.takeByte(); |
| 569 | 566 | ||
| 570 | const is_weak = (lib_index & (1 << 6)) != 0; | 567 | const is_weak = (lib_index & (1 << 6)) != 0; |
| 571 | const is_terminal = (lib_index & (1 << 7)) != 0; | 568 | const is_terminal = (lib_index & (1 << 7)) != 0; |
| ... | @@ -578,7 +575,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye | ... | @@ -578,7 +575,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 578 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); | 575 | ((targets & (@as(u64, 1) << @as(u6, @intCast(target_targ_index)))) != 0); |
| 579 | 576 | ||
| 580 | while (true) { | 577 | while (true) { |
| 581 | const byte = try inc_reader.readByte(); | 578 | const byte = try inc_reader.takeByte(); |
| 582 | const last = (byte & 0b1000_0000) != 0; | 579 | const last = (byte & 0b1000_0000) != 0; |
| 583 | const ver_i = @as(u7, @truncate(byte)); | 580 | const ver_i = @as(u7, @truncate(byte)); |
| 584 | if (ok_lib_and_target and ver_i <= target_ver_index and | 581 | 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 | ... | @@ -603,7 +600,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye |
| 603 | // .type malloc_conf, %object | 600 | // .type malloc_conf, %object |
| 604 | // .size malloc_conf, 4 | 601 | // .size malloc_conf, 4 |
| 605 | // malloc_conf: .fill 4, 1, 0 | 602 | // malloc_conf: .fill 4, 1, 0 |
| 606 | try stubs_writer.print( | 603 | try stubs_asm.print( |
| 607 | \\.balign {d} | 604 | \\.balign {d} |
| 608 | \\.{s} {s} | 605 | \\.{s} {s} |
| 609 | \\.type {s}, %object | 606 | \\.type {s}, %object |