authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-11-04 12:39:29+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-11-05 10:14:59+01:00
log1fe0b58942b45832981e700ba8eb7ae23dc2190f
tree798a114f18d528d282f58215d212e2b2b58ccad3
parentdf0212bf47974b4e676a5bb97aac5ab381d6cbf3

aarch64: extract atom index for both COFF and MachO


1 files changed, 28 insertions(+), 4 deletions(-)

src/arch/aarch64/CodeGen.zig+28-4
...@@ -3719,12 +3719,18 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type...@@ -3719,12 +3719,18 @@ fn store(self: *Self, ptr: MCValue, value: MCValue, ptr_ty: Type, value_ty: Type
3719 .direct => .load_memory_ptr_direct,3719 .direct => .load_memory_ptr_direct,
3720 };3720 };
3721 const mod = self.bin_file.options.module.?;3721 const mod = self.bin_file.options.module.?;
3722 const owner_decl = mod.declPtr(self.mod_fn.owner_decl);
3723 const atom_index = switch (self.bin_file.tag) {
3724 .macho => owner_decl.link.macho.sym_index,
3725 .coff => owner_decl.link.coff.sym_index,
3726 else => unreachable, // unsupported target format
3727 };
3722 _ = try self.addInst(.{3728 _ = try self.addInst(.{
3723 .tag = tag,3729 .tag = tag,
3724 .data = .{3730 .data = .{
3725 .payload = try self.addExtra(Mir.LoadMemoryPie{3731 .payload = try self.addExtra(Mir.LoadMemoryPie{
3726 .register = @enumToInt(src_reg),3732 .register = @enumToInt(src_reg),
3727 .atom_index = mod.declPtr(self.mod_fn.owner_decl).link.macho.sym_index,3733 .atom_index = atom_index,
3728 .sym_index = load_struct.sym_index,3734 .sym_index = load_struct.sym_index,
3729 }),3735 }),
3730 },3736 },
...@@ -5161,12 +5167,18 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro...@@ -5161,12 +5167,18 @@ fn genSetStack(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) InnerErro
5161 .direct => .load_memory_ptr_direct,5167 .direct => .load_memory_ptr_direct,
5162 };5168 };
5163 const mod = self.bin_file.options.module.?;5169 const mod = self.bin_file.options.module.?;
5170 const owner_decl = mod.declPtr(self.mod_fn.owner_decl);
5171 const atom_index = switch (self.bin_file.tag) {
5172 .macho => owner_decl.link.macho.sym_index,
5173 .coff => owner_decl.link.coff.sym_index,
5174 else => unreachable, // unsupported target format
5175 };
5164 _ = try self.addInst(.{5176 _ = try self.addInst(.{
5165 .tag = tag,5177 .tag = tag,
5166 .data = .{5178 .data = .{
5167 .payload = try self.addExtra(Mir.LoadMemoryPie{5179 .payload = try self.addExtra(Mir.LoadMemoryPie{
5168 .register = @enumToInt(src_reg),5180 .register = @enumToInt(src_reg),
5169 .atom_index = mod.declPtr(self.mod_fn.owner_decl).link.macho.sym_index,5181 .atom_index = atom_index,
5170 .sym_index = load_struct.sym_index,5182 .sym_index = load_struct.sym_index,
5171 }),5183 }),
5172 },5184 },
...@@ -5268,12 +5280,18 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void...@@ -5268,12 +5280,18 @@ fn genSetReg(self: *Self, ty: Type, reg: Register, mcv: MCValue) InnerError!void
5268 .direct => .load_memory_direct,5280 .direct => .load_memory_direct,
5269 };5281 };
5270 const mod = self.bin_file.options.module.?;5282 const mod = self.bin_file.options.module.?;
5283 const owner_decl = mod.declPtr(self.mod_fn.owner_decl);
5284 const atom_index = switch (self.bin_file.tag) {
5285 .macho => owner_decl.link.macho.sym_index,
5286 .coff => owner_decl.link.coff.sym_index,
5287 else => unreachable, // unsupported target format
5288 };
5271 _ = try self.addInst(.{5289 _ = try self.addInst(.{
5272 .tag = tag,5290 .tag = tag,
5273 .data = .{5291 .data = .{
5274 .payload = try self.addExtra(Mir.LoadMemoryPie{5292 .payload = try self.addExtra(Mir.LoadMemoryPie{
5275 .register = @enumToInt(reg),5293 .register = @enumToInt(reg),
5276 .atom_index = mod.declPtr(self.mod_fn.owner_decl).link.macho.sym_index,5294 .atom_index = atom_index,
5277 .sym_index = load_struct.sym_index,5295 .sym_index = load_struct.sym_index,
5278 }),5296 }),
5279 },5297 },
...@@ -5455,12 +5473,18 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I...@@ -5455,12 +5473,18 @@ fn genSetStackArgument(self: *Self, ty: Type, stack_offset: u32, mcv: MCValue) I
5455 .direct => .load_memory_ptr_direct,5473 .direct => .load_memory_ptr_direct,
5456 };5474 };
5457 const mod = self.bin_file.options.module.?;5475 const mod = self.bin_file.options.module.?;
5476 const owner_decl = mod.declPtr(self.mod_fn.owner_decl);
5477 const atom_index = switch (self.bin_file.tag) {
5478 .macho => owner_decl.link.macho.sym_index,
5479 .coff => owner_decl.link.coff.sym_index,
5480 else => unreachable, // unsupported target format
5481 };
5458 _ = try self.addInst(.{5482 _ = try self.addInst(.{
5459 .tag = tag,5483 .tag = tag,
5460 .data = .{5484 .data = .{
5461 .payload = try self.addExtra(Mir.LoadMemoryPie{5485 .payload = try self.addExtra(Mir.LoadMemoryPie{
5462 .register = @enumToInt(src_reg),5486 .register = @enumToInt(src_reg),
5463 .atom_index = mod.declPtr(self.mod_fn.owner_decl).link.macho.sym_index,5487 .atom_index = atom_index,
5464 .sym_index = load_struct.sym_index,5488 .sym_index = load_struct.sym_index,
5465 }),5489 }),
5466 },5490 },