From 324a93e673afcf1bcaac1163379d385952e52a27 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Mon, 30 Oct 2023 12:44:50 +0100 Subject: coff: implement enough of extern handling to pass comptime export tests --- src/codegen.zig | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/codegen.zig') diff --git a/src/codegen.zig b/src/codegen.zig index cb7c2df55a..c46e41c6e6 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -927,6 +927,17 @@ fn genDeclRef( } return GenResult.mcv(.{ .load_got = sym_index }); } else if (bin_file.cast(link.File.Coff)) |coff_file| { + if (is_extern) { + const name = mod.intern_pool.stringToSlice(decl.name); + // TODO audit this + const lib_name = if (decl.getOwnedVariable(mod)) |ov| + mod.intern_pool.stringToSliceUnwrap(ov.lib_name) + else + null; + const global_index = try coff_file.getGlobalSymbol(name, lib_name); + try coff_file.need_got_table.put(bin_file.allocator, global_index, {}); // needs GOT + return GenResult.mcv(.{ .load_got = link.File.Coff.global_symbol_bit | global_index }); + } const atom_index = try coff_file.getOrCreateAtomForDecl(decl_index); const sym_index = coff_file.getAtom(atom_index).getSymbolIndex().?; return GenResult.mcv(.{ .load_got = sym_index }); -- cgit v1.2.3