about summary refs log tree commit diff stats
path: root/src/libtools
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-12-27 22:10:24 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-12-27 22:10:24 +0100
commit4fd59da003ac28f4d0b50d8a9f2efc9809d6d203 (patch)
tree27c8180963958a596401458c21dfc6b3dc6c705e /src/libtools
parente2d7cc5011f8f88d7c96d4d395ea9927a9d9ce8e (diff)
downloadbox64-4fd59da003ac28f4d0b50d8a9f2efc9809d6d203.tar.gz
box64-4fd59da003ac28f4d0b50d8a9f2efc9809d6d203.zip
[ANDROID] Try to fix signal handling on android
Diffstat (limited to 'src/libtools')
-rw-r--r--src/libtools/signals.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index 4abf8a4f..81250766 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -2064,7 +2064,11 @@ EXPORT sighandler_t my_signal(x64emu_t* emu, int signum, sighandler_t handler)
 EXPORT sighandler_t my___sysv_signal(x64emu_t* emu, int signum, sighandler_t handler) __attribute__((alias("my_signal")));
 EXPORT sighandler_t my_sysv_signal(x64emu_t* emu, int signum, sighandler_t handler) __attribute__((alias("my_signal")));    // not completely exact
 
+#ifdef ANDROID
+int EXPORT my_sigaction(x64emu_t* emu, int signum, const android_sigaction_t *act, android_sigaction_t *oldact)
+#else
 int EXPORT my_sigaction(x64emu_t* emu, int signum, const x64_sigaction_t *act, x64_sigaction_t *oldact)
+#endif
 {
     printf_log(LOG_DEBUG, "Sigaction(signum=%d, act=%p(f=%p, flags=0x%x), old=%p)\n", signum, act, act?act->_u._sa_handler:NULL, act?act->sa_flags:0, oldact);
     if(signum<0 || signum>MAX_SIGNAL) {
@@ -2118,10 +2122,18 @@ int EXPORT my_sigaction(x64emu_t* emu, int signum, const x64_sigaction_t *act, x
     }
     return ret;
 }
+#ifdef ANDROID
+int EXPORT my___sigaction(x64emu_t* emu, int signum, const android_sigaction_t *act, android_sigaction_t *oldact)
+#else
 int EXPORT my___sigaction(x64emu_t* emu, int signum, const x64_sigaction_t *act, x64_sigaction_t *oldact)
+#endif
 __attribute__((alias("my_sigaction")));
 
+#ifdef ANDROID
+int EXPORT my_syscall_rt_sigaction(x64emu_t* emu, int signum, const android_sigaction_restorer_t *act, android_sigaction_restorer_t *oldact, int sigsetsize)
+#else
 int EXPORT my_syscall_rt_sigaction(x64emu_t* emu, int signum, const x64_sigaction_restorer_t *act, x64_sigaction_restorer_t *oldact, int sigsetsize)
+#endif
 {
     printf_log(LOG_DEBUG, "Syscall/Sigaction(signum=%d, act=%p, old=%p, size=%d)\n", signum, act, oldact, sigsetsize);
     if(signum<0 || signum>MAX_SIGNAL) {