summaryrefslogtreecommitdiff
path: root/view/macho/machoview.h
diff options
context:
space:
mode:
authorMark Rowe <mark@vector35.com>2025-09-21 17:33:20 -0700
committerMark Rowe <mark@vector35.com>2025-10-22 08:57:04 -0700
commit2f531f7279a01810494cdde6342434077456edf0 (patch)
treea127b7c537b5e9992bb87b275f0ddc13a1e85436 /view/macho/machoview.h
parent4c8fa3972ad50c07631418620eb9be44d629b2ae (diff)
[Mach-O] Refactor fixup chain parsing
The parsing of fix-up chains is moved out of `MachoView` and into its own class. It deals purely in terms of offsets into the Mach-O slice. `MachoView` translates those offsets to mapped addresses when needed. This is primarily aimed at fixing incorrect handling of pointer formats that use offsets where in some cases the relocations would be applied at incorrect addresses due to confusion between file offsets, Mach-O slice offsets, and VM offsets. It incidentally fixes addends from bind operations not being respected. These show up most frequently in C++ RTTI information.
Diffstat (limited to 'view/macho/machoview.h')
-rw-r--r--view/macho/machoview.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/view/macho/machoview.h b/view/macho/machoview.h
index d9c02b08..f41cd8bd 100644
--- a/view/macho/machoview.h
+++ b/view/macho/machoview.h
@@ -1132,6 +1132,8 @@ namespace BinaryNinja
DYLD_CHAINED_PTR_ARM64E_FIRMWARE = 10, // stride 4, unauth target is vmaddr
DYLD_CHAINED_PTR_X86_64_KERNEL_CACHE = 11, // stride 1, x86_64 kernel caches
DYLD_CHAINED_PTR_ARM64E_USERLAND24 = 12, // stride 8, unauth target is vm offset, 24-bit bind
+ DYLD_CHAINED_PTR_ARM64E_SHARED_CACHE = 13, // stride 8, regular/auth targets both vm offsets. Only A keys supported
+ DYLD_CHAINED_PTR_ARM64E_SEGMENTED = 14, // stride 4, rebase offsets use segIndex and segOffset
};
// DYLD_CHAINED_PTR_ARM64E