aboutsummaryrefslogtreecommitdiff
path: root/src/arch/x86_64/CodeGen.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2024-08-07 06:50:54 +0200
committerJakub Konka <kubkon@jakubkonka.com>2024-08-07 10:21:03 +0200
commit02f38d7749e5260dc2f48caef10390dd8d3cede5 (patch)
treeb20c72678ae41e51bfd6b9c1e10ab5aaa3112297 /src/arch/x86_64/CodeGen.zig
parent89db24ec6d6195cc10f17bf21dd9bf23e6ff1bf1 (diff)
downloadzig-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.zig12
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(), .{