about summary refs log tree commit diff stats
path: root/src/dynarec/dynarec_native_pass.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-06-14 11:31:18 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-06-14 11:31:18 +0200
commitdecec260b2bccc4f3d99eaef0bc68c55bbf2db28 (patch)
tree98316be1f875c917a56aa88b84aa8007b84abc1e /src/dynarec/dynarec_native_pass.c
parentae6ec48623c3684ca60016a9fd4292fbca149292 (diff)
downloadbox64-decec260b2bccc4f3d99eaef0bc68c55bbf2db28.tar.gz
box64-decec260b2bccc4f3d99eaef0bc68c55bbf2db28.zip
[DYNAREC] Make sure a dynablock does not exit a mmap backed by a file address range
Diffstat (limited to 'src/dynarec/dynarec_native_pass.c')
-rw-r--r--src/dynarec/dynarec_native_pass.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/dynarec/dynarec_native_pass.c b/src/dynarec/dynarec_native_pass.c
index 1620927a..f7d02f13 100644
--- a/src/dynarec/dynarec_native_pass.c
+++ b/src/dynarec/dynarec_native_pass.c
@@ -69,7 +69,8 @@ uintptr_t native_pass(dynarec_native_t* dyn, uintptr_t addr, int alternate, int
         if(cur_page != ((addr)&~(box64_pagesize-1))) {
             cur_page = (addr)&~(box64_pagesize-1);
             uint32_t prot = getProtection(addr);
-            if(!(prot&PROT_READ) || checkInHotPage(addr)) {
+            if(!(prot&PROT_READ) || checkInHotPage(addr) || (addr>dyn->end)) {
+                dynarec_log(LOG_INFO, "Stopping dynablock because of protection, hotpage or mmap crossing at %p -> %p inst=%d\n", (void*)dyn->start, (void*)addr, ninst);
                 need_epilog = 1;
                 break;
             }