aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-08-02 22:58:10 +0200
committerJakub Konka <kubkon@jakubkonka.com>2022-08-03 21:19:41 +0200
commit2c8fc3b5979d6ca8befbf5de48a661a6fadbe819 (patch)
treebf31923511fe2f8721e42711eb44758819aed996 /src/link
parent90e326827062fc7899d02516cdaffa7da8366077 (diff)
downloadzig-2c8fc3b5979d6ca8befbf5de48a661a6fadbe819.tar.gz
zig-2c8fc3b5979d6ca8befbf5de48a661a6fadbe819.zip
macho: add missing u64 to usize casts
Fixes 32bit builds.
Diffstat (limited to 'src/link')
-rw-r--r--src/link/MachO.zig9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index 352e3bedf8..a955200a77 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -1487,7 +1487,8 @@ pub fn parseDylib(
var file_size = math.cast(usize, file_stat.size) orelse return error.Overflow;
const reader = file.reader();
- const fat_offset = try fat.getLibraryOffset(reader, cpu_arch);
+ const fat_offset = math.cast(usize, try fat.getLibraryOffset(reader, cpu_arch)) orelse
+ return error.Overflow;
try file.seekTo(fat_offset);
file_size -= fat_offset;
@@ -5091,7 +5092,7 @@ fn writeDyldInfoData(self: *MachO, ncmds: *u32, lc_writer: anytype) !void {
const needed_size = export_off + export_size - rebase_off;
link_seg.filesize = needed_size;
- var buffer = try gpa.alloc(u8, needed_size);
+ var buffer = try gpa.alloc(u8, math.cast(usize, needed_size) orelse return error.Overflow);
defer gpa.free(buffer);
mem.set(u8, buffer, 0);
@@ -5115,7 +5116,9 @@ fn writeDyldInfoData(self: *MachO, ncmds: *u32, lc_writer: anytype) !void {
});
try self.base.file.?.pwriteAll(buffer, rebase_off);
- try self.populateLazyBindOffsetsInStubHelper(buffer[lazy_bind_off - rebase_off ..][0..lazy_bind_size]);
+ const start = math.cast(usize, lazy_bind_off - rebase_off) orelse return error.Overflow;
+ const end = start + (math.cast(usize, lazy_bind_size) orelse return error.Overflow);
+ try self.populateLazyBindOffsetsInStubHelper(buffer[start..end]);
try lc_writer.writeStruct(macho.dyld_info_command{
.cmd = .DYLD_INFO_ONLY,