From 9209e57bd965964b3853d8affecea571e6021b58 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Fri, 13 Oct 2023 21:23:42 +0200 Subject: Various changes on pthread cancel and tls destructor, should be easier to maintain --- src/include/myalign.h | 22 ++++++++++++++++++++++ src/include/threads.h | 1 + 2 files changed, 23 insertions(+) (limited to 'src/include') diff --git a/src/include/myalign.h b/src/include/myalign.h index 247ea1b9..9293139a 100644 --- a/src/include/myalign.h +++ b/src/include/myalign.h @@ -214,4 +214,26 @@ void AlignSemidDs(void *dest, const void* source); uintptr_t getVArgs(x64emu_t* emu, int pos, uintptr_t* b, int N); +// longjmp / setjmp +typedef struct jump_buff_x64_s { + uint64_t save_rbx; + uint64_t save_rbp; + uint64_t save_r12; + uint64_t save_r13; + uint64_t save_r14; + uint64_t save_r15; + uint64_t save_rsp; + uint64_t save_rip; +} jump_buff_x64_t; + +typedef struct __jmp_buf_tag_s { + jump_buff_x64_t __jmpbuf; + int __mask_was_saved; + #ifdef ANDROID + sigset_t __saved_mask; + #else + __sigset_t __saved_mask; + #endif +} __jmp_buf_tag_t; + #endif //__MY_ALIGN__H_ diff --git a/src/include/threads.h b/src/include/threads.h index af58046b..8ed0e4c1 100644 --- a/src/include/threads.h +++ b/src/include/threads.h @@ -8,6 +8,7 @@ void CleanStackSize(box64context_t* context); void init_pthread_helper(void); void fini_pthread_helper(box64context_t* context); +void clean_current_emuthread(void); // prepare an "emuthread structure" in pet and return address of function pointer for a "thread creation routine" void* my_prepare_thread(x64emu_t *emu, void* f, void* arg, int ssize, void** pet); -- cgit 1.4.1