From 79730e6f5cdf13b2514781881e69c557fd52eaea Mon Sep 17 00:00:00 2001 From: Jakub Konka Date: Tue, 26 Jan 2021 08:11:31 +0100 Subject: [PATCH] macho: add arm64 relocation type enum --- lib/std/macho.zig | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/lib/std/macho.zig b/lib/std/macho.zig index 459410861e..6785abffca 100644 --- a/lib/std/macho.zig +++ b/lib/std/macho.zig @@ -1334,6 +1334,41 @@ pub const reloc_type_x86_64 = packed enum(u4) { X86_64_RELOC_TLV, }; +pub const reloc_type_arm64 = packed enum(u4) { + /// For pointers. + ARM64_RELOC_UNSIGNED = 0, + + /// Must be followed by a ARM64_RELOC_UNSIGNED. + ARM64_RELOC_SUBTRACTOR, + + /// A B/BL instruction with 26-bit displacement. + ARM64_RELOC_BRANCH26, + + /// Pc-rel distance to page of target. + ARM64_RELOC_PAGE21, + + /// Offset within page, scaled by r_length. + ARM64_RELOC_PAGEOFF12, + + /// Pc-rel distance to page of GOT slot. + ARM64_RELOC_GOT_LOAD_PAGE21, + + /// Offset within page of GOT slot, scaled by r_length. + ARM64_RELOC_GOT_LOAD_PAGEOFF12, + + /// For pointers to GOT slots. + ARM64_RELOC_POINTER_TO_GOT, + + /// Pc-rel distance to page of TLVP slot. + ARM64_RELOC_TLVP_LOAD_PAGE21, + + /// Offset within page of TLVP slot, scaled by r_length. + ARM64_RELOC_TLVP_LOAD_PAGEOFF12, + + /// Must be followed by PAGE21 or PAGEOFF12. + ARM64_RELOC_ADDEND, +}; + /// This symbol is a reference to an external non-lazy (data) symbol. pub const REFERENCE_FLAG_UNDEFINED_NON_LAZY: u16 = 0x0;