Commit c0c5acf074

Jakub Konka <kubkon@jakubkonka.com>
2022-12-27 17:04:57
macho+zld: fix 32bit build
1 parent 8d29c84
Changed files (2)
src
link
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);
         }
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);
     }