aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-01-21 17:17:34 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-01-21 17:17:34 +0100
commit6fd1d7b37265f86d5926ed684e0301a6319497d7 (patch)
tree34a60bf901d042814c9f66175df4346878e31b61 /src/link
parent983e37340913383647727a7118c2824baf23d2ea (diff)
downloadzig-6fd1d7b37265f86d5926ed684e0301a6319497d7.tar.gz
zig-6fd1d7b37265f86d5926ed684e0301a6319497d7.zip
zld: fix 32bit build
Diffstat (limited to 'src/link')
-rw-r--r--src/link/MachO/UnwindInfo.zig9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/link/MachO/UnwindInfo.zig b/src/link/MachO/UnwindInfo.zig
index 8f765756b3..07091af08a 100644
--- a/src/link/MachO/UnwindInfo.zig
+++ b/src/link/MachO/UnwindInfo.zig
@@ -568,7 +568,8 @@ pub fn write(info: *UnwindInfo, zld: *Zld) !void {
// Finalize missing address values
rec.rangeStart += text_sect.addr - seg.vmaddr;
if (rec.personalityFunction > 0) {
- rec.personalityFunction = personalities[rec.personalityFunction - 1];
+ const index = math.cast(usize, rec.personalityFunction - 1) orelse return error.Overflow;
+ rec.personalityFunction = personalities[index];
}
if (rec.compactUnwindEncoding > 0 and !UnwindEncoding.isDwarf(rec.compactUnwindEncoding, cpu_arch)) {
@@ -653,13 +654,15 @@ pub fn write(info: *UnwindInfo, zld: *Zld) !void {
try page.write(info, writer);
const nwritten = cwriter.bytes_written - start;
if (nwritten < second_level_page_bytes) {
- try writer.writeByteNTimes(0, second_level_page_bytes - nwritten);
+ const offset = math.cast(usize, second_level_page_bytes - nwritten) orelse return error.Overflow;
+ try writer.writeByteNTimes(0, offset);
}
}
const padding = buffer.items.len - cwriter.bytes_written;
if (padding > 0) {
- mem.set(u8, buffer.items[cwriter.bytes_written..], 0);
+ const offset = math.cast(usize, cwriter.bytes_written) orelse return error.Overflow;
+ mem.set(u8, buffer.items[offset..], 0);
}
try zld.file.pwriteAll(buffer.items, sect.offset);