authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-07-11 23:42:18+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-07-15 18:49:47+02:00
logda07251000c5247432017535e5cbcae05be6e00a
tree4e8bcbb832f7ecbaf83801409162d1bdf46047e4
parent496903c6a807389b3c4940370601ea338b9047f7

zld: make addend i64 in Signed reloc


1 files changed, 3 insertions(+), 3 deletions(-)

src/link/MachO/reloc.zig+3-3
......@@ -333,7 +333,7 @@ pub const Relocation = struct {
333333 };
334334
335335 pub const Signed = struct {
336 addend: i32,
336 addend: i64,
337337 correction: i4,
338338
339339 pub fn resolve(self: Signed, base: Relocation, source_addr: u64, target_addr: u64) !void {
......@@ -874,13 +874,13 @@ pub const Parser = struct {
874874 .X86_64_RELOC_SIGNED_4 => 4,
875875 else => unreachable,
876876 };
877 var addend = mem.readIntLittle(i32, self.block.code[parsed.offset..][0..4]) + correction;
877 var addend: i64 = mem.readIntLittle(i32, self.block.code[parsed.offset..][0..4]) + correction;
878878
879879 if (rel.r_extern == 0) {
880880 const source_sym = self.zld.locals.items[self.block.local_sym_index].payload.regular;
881881 const source_addr = source_sym.address + parsed.offset + @intCast(u32, addend) + 4;
882882 const target_sym = parsed.target.payload.regular;
883 addend = try math.cast(i32, @intCast(i64, source_addr) - @intCast(i64, target_sym.address));
883 addend = @intCast(i64, source_addr) - @intCast(i64, target_sym.address);
884884 }
885885
886886 parsed.payload = .{