From 96441bd829b731cba080753c4833aff3f672a24a Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Fri, 16 Aug 2024 14:52:55 +0200 Subject: macho: update codegen and linker to distributed jump table approach --- src/codegen.zig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/codegen.zig') diff --git a/src/codegen.zig b/src/codegen.zig index 4ac4b849c0..ae3635ce23 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -910,15 +910,15 @@ fn genNavRef( const zo = macho_file.getZigObject().?; if (is_extern) { const sym_index = try macho_file.getGlobalSymbol(name.toSlice(ip), lib_name.toSlice(ip)); - zo.symbols.items[sym_index].setSectionFlags(.{ .needs_got = true }); - return .{ .mcv = .{ .load_symbol = sym_index } }; + zo.symbols.items[sym_index].flags.is_extern_ptr = true; + return GenResult.mcv(.{ .lea_symbol = sym_index }); } const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index); const sym = zo.symbols.items[sym_index]; if (!single_threaded and is_threadlocal) { return .{ .mcv = .{ .load_tlv = sym.nlist_idx } }; } - return .{ .mcv = .{ .load_symbol = sym.nlist_idx } }; + return GenResult.mcv(.{ .lea_symbol = sym.nlist_idx }); } else if (lf.cast(.coff)) |coff_file| { if (is_extern) { // TODO audit this -- cgit v1.2.3 From df9ac485da7c59ddb5dc65e192d5902baf975ddd Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Sat, 17 Aug 2024 08:31:16 +0200 Subject: codegen: fix rebase gone wrong --- src/codegen.zig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/codegen.zig') diff --git a/src/codegen.zig b/src/codegen.zig index ae3635ce23..af77dcc50c 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -911,14 +911,14 @@ fn genNavRef( if (is_extern) { const sym_index = try macho_file.getGlobalSymbol(name.toSlice(ip), lib_name.toSlice(ip)); zo.symbols.items[sym_index].flags.is_extern_ptr = true; - return GenResult.mcv(.{ .lea_symbol = sym_index }); + return .{ .mcv = .{ .lea_symbol = sym_index } }; } const sym_index = try zo.getOrCreateMetadataForNav(macho_file, nav_index); const sym = zo.symbols.items[sym_index]; if (!single_threaded and is_threadlocal) { return .{ .mcv = .{ .load_tlv = sym.nlist_idx } }; } - return GenResult.mcv(.{ .lea_symbol = sym.nlist_idx }); + return .{ .mcv = .{ .lea_symbol = sym.nlist_idx } }; } else if (lf.cast(.coff)) |coff_file| { if (is_extern) { // TODO audit this -- cgit v1.2.3