aboutsummaryrefslogtreecommitdiff
path: root/lib/std/macho.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-02-11 23:45:40 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-02-11 23:45:40 -0700
commitb4e344bcf859f2df89637e0825a2e0e57d092ef6 (patch)
tree44465c5c3eadcfdc57f0a0a3eb5cffff9107bd7f /lib/std/macho.zig
parent3d0f4b90305bc1815ccc86613cb3da715e9b62c0 (diff)
parentd3565ed6b48c9c66128f181e7b90b5348504cb3f (diff)
downloadzig-b4e344bcf859f2df89637e0825a2e0e57d092ef6.tar.gz
zig-b4e344bcf859f2df89637e0825a2e0e57d092ef6.zip
Merge remote-tracking branch 'origin/master' into ast-memory-layout
Conflicts: * lib/std/zig/ast.zig * lib/std/zig/parse.zig * lib/std/zig/parser_test.zig * lib/std/zig/render.zig * src/Module.zig * src/zir.zig I resolved some of the conflicts by reverting a small portion of @tadeokondrak's stage2 logic here regarding `callconv(.Inline)`. It will need to get reworked as part of this branch.
Diffstat (limited to 'lib/std/macho.zig')
-rw-r--r--lib/std/macho.zig35
1 files changed, 35 insertions, 0 deletions
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;