aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-10-15 15:38:16 +0200
committerJakub Konka <kubkon@jakubkonka.com>2023-10-16 19:33:06 +0200
commit7b2cbcf0fe6dcaea7ee108c13422f6d00ed4bc8e (patch)
tree1926dba17efdbd327ac737551b68f8e649c5f06d /src/codegen.zig
parent45197ea7adfa34806b549263c06b988b5e35d48c (diff)
downloadzig-7b2cbcf0fe6dcaea7ee108c13422f6d00ed4bc8e.tar.gz
zig-7b2cbcf0fe6dcaea7ee108c13422f6d00ed4bc8e.zip
codegen+elf: check if extern is a variable ref
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index de5ff9651a..54ed9c0cf5 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -892,9 +892,12 @@ fn genDeclRef(
if (bin_file.cast(link.File.Elf)) |elf_file| {
if (is_extern) {
- const variable = decl.getOwnedVariable(mod).?;
const name = mod.intern_pool.stringToSlice(decl.name);
- const lib_name = mod.intern_pool.stringToSliceUnwrap(variable.lib_name);
+ // TODO audit this
+ const lib_name = if (decl.getOwnedVariable(mod)) |ov|
+ mod.intern_pool.stringToSliceUnwrap(ov.lib_name)
+ else
+ null;
return GenResult.mcv(.{ .load_actual_got = try elf_file.getGlobalSymbol(name, lib_name) });
}
const sym_index = try elf_file.getOrCreateMetadataForDecl(decl_index);