]> git.saurik.com Git - apple/ld64.git/blobdiff - src/abstraction/MachOFileAbstraction.hpp
ld64-242.2.tar.gz
[apple/ld64.git] / src / abstraction / MachOFileAbstraction.hpp
index 92797342610bd819214b76f5a636f74798bda68b..ae61d7c1893bfe102c1a6db52571f6d33d5cc97c 100644 (file)
        #define N_SYMBOL_RESOLVER 0x100
 #endif
 
+#ifndef N_AST
+       #define N_AST 0x32
+#endif
+
 #ifndef LC_FUNCTION_STARTS
        #define LC_FUNCTION_STARTS      0x26
 #endif
   };
 #endif
 
+#ifndef MH_APP_EXTENSION_SAFE
+       #define MH_APP_EXTENSION_SAFE 0x02000000
+#endif
 
+#ifndef N_ALT_ENTRY
+       #define N_ALT_ENTRY 0x0200
+#endif
 
 #ifndef CPU_SUBTYPE_ARM_V7F
   #define CPU_SUBTYPE_ARM_V7F    ((cpu_subtype_t) 10)
 
 
 // hack until arm64 headers are worked out
-#define CPU_TYPE_ARM64                 (CPU_TYPE_ARM | CPU_ARCH_ABI64)
-#define CPU_SUBTYPE_ARM64_ALL  0
-#define CPU_SUBTYPE_ARM64_V8    1
+#ifndef CPU_TYPE_ARM64
+       #define CPU_TYPE_ARM64                  (CPU_TYPE_ARM | CPU_ARCH_ABI64)
+#endif
+#ifndef CPU_SUBTYPE_ARM64_ALL
+       #define CPU_SUBTYPE_ARM64_ALL   0
+#endif
+#ifndef CPU_SUBTYPE_ARM64_V8
+       #define CPU_SUBTYPE_ARM64_V8    1
+#endif
+
 
 #define ARM64_RELOC_UNSIGNED            0 // for pointers
 #define ARM64_RELOC_SUBTRACTOR          1 // must be followed by a ARM64_RELOC_UNSIGNED
 
 #define UNWIND_ARM64_DWARF_SECTION_OFFSET               0x00FFFFFF
 
+#define UNW_ARM_D31 287
+
+
 #ifndef LC_SOURCE_VERSION
        #define LC_SOURCE_VERSION 0x2A
        struct source_version_command {
        #define CPU_SUBTYPE_X86_64_H    ((cpu_subtype_t) 8) 
 #endif 
 
+#define UNWIND_ARM_MODE_MASK                          0x0F000000
+#define UNWIND_ARM_MODE_FRAME                         0x01000000
+#define UNWIND_ARM_MODE_FRAME_D                       0x02000000
+#define UNWIND_ARM_MODE_DWARF                         0x04000000
+#define  UNWIND_ARM_FRAME_STACK_ADJUST_MASK           0x00C00000
+
+#define UNWIND_ARM_FRAME_FIRST_PUSH_R4                0x00000001
+#define UNWIND_ARM_FRAME_FIRST_PUSH_R5                0x00000002
+#define UNWIND_ARM_FRAME_FIRST_PUSH_R6                0x00000004
+  
+#define UNWIND_ARM_FRAME_SECOND_PUSH_R8               0x00000008
+#define UNWIND_ARM_FRAME_SECOND_PUSH_R9               0x00000010
+#define UNWIND_ARM_FRAME_SECOND_PUSH_R10              0x00000020
+#define UNWIND_ARM_FRAME_SECOND_PUSH_R11              0x00000040
+#define UNWIND_ARM_FRAME_SECOND_PUSH_R12              0x00000080
+#define UNWIND_ARM_FRAME_D_REG_COUNT_MASK             0x00000F00
+#define UNWIND_ARM_DWARF_SECTION_OFFSET               0x00FFFFFF
+
 struct ArchInfo {
        const char*                     archName;
        cpu_type_t                      cpuType;
@@ -496,10 +537,10 @@ static const ArchInfo archInfoArray[] = {
        #define SUPPORT_ARCH_arm_any 1
 #endif
 #if SUPPORT_ARCH_arm64
-       { "arm64", CPU_TYPE_ARM64,   CPU_SUBTYPE_ARM64_ALL,  "arm64-",    "",   false,  false },
+       { "arm64", CPU_TYPE_ARM64,   CPU_SUBTYPE_ARM64_ALL,  "arm64-",  "aarch64-",  false,  false },
 #endif
 #if SUPPORT_ARCH_arm64v8
-       { "arm64v8", CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64_V8,   "arm64v8-",  "",   true,  false },
+       { "arm64v8", CPU_TYPE_ARM64, CPU_SUBTYPE_ARM64_V8,   "arm64v8-",  "aarch64-",   true,  false },
 #endif
        { NULL, 0, 0, NULL, NULL, false, false }
 };