aboutsummaryrefslogtreecommitdiff
path: root/include/mach-o/unwind.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/mach-o/unwind.h')
-rw-r--r--include/mach-o/unwind.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/include/mach-o/unwind.h b/include/mach-o/unwind.h
index 1addb97..32a9389 100644
--- a/include/mach-o/unwind.h
+++ b/include/mach-o/unwind.h
@@ -103,6 +103,35 @@
#define MACH_O_UNWIND_X86_REG_ESI 5
#define MACH_O_UNWIND_X86_REG_EBP 6
+/* Encodings for arm64. */
+
+#define MACH_O_UNWIND_ARM64_MODE_MASK 0x0f000000
+
+/* Leaf function: FP/LR are *not* saved, none or some non-volatile registers
+ are saved, stack is allocated. The size of the frame (register saved and
+ memory) is encoded in STACK_SIZE in 16 byte units. */
+#define MACH_O_UNWIND_ARM64_MODE_FRAMELESS 0x02000000
+
+#define MACH_O_UNWIND_ARM64_MODE_DWARF 0x03000000
+
+/* Standard frame: FP/LR are pushed, SP is copied to FP, then non-volatile
+ registers are saved. */
+#define MACH_O_UNWIND_ARM64_MODE_FRAME 0x04000000
+
+/* Registers (for FRAME). */
+#define MACH_O_UNWIND_ARM64_FRAME_X19_X20_PAIR 0x00000001
+#define MACH_O_UNWIND_ARM64_FRAME_X21_X22_PAIR 0x00000002
+#define MACH_O_UNWIND_ARM64_FRAME_X23_X24_PAIR 0x00000004
+#define MACH_O_UNWIND_ARM64_FRAME_X25_X26_PAIR 0x00000008
+#define MACH_O_UNWIND_ARM64_FRAME_X27_X28_PAIR 0x00000010
+#define MACH_O_UNWIND_ARM64_FRAME_D8_D9_PAIR 0x00000100
+#define MACH_O_UNWIND_ARM64_FRAME_D10_D11_PAIR 0x00000200
+#define MACH_O_UNWIND_ARM64_FRAME_D12_D13_PAIR 0x00000400
+#define MACH_O_UNWIND_ARM64_FRAME_D14_D15_PAIR 0x00000800
+
+#define MACH_O_UNWIND_ARM64_FRAMELESS_STACK_SIZE_MASK 0x00fff000
+#define MACH_O_UNWIND_ARM64_DWARF_SECTION_OFFSET 0x00ffffff
+
/* Entry in object file (in __LD,__compact_unwind section). */
struct mach_o_compact_unwind_32