From da07251000c5247432017535e5cbcae05be6e00a Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Sun, 11 Jul 2021 23:42:18 +0200 Subject: zld: make addend i64 in Signed reloc --- src/link/MachO/reloc.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/link') diff --git a/src/link/MachO/reloc.zig b/src/link/MachO/reloc.zig index 7291919765..2008d53e3f 100644 --- a/src/link/MachO/reloc.zig +++ b/src/link/MachO/reloc.zig @@ -333,7 +333,7 @@ pub const Relocation = struct { }; pub const Signed = struct { - addend: i32, + addend: i64, correction: i4, pub fn resolve(self: Signed, base: Relocation, source_addr: u64, target_addr: u64) !void { @@ -874,13 +874,13 @@ pub const Parser = struct { .X86_64_RELOC_SIGNED_4 => 4, else => unreachable, }; - var addend = mem.readIntLittle(i32, self.block.code[parsed.offset..][0..4]) + correction; + var addend: i64 = mem.readIntLittle(i32, self.block.code[parsed.offset..][0..4]) + correction; if (rel.r_extern == 0) { const source_sym = self.zld.locals.items[self.block.local_sym_index].payload.regular; const source_addr = source_sym.address + parsed.offset + @intCast(u32, addend) + 4; const target_sym = parsed.target.payload.regular; - addend = try math.cast(i32, @intCast(i64, source_addr) - @intCast(i64, target_sym.address)); + addend = @intCast(i64, source_addr) - @intCast(i64, target_sym.address); } parsed.payload = .{ -- cgit v1.2.3