Avoid using glibc specific internals. Calculate the sigevent pad size is calculated in similar way as kernel does it.
This is needed for building with musl libc. Signed-off-by: Natanael Copa <nc...@alpinelinux.org> --- linux-user/syscall.c | 2 +- linux-user/syscall_defs.h | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 9864813..c8989b6 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -406,7 +406,7 @@ static int sys_inotify_init1(int flags) #endif #define __NR_sys_ppoll __NR_ppoll _syscall5(int, sys_ppoll, struct pollfd *, fds, nfds_t, nfds, - struct timespec *, timeout, const __sigset_t *, sigmask, + struct timespec *, timeout, const sigset_t *, sigmask, size_t, sigsetsize) #endif diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index fdf9a47..450f71b 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -2552,12 +2552,16 @@ struct target_timer_t { abi_ulong ptr; }; +#define TARGET_SIGEV_MAX_SIZE 64 +#define TARGET_SIGEV_PREAMABLE_SIZE (sizeof(int32_t) * 2 + sizeof(target_sigval_t)) +#define TARGET_SIGEV_PAD_SIZE ((TARGET_SIGEV_MAX_SIZE - TARGET_SIGEV_PREAMABLE_SIZE) / sizeof(int32_t)) + struct target_sigevent { target_sigval_t sigev_value; int32_t sigev_signo; int32_t sigev_notify; union { - int32_t _pad[ARRAY_SIZE(((struct sigevent *)0)->_sigev_un._pad)]; + int32_t _pad[TARGET_SIGEV_PAD_SIZE]; int32_t _tid; struct { -- 1.9.2