aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2021-07-11 23:42:18 +0200
committerJakub Konka <kubkon@jakubkonka.com>2021-07-15 18:49:47 +0200
commitda07251000c5247432017535e5cbcae05be6e00a (patch)
tree4e8bcbb832f7ecbaf83801409162d1bdf46047e4 /src/link/MachO
parent496903c6a807389b3c4940370601ea338b9047f7 (diff)
downloadzig-da07251000c5247432017535e5cbcae05be6e00a.tar.gz
zig-da07251000c5247432017535e5cbcae05be6e00a.zip
zld: make addend i64 in Signed reloc
Diffstat (limited to 'src/link/MachO')
-rw-r--r--src/link/MachO/reloc.zig6
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 = .{