From 7144efff4e83ccc48294eb4f9cb0cab11befd2dc Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 17 Dec 2022 11:40:14 +0100 Subject: Reset Segment cache when changing TLS address --- src/emu/x64int3.c | 1 + src/libtools/threads.c | 1 + 2 files changed, 2 insertions(+) (limited to 'src') 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; iatfork_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 -- cgit 1.4.1