mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
elf: set needs_got on generated extern vars
This commit is contained in:
parent
9a1fbb2705
commit
0d00b7c585
@ -84,7 +84,7 @@ pub fn emitMir(emit: *Emit) Error!void {
|
||||
if (emit.bin_file.options.pic) {
|
||||
const r_type: u32 = if (sym.flags.has_zig_got)
|
||||
link.File.Elf.R_X86_64_ZIG_GOTPCREL
|
||||
else if (sym.flags.has_got)
|
||||
else if (sym.flags.needs_got)
|
||||
std.elf.R_X86_64_GOTPCREL
|
||||
else
|
||||
std.elf.R_X86_64_PC32;
|
||||
|
||||
@ -904,6 +904,7 @@ fn genDeclRef(
|
||||
else
|
||||
null;
|
||||
const sym_index = try elf_file.getGlobalSymbol(name, lib_name);
|
||||
elf_file.symbol(elf_file.zigModulePtr().symbol(sym_index)).flags.needs_got = true;
|
||||
return GenResult.mcv(.{ .lea_symbol = sym_index });
|
||||
}
|
||||
const sym_index = try elf_file.getOrCreateMetadataForDecl(decl_index);
|
||||
|
||||
@ -3333,7 +3333,8 @@ pub fn updateDecl(
|
||||
const variable = decl.getOwnedVariable(mod).?;
|
||||
const name = mod.intern_pool.stringToSlice(decl.name);
|
||||
const lib_name = mod.intern_pool.stringToSliceUnwrap(variable.lib_name);
|
||||
_ = try self.getGlobalSymbol(name, lib_name);
|
||||
const esym_index = try self.getGlobalSymbol(name, lib_name);
|
||||
self.symbol(self.zigModulePtr().symbol(esym_index)).flags.needs_got = true;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user