zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 51fba37af70283427a7ef5d2f2fd39f97aaa1e35 (tree)
parent a35f156cf60ed3d8095c15c4ab26aee267761a56
Author: Jakub Konka <kubkon@jakubkonka.com>
Date:   Wed, 31 Aug 2022 20:03:41 +0200

coff: add relocation for call_extern

Diffstat:
Msrc/arch/x86_64/Emit.zig | 12++++++++++++
1 file changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/arch/x86_64/Emit.zig b/src/arch/x86_64/Emit.zig @@ -1157,6 +1157,18 @@ fn mirCallExtern(emit: *Emit, inst: Mir.Inst.Index) InnerError!void { .length = 2, .@"type" = @enumToInt(std.macho.reloc_type_x86_64.X86_64_RELOC_BRANCH), }); + } else if (emit.bin_file.cast(link.File.Coff)) |coff_file| { + // Add relocation to the decl. + const atom = coff_file.atom_by_index_table.get(relocation.atom_index).?; + try atom.addRelocation(coff_file, .{ + .@"type" = .direct, + .target = .{ .sym_index = relocation.sym_index, .file = null }, + .offset = offset, + .addend = 0, + .pcrel = true, + .length = 2, + .prev_vaddr = atom.getSymbol(coff_file).value, + }); } else { return emit.fail("TODO implement call_extern for linking backends different than MachO", .{}); }