diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2024-08-08 00:27:36 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-08 00:27:36 +0200 |
| commit | cfe6ff4301d43ccd2739b2f4495e371211252afd (patch) | |
| tree | 065a3fcfb21e8d3d986be2e5779a2ef43ee7ef78 /src/codegen.zig | |
| parent | b8705ed6527e779a140e8beccb48d424dbbdf856 (diff) | |
| parent | b058545970efb6f533f9930d23af2a6d0c6ce9c3 (diff) | |
| download | zig-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.zig | 14 |
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).?; |
