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 {...@@ -333,7 +333,7 @@ pub const Relocation = struct {
333 };333 };
334334
335 pub const Signed = struct {335 pub const Signed = struct {
336 addend: i32,336 addend: i64,
337 correction: i4,337 correction: i4,
338338
339 pub fn resolve(self: Signed, base: Relocation, source_addr: u64, target_addr: u64) !void {339 pub fn resolve(self: Signed, base: Relocation, source_addr: u64, target_addr: u64) !void {
...@@ -874,13 +874,13 @@ pub const Parser = struct {...@@ -874,13 +874,13 @@ pub const Parser = struct {
874 .X86_64_RELOC_SIGNED_4 => 4,874 .X86_64_RELOC_SIGNED_4 => 4,
875 else => unreachable,875 else => unreachable,
876 };876 };
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
879 if (rel.r_extern == 0) {879 if (rel.r_extern == 0) {
880 const source_sym = self.zld.locals.items[self.block.local_sym_index].payload.regular;880 const source_sym = self.zld.locals.items[self.block.local_sym_index].payload.regular;
881 const source_addr = source_sym.address + parsed.offset + @intCast(u32, addend) + 4;881 const source_addr = source_sym.address + parsed.offset + @intCast(u32, addend) + 4;
882 const target_sym = parsed.target.payload.regular;882 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);
884 }884 }
885885
886 parsed.payload = .{886 parsed.payload = .{