diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2021-07-11 23:42:18 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2021-07-15 18:49:47 +0200 |
| commit | da07251000c5247432017535e5cbcae05be6e00a (patch) | |
| tree | 4e8bcbb832f7ecbaf83801409162d1bdf46047e4 | |
| parent | 496903c6a807389b3c4940370601ea338b9047f7 (diff) | |
| download | zig-da07251000c5247432017535e5cbcae05be6e00a.tar.gz zig-da07251000c5247432017535e5cbcae05be6e00a.zip | |
zld: make addend i64 in Signed reloc
| -rw-r--r-- | src/link/MachO/reloc.zig | 6 |
1 files changed, 3 insertions, 3 deletions
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 = .{ |
