Add compat support for sys_pselect6
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
diff --git a/desc.c b/desc.c
index ac07ca7..9bfe4d0 100644
--- a/desc.c
+++ b/desc.c
@@ -1048,16 +1048,29 @@
{
int rc = decode_select(tcp, tcp->u_arg, BITNESS_CURRENT);
if (entering(tcp)) {
+ long r;
struct {
- void *ss;
+ unsigned long ptr;
unsigned long len;
} data;
- if (umove(tcp, tcp->u_arg[5], &data) < 0)
+#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
+ if (current_wordsize == 4) {
+ struct {
+ uint32_t ptr;
+ uint32_t len;
+ } data32;
+ r = umove(tcp, tcp->u_arg[5], &data32);
+ data.ptr = data32.ptr;
+ data.len = data32.len;
+ } else
+#endif
+ r = umove(tcp, tcp->u_arg[5], &data);
+ if (r < 0)
tprintf(", %#lx", tcp->u_arg[5]);
else {
tprints(", {");
/* NB: kernel requires data.len == NSIG / 8 */
- print_sigset_addr_len(tcp, (long)data.ss, data.len);
+ print_sigset_addr_len(tcp, data.ptr, data.len);
tprintf(", %lu}", data.len);
}
}