From da0ea909bcce59e265bf5651e5281b6af2216eae Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Mon, 29 Nov 2021 17:27:38 +0100 Subject: macho: POINTER_TO_GOT signals a need for a GOT entry It also signals the need for GOT indirection (unless it can be optimised away via link-time constant optimisation). --- src/link/MachO/Atom.zig | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/link/MachO/Atom.zig b/src/link/MachO/Atom.zig index 3fbb26d79f..4fffcdb743 100644 --- a/src/link/MachO/Atom.zig +++ b/src/link/MachO/Atom.zig @@ -384,7 +384,10 @@ pub fn parseRelocs(self: *Atom, relocs: []macho.relocation_info, context: RelocC // TODO rewrite relocation try addStub(target, context); }, - .ARM64_RELOC_GOT_LOAD_PAGE21, .ARM64_RELOC_GOT_LOAD_PAGEOFF12 => { + .ARM64_RELOC_GOT_LOAD_PAGE21, + .ARM64_RELOC_GOT_LOAD_PAGEOFF12, + .ARM64_RELOC_POINTER_TO_GOT, + => { // TODO rewrite relocation try addGotEntry(target, context); }, @@ -660,7 +663,10 @@ pub fn resolveRelocs(self: *Atom, macho_file: *MachO) !void { const is_via_got = got: { switch (arch) { .aarch64 => break :got switch (@intToEnum(macho.reloc_type_arm64, rel.@"type")) { - .ARM64_RELOC_GOT_LOAD_PAGE21, .ARM64_RELOC_GOT_LOAD_PAGEOFF12 => true, + .ARM64_RELOC_GOT_LOAD_PAGE21, + .ARM64_RELOC_GOT_LOAD_PAGEOFF12, + .ARM64_RELOC_POINTER_TO_GOT, + => true, else => false, }, .x86_64 => break :got switch (@intToEnum(macho.reloc_type_x86_64, rel.@"type")) { -- cgit v1.2.3