about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-12-17 11:40:14 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-12-17 11:40:14 +0100
commit7144efff4e83ccc48294eb4f9cb0cab11befd2dc (patch)
treebaac4329ee922649407cb1a267073b91e045305a /src
parent3ae31c34f6792327c9d855d73fa09a9f374b464a (diff)
downloadbox64-7144efff4e83ccc48294eb4f9cb0cab11befd2dc.tar.gz
box64-7144efff4e83ccc48294eb4f9cb0cab11befd2dc.zip
Reset Segment cache when changing TLS address
Diffstat (limited to 'src')
-rwxr-xr-xsrc/emu/x64int3.c1
-rwxr-xr-xsrc/libtools/threads.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/src/emu/x64int3.c b/src/emu/x64int3.c
index 0be41231..704ddd5a 100755
--- a/src/emu/x64int3.c
+++ b/src/emu/x64int3.c
@@ -61,6 +61,7 @@ x64emu_t* x64emu_fork(x64emu_t* emu, int forktype)
         }
 
     } else if(v==0) {
+        ResetSegmentsCache(emu);
         // execute atforks child functions
         for (int i=0; i<my_context->atfork_sz; --i)
             if(my_context->atforks[i].child)
diff --git a/src/libtools/threads.c b/src/libtools/threads.c
index 820e079c..d1131363 100755
--- a/src/libtools/threads.c
+++ b/src/libtools/threads.c
@@ -247,6 +247,7 @@ static void* pthread_routine(void* p)
 	et->emu->type = EMUTYPE_MAIN;
 	// setup callstack and run...
 	x64emu_t* emu = et->emu;
+	ResetSegmentsCache(emu);
 	Push64(emu, 0);	// PUSH 0 (backtrace marker: return address is 0)
 	Push64(emu, 0);	// PUSH BP
 	R_RBP = R_RSP;	// MOV BP, SP