diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2024-08-07 06:50:54 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2024-08-07 10:21:03 +0200 |
| commit | 02f38d7749e5260dc2f48caef10390dd8d3cede5 (patch) | |
| tree | b20c72678ae41e51bfd6b9c1e10ab5aaa3112297 /src/arch/x86_64/CodeGen.zig | |
| parent | 89db24ec6d6195cc10f17bf21dd9bf23e6ff1bf1 (diff) | |
| download | zig-02f38d7749e5260dc2f48caef10390dd8d3cede5.tar.gz zig-02f38d7749e5260dc2f48caef10390dd8d3cede5.zip | |
codegen: fix Elf symbol refs
Diffstat (limited to 'src/arch/x86_64/CodeGen.zig')
| -rw-r--r-- | src/arch/x86_64/CodeGen.zig | 12 |
1 files changed, 5 insertions, 7 deletions
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(), .{ |
