authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-10-20 20:00:25+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-10-22 07:59:24+02:00
log93cc5496e1cca17ac8bc766bbb6aaec96ebb3588
treed7ac2a8531c3f8b677fdfcf408a8189f72d88144
parent5823f19c5e86e42b82240756ee9ffad536359c4b

macho: rewrite movq to leaq when TLV is not external pointer


1 files changed, 4 insertions(+), 2 deletions(-)

src/link/MachO/ZldAtom.zig+4-2
......@@ -843,8 +843,10 @@ fn resolveRelocsX86(
843843 log.debug(" | target_addr = 0x{x}", .{adjusted_target_addr});
844844 const disp = try calcPcRelativeDisplacementX86(source_addr, adjusted_target_addr, 0);
845845
846 // We need to rewrite the opcode from movq to leaq.
847 atom_code[rel_offset - 2] = 0x8d;
846 if (zld.tlv_ptr_table.get(target) == null) {
847 // We need to rewrite the opcode from movq to leaq.
848 atom_code[rel_offset - 2] = 0x8d;
849 }
848850
849851 mem.writeIntLittle(i32, atom_code[rel_offset..][0..4], disp);
850852 },