506795 Better report which clone flags are problematic
506806 Fix execveat() with AT_FDCWD and relative path
506813 The execveat wrapper needs to do more checking
+506816 futex2, futex_waitv WARNING: unhandled amd64-linux syscall: 449
506910 openat2 with RESOLVE_NO_MAGICLINKS succeeds on /proc/self/exe
506928 Wrap (deprecated) linux specific ustat syscall
506929 Wrap (deprecated) linux sysfs syscall
DECL_TEMPLATE(linux, sys_semtimedop_time64);
DECL_TEMPLATE(linux, sys_rt_sigtimedwait_time64);
DECL_TEMPLATE(linux, sys_futex_time64);
+DECL_TEMPLATE(linux, sys_futex_waitv);
DECL_TEMPLATE(linux, sys_sched_rr_get_interval_time64);
// Some arch specific functions called from syswrap-linux.c
LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
LINXY(__NR_memfd_secret, sys_memfd_secret), // 447
+ LINX_(__NR_futex_waitv, sys_futex_waitv), // 449
LINXY(__NR_cachestat, sys_cachestat), // 451
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
LINX_(__NR_faccessat2, sys_faccessat2), // 439
LINXY(__NR_epoll_pwait2, sys_epoll_pwait2), // 441
+ LINX_(__NR_futex_waitv, sys_futex_waitv), // 449
LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
LINXY(__NR_memfd_secret, sys_memfd_secret), // 447
+ LINX_(__NR_futex_waitv, sys_futex_waitv), // 449
LINXY(__NR_cachestat, sys_cachestat), // 451
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
futex_post_helper (tid, arrghs, status);
}
+PRE(sys_futex_waitv)
+{
+ /* asmlinkage long sys_futex_waitv(struct futex_waitv __user *waiters,
+ * unsigned int nr_futexes, unsigned int flags,
+ * struct __kernel_timespec __user *timeout, clockid_t clockid); */
+ *flags |= SfMayBlock;
+ PRINT("sys_futex_waitv ( %#" FMT_REGWORD "x, %ld, %ld, %#" FMT_REGWORD "x, %d )",
+ ARG1, SARG2, SARG3, ARG4, ARG5);
+ PRE_MEM_READ("sys_futex_waitv(waiters)", ARG1, sizeof(struct vki_futex_waitv) * ARG2);
+ PRE_MEM_READ("sys_futex_waitv(timeout)", ARG4, sizeof(struct vki__kernel_timespec));
+}
+
PRE(sys_set_robust_list)
{
PRINT("sys_set_robust_list ( %#" FMT_REGWORD "x, %"
LINXY(__NR_landlock_create_ruleset, sys_landlock_create_ruleset), // 444
LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
+ LINX_(__NR_futex_waitv, sys_futex_waitv), // 449
LINXY(__NR_cachestat, sys_cachestat), // 451
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
LINXY (__NR_statmount, sys_statmount),
LINXY (__NR_listmount, sys_listmount),
LINX_ (__NR_mseal, sys_mseal),
+ LINX_ (__NR_futex_waitv, sys_futex_waitv),
};
SyscallTableEntry * ML_(get_linux_syscall_entry) ( UInt sysno )
LINXY (__NR_statmount, sys_statmount),
LINXY (__NR_listmount, sys_listmount),
LINX_ (__NR_mseal, sys_mseal),
+ LINX_ (__NR_futex_waitv, sys_futex_waitv),
};
SyscallTableEntry* ML_(get_linux_syscall_entry) (UInt sysno)
LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
+ LINX_(__NR_futex_waitv, sys_futex_waitv), // 449
LINXY(__NR_cachestat, sys_cachestat), // 451
LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452
LINXY (__NR_statmount, sys_statmount), // 457
LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), // 445
LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), // 446
+ LINX_ (__NR_futex_waitv, sys_futex_waitv), // 449
LINXY (__NR_cachestat, sys_cachestat), // 451
LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452
LINXY (__NR_statmount, sys_statmount), // 457
LINX_(__NR_landlock_add_rule, sys_landlock_add_rule), /* 445 */
LINX_(__NR_landlock_restrict_self, sys_landlock_restrict_self), /* 446 */
LINXY(__NR_memfd_secret, sys_memfd_secret), /* 447 */
+ LINX_(__NR_futex_waitv, sys_futex_waitv), /* 449 */
LINXY(__NR_cachestat, sys_cachestat), /* 451 */
LINX_(__NR_fchmodat2, sys_fchmodat2), /* 452 */
LINXY(__NR_statmount, sys_statmount), /* 457 */
LINXY(__NR_memfd_secret, sys_memfd_secret), // 447
+ LINX_ (__NR_futex_waitv, sys_futex_waitv), // 449
LINXY (__NR_cachestat, sys_cachestat), // 451
LINX_ (__NR_fchmodat2, sys_fchmodat2), // 452
LINXY (__NR_statmount, sys_statmount), // 457
LINXY(__NR_memfd_secret, sys_memfd_secret), // 447
+ LINX_(__NR_futex_waitv, sys_futex_waitv), // 449
LINXY(__NR_cachestat, sys_cachestat), // 451
LINX_(__NR_fchmodat2, sys_fchmodat2), // 452
LINXY(__NR_statmount, sys_statmount), // 457
struct vki_robust_list __user *list_op_pending;
};
+/* Introduced in linux commit bf69bad38cf63d980e8a603f8d1bd1f85b5ed3d9 */
+struct vki_futex_waitv {
+ __vki_u64 val;
+ __vki_u64 uaddr;
+ __vki_u32 flags;
+ __vki_u32 __reserved;
+};
+
+struct vki__kernel_timespec {
+ long long tv_sec;
+ long long tv_nsec;
+};
+
//----------------------------------------------------------------------
// From linux-2.6.8.1/include/linux/errno.h
//----------------------------------------------------------------------
#define __NR_rt_sigtimedwait_time64 421
#define __NR_futex_time64 422
#define __NR_sched_rr_get_interval_time64 423
+#define __NR_futex_waitv 449
#endif
#define __NR_statx 332
#define __NR_io_pgetevents 333
#define __NR_rseq 334
+#define __NR_futex_waitv 449
#endif /* __VKI_SCNUMS_AMD64_LINUX_H */
#define __NR_pkey_free 396
#define __NR_statx 397
#define __NR_rseq 398
+#define __NR_futex_waitv 449
#define __NR_statx 291
#define __NR_io_pgetevents 292
#define __NR_rseq 293
+#define __NR_futex_waitv 449
#undef __NR_syscalls
#define __NR_syscalls 294
/*--- vki-scnums-ppc32-linux.h ---*/
/*--------------------------------------------------------------------*/
+
+
/*
This file is part of Valgrind, a dynamic binary instrumentation
framework.
#define __NR_pkey_free 385
#define __NR_pkey_mprotect 386
#define __NR_rseq 387
+#define __NR_futex_waitv 449
#endif /* __VKI_SCNUMS_PPC32_LINUX_H */
#define __NR_pkey_mprotect 386
#define __NR_rseq 387
#define __NR_io_pgetevents 388
+#define __NR_futex_waitv 449
#endif /* __VKI_SCNUMS_PPC64_LINUX_H */
#define __NR_close_range 436
#define __NR_faccessat2 439
#define __NR_memfd_secret 447
+#define __NR_futex_waitv 449
#define __NR_fcntl __NR3264_fcntl
#define __NR_statfs __NR3264_statfs
#define __NR_kexec_file_load 381
#define __NR_io_pgetevents 382
#define __NR_rseq 383
+#define __NR_futex_waitv 449
#define NR_syscalls 384
#define __NR_msgsnd 400
#define __NR_msgrcv 401
#define __NR_msgctl 402
+#define __NR_futex_waitv 449
#endif /* __VKI_SCNUMS_X86_LINUX_H */