| author | |
| committer | |
| log | 0d00b7c585f0e3a20ace71105f562bd7bdd14489 |
| tree | 1ae58fba48d94a4078c81c981b17d5c933459d8f |
| parent | 9a1fbb27059ec59b2e6f61c713b9c3120125a3da |
3 files changed, 4 insertions(+), 2 deletions(-)
src/arch/x86_64/Emit.zig+1-1| ... | @@ -84,7 +84,7 @@ pub fn emitMir(emit: *Emit) Error!void { | ... | @@ -84,7 +84,7 @@ pub fn emitMir(emit: *Emit) Error!void { |
| 84 | if (emit.bin_file.options.pic) { | 84 | if (emit.bin_file.options.pic) { |
| 85 | const r_type: u32 = if (sym.flags.has_zig_got) | 85 | const r_type: u32 = if (sym.flags.has_zig_got) |
| 86 | link.File.Elf.R_X86_64_ZIG_GOTPCREL | 86 | link.File.Elf.R_X86_64_ZIG_GOTPCREL |
| 87 | else if (sym.flags.has_got) | 87 | else if (sym.flags.needs_got) |
| 88 | std.elf.R_X86_64_GOTPCREL | 88 | std.elf.R_X86_64_GOTPCREL |
| 89 | else | 89 | else |
| 90 | std.elf.R_X86_64_PC32; | 90 | std.elf.R_X86_64_PC32; |
src/codegen.zig+1| ... | @@ -904,6 +904,7 @@ fn genDeclRef( | ... | @@ -904,6 +904,7 @@ fn genDeclRef( |
| 904 | else | 904 | else |
| 905 | null; | 905 | null; |
| 906 | const sym_index = try elf_file.getGlobalSymbol(name, lib_name); | 906 | const sym_index = try elf_file.getGlobalSymbol(name, lib_name); |
| 907 | elf_file.symbol(elf_file.zigModulePtr().symbol(sym_index)).flags.needs_got = true; | ||
| 907 | return GenResult.mcv(.{ .lea_symbol = sym_index }); | 908 | return GenResult.mcv(.{ .lea_symbol = sym_index }); |
| 908 | } | 909 | } |
| 909 | const sym_index = try elf_file.getOrCreateMetadataForDecl(decl_index); | 910 | const sym_index = try elf_file.getOrCreateMetadataForDecl(decl_index); |
src/link/Elf.zig+2-1| ... | @@ -3333,7 +3333,8 @@ pub fn updateDecl( | ... | @@ -3333,7 +3333,8 @@ pub fn updateDecl( |
| 3333 | const variable = decl.getOwnedVariable(mod).?; | 3333 | const variable = decl.getOwnedVariable(mod).?; |
| 3334 | const name = mod.intern_pool.stringToSlice(decl.name); | 3334 | const name = mod.intern_pool.stringToSlice(decl.name); |
| 3335 | const lib_name = mod.intern_pool.stringToSliceUnwrap(variable.lib_name); | 3335 | const lib_name = mod.intern_pool.stringToSliceUnwrap(variable.lib_name); |
| 3336 | _ = try self.getGlobalSymbol(name, lib_name); | 3336 | const esym_index = try self.getGlobalSymbol(name, lib_name); |
| 3337 | self.symbol(self.zigModulePtr().symbol(esym_index)).flags.needs_got = true; | ||
| 3337 | return; | 3338 | return; |
| 3338 | } | 3339 | } |
| 3339 | 3340 |