| ... | @@ -843,8 +843,10 @@ fn resolveRelocsX86( | ... | @@ -843,8 +843,10 @@ fn resolveRelocsX86( |
| 843 | log.debug(" | target_addr = 0x{x}", .{adjusted_target_addr}); | 843 | log.debug(" | target_addr = 0x{x}", .{adjusted_target_addr}); |
| 844 | const disp = try calcPcRelativeDisplacementX86(source_addr, adjusted_target_addr, 0); | 844 | const disp = try calcPcRelativeDisplacementX86(source_addr, adjusted_target_addr, 0); |
| 845 | | 845 | |
| 846 | // We need to rewrite the opcode from movq to leaq. | 846 | if (zld.tlv_ptr_table.get(target) == null) { |
| 847 | atom_code[rel_offset - 2] = 0x8d; | 847 | // We need to rewrite the opcode from movq to leaq. |
| | 848 | atom_code[rel_offset - 2] = 0x8d; |
| | 849 | } |
| 848 | | 850 | |
| 849 | mem.writeIntLittle(i32, atom_code[rel_offset..][0..4], disp); | 851 | mem.writeIntLittle(i32, atom_code[rel_offset..][0..4], disp); |
| 850 | }, | 852 | }, |