diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2025-08-27 19:51:12 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2025-08-29 11:11:59 -0700 |
| commit | 558bea2a76179fcc00779fdd326e5a866956fc9b (patch) | |
| tree | 6070f8eb4c330ed37ef566a1e3085bbb0326e10f /lib/std/Build/Step/CheckObject.zig | |
| parent | 4b948e8556b80cbc874415aa7c4bf9ac0027ffed (diff) | |
| download | zig-558bea2a76179fcc00779fdd326e5a866956fc9b.tar.gz zig-558bea2a76179fcc00779fdd326e5a866956fc9b.zip | |
std.Io: delete CountingReader
Diffstat (limited to 'lib/std/Build/Step/CheckObject.zig')
| -rw-r--r-- | lib/std/Build/Step/CheckObject.zig | 58 |
1 files changed, 16 insertions, 42 deletions
diff --git a/lib/std/Build/Step/CheckObject.zig b/lib/std/Build/Step/CheckObject.zig index 1e321de50a..06e74376b0 100644 --- a/lib/std/Build/Step/CheckObject.zig +++ b/lib/std/Build/Step/CheckObject.zig @@ -1224,14 +1224,12 @@ const MachODumper = struct { } fn parseRebaseInfo(ctx: ObjectContext, data: []const u8, rebases: *std.array_list.Managed(u64)) !void { - var stream = std.io.fixedBufferStream(data); - var creader = std.io.countingReader(stream.reader()); - const reader = creader.reader(); + var reader: std.Io.Reader = .fixed(data); var seg_id: ?u8 = null; var offset: u64 = 0; while (true) { - const byte = reader.readByte() catch break; + const byte = reader.takeByte() catch break; const opc = byte & macho.REBASE_OPCODE_MASK; const imm = byte & macho.REBASE_IMMEDIATE_MASK; switch (opc) { @@ -1239,17 +1237,17 @@ const MachODumper = struct { macho.REBASE_OPCODE_SET_TYPE_IMM => {}, macho.REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB => { seg_id = imm; - offset = try std.leb.readUleb128(u64, reader); + offset = try reader.takeLeb128(u64); }, macho.REBASE_OPCODE_ADD_ADDR_IMM_SCALED => { offset += imm * @sizeOf(u64); }, macho.REBASE_OPCODE_ADD_ADDR_ULEB => { - const addend = try std.leb.readUleb128(u64, reader); + const addend = try reader.takeLeb128(u64); offset += addend; }, macho.REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB => { - const addend = try std.leb.readUleb128(u64, reader); + const addend = try reader.takeLeb128(u64); const seg = ctx.segments.items[seg_id.?]; const addr = seg.vmaddr + offset; try rebases.append(addr); @@ -1266,11 +1264,11 @@ const MachODumper = struct { ntimes = imm; }, macho.REBASE_OPCODE_DO_REBASE_ULEB_TIMES => { - ntimes = try std.leb.readUleb128(u64, reader); + ntimes = try reader.takeLeb128(u64); }, macho.REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB => { - ntimes = try std.leb.readUleb128(u64, reader); - skip = try std.leb.readUleb128(u64, reader); + ntimes = try reader.takeLeb128(u64); + skip = try reader.takeLeb128(u64); }, else => unreachable, } @@ -1431,7 +1429,7 @@ const MachODumper = struct { defer arena.deinit(); var exports = std.array_list.Managed(Export).init(arena.allocator()); - var it = TrieIterator{ .data = data }; + var it: TrieIterator = .{ .stream = .fixed(data) }; try parseTrieNode(arena.allocator(), &it, "", &exports); mem.sort(Export, exports.items, {}, Export.lessThan); @@ -1462,42 +1460,18 @@ const MachODumper = struct { } const TrieIterator = struct { - data: []const u8, - pos: usize = 0, - - fn getStream(it: *TrieIterator) std.io.FixedBufferStream([]const u8) { - return std.io.fixedBufferStream(it.data[it.pos..]); - } + stream: std.Io.Reader, fn readUleb128(it: *TrieIterator) !u64 { - var stream = it.getStream(); - var creader = std.io.countingReader(stream.reader()); - const reader = creader.reader(); - const value = try std.leb.readUleb128(u64, reader); - it.pos += creader.bytes_read; - return value; + return it.stream.takeLeb128(u64); } fn readString(it: *TrieIterator) ![:0]const u8 { - var stream = it.getStream(); - const reader = stream.reader(); - - var count: usize = 0; - while (true) : (count += 1) { - const byte = try reader.readByte(); - if (byte == 0) break; - } - - const str = @as([*:0]const u8, @ptrCast(it.data.ptr + it.pos))[0..count :0]; - it.pos += count + 1; - return str; + return it.stream.takeSentinel(0); } fn readByte(it: *TrieIterator) !u8 { - var stream = it.getStream(); - const value = try stream.reader().readByte(); - it.pos += 1; - return value; + return it.stream.takeByte(); } }; @@ -1594,10 +1568,10 @@ const MachODumper = struct { const label = try it.readString(); const off = try it.readUleb128(); const prefix_label = try std.fmt.allocPrint(arena, "{s}{s}", .{ prefix, label }); - const curr = it.pos; - it.pos = off; + const curr = it.stream.seek; + it.stream.seek = off; try parseTrieNode(arena, it, prefix_label, exports); - it.pos = curr; + it.stream.seek = curr; } } |
