about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-07-09 17:21:35 +0200
committerptitSeb <sebastien.chev@gmail.com>2025-07-09 17:21:35 +0200
commit5596b9ae3fd0f9518ebd66da289ee137f5a4c26e (patch)
treeb9260087293c41c96ffab10f0212fb01d0984415 /src
parent64efac63c0c7ce9d06d0117f682df2e102259565 (diff)
downloadbox64-5596b9ae3fd0f9518ebd66da289ee137f5a4c26e.tar.gz
box64-5596b9ae3fd0f9518ebd66da289ee137f5a4c26e.zip
[RCFILE] Fixed profile per lib/dll that was using default instead of curent env for non defined values
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_private.h2
-rw-r--r--src/dynarec/dynarec_native.c1
-rw-r--r--src/dynarec/la64/dynarec_la64_private.h2
-rw-r--r--src/dynarec/rv64/dynarec_rv64_private.h2
-rw-r--r--src/include/env.h2
5 files changed, 8 insertions, 1 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_private.h b/src/dynarec/arm64/dynarec_arm64_private.h
index 6b569ff4..2e7145a9 100644
--- a/src/dynarec/arm64/dynarec_arm64_private.h
+++ b/src/dynarec/arm64/dynarec_arm64_private.h
@@ -6,6 +6,7 @@
 typedef struct x64emu_s x64emu_t;
 typedef struct dynablock_s dynablock_t;
 typedef struct instsize_s instsize_t;
+typedef struct box64env_s box64env_t;
 
 #define BARRIER_MAYBE   8
 
@@ -186,6 +187,7 @@ typedef struct dynarec_arm_s {
     int                 need_reloc; // does the dynablock need relocations
     int                 reloc_size;
     uint32_t*           relocs;
+    box64env_t*         env;
 } dynarec_arm_t;
 
 void add_next(dynarec_arm_t *dyn, uintptr_t addr);
diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c
index 9fef7df2..1191189d 100644
--- a/src/dynarec/dynarec_native.c
+++ b/src/dynarec/dynarec_native.c
@@ -658,6 +658,7 @@ dynablock_t* FillBlock64(uintptr_t addr, int alternate, int is32bits, int inst_m
     helper.next = static_next;
     helper.next_cap = MAX_INSTS;
     helper.table64 = NULL;
+    helper.env = GetCurEnvByAddr(addr);
     ResetTable64(&helper);
     helper.table64cap = 0;
     helper.end = addr + SizeFileMapped(addr);
diff --git a/src/dynarec/la64/dynarec_la64_private.h b/src/dynarec/la64/dynarec_la64_private.h
index 27aac66d..08e0ffe2 100644
--- a/src/dynarec/la64/dynarec_la64_private.h
+++ b/src/dynarec/la64/dynarec_la64_private.h
@@ -6,6 +6,7 @@
 typedef struct x64emu_s x64emu_t;
 typedef struct dynablock_s dynablock_t;
 typedef struct instsize_s instsize_t;
+typedef struct box64env_s box64env_t;
 
 #define BARRIER_MAYBE   8
 
@@ -169,6 +170,7 @@ typedef struct dynarec_la64_s {
     int                 need_reloc; // does the dynablock need relocations
     int                 reloc_size;
     uint32_t*           relocs;
+    box64env_t*         env;
 } dynarec_la64_t;
 
 void add_next(dynarec_la64_t *dyn, uintptr_t addr);
diff --git a/src/dynarec/rv64/dynarec_rv64_private.h b/src/dynarec/rv64/dynarec_rv64_private.h
index a5972009..4fa1b91c 100644
--- a/src/dynarec/rv64/dynarec_rv64_private.h
+++ b/src/dynarec/rv64/dynarec_rv64_private.h
@@ -7,6 +7,7 @@
 typedef struct x64emu_s x64emu_t;
 typedef struct dynablock_s dynablock_t;
 typedef struct instsize_s instsize_t;
+typedef struct box64env_s box64env_t;
 
 #define BARRIER_MAYBE   8
 
@@ -196,6 +197,7 @@ typedef struct dynarec_rv64_s {
     int                 need_reloc; // does the dynablock need relocations
     int                 reloc_size;
     uint32_t*           relocs;
+    box64env_t*         env;
 } dynarec_rv64_t;
 
 // v0 is hardware wired to vector mask register, which should be always reserved
diff --git a/src/include/env.h b/src/include/env.h
index 4f5f8368..a1a1719a 100644
--- a/src/include/env.h
+++ b/src/include/env.h
@@ -5,7 +5,7 @@
 #include <unistd.h>
 
 #define BOX64ENV(name)            (box64env.name)
-#define BOX64DRENV(name)          (GetCurEnvByAddr(dyn->start)->name)
+#define BOX64DRENV(name)          ((dyn->env && dyn->env->is_##name##_overridden)?dyn->env->name:box64env.name)
 #define SET_BOX64ENV(name, value)            \
     {                                        \
         box64env.name = (value);             \