| ... | ... | @@ -364,14 +364,14 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) |
| 364 | 364 | _ = lower.reloc(.{ .linker_tlsld = sym }); |
| 365 | 365 | lower.result_insts[lower.result_insts_len] = |
| 366 | 366 | try Instruction.new(.none, .lea, &[_]Operand{ |
| 367 | | .{ .reg = ops[0].reg.to64() }, |
| 367 | .{ .reg = .rdi }, |
| 368 | 368 | .{ .mem = Memory.rip(mem_op.sib.ptr_size, 0) }, |
| 369 | 369 | }); |
| 370 | 370 | lower.result_insts_len += 1; |
| 371 | 371 | if (lower.bin_file.cast(link.File.Elf)) |elf_file| { |
| 372 | 372 | _ = lower.reloc(.{ .linker_extern_fn = .{ |
| 373 | 373 | .atom_index = sym.atom_index, |
| 374 | | .sym_index = try elf_file.getGlobalSymbol("__tls_get_address", null), |
| 374 | .sym_index = try elf_file.getGlobalSymbol("__tls_get_addr", null), |
| 375 | 375 | } }); |
| 376 | 376 | } |
| 377 | 377 | lower.result_insts[lower.result_insts_len] = |
| ... | ... | @@ -386,8 +386,8 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) |
| 386 | 386 | } |
| 387 | 387 | emit_mnemonic = .lea; |
| 388 | 388 | break :op .{ .mem = Memory.sib(mem_op.sib.ptr_size, .{ |
| 389 | | .base = .{ .reg = ops[0].reg.to64() }, |
| 390 | | .disp = undefined, |
| 389 | .base = .{ .reg = .rax }, |
| 390 | .disp = std.math.minInt(i32), |
| 391 | 391 | }) }; |
| 392 | 392 | } else { |
| 393 | 393 | // Since we are linking statically, we emit LE model directly. |
| ... | ... | @@ -405,7 +405,7 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) |
| 405 | 405 | emit_mnemonic = .lea; |
| 406 | 406 | break :op .{ .mem = Memory.sib(mem_op.sib.ptr_size, .{ |
| 407 | 407 | .base = .{ .reg = ops[0].reg.to64() }, |
| 408 | | .disp = undefined, |
| 408 | .disp = std.math.minInt(i32), |
| 409 | 409 | }) }; |
| 410 | 410 | } |
| 411 | 411 | } |