diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/MachO/zld.zig | 56 |
1 files changed, 1 insertions, 55 deletions
diff --git a/src/link/MachO/zld.zig b/src/link/MachO/zld.zig index f86ded39e8..23a7963cc0 100644 --- a/src/link/MachO/zld.zig +++ b/src/link/MachO/zld.zig @@ -2780,10 +2780,8 @@ pub const Zld = struct { const chunk_size = 0x4000; - var rb = RingBuffer{}; var hasher = Md5.init(.{}); var buffer: [chunk_size]u8 = undefined; - var hashed: usize = 0; for (subsections[0..count]) |cut| { const size = cut.end - cut.start; @@ -2799,24 +2797,10 @@ pub const Zld = struct { const amt = try self.file.preadAll(buffer[0..fsize], fstart); if (amt != fsize) return error.InputOutput; - var leftover = rb.append(buffer[0..fsize]); - while (leftover > 0) { - if (rb.full()) { - hasher.update(rb.getBuffer()); - hashed += rb.getBuffer().len; - rb.clear(); - } - leftover = rb.append(buffer[fsize - leftover ..]); - } + hasher.update(buffer[0..fsize]); } } - if (!rb.empty()) { - hasher.update(rb.getBuffer()); - hashed += rb.getBuffer().len; - rb.clear(); - } - hasher.final(&self.uuid_cmd.uuid); conformUuid(&self.uuid_cmd.uuid); }, @@ -2826,44 +2810,6 @@ pub const Zld = struct { try self.file.pwriteAll(&self.uuid_cmd.uuid, in_file); } - const RingBuffer = struct { - buffer: [chunk_size]u8 = undefined, - pos: usize = 0, - - const chunk_size = 0x4000; - - fn append(rb: *RingBuffer, data: []u8) usize { - const cpy_size = if (data.len > rb.available()) - data.len - rb.available() - else - data.len; - mem.copy(u8, rb.buffer[rb.pos..], data[0..cpy_size]); - rb.pos += cpy_size; - const leftover = data.len - cpy_size; - return leftover; - } - - fn available(rb: RingBuffer) usize { - return rb.buffer.len - rb.pos; - } - - fn clear(rb: *RingBuffer) void { - rb.pos = 0; - } - - fn full(rb: RingBuffer) bool { - return rb.buffer.len == rb.pos; - } - - fn empty(rb: RingBuffer) bool { - return rb.pos == 0; - } - - fn getBuffer(rb: *const RingBuffer) []const u8 { - return rb.buffer[0..rb.pos]; - } - }; - inline fn conformUuid(out: *[Md5.digest_length]u8) void { // LC_UUID uuids should conform to RFC 4122 UUID version 4 & UUID version 5 formats out[6] = (out[6] & 0x0F) | (3 << 4); |
