aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/detours/find-jmp-bounds-arm64.patch
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/detours/find-jmp-bounds-arm64.patch')
-rw-r--r--vcpkg/ports/detours/find-jmp-bounds-arm64.patch24
1 files changed, 24 insertions, 0 deletions
diff --git a/vcpkg/ports/detours/find-jmp-bounds-arm64.patch b/vcpkg/ports/detours/find-jmp-bounds-arm64.patch
new file mode 100644
index 0000000..21390ce
--- /dev/null
+++ b/vcpkg/ports/detours/find-jmp-bounds-arm64.patch
@@ -0,0 +1,24 @@
+diff --git a/src/detours.cpp b/src/detours.cpp
+index 8345c4d..3cd0e9d 100644
+--- a/src/detours.cpp
++++ b/src/detours.cpp
+@@ -974,6 +974,19 @@ inline PBYTE detour_skip_jmp(PBYTE pbCode, PVOID *ppGlobals)
+ return pbCode;
+ }
+
++inline void detour_find_jmp_bounds(PBYTE pbCode,
++ PDETOUR_TRAMPOLINE *ppLower,
++ PDETOUR_TRAMPOLINE *ppUpper)
++{
++ // We have to place trampolines within +/- 2GB of code.
++ ULONG_PTR lo = detour_2gb_below((ULONG_PTR)pbCode);
++ ULONG_PTR hi = detour_2gb_above((ULONG_PTR)pbCode);
++ DETOUR_TRACE(("[%p..%p..%p]\n", lo, pbCode, hi));
++
++ *ppLower = (PDETOUR_TRAMPOLINE)lo;
++ *ppUpper = (PDETOUR_TRAMPOLINE)hi;
++}
++
+ inline BOOL detour_does_code_end_function(PBYTE pbCode)
+ {
+ ULONG Opcode = fetch_opcode(pbCode);