From 80b73e3e8fd5ef8b46152e929153ad45fc6220fd Mon Sep 17 00:00:00 2001 From: Jacob Young Date: Sun, 12 Nov 2023 18:10:06 -0500 Subject: x86_64: resolve tlv references on first use and spill to the stack This avoids any arbitrary memory operand possibly clobbering rax and sometime rdi with no warning. --- src/codegen.zig | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/codegen.zig') diff --git a/src/codegen.zig b/src/codegen.zig index 9420e8ca14..94f1f6ea0e 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -912,6 +912,9 @@ fn genDeclRef( } const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, decl_index); const sym = elf_file.symbol(sym_index); + if (is_threadlocal) { + return GenResult.mcv(.{ .load_tlv = sym.esym_index }); + } return GenResult.mcv(.{ .load_symbol = sym.esym_index }); } else if (bin_file.cast(link.File.MachO)) |macho_file| { if (is_extern) { -- cgit v1.2.3