diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2021-11-29 17:27:38 +0100 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-11-29 11:51:27 -0800 |
| commit | da0ea909bcce59e265bf5651e5281b6af2216eae (patch) | |
| tree | 1ca6020ffedcd220afaa9512457ba96e34cc2285 /src | |
| parent | 7a7df392d146b8f77c74b0578fc48f6c927efc93 (diff) | |
| download | zig-da0ea909bcce59e265bf5651e5281b6af2216eae.tar.gz zig-da0ea909bcce59e265bf5651e5281b6af2216eae.zip | |
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).
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/MachO/Atom.zig | 10 |
1 files changed, 8 insertions, 2 deletions
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")) { |
