diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-10-15 09:10:46 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-10-16 19:33:06 +0200 |
| commit | 45197ea7adfa34806b549263c06b988b5e35d48c (patch) | |
| tree | 03ee67cf2eabb83e41864958509823a05f83da54 /src/link | |
| parent | c71a79f618abcc547f327edcdb45f01768200dca (diff) | |
| download | zig-45197ea7adfa34806b549263c06b988b5e35d48c.tar.gz zig-45197ea7adfa34806b549263c06b988b5e35d48c.zip | |
codegen+elf: lower imported data refs
Diffstat (limited to 'src/link')
| -rw-r--r-- | src/link/Dwarf.zig | 1 | ||||
| -rw-r--r-- | src/link/Elf.zig | 14 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig index e271a7d399..ffe078f831 100644 --- a/src/link/Dwarf.zig +++ b/src/link/Dwarf.zig @@ -1389,6 +1389,7 @@ pub fn commitDeclState( .prev_vaddr = 0, }); }, + .elf => {}, // TODO else => unreachable, } } diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 9fe2f6b7ed..d27e3c7f3b 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -3196,12 +3196,16 @@ pub fn updateDecl( const decl = mod.declPtr(decl_index); if (decl.val.getExternFunc(mod)) |_| { - return; // TODO Should we do more when front-end analyzed extern decl? + return; } - if (decl.val.getVariable(mod)) |variable| { - if (variable.is_extern) { - return; // TODO Should we do more when front-end analyzed extern decl? - } + + if (decl.isExtern(mod)) { + // Extern variable gets a .got entry only. + 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); + return; } const sym_index = try self.getOrCreateMetadataForDecl(decl_index); |
