aboutsummaryrefslogtreecommitdiff
path: root/src-self-hosted/codegen
diff options
context:
space:
mode:
authorJay Petacat <jay@jayschwa.net>2020-07-27 19:03:47 -0400
committerAndrew Kelley <andrew@ziglang.org>2020-07-28 01:36:26 +0000
commit1c2e65fe1de66e8ebb8953a67fe327bae3251f30 (patch)
tree5a56eecdda9296efaa9fb49d681aea7d5815092d /src-self-hosted/codegen
parent488df7f1d1f7300bfb23134cc79fed2cef917ae2 (diff)
downloadzig-1c2e65fe1de66e8ebb8953a67fe327bae3251f30.tar.gz
zig-1c2e65fe1de66e8ebb8953a67fe327bae3251f30.zip
std.elf: Fix read functions for 32-bit targets
The buffer index was declared as `u64`, which overflows `usize` on a 32-bit target. The following example program failed to compile for 32-bit targets: ```zig const std = @import("std"); pub fn main() !void { const alloc = std.testing.allocator; const file = std.io.getStdIn(); _ = try std.elf.readAllHeaders(alloc, file); } ``` ``` lib/zig/std/elf.zig:543:36: error: expected type 'usize', found 'u64' const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) { ^ lib/zig/std/elf.zig:543:36: note: unsigned 32-bit int cannot represent all possible unsigned 64-bit values const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) { ^ lib/zig/std/elf.zig:543:35: note: referenced here const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) { ^ lib/zig/std/elf.zig:348:5: note: referenced here try preadNoEof(file, &hdr_buf, 0); ^ lib/zig/std/elf.zig:392:19: note: referenced here .header = try readHeader(file), ```
Diffstat (limited to 'src-self-hosted/codegen')
0 files changed, 0 insertions, 0 deletions