From 412519dd49ec2a42d0feb9842545dadaf1c6b68d Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Sun, 12 Nov 2023 11:08:27 +0100 Subject: x86_64: seems like we will need to keep track of rax and reserve rax+rdi for TLS --- src/arch/x86_64/Lower.zig | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/arch/x86_64/Lower.zig b/src/arch/x86_64/Lower.zig index fb3b60c5fd..c63d1bf264 100644 --- a/src/arch/x86_64/Lower.zig +++ b/src/arch/x86_64/Lower.zig @@ -364,14 +364,14 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) _ = lower.reloc(.{ .linker_tlsld = sym }); lower.result_insts[lower.result_insts_len] = try Instruction.new(.none, .lea, &[_]Operand{ - .{ .reg = ops[0].reg.to64() }, + .{ .reg = .rdi }, .{ .mem = Memory.rip(mem_op.sib.ptr_size, 0) }, }); lower.result_insts_len += 1; if (lower.bin_file.cast(link.File.Elf)) |elf_file| { _ = lower.reloc(.{ .linker_extern_fn = .{ .atom_index = sym.atom_index, - .sym_index = try elf_file.getGlobalSymbol("__tls_get_address", null), + .sym_index = try elf_file.getGlobalSymbol("__tls_get_addr", null), } }); } lower.result_insts[lower.result_insts_len] = @@ -386,8 +386,8 @@ fn emit(lower: *Lower, prefix: Prefix, mnemonic: Mnemonic, ops: []const Operand) } emit_mnemonic = .lea; break :op .{ .mem = Memory.sib(mem_op.sib.ptr_size, .{ - .base = .{ .reg = ops[0].reg.to64() }, - .disp = undefined, + .base = .{ .reg = .rax }, + .disp = std.math.minInt(i32), }) }; } else { // 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) emit_mnemonic = .lea; break :op .{ .mem = Memory.sib(mem_op.sib.ptr_size, .{ .base = .{ .reg = ops[0].reg.to64() }, - .disp = undefined, + .disp = std.math.minInt(i32), }) }; } } -- cgit v1.2.3