From 617d8977dc315e1bdb013d94335260c91f3944a1 Mon Sep 17 00:00:00 2001 From: Gideon Sebastian Geier Date: Thu, 28 Aug 2025 16:45:54 +0800 Subject: [PATCH] draft: exit, _exit interceptor Signed-off-by: Gideon Sebastian Geier --- src/mod/pthread_create.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/mod/pthread_create.c b/src/mod/pthread_create.c index 34e7d164..bd1fcab6 100644 --- a/src/mod/pthread_create.c +++ b/src/mod/pthread_create.c @@ -27,6 +27,24 @@ INTERPOSE(void, pthread_exit, void *ptr) exit(1); // unreachable } +DICE_NORET +INTERPOSE(void, _exit, int status) +{ + struct pthread_exit_event ev = {.pc = INTERPOSE_PC, .ptr = (void *) (uint64_t) status}; + PS_PUBLISH(INTERCEPT_EVENT, EVENT_THREAD_EXIT, &ev, 0); + REAL(_exit, status); + exit(1); // unreachable +} + +DICE_NORET +INTERPOSE(void, exit, int status) +{ + struct pthread_exit_event ev = {.pc = INTERPOSE_PC, .ptr = (void *) (uint64_t) status}; + PS_PUBLISH(INTERCEPT_EVENT, EVENT_THREAD_EXIT, &ev, 0); + REAL(exit, status); + exit(1); // unreachable +} + static void * _trampoline(void *targ) {