aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-08-08 00:27:36 +0200
committerGitHub <noreply@github.com>2024-08-08 00:27:36 +0200
commitcfe6ff4301d43ccd2739b2f4495e371211252afd (patch)
tree065a3fcfb21e8d3d986be2e5779a2ef43ee7ef78 /src/codegen.zig
parentb8705ed6527e779a140e8beccb48d424dbbdf856 (diff)
parentb058545970efb6f533f9930d23af2a6d0c6ce9c3 (diff)
downloadzig-cfe6ff4301d43ccd2739b2f4495e371211252afd.tar.gz
zig-cfe6ff4301d43ccd2739b2f4495e371211252afd.zip
Merge pull request #20971 from ziglang/elf-ownership-2
elf: move ownership of symbols into owning objects
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 9c3fd1914b..50688151ed 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -906,20 +906,20 @@ fn genDeclRef(
const is_extern = decl.isExtern(zcu);
if (lf.cast(link.File.Elf)) |elf_file| {
+ const zo = elf_file.zigObjectPtr().?;
if (is_extern) {
const name = decl.name.toSlice(ip);
// TODO audit this
const lib_name = if (decl.getOwnedVariable(zcu)) |ov| ov.lib_name.toSlice(ip) else null;
const sym_index = try elf_file.getGlobalSymbol(name, lib_name);
- elf_file.symbol(elf_file.zigObjectPtr().?.symbol(sym_index)).flags.needs_got = true;
+ zo.symbol(sym_index).flags.needs_got = true;
return GenResult.mcv(.{ .load_symbol = sym_index });
}
- const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, decl_index);
- const sym = elf_file.symbol(sym_index);
+ const sym_index = try zo.getOrCreateMetadataForDecl(elf_file, decl_index);
if (is_threadlocal) {
- return GenResult.mcv(.{ .load_tlv = sym.esym_index });
+ return GenResult.mcv(.{ .load_tlv = sym_index });
}
- return GenResult.mcv(.{ .load_symbol = sym.esym_index });
+ return GenResult.mcv(.{ .load_symbol = sym_index });
} else if (lf.cast(link.File.MachO)) |macho_file| {
const zo = macho_file.getZigObject().?;
if (is_extern) {
@@ -971,9 +971,7 @@ fn genUnnamedConst(
};
switch (lf.tag) {
.elf => {
- const elf_file = lf.cast(link.File.Elf).?;
- const local = elf_file.symbol(local_sym_index);
- return GenResult.mcv(.{ .load_symbol = local.esym_index });
+ return GenResult.mcv(.{ .load_symbol = local_sym_index });
},
.macho => {
const macho_file = lf.cast(link.File.MachO).?;