| ... | ... | @@ -95,10 +95,11 @@ pub fn flushStaticLib(elf_file: *Elf, comp: *Compilation) !void { |
| 95 | 95 | const total_size: usize = blk: { |
| 96 | 96 | var pos: usize = elf.ARMAG.len; |
| 97 | 97 | pos += @sizeOf(elf.ar_hdr) + ar_symtab.size(.p64); |
| 98 | pos = mem.alignForward(usize, pos, 2); |
| 98 | 99 | |
| 99 | 100 | if (ar_strtab.size() > 0) { |
| 100 | | pos = mem.alignForward(usize, pos, 2); |
| 101 | 101 | pos += @sizeOf(elf.ar_hdr) + ar_strtab.size(); |
| 102 | pos = mem.alignForward(usize, pos, 2); |
| 102 | 103 | } |
| 103 | 104 | |
| 104 | 105 | for (files.items) |index| { |
| ... | ... | @@ -108,9 +109,9 @@ pub fn flushStaticLib(elf_file: *Elf, comp: *Compilation) !void { |
| 108 | 109 | .object => |x| &x.output_ar_state, |
| 109 | 110 | else => unreachable, |
| 110 | 111 | }; |
| 111 | | pos = mem.alignForward(usize, pos, 2); |
| 112 | 112 | state.file_off = pos; |
| 113 | 113 | pos += @sizeOf(elf.ar_hdr) + (math.cast(usize, state.size) orelse return error.Overflow); |
| 114 | pos = mem.alignForward(usize, pos, 2); |
| 114 | 115 | } |
| 115 | 116 | |
| 116 | 117 | break :blk pos; |
| ... | ... | @@ -131,17 +132,18 @@ pub fn flushStaticLib(elf_file: *Elf, comp: *Compilation) !void { |
| 131 | 132 | |
| 132 | 133 | // Write symtab |
| 133 | 134 | try ar_symtab.write(.p64, elf_file, &writer); |
| 135 | if (!mem.isAligned(writer.end, 2)) try writer.writeByte(0); |
| 134 | 136 | |
| 135 | 137 | // Write strtab |
| 136 | 138 | if (ar_strtab.size() > 0) { |
| 137 | | if (!mem.isAligned(writer.end, 2)) try writer.writeByte(0); |
| 138 | 139 | try ar_strtab.write(&writer); |
| 140 | if (!mem.isAligned(writer.end, 2)) try writer.writeByte(0); |
| 139 | 141 | } |
| 140 | 142 | |
| 141 | 143 | // Write object files |
| 142 | 144 | for (files.items) |index| { |
| 143 | | if (!mem.isAligned(writer.end, 2)) try writer.writeByte(0); |
| 144 | 145 | try elf_file.file(index).?.writeAr(elf_file, &writer); |
| 146 | if (!mem.isAligned(writer.end, 2)) try writer.writeByte(0); |
| 145 | 147 | } |
| 146 | 148 | |
| 147 | 149 | assert(writer.buffered().len == total_size); |