| author | |
| committer | |
| log | ed2984f335bfaf7cc3cb7841554f4cbb958476dd |
| tree | 34d4629b23eb24cbe8e30ff1464960ce1c5842c4 |
| parent | a333ac846dd2ac8ed67f84a15bef272ccd65df37 |
2 files changed, 3 insertions(+), 9 deletions(-)
src/link/Elf.zig-7| ... | @@ -1682,13 +1682,6 @@ pub fn flushStaticLib(self: *Elf, comp: *Compilation) link.File.FlushError!void | ... | @@ -1682,13 +1682,6 @@ pub fn flushStaticLib(self: *Elf, comp: *Compilation) link.File.FlushError!void |
| 1682 | pos += @sizeOf(Archive.ar_hdr) + entry[2]; | 1682 | pos += @sizeOf(Archive.ar_hdr) + entry[2]; |
| 1683 | } | 1683 | } |
| 1684 | 1684 | ||
| 1685 | if (pos % 2 != 0) { | ||
| 1686 | pos += 1; | ||
| 1687 | try self.base.file.?.pwriteAll(&[1]u8{0}, pos); | ||
| 1688 | } | ||
| 1689 | |||
| 1690 | assert(mem.isAligned(pos, 2)); | ||
| 1691 | |||
| 1692 | // TODO parsed positionals | 1685 | // TODO parsed positionals |
| 1693 | 1686 | ||
| 1694 | // Magic bytes. | 1687 | // Magic bytes. |
src/link/Elf/Archive.zig+3-2| ... | @@ -85,11 +85,12 @@ pub fn parse(self: *Archive, elf_file: *Elf) !void { | ... | @@ -85,11 +85,12 @@ pub fn parse(self: *Archive, elf_file: *Elf) !void { |
| 85 | _ = try reader.readBytesNoEof(SARMAG); | 85 | _ = try reader.readBytesNoEof(SARMAG); |
| 86 | 86 | ||
| 87 | while (true) { | 87 | while (true) { |
| 88 | if (stream.pos >= self.data.len) break; | ||
| 89 | |||
| 88 | if (stream.pos % 2 != 0) { | 90 | if (stream.pos % 2 != 0) { |
| 89 | stream.pos += 1; | 91 | stream.pos += 1; |
| 90 | } | 92 | } |
| 91 | // TODO flag an error if stream.pos > self.data.len after alignment | 93 | const hdr = try reader.readStruct(ar_hdr); |
| 92 | const hdr = reader.readStruct(ar_hdr) catch break; | ||
| 93 | 94 | ||
| 94 | if (!mem.eql(u8, &hdr.ar_fmag, ARFMAG)) { | 95 | if (!mem.eql(u8, &hdr.ar_fmag, ARFMAG)) { |
| 95 | // TODO convert into an error | 96 | // TODO convert into an error |