1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "../../memcheck.h" 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include "scalar.h" 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <unistd.h> 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <sched.h> 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <signal.h> 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <sys/shm.h> 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// See memcheck/tests/x86-linux/scalar.c for an explanation of what this test 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// is doing. 10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main(void) 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // uninitialised, but we know px[0] is 0x0 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long* px = malloc(sizeof(long)); 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long x0 = px[0]; 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long res; 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VALGRIND_MAKE_MEM_NOACCESS(0, 0x1000); 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // The nocancel syscalls all use the same wrappers as the corresponding 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // non-nocancel syscall. This means that if we try to test both in the 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // same file, the nocancel ones won't result in errors being generated 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // because errors are too similar. So we test them in this separate file. 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_read_nocancel 396 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_write_nocancel 397 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_open_nocancel 398 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_close_nocancel 399 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_wait4_nocancel 400 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_recvmsg_nocancel 401 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_sendmsg_nocancel 402 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_recvfrom_nocancel 403 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_accept_nocancel 404 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_msync_nocancel 405 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_fcntl_nocancel 406 36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_select_nocancel 407 37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_fsync_nocancel 408 38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_connect_nocancel 409 39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_sigsuspend_nocancel 410 40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_readv_nocancel 411 41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_writev_nocancel 412 42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_sendto_nocancel 413 43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_pread_nocancel 414 44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_pwrite_nocancel 415 45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_waitid_nocancel 416 46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_poll_nocancel 417 47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_msgsnd_nocancel 418 48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_msgrcv_nocancel 419 49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // The error doesn't appear because it's a dup of the one from sem_wait. 51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown GO(__NR_sem_wait_nocancel, 420, "1s 0m"); 52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown SY(__NR_sem_wait_nocancel, x0); FAIL; 53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR_aio_suspend_nocancel 421 55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR___sigwait_nocancel 422 56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // __NR___semwait_signal_nocancel 423 57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown return 0; 59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} 60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 61