| ... | @@ -2416,7 +2416,7 @@ pub const Zld = struct { | ... | @@ -2416,7 +2416,7 @@ pub const Zld = struct { |
| 2416 | assert(mem.isAlignedGeneric(u64, offset, @alignOf(u64))); | 2416 | assert(mem.isAlignedGeneric(u64, offset, @alignOf(u64))); |
| 2417 | const needed_size = buffer.items.len; | 2417 | const needed_size = buffer.items.len; |
| 2418 | const needed_size_aligned = mem.alignForwardGeneric(u64, needed_size, @alignOf(u64)); | 2418 | const needed_size_aligned = mem.alignForwardGeneric(u64, needed_size, @alignOf(u64)); |
| 2419 | const padding = needed_size_aligned - needed_size; | 2419 | const padding = math.cast(usize, needed_size_aligned - needed_size) orelse return error.Overflow; |
| 2420 | if (padding > 0) { | 2420 | if (padding > 0) { |
| 2421 | try buffer.ensureUnusedCapacity(padding); | 2421 | try buffer.ensureUnusedCapacity(padding); |
| 2422 | buffer.appendNTimesAssumeCapacity(0, padding); | 2422 | buffer.appendNTimesAssumeCapacity(0, padding); |
| ... | @@ -2499,7 +2499,7 @@ pub const Zld = struct { | ... | @@ -2499,7 +2499,7 @@ pub const Zld = struct { |
| 2499 | const needed_size_aligned = mem.alignForwardGeneric(u64, needed_size, @alignOf(u64)); | 2499 | const needed_size_aligned = mem.alignForwardGeneric(u64, needed_size, @alignOf(u64)); |
| 2500 | seg.filesize = offset + needed_size_aligned - seg.fileoff; | 2500 | seg.filesize = offset + needed_size_aligned - seg.fileoff; |
| 2501 | | 2501 | |
| 2502 | const buffer = try self.gpa.alloc(u8, needed_size_aligned); | 2502 | const buffer = try self.gpa.alloc(u8, math.cast(usize, needed_size_aligned) orelse return error.Overflow); |
| 2503 | defer self.gpa.free(buffer); | 2503 | defer self.gpa.free(buffer); |
| 2504 | mem.set(u8, buffer, 0); | 2504 | mem.set(u8, buffer, 0); |
| 2505 | mem.copy(u8, buffer, mem.sliceAsBytes(out_dice.items)); | 2505 | mem.copy(u8, buffer, mem.sliceAsBytes(out_dice.items)); |
| ... | @@ -2621,7 +2621,7 @@ pub const Zld = struct { | ... | @@ -2621,7 +2621,7 @@ pub const Zld = struct { |
| 2621 | | 2621 | |
| 2622 | log.debug("writing string table from 0x{x} to 0x{x}", .{ offset, offset + needed_size_aligned }); | 2622 | log.debug("writing string table from 0x{x} to 0x{x}", .{ offset, offset + needed_size_aligned }); |
| 2623 | | 2623 | |
| 2624 | const buffer = try self.gpa.alloc(u8, needed_size_aligned); | 2624 | const buffer = try self.gpa.alloc(u8, math.cast(usize, needed_size_aligned) orelse return error.Overflow); |
| 2625 | defer self.gpa.free(buffer); | 2625 | defer self.gpa.free(buffer); |
| 2626 | mem.set(u8, buffer, 0); | 2626 | mem.set(u8, buffer, 0); |
| 2627 | mem.copy(u8, buffer, self.strtab.buffer.items); | 2627 | mem.copy(u8, buffer, self.strtab.buffer.items); |
| ... | @@ -2658,7 +2658,7 @@ pub const Zld = struct { | ... | @@ -2658,7 +2658,7 @@ pub const Zld = struct { |
| 2658 | | 2658 | |
| 2659 | var buf = std.ArrayList(u8).init(gpa); | 2659 | var buf = std.ArrayList(u8).init(gpa); |
| 2660 | defer buf.deinit(); | 2660 | defer buf.deinit(); |
| 2661 | try buf.ensureTotalCapacityPrecise(needed_size_aligned); | 2661 | try buf.ensureTotalCapacityPrecise(math.cast(usize, needed_size_aligned) orelse return error.Overflow); |
| 2662 | const writer = buf.writer(); | 2662 | const writer = buf.writer(); |
| 2663 | | 2663 | |
| 2664 | if (self.getSectionByName("__TEXT", "__stubs")) |sect_id| { | 2664 | if (self.getSectionByName("__TEXT", "__stubs")) |sect_id| { |
| ... | @@ -2694,7 +2694,7 @@ pub const Zld = struct { | ... | @@ -2694,7 +2694,7 @@ pub const Zld = struct { |
| 2694 | } | 2694 | } |
| 2695 | } | 2695 | } |
| 2696 | | 2696 | |
| 2697 | const padding = needed_size_aligned - needed_size; | 2697 | const padding = math.cast(usize, needed_size_aligned - needed_size) orelse return error.Overflow; |
| 2698 | if (padding > 0) { | 2698 | if (padding > 0) { |
| 2699 | buf.appendNTimesAssumeCapacity(0, padding); | 2699 | buf.appendNTimesAssumeCapacity(0, padding); |
| 2700 | } | 2700 | } |