From: Yang Yingliang <yangyingli...@huawei.com> In ILP32, the sigaction struct is the same as AARCH64. To allow for this to work, we use a long long fields and then add extra casts when converting between the user exposed struct and the kernel exposed struct. The modify is came from a patch of glibc, the commit is 9266f4b060f6("Add kernel_sigaction.h for AARCH64 ILP32").
Signed-off-by: Yang Yingliang <yangyingli...@huawei.com> --- include/lapi/rt_sigaction.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/lapi/rt_sigaction.h b/include/lapi/rt_sigaction.h index 46f6a50..2b1365a 100644 --- a/include/lapi/rt_sigaction.h +++ b/include/lapi/rt_sigaction.h @@ -34,9 +34,9 @@ #define INVAL_SA_PTR ((void *)-1) struct kernel_sigaction { - __sighandler_t k_sa_handler; - unsigned long sa_flags; - void (*sa_restorer) (void); + unsigned long long k_sa_handler; + unsigned long long sa_flags; + unsigned long long sa_restorer; sigset_t sa_mask; }; @@ -159,7 +159,7 @@ static int ltp_rt_sigaction(int signum, const struct sigaction *act, if (act == INVAL_SA_PTR) { kact_p = INVAL_SA_PTR; } else if (act) { - kact.k_sa_handler = act->sa_handler; + kact.k_sa_handler = (unsigned long long)(uintptr_t)act->sa_handler; memcpy(&kact.sa_mask, &act->sa_mask, sizeof(sigset_t)); kact.sa_flags = act->sa_flags; kact.sa_restorer = NULL; @@ -203,12 +203,12 @@ static int ltp_rt_sigaction(int signum, const struct sigaction *act, if (ret >= 0) { if (oact && (oact != INVAL_SA_PTR)) { - oact->sa_handler = koact.k_sa_handler; + oact->sa_handler = (void*)(uintptr_t)koact.k_sa_handler; memcpy(&oact->sa_mask, &koact.sa_mask, sizeof(sigset_t)); oact->sa_flags = koact.sa_flags; #ifdef HAVE_SA_RESTORER - oact->sa_restorer = koact.sa_restorer; + oact->sa_restorer = (void*)(uintptr_t)koact.sa_restorer; #endif } } -- 1.8.4.5 ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list