From 02f38d7749e5260dc2f48caef10390dd8d3cede5 Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Wed, 7 Aug 2024 06:50:54 +0200 Subject: codegen: fix Elf symbol refs --- src/arch/x86_64/CodeGen.zig | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/arch/x86_64/CodeGen.zig') diff --git a/src/arch/x86_64/CodeGen.zig b/src/arch/x86_64/CodeGen.zig index 4543cce33c..924de9d25a 100644 --- a/src/arch/x86_64/CodeGen.zig +++ b/src/arch/x86_64/CodeGen.zig @@ -12329,7 +12329,6 @@ fn genCall(self: *Self, info: union(enum) { if (self.bin_file.cast(link.File.Elf)) |elf_file| { const zo = elf_file.zigObjectPtr().?; const sym_index = try zo.getOrCreateMetadataForDecl(elf_file, func.owner_decl); - const sym = zo.symbol(sym_index); if (self.mod.pic) { const callee_reg: Register = switch (resolved_cc) { .SysV => callee: { @@ -12346,14 +12345,14 @@ fn genCall(self: *Self, info: union(enum) { try self.genSetReg( callee_reg, Type.usize, - .{ .load_symbol = .{ .sym = sym.esym_index } }, + .{ .load_symbol = .{ .sym = sym_index } }, .{}, ); try self.asmRegister(.{ ._, .call }, callee_reg); } else try self.asmMemory(.{ ._, .call }, .{ .base = .{ .reloc = .{ .atom_index = try self.owner.getSymbolIndex(self), - .sym_index = sym.esym_index, + .sym_index = sym_index, } }, .mod = .{ .rm = .{ .size = .qword } }, }); @@ -15324,14 +15323,13 @@ fn genLazySymbolRef( const zo = elf_file.zigObjectPtr().?; const sym_index = zo.getOrCreateMetadataForLazySymbol(elf_file, pt, lazy_sym) catch |err| return self.fail("{s} creating lazy symbol", .{@errorName(err)}); - const sym = zo.symbol(sym_index); if (self.mod.pic) { switch (tag) { .lea, .call => try self.genSetReg(reg, Type.usize, .{ - .load_symbol = .{ .sym = sym.esym_index }, + .load_symbol = .{ .sym = sym_index }, }, .{}), .mov => try self.genSetReg(reg, Type.usize, .{ - .load_symbol = .{ .sym = sym.esym_index }, + .load_symbol = .{ .sym = sym_index }, }, .{}), else => unreachable, } @@ -15343,7 +15341,7 @@ fn genLazySymbolRef( } else { const reloc = bits.Symbol{ .atom_index = try self.owner.getSymbolIndex(self), - .sym_index = sym.esym_index, + .sym_index = sym_index, }; switch (tag) { .lea, .mov => try self.asmRegisterMemory(.{ ._, .mov }, reg.to64(), .{ -- cgit v1.2.3