about summary refs log tree commit diff stats
path: root/src/tools/env.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-06-10 10:41:04 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-06-10 10:41:04 +0200
commit64080cea819ab75585570679c5fa91698ee7c218 (patch)
tree7cd57cb098fc80eb4a32a938ccaf4ef270411dbe /src/tools/env.c
parentab5c42f0dcc90d1452103bd2dd763a095c8f0144 (diff)
downloadbox64-64080cea819ab75585570679c5fa91698ee7c218.tar.gz
box64-64080cea819ab75585570679c5fa91698ee7c218.zip
[DYNAREC] Improved mmap'd file tracking
Diffstat (limited to 'src/tools/env.c')
-rw-r--r--src/tools/env.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/tools/env.c b/src/tools/env.c
index 2a8c40a7..9d84fd5c 100644
--- a/src/tools/env.c
+++ b/src/tools/env.c
@@ -698,8 +698,16 @@ void RecordEnvMappings(uintptr_t addr, size_t length, int fd)
         mapping = kh_value(mapping_entries, k);
 
     if(mapping && mapping->start>addr) { 
-        dynarec_log(LOG_INFO, "Mapping %s (%s) adjusted start: %p from %p\n", fullname, lowercase_filename, (void*)addr, (void*)(mapping->start)); 
-        mapping->start = addr;
+        dynarec_log(LOG_INFO, "Ignoring Mapping %s (%s) adjusted start: %p from %p\n", fullname, lowercase_filename, (void*)addr, (void*)(mapping->start)); 
+        box_free(lowercase_filename);
+        return;
+    }
+    if(BOX64ENV(dynarec_log)) {
+        uintptr_t end; uintptr_t val;
+        if(rb_get_end_64(envmap, addr, &val, &end))
+            if(end<addr+length) {
+                dynarec_log(LOG_INFO, "Enlarging Mapping %s (%s) %p-%p from %p\n", fullname, lowercase_filename, (void*)(mapping->start), (void*)(addr+length), (void*)end);
+            }
     }
     rb_set_64(envmap, addr, addr + length, (uint64_t)mapping);
     if(mapping->env) {