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