From c0c5acf074a9eba01e892184489ac3e837d739bc Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Tue, 27 Dec 2022 17:04:57 +0100 Subject: [PATCH] macho+zld: fix 32bit build --- src/link/MachO.zig | 6 +++--- src/link/MachO/zld.zig | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 1ab71b6a5c..9b06ee2536 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -3616,7 +3616,7 @@ fn writeStrtab(self: *MachO) !void { log.debug("writing string table from 0x{x} to 0x{x}", .{ offset, offset + needed_size_aligned }); - const buffer = try gpa.alloc(u8, needed_size_aligned); + const buffer = try gpa.alloc(u8, math.cast(usize, needed_size_aligned) orelse return error.Overflow); defer gpa.free(buffer); mem.set(u8, buffer, 0); mem.copy(u8, buffer, self.strtab.buffer.items); @@ -3653,7 +3653,7 @@ fn writeDysymtab(self: *MachO, ctx: SymtabCtx) !void { var buf = std.ArrayList(u8).init(gpa); defer buf.deinit(); - try buf.ensureTotalCapacity(needed_size_aligned); + try buf.ensureTotalCapacity(math.cast(usize, needed_size_aligned) orelse return error.Overflow); const writer = buf.writer(); if (self.stubs_section_index) |sect_id| { @@ -3692,7 +3692,7 @@ fn writeDysymtab(self: *MachO, ctx: SymtabCtx) !void { } } - const padding = needed_size_aligned - needed_size; + const padding = math.cast(usize, needed_size_aligned - needed_size) orelse return error.Overflow; if (padding > 0) { buf.appendNTimesAssumeCapacity(0, padding); } diff --git a/src/link/MachO/zld.zig b/src/link/MachO/zld.zig index 4c9a87e601..3305267b62 100644 --- a/src/link/MachO/zld.zig +++ b/src/link/MachO/zld.zig @@ -2416,7 +2416,7 @@ pub const Zld = struct { assert(mem.isAlignedGeneric(u64, offset, @alignOf(u64))); const needed_size = buffer.items.len; const needed_size_aligned = mem.alignForwardGeneric(u64, needed_size, @alignOf(u64)); - const padding = needed_size_aligned - needed_size; + const padding = math.cast(usize, needed_size_aligned - needed_size) orelse return error.Overflow; if (padding > 0) { try buffer.ensureUnusedCapacity(padding); buffer.appendNTimesAssumeCapacity(0, padding); @@ -2499,7 +2499,7 @@ pub const Zld = struct { const needed_size_aligned = mem.alignForwardGeneric(u64, needed_size, @alignOf(u64)); seg.filesize = offset + needed_size_aligned - seg.fileoff; - const buffer = try self.gpa.alloc(u8, needed_size_aligned); + const buffer = try self.gpa.alloc(u8, math.cast(usize, needed_size_aligned) orelse return error.Overflow); defer self.gpa.free(buffer); mem.set(u8, buffer, 0); mem.copy(u8, buffer, mem.sliceAsBytes(out_dice.items)); @@ -2621,7 +2621,7 @@ pub const Zld = struct { log.debug("writing string table from 0x{x} to 0x{x}", .{ offset, offset + needed_size_aligned }); - const buffer = try self.gpa.alloc(u8, needed_size_aligned); + const buffer = try self.gpa.alloc(u8, math.cast(usize, needed_size_aligned) orelse return error.Overflow); defer self.gpa.free(buffer); mem.set(u8, buffer, 0); mem.copy(u8, buffer, self.strtab.buffer.items); @@ -2658,7 +2658,7 @@ pub const Zld = struct { var buf = std.ArrayList(u8).init(gpa); defer buf.deinit(); - try buf.ensureTotalCapacityPrecise(needed_size_aligned); + try buf.ensureTotalCapacityPrecise(math.cast(usize, needed_size_aligned) orelse return error.Overflow); const writer = buf.writer(); if (self.getSectionByName("__TEXT", "__stubs")) |sect_id| { @@ -2694,7 +2694,7 @@ pub const Zld = struct { } } - const padding = needed_size_aligned - needed_size; + const padding = math.cast(usize, needed_size_aligned - needed_size) orelse return error.Overflow; if (padding > 0) { buf.appendNTimesAssumeCapacity(0, padding); }