blob: 213a5ad7ceb69de8326bcb83894ca0467f0feb54 [file] [log] [blame]
tombb748cb2011-06-07 22:53:21 +00001#define _GNU_SOURCE
2
sewardj9faf3ed2005-05-04 13:53:00 +00003#include "../../memcheck.h"
nethercote75a8c982004-11-11 19:03:34 +00004#include "scalar.h"
njn870f1702009-02-16 05:11:49 +00005#include <unistd.h>
6#include <sched.h>
7#include <signal.h>
barte4310b32011-11-09 17:31:54 +00008#include <linux/mman.h> // MREMAP_FIXED
Elliott Hughesed398002017-06-21 14:41:24 -07009#include <sys/prctl.h>
nethercotec6851dd2004-11-11 18:00:47 +000010
nethercote330abb52004-11-16 12:58:04 +000011// Here we are trying to trigger every syscall error (scalar errors and
12// memory errors) for every syscall. We do this by passing a lot of bogus
13// arguments, mostly 0 and 1 (often it's 1 because NULL ptr args often aren't
14// checked for memory errors, or in order to have a non-zero length used
15// with some buffer). So most of the syscalls don't actually succeed and do
16// anything.
17//
18// Occasionally we have to be careful not to cause Valgrind to seg fault in
19// its pre-syscall wrappers; it does so because it can't know in general
20// when memory is unaddressable, and so tries to dereference it when doing
njn1d0825f2006-03-27 11:37:07 +000021// PRE_MEM_READ/PRE_MEM_WRITE calls. (Note that Memcheck will
nethercote330abb52004-11-16 12:58:04 +000022// always issue an error message immediately before these seg faults occur).
njn3d225082009-05-18 04:41:48 +000023//
24// The output has numbers like "3s 2m" for each syscall. "s" is short for
25// "scalar", ie. the argument itself is undefined. "m" is short for "memory",
26// ie. the argument points to memory which is unaddressable.
nethercote330abb52004-11-16 12:58:04 +000027
nethercote8b76fe52004-11-08 19:20:09 +000028int main(void)
29{
nethercote303a7512004-11-12 18:21:17 +000030 // uninitialised, but we know px[0] is 0x0
31 long* px = malloc(sizeof(long));
32 long x0 = px[0];
nethercote92b2fd52004-11-16 16:15:41 +000033 long res;
nethercote8b76fe52004-11-08 19:20:09 +000034
nethercotee824cc42004-11-09 16:20:46 +000035 // All __NR_xxx numbers are taken from x86
nethercote8b305af2004-11-14 17:58:27 +000036
nethercoteb9d1e652004-11-16 18:20:35 +000037 // __NR_restart_syscall 0 // XXX: not yet handled, perhaps should be...
38 GO(__NR_restart_syscall, "n/a");
39 //SY(__NR_restart_syscall); // (Not yet handled by Valgrind) FAIL;
nethercote9c311eb2004-11-12 18:20:12 +000040
nethercotee824cc42004-11-09 16:20:46 +000041 // __NR_exit 1
nethercoted16f20b2004-11-16 17:59:04 +000042 GO(__NR_exit, "below");
nethercotee824cc42004-11-09 16:20:46 +000043 // (see below)
44
45 // __NR_fork 2
nethercoted16f20b2004-11-16 17:59:04 +000046 GO(__NR_fork, "other");
nethercote9b9b74b2004-11-15 16:11:20 +000047 // (sse scalar_fork.c)
nethercotee824cc42004-11-09 16:20:46 +000048
nethercote42b2f312004-11-15 15:31:17 +000049 // __NR_read 3
nethercotee824cc42004-11-09 16:20:46 +000050 // Nb: here we are also getting an error from the syscall arg itself.
nethercote660e4ee2004-11-12 13:29:24 +000051 GO(__NR_read, "1+3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +000052 SY(__NR_read+x0, x0, x0, x0+1); FAILx(EFAULT);
nethercotee824cc42004-11-09 16:20:46 +000053
nethercote42b2f312004-11-15 15:31:17 +000054 // __NR_write 4
nethercoteeb1c7b72004-11-11 19:43:50 +000055 GO(__NR_write, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +000056 SY(__NR_write, x0, x0, x0+1); FAIL;
nethercotee824cc42004-11-09 16:20:46 +000057
nethercote42b2f312004-11-15 15:31:17 +000058 // __NR_open 5
nethercotec6851dd2004-11-11 18:00:47 +000059 GO(__NR_open, "(2-args) 2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +000060 SY(__NR_open, x0, x0); FAIL;
nethercotee824cc42004-11-09 16:20:46 +000061
njn870f1702009-02-16 05:11:49 +000062 // Only 1s 0m errors -- the other 2s 1m have been checked in the previous
63 // open test, and if we test them they may be commoned up but they also
64 // may not.
nethercote92b2fd52004-11-16 16:15:41 +000065 GO(__NR_open, "(3-args) 1s 0m");
njn870f1702009-02-16 05:11:49 +000066 SY(__NR_open, "scalar.c", O_CREAT|O_EXCL, x0); FAIL;
nethercotee824cc42004-11-09 16:20:46 +000067
nethercote42b2f312004-11-15 15:31:17 +000068 // __NR_close 6
nethercotec6851dd2004-11-11 18:00:47 +000069 GO(__NR_close, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +000070 SY(__NR_close, x0-1); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +000071
nethercote42b2f312004-11-15 15:31:17 +000072 // __NR_waitpid 7
nethercotec6851dd2004-11-11 18:00:47 +000073 GO(__NR_waitpid, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +000074 SY(__NR_waitpid, x0, x0+1, x0); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +000075
nethercote42b2f312004-11-15 15:31:17 +000076 // __NR_creat 8
nethercotec6851dd2004-11-11 18:00:47 +000077 GO(__NR_creat, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +000078 SY(__NR_creat, x0, x0); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +000079
nethercote42b2f312004-11-15 15:31:17 +000080 // __NR_link 9
nethercotec6851dd2004-11-11 18:00:47 +000081 GO(__NR_link, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +000082 SY(__NR_link, x0, x0); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +000083
nethercote42b2f312004-11-15 15:31:17 +000084 // __NR_unlink 10
nethercotec6851dd2004-11-11 18:00:47 +000085 GO(__NR_unlink, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +000086 SY(__NR_unlink, x0); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +000087
nethercote42b2f312004-11-15 15:31:17 +000088 // __NR_execve 11
nethercote7310afb2004-11-12 15:41:06 +000089 GO(__NR_execve, "3s 1m");
Elliott Hughesed398002017-06-21 14:41:24 -070090 SY(__NR_execve, x0 + 1, x0 + 1, x0); FAIL;
91
92 GO(__NR_execve, "3s 1m");
93 SY(__NR_execve, x0 + 1, x0, x0 + 1); FAIL;
94
95 char *argv_envp[] = {(char *) (x0 + 1), NULL};
96 GO(__NR_execve, "4s 2m");
97 SY(__NR_execve, x0 + 1, x0 + argv_envp, x0); FAIL;
98
99 GO(__NR_execve, "4s 2m");
100 SY(__NR_execve, x0 + 1, x0, x0 + argv_envp); FAIL;
nethercote7310afb2004-11-12 15:41:06 +0000101
nethercote42b2f312004-11-15 15:31:17 +0000102 // __NR_chdir 12
nethercotec6851dd2004-11-11 18:00:47 +0000103 GO(__NR_chdir, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000104 SY(__NR_chdir, x0); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +0000105
nethercote42b2f312004-11-15 15:31:17 +0000106 // __NR_time 13
nethercotec6851dd2004-11-11 18:00:47 +0000107 GO(__NR_time, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000108 SY(__NR_time, x0+1); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +0000109
nethercote42b2f312004-11-15 15:31:17 +0000110 // __NR_mknod 14
nethercoteeb1c7b72004-11-11 19:43:50 +0000111 GO(__NR_mknod, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000112 SY(__NR_mknod, x0, x0, x0); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +0000113
nethercote42b2f312004-11-15 15:31:17 +0000114 // __NR_chmod 15
nethercoteeb1c7b72004-11-11 19:43:50 +0000115 GO(__NR_chmod, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000116 SY(__NR_chmod, x0, x0); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +0000117
nethercotee824cc42004-11-09 16:20:46 +0000118 // __NR_lchown 16
nethercote42b2f312004-11-15 15:31:17 +0000119 GO(__NR_lchown, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000120 //SY(__NR_lchown); // (Not yet handled by Valgrind) FAIL;
nethercoteeb1c7b72004-11-11 19:43:50 +0000121
nethercote42b2f312004-11-15 15:31:17 +0000122 // __NR_break 17
123 GO(__NR_break, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000124 SY(__NR_break); FAIL;
nethercoteeb1c7b72004-11-11 19:43:50 +0000125
nethercotee824cc42004-11-09 16:20:46 +0000126 // __NR_oldstat 18
nethercote42b2f312004-11-15 15:31:17 +0000127 GO(__NR_oldstat, "n/a");
nethercote9a3beb92004-11-12 17:07:26 +0000128 // (obsolete, not handled by Valgrind)
nethercotec6851dd2004-11-11 18:00:47 +0000129
nethercote42b2f312004-11-15 15:31:17 +0000130 // __NR_lseek 19
nethercoteeb1c7b72004-11-11 19:43:50 +0000131 GO(__NR_lseek, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000132 SY(__NR_lseek, x0-1, x0, x0); FAILx(EBADF);
nethercotec6851dd2004-11-11 18:00:47 +0000133
nethercote42b2f312004-11-15 15:31:17 +0000134 // __NR_getpid 20
nethercoteeb1c7b72004-11-11 19:43:50 +0000135 GO(__NR_getpid, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000136 SY(__NR_getpid); SUCC;
nethercote4e632c22004-11-09 16:45:33 +0000137
nethercote42b2f312004-11-15 15:31:17 +0000138 // __NR_mount 21
nethercotec6851dd2004-11-11 18:00:47 +0000139 GO(__NR_mount, "5s 3m");
nethercote92b2fd52004-11-16 16:15:41 +0000140 SY(__NR_mount, x0, x0, x0, x0, x0); FAIL;
nethercote4e632c22004-11-09 16:45:33 +0000141
nethercote42b2f312004-11-15 15:31:17 +0000142 // __NR_umount 22
nethercotec6851dd2004-11-11 18:00:47 +0000143 GO(__NR_umount, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000144 SY(__NR_umount, x0); FAIL;
nethercote0df495a2004-11-11 16:38:21 +0000145
nethercote42b2f312004-11-15 15:31:17 +0000146 // __NR_setuid 23
nethercotec6851dd2004-11-11 18:00:47 +0000147 GO(__NR_setuid, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000148 SY(__NR_setuid, x0); FAIL;
nethercotec6851dd2004-11-11 18:00:47 +0000149
nethercote42b2f312004-11-15 15:31:17 +0000150 // __NR_getuid 24
151 GO(__NR_getuid, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000152 SY(__NR_getuid); SUCC;
nethercote0df495a2004-11-11 16:38:21 +0000153
nethercotee824cc42004-11-09 16:20:46 +0000154 // __NR_stime 25
nethercote42b2f312004-11-15 15:31:17 +0000155 GO(__NR_stime, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000156 //SY(__NR_stime); // (Not yet handled by Valgrind) FAIL;
nethercote9a3beb92004-11-12 17:07:26 +0000157
nethercote42b2f312004-11-15 15:31:17 +0000158 // __NR_ptrace 26
nethercotefbd55ef2004-11-16 18:13:11 +0000159 // XXX: memory pointed to be arg3 goes unchecked... otherwise would be 2m
160 GO(__NR_ptrace, "4s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000161 SY(__NR_ptrace, x0+PTRACE_GETREGS, x0, x0, x0); FAIL;
nethercote9a3beb92004-11-12 17:07:26 +0000162
nethercote42b2f312004-11-15 15:31:17 +0000163 // __NR_alarm 27
nethercote9a3beb92004-11-12 17:07:26 +0000164 GO(__NR_alarm, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000165 SY(__NR_alarm, x0); SUCC;
nethercote9a3beb92004-11-12 17:07:26 +0000166
nethercotee824cc42004-11-09 16:20:46 +0000167 // __NR_oldfstat 28
nethercote42b2f312004-11-15 15:31:17 +0000168 GO(__NR_oldfstat, "n/a");
nethercote9a3beb92004-11-12 17:07:26 +0000169 // (obsolete, not handled by Valgrind)
nethercote0df495a2004-11-11 16:38:21 +0000170
nethercote42b2f312004-11-15 15:31:17 +0000171 // __NR_pause 29
nethercoted16f20b2004-11-16 17:59:04 +0000172 GO(__NR_pause, "ignore");
173 // (hard to test, and no args so not much to be gained -- don't bother)
nethercote0df495a2004-11-11 16:38:21 +0000174
nethercote42b2f312004-11-15 15:31:17 +0000175 // __NR_utime 30
nethercote9a3beb92004-11-12 17:07:26 +0000176 GO(__NR_utime, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000177 SY(__NR_utime, x0, x0+1); FAIL;
nethercoteeb1c7b72004-11-11 19:43:50 +0000178
nethercote42b2f312004-11-15 15:31:17 +0000179 // __NR_stty 31
180 GO(__NR_stty, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000181 SY(__NR_stty); FAIL;
nethercoteeb1c7b72004-11-11 19:43:50 +0000182
nethercote42b2f312004-11-15 15:31:17 +0000183 // __NR_gtty 32
184 GO(__NR_gtty, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000185 SY(__NR_gtty); FAIL;
nethercoteeb1c7b72004-11-11 19:43:50 +0000186
nethercote42b2f312004-11-15 15:31:17 +0000187 // __NR_access 33
nethercote9a3beb92004-11-12 17:07:26 +0000188 GO(__NR_access, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000189 SY(__NR_access, x0, x0); FAIL;
nethercoteeb1c7b72004-11-11 19:43:50 +0000190
nethercote42b2f312004-11-15 15:31:17 +0000191 // __NR_nice 34
nethercote9a3beb92004-11-12 17:07:26 +0000192 GO(__NR_nice, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000193 SY(__NR_nice, x0); SUCC;
nethercoteeb1c7b72004-11-11 19:43:50 +0000194
nethercote42b2f312004-11-15 15:31:17 +0000195 // __NR_ftime 35
196 GO(__NR_ftime, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000197 SY(__NR_ftime); FAIL;
nethercote0df495a2004-11-11 16:38:21 +0000198
nethercote42b2f312004-11-15 15:31:17 +0000199 // __NR_sync 36
200 GO(__NR_sync, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000201 SY(__NR_sync); SUCC;
nethercote0df495a2004-11-11 16:38:21 +0000202
nethercote42b2f312004-11-15 15:31:17 +0000203 // __NR_kill 37
nethercote9a3beb92004-11-12 17:07:26 +0000204 GO(__NR_kill, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000205 SY(__NR_kill, x0, x0); SUCC;
nethercote9a3beb92004-11-12 17:07:26 +0000206
nethercote42b2f312004-11-15 15:31:17 +0000207 // __NR_rename 38
nethercote9a3beb92004-11-12 17:07:26 +0000208 GO(__NR_rename, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000209 SY(__NR_rename, x0, x0); FAIL;
nethercote9a3beb92004-11-12 17:07:26 +0000210
nethercote42b2f312004-11-15 15:31:17 +0000211 // __NR_mkdir 39
nethercote9a3beb92004-11-12 17:07:26 +0000212 GO(__NR_mkdir, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000213 SY(__NR_mkdir, x0, x0); FAIL;
nethercote9a3beb92004-11-12 17:07:26 +0000214
nethercote42b2f312004-11-15 15:31:17 +0000215 // __NR_rmdir 40
nethercote9a3beb92004-11-12 17:07:26 +0000216 GO(__NR_rmdir, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000217 SY(__NR_rmdir, x0); FAIL;
nethercote9a3beb92004-11-12 17:07:26 +0000218
nethercote42b2f312004-11-15 15:31:17 +0000219 // __NR_dup 41
nethercote9a3beb92004-11-12 17:07:26 +0000220 GO(__NR_dup, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000221 SY(__NR_dup, x0-1); FAIL;
nethercote9a3beb92004-11-12 17:07:26 +0000222
nethercote42b2f312004-11-15 15:31:17 +0000223 // __NR_pipe 42
nethercote9a3beb92004-11-12 17:07:26 +0000224 GO(__NR_pipe, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000225 SY(__NR_pipe, x0); FAIL;
nethercote9a3beb92004-11-12 17:07:26 +0000226
nethercote42b2f312004-11-15 15:31:17 +0000227 // __NR_times 43
nethercote9c311eb2004-11-12 18:20:12 +0000228 GO(__NR_times, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000229 SY(__NR_times, x0+1); FAIL;
nethercoteeb1c7b72004-11-11 19:43:50 +0000230
nethercote42b2f312004-11-15 15:31:17 +0000231 // __NR_prof 44
232 GO(__NR_prof, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000233 SY(__NR_prof); FAIL;
nethercoteeb1c7b72004-11-11 19:43:50 +0000234
nethercote42b2f312004-11-15 15:31:17 +0000235 // __NR_brk 45
nethercote9c311eb2004-11-12 18:20:12 +0000236 GO(__NR_brk, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000237 SY(__NR_brk, x0); SUCC;
nethercote9c311eb2004-11-12 18:20:12 +0000238
nethercote42b2f312004-11-15 15:31:17 +0000239 // __NR_setgid 46
nethercote9c311eb2004-11-12 18:20:12 +0000240 GO(__NR_setgid, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000241 SY(__NR_setgid, x0); FAIL;
nethercote0df495a2004-11-11 16:38:21 +0000242
nethercote42b2f312004-11-15 15:31:17 +0000243 // __NR_getgid 47
244 GO(__NR_getgid, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000245 SY(__NR_getgid); SUCC;
nethercote0df495a2004-11-11 16:38:21 +0000246
nethercotee824cc42004-11-09 16:20:46 +0000247 // __NR_signal 48
nethercote42b2f312004-11-15 15:31:17 +0000248 GO(__NR_signal, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000249 //SY(__NR_signal); // (Not yet handled by Valgrind) FAIL;
nethercote0df495a2004-11-11 16:38:21 +0000250
nethercote42b2f312004-11-15 15:31:17 +0000251 // __NR_geteuid 49
252 GO(__NR_geteuid, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000253 SY(__NR_geteuid); SUCC;
nethercote0df495a2004-11-11 16:38:21 +0000254
nethercote42b2f312004-11-15 15:31:17 +0000255 // __NR_getegid 50
256 GO(__NR_getegid, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000257 SY(__NR_getegid); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000258
nethercote42b2f312004-11-15 15:31:17 +0000259 // __NR_acct 51
nethercote6c0e2d02004-11-14 18:11:55 +0000260 GO(__NR_acct, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000261 SY(__NR_acct, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000262
nethercote42b2f312004-11-15 15:31:17 +0000263 // __NR_umount2 52
nethercote6c0e2d02004-11-14 18:11:55 +0000264 GO(__NR_umount2, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000265 SY(__NR_umount2, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000266
nethercote42b2f312004-11-15 15:31:17 +0000267 // __NR_lock 53
268 GO(__NR_lock, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000269 SY(__NR_lock); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000270
nethercote42b2f312004-11-15 15:31:17 +0000271 // __NR_ioctl 54
nethercote6c0e2d02004-11-14 18:11:55 +0000272 #include <asm/ioctls.h>
273 GO(__NR_ioctl, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000274 SY(__NR_ioctl, x0, x0+TCSETS, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000275
nethercote42b2f312004-11-15 15:31:17 +0000276 // __NR_fcntl 55
njncfb8ad52004-11-23 14:57:49 +0000277 // As with sys_open(), the 'fd' error is suppressed for the later ones.
278 // For F_GETFD the 3rd arg is ignored
279 GO(__NR_fcntl, "(GETFD) 2s 0m");
280 SY(__NR_fcntl, x0-1, x0+F_GETFD, x0); FAILx(EBADF);
281
njn870f1702009-02-16 05:11:49 +0000282 // For F_DUPFD the 3rd arg is 'arg'. We don't check the 1st two args
283 // because any errors may or may not be commoned up with the ones from
284 // the previous fcntl call.
njncfb8ad52004-11-23 14:57:49 +0000285 GO(__NR_fcntl, "(DUPFD) 1s 0m");
njn870f1702009-02-16 05:11:49 +0000286 SY(__NR_fcntl, -1, F_DUPFD, x0); FAILx(EBADF);
njncfb8ad52004-11-23 14:57:49 +0000287
njn870f1702009-02-16 05:11:49 +0000288 // For F_GETLK the 3rd arg is 'lock'. On x86, this fails w/EBADF. But
289 // on amd64 in 32-bit mode it fails w/EFAULT. We don't check the 1st two
290 // args for the reason given above.
Elliott Hughesed398002017-06-21 14:41:24 -0700291 GO(__NR_fcntl, "(GETLK) 1s 5m");
njn870f1702009-02-16 05:11:49 +0000292 SY(__NR_fcntl, -1, F_GETLK, x0); FAIL; //FAILx(EBADF);
nethercote6c0e2d02004-11-14 18:11:55 +0000293
nethercote42b2f312004-11-15 15:31:17 +0000294 // __NR_mpx 56
295 GO(__NR_mpx, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000296 SY(__NR_mpx); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000297
298 // __NR_setpgid 57
299 GO(__NR_setpgid, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000300 SY(__NR_setpgid, x0, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000301
nethercote42b2f312004-11-15 15:31:17 +0000302 // __NR_ulimit 58
303 GO(__NR_ulimit, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000304 SY(__NR_ulimit); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000305
306 // __NR_oldolduname 59
nethercote42b2f312004-11-15 15:31:17 +0000307 GO(__NR_oldolduname, "n/a");
nethercote6c0e2d02004-11-14 18:11:55 +0000308 // (obsolete, not handled by Valgrind)
309
310 // __NR_umask 60
311 GO(__NR_umask, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000312 SY(__NR_umask, x0+022); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000313
314 // __NR_chroot 61
315 GO(__NR_chroot, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000316 SY(__NR_chroot, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000317
318 // __NR_ustat 62
nethercote42b2f312004-11-15 15:31:17 +0000319 GO(__NR_ustat, "n/a");
nethercote6c0e2d02004-11-14 18:11:55 +0000320 // (deprecated, not handled by Valgrind)
321
322 // __NR_dup2 63
323 GO(__NR_dup2, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000324 SY(__NR_dup2, x0-1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000325
nethercote42b2f312004-11-15 15:31:17 +0000326 // __NR_getppid 64
327 GO(__NR_getppid, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000328 SY(__NR_getppid); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000329
nethercote42b2f312004-11-15 15:31:17 +0000330 // __NR_getpgrp 65
331 GO(__NR_getpgrp, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000332 SY(__NR_getpgrp); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000333
nethercote42b2f312004-11-15 15:31:17 +0000334 // __NR_setsid 66
335 GO(__NR_setsid, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000336 SY(__NR_setsid); SUCC_OR_FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000337
nethercote42b2f312004-11-15 15:31:17 +0000338 // __NR_sigaction 67
njna23e6c92005-09-27 19:46:46 +0000339 GO(__NR_sigaction, "3s 4m");
njn50acf1d2005-05-06 15:11:04 +0000340 SY(__NR_sigaction, x0, x0+&px[1], x0+&px[1]); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000341
nethercote42b2f312004-11-15 15:31:17 +0000342 // __NR_sgetmask 68 sys_sgetmask()
343 GO(__NR_sgetmask, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000344 //SY(__NR_sgetmask); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000345
346 // __NR_ssetmask 69
nethercote42b2f312004-11-15 15:31:17 +0000347 GO(__NR_ssetmask, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000348 //SY(__NR_ssetmask); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000349
nethercote42b2f312004-11-15 15:31:17 +0000350 // __NR_setreuid 70
nethercote6c0e2d02004-11-14 18:11:55 +0000351 GO(__NR_setreuid, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000352 SY(__NR_setreuid, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000353
nethercote42b2f312004-11-15 15:31:17 +0000354 // __NR_setregid 71
nethercote6c0e2d02004-11-14 18:11:55 +0000355 GO(__NR_setregid, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000356 SY(__NR_setregid, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000357
nethercote42b2f312004-11-15 15:31:17 +0000358 // __NR_sigsuspend 72
nethercote6c0e2d02004-11-14 18:11:55 +0000359 // XXX: how do you use this function?
nethercoted16f20b2004-11-16 17:59:04 +0000360 GO(__NR_sigsuspend, "ignore");
361 // (I don't know how to test this...)
nethercote6c0e2d02004-11-14 18:11:55 +0000362
nethercote42b2f312004-11-15 15:31:17 +0000363 // __NR_sigpending 73
nethercote6c0e2d02004-11-14 18:11:55 +0000364 GO(__NR_sigpending, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000365 SY(__NR_sigpending, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000366
367 // __NR_sethostname 74
nethercote42b2f312004-11-15 15:31:17 +0000368 GO(__NR_sethostname, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000369 //SY(__NR_sethostname); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000370
nethercote42b2f312004-11-15 15:31:17 +0000371 // __NR_setrlimit 75
nethercote6c0e2d02004-11-14 18:11:55 +0000372 GO(__NR_setrlimit, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000373 SY(__NR_setrlimit, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000374
375 // __NR_getrlimit 76
376 GO(__NR_getrlimit, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000377 SY(__NR_getrlimit, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000378
379 // __NR_getrusage 77
380 GO(__NR_getrusage, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000381 SY(__NR_getrusage, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000382
nethercote42b2f312004-11-15 15:31:17 +0000383 // __NR_gettimeofday 78
nethercote6c0e2d02004-11-14 18:11:55 +0000384 GO(__NR_gettimeofday, "2s 2m");
njn72bbd8d2009-05-22 08:12:46 +0000385 SY(__NR_gettimeofday, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000386
nethercote42b2f312004-11-15 15:31:17 +0000387 // __NR_settimeofday 79
nethercote6c0e2d02004-11-14 18:11:55 +0000388 GO(__NR_settimeofday, "2s 2m");
njn72bbd8d2009-05-22 08:12:46 +0000389 SY(__NR_settimeofday, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000390
nethercote42b2f312004-11-15 15:31:17 +0000391 // __NR_getgroups 80
nethercote6c0e2d02004-11-14 18:11:55 +0000392 GO(__NR_getgroups, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000393 SY(__NR_getgroups, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000394
nethercote42b2f312004-11-15 15:31:17 +0000395 // __NR_setgroups 81
nethercote6c0e2d02004-11-14 18:11:55 +0000396 GO(__NR_setgroups, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000397 SY(__NR_setgroups, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000398
nethercote42b2f312004-11-15 15:31:17 +0000399 // __NR_select 82
nethercote6c0e2d02004-11-14 18:11:55 +0000400 {
401 long args[5] = { x0+8, x0+0xffffffee, x0+1, x0+1, x0+1 };
njn870f1702009-02-16 05:11:49 +0000402 GO(__NR_select, "1s 5m");
nethercote92b2fd52004-11-16 16:15:41 +0000403 SY(__NR_select, args+x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000404 }
405
nethercote42b2f312004-11-15 15:31:17 +0000406 // __NR_symlink 83
nethercote5a945af2004-11-14 18:37:07 +0000407 GO(__NR_symlink, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000408 SY(__NR_symlink, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000409
410 // __NR_oldlstat 84
nethercote42b2f312004-11-15 15:31:17 +0000411 GO(__NR_oldlstat, "n/a");
nethercote6c0e2d02004-11-14 18:11:55 +0000412 // (obsolete, not handled by Valgrind)
413
414 // __NR_readlink 85
nethercote5a945af2004-11-14 18:37:07 +0000415 GO(__NR_readlink, "3s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000416 SY(__NR_readlink, x0+1, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000417
418 // __NR_uselib 86
nethercote42b2f312004-11-15 15:31:17 +0000419 GO(__NR_uselib, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000420 //SY(__NR_uselib); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000421
422 // __NR_swapon 87
nethercote42b2f312004-11-15 15:31:17 +0000423 GO(__NR_swapon, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000424 //SY(__NR_swapon); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000425
426 // __NR_reboot 88
nethercote42b2f312004-11-15 15:31:17 +0000427 GO(__NR_reboot, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000428 //SY(__NR_reboot); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000429
430 // __NR_readdir 89
nethercote42b2f312004-11-15 15:31:17 +0000431 GO(__NR_readdir, "n/a");
nethercote6c0e2d02004-11-14 18:11:55 +0000432 // (superseded, not handled by Valgrind)
433
nethercote42b2f312004-11-15 15:31:17 +0000434 // __NR_mmap 90
nethercote151effa2004-11-15 12:57:39 +0000435 {
436 long args[6] = { x0, x0, x0, x0, x0-1, x0 };
njn870f1702009-02-16 05:11:49 +0000437 GO(__NR_mmap, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000438 SY(__NR_mmap, args+x0); FAIL;
nethercote151effa2004-11-15 12:57:39 +0000439 }
nethercote6c0e2d02004-11-14 18:11:55 +0000440
nethercote42b2f312004-11-15 15:31:17 +0000441 // __NR_munmap 91
nethercote06c7bd72004-11-14 19:11:56 +0000442 GO(__NR_munmap, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000443 SY(__NR_munmap, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000444
nethercote42b2f312004-11-15 15:31:17 +0000445 // __NR_truncate 92
nethercote5a945af2004-11-14 18:37:07 +0000446 GO(__NR_truncate, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000447 SY(__NR_truncate, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000448
nethercote42b2f312004-11-15 15:31:17 +0000449 // __NR_ftruncate 93
nethercote5a945af2004-11-14 18:37:07 +0000450 GO(__NR_ftruncate, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000451 SY(__NR_ftruncate, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000452
nethercote42b2f312004-11-15 15:31:17 +0000453 // __NR_fchmod 94
nethercotedc18c0a2004-11-14 20:06:27 +0000454 GO(__NR_fchmod, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000455 SY(__NR_fchmod, x0-1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000456
nethercote42b2f312004-11-15 15:31:17 +0000457 // __NR_fchown 95
nethercote6c0e2d02004-11-14 18:11:55 +0000458 GO(__NR_fchown, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000459 SY(__NR_fchown, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000460
nethercote42b2f312004-11-15 15:31:17 +0000461 // __NR_getpriority 96
nethercotedc18c0a2004-11-14 20:06:27 +0000462 GO(__NR_getpriority, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000463 SY(__NR_getpriority, x0-1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000464
nethercote42b2f312004-11-15 15:31:17 +0000465 // __NR_setpriority 97
nethercotedc18c0a2004-11-14 20:06:27 +0000466 GO(__NR_setpriority, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000467 SY(__NR_setpriority, x0-1, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000468
469 // __NR_profil 98
nethercote42b2f312004-11-15 15:31:17 +0000470 GO(__NR_profil, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000471 SY(__NR_profil); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000472
nethercote42b2f312004-11-15 15:31:17 +0000473 // __NR_statfs 99
nethercotedc18c0a2004-11-14 20:06:27 +0000474 GO(__NR_statfs, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000475 SY(__NR_statfs, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000476
nethercote42b2f312004-11-15 15:31:17 +0000477 // __NR_fstatfs 100
nethercotedc18c0a2004-11-14 20:06:27 +0000478 GO(__NR_fstatfs, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000479 SY(__NR_fstatfs, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000480
nethercote42b2f312004-11-15 15:31:17 +0000481 // __NR_ioperm 101
nethercotedc18c0a2004-11-14 20:06:27 +0000482 GO(__NR_ioperm, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000483 SY(__NR_ioperm, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000484
nethercote42b2f312004-11-15 15:31:17 +0000485 // __NR_socketcall 102
nethercoted16f20b2004-11-16 17:59:04 +0000486 GO(__NR_socketcall, "XXX");
487 // (XXX: need to do all sub-cases properly)
nethercote6c0e2d02004-11-14 18:11:55 +0000488
nethercote42b2f312004-11-15 15:31:17 +0000489 // __NR_syslog 103
nethercotedc18c0a2004-11-14 20:06:27 +0000490 GO(__NR_syslog, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000491 SY(__NR_syslog, x0+2, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000492
nethercote42b2f312004-11-15 15:31:17 +0000493 // __NR_setitimer 104
nethercote5b653bc2004-11-15 14:32:12 +0000494 GO(__NR_setitimer, "3s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000495 SY(__NR_setitimer, x0, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000496
nethercote42b2f312004-11-15 15:31:17 +0000497 // __NR_getitimer 105
nethercote5b653bc2004-11-15 14:32:12 +0000498 GO(__NR_getitimer, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000499 SY(__NR_getitimer, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000500
nethercote42b2f312004-11-15 15:31:17 +0000501 // __NR_stat 106
nethercote6c0e2d02004-11-14 18:11:55 +0000502 GO(__NR_stat, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000503 SY(__NR_stat, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000504
nethercote42b2f312004-11-15 15:31:17 +0000505 // __NR_lstat 107
nethercote6c0e2d02004-11-14 18:11:55 +0000506 GO(__NR_lstat, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000507 SY(__NR_lstat, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000508
nethercote42b2f312004-11-15 15:31:17 +0000509 // __NR_fstat 108
nethercote6c0e2d02004-11-14 18:11:55 +0000510 GO(__NR_fstat, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000511 SY(__NR_fstat, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000512
513 // __NR_olduname 109
nethercote42b2f312004-11-15 15:31:17 +0000514 GO(__NR_olduname, "n/a");
nethercote6c0e2d02004-11-14 18:11:55 +0000515 // (obsolete, not handled by Valgrind)
516
nethercote42b2f312004-11-15 15:31:17 +0000517 // __NR_iopl 110
nethercote7f7e4d12004-11-15 12:28:58 +0000518 GO(__NR_iopl, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000519 SY(__NR_iopl, x0+100); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000520
nethercote42b2f312004-11-15 15:31:17 +0000521 // __NR_vhangup 111
522 GO(__NR_vhangup, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000523 SY(__NR_vhangup); SUCC_OR_FAIL; // Will succeed for superuser
nethercote6c0e2d02004-11-14 18:11:55 +0000524
nethercote42b2f312004-11-15 15:31:17 +0000525 // __NR_idle 112
526 GO(__NR_idle, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000527 SY(__NR_idle); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000528
529 // __NR_vm86old 113
nethercote42b2f312004-11-15 15:31:17 +0000530 GO(__NR_vm86old, "n/a");
531 // (will probably never be handled by Valgrind)
nethercote6c0e2d02004-11-14 18:11:55 +0000532
nethercote42b2f312004-11-15 15:31:17 +0000533 // __NR_wait4 114
nethercote7f7e4d12004-11-15 12:28:58 +0000534 GO(__NR_wait4, "4s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000535 SY(__NR_wait4, x0, x0+1, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000536
537 // __NR_swapoff 115
nethercote38e0a9e2004-11-15 20:42:06 +0000538 GO(__NR_swapoff, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000539 //SY(__NR_swapoff); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000540
nethercote42b2f312004-11-15 15:31:17 +0000541 // __NR_sysinfo 116
nethercotedc18c0a2004-11-14 20:06:27 +0000542 GO(__NR_sysinfo, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000543 SY(__NR_sysinfo, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000544
545 // __NR_ipc 117
nethercoted16f20b2004-11-16 17:59:04 +0000546 // XXX: This is simplistic -- need to do all the sub-cases properly.
nethercote7f7e4d12004-11-15 12:28:58 +0000547 // XXX: Also, should be 6 scalar errors, except glibc's syscall() doesn't
548 // use the 6th one!
nethercote7f7e4d12004-11-15 12:28:58 +0000549 GO(__NR_ipc, "5s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000550 SY(__NR_ipc, x0+4, x0, x0, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000551
nethercote42b2f312004-11-15 15:31:17 +0000552 // __NR_fsync 118
nethercotedc18c0a2004-11-14 20:06:27 +0000553 GO(__NR_fsync, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000554 SY(__NR_fsync, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000555
556 // __NR_sigreturn 119
nethercoted16f20b2004-11-16 17:59:04 +0000557 GO(__NR_sigreturn, "n/a");
558 //SY(__NR_sigreturn); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000559
560 // __NR_clone 120
thughes16e36d82004-11-15 15:35:49 +0000561#ifndef CLONE_PARENT_SETTID
562#define CLONE_PARENT_SETTID 0x00100000
563#endif
njna262f622009-07-20 05:48:44 +0000564 GO(__NR_clone, "5s 3m");
565 SY(__NR_clone, x0|CLONE_PARENT_SETTID|CLONE_SETTLS|CLONE_CHILD_SETTID|SIGCHLD, x0, x0, x0, x0); FAIL;
nethercote92b2fd52004-11-16 16:15:41 +0000566 if (0 == res) {
567 SY(__NR_exit, 0); FAIL;
thughes16e36d82004-11-15 15:35:49 +0000568 }
nethercote6c0e2d02004-11-14 18:11:55 +0000569
570 // __NR_setdomainname 121
nethercote42b2f312004-11-15 15:31:17 +0000571 GO(__NR_setdomainname, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000572 //SY(__NR_setdomainname); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000573
574 // __NR_uname 122
575 GO(__NR_uname, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000576 SY(__NR_uname, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000577
578 // __NR_modify_ldt 123
nethercote0eafe552004-11-15 16:40:40 +0000579 GO(__NR_modify_ldt, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000580 SY(__NR_modify_ldt, x0+1, x0, x0+1); FAILx(EINVAL);
nethercote6c0e2d02004-11-14 18:11:55 +0000581
nethercote42b2f312004-11-15 15:31:17 +0000582 // __NR_adjtimex 124
nethercoted16f20b2004-11-16 17:59:04 +0000583 // XXX: need to do properly, but deref'ing NULL causing Valgrind to crash...
584 GO(__NR_adjtimex, "XXX");
nethercote92b2fd52004-11-16 16:15:41 +0000585// SY(__NR_adjtimex, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000586
nethercote42b2f312004-11-15 15:31:17 +0000587 // __NR_mprotect 125
nethercote06c7bd72004-11-14 19:11:56 +0000588 GO(__NR_mprotect, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000589 SY(__NR_mprotect, x0+1, x0, x0); FAILx(EINVAL);
nethercote6c0e2d02004-11-14 18:11:55 +0000590
591 // __NR_sigprocmask 126
nethercote92b2fd52004-11-16 16:15:41 +0000592 GO(__NR_sigprocmask, "3s 2m");
593 SY(__NR_sigprocmask, x0, x0+&px[1], x0+&px[1]); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000594
nethercote42b2f312004-11-15 15:31:17 +0000595 // __NR_create_module 127
596 GO(__NR_create_module, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000597 SY(__NR_create_module); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000598
599 // __NR_init_module 128
nethercote0eafe552004-11-15 16:40:40 +0000600 GO(__NR_init_module, "3s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000601 SY(__NR_init_module, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000602
603 // __NR_delete_module 129
nethercote42b2f312004-11-15 15:31:17 +0000604 GO(__NR_delete_module, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000605 //SY(__NR_delete_module); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000606
nethercote42b2f312004-11-15 15:31:17 +0000607 // __NR_get_kernel_syms 130
608 GO(__NR_get_kernel_syms, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000609 SY(__NR_get_kernel_syms); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000610
nethercote42b2f312004-11-15 15:31:17 +0000611 // __NR_quotactl 131
nethercote5b653bc2004-11-15 14:32:12 +0000612 GO(__NR_quotactl, "4s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000613 SY(__NR_quotactl, x0, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000614
nethercote42b2f312004-11-15 15:31:17 +0000615 // __NR_getpgid 132
nethercote5b653bc2004-11-15 14:32:12 +0000616 GO(__NR_getpgid, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000617 SY(__NR_getpgid, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000618
nethercote42b2f312004-11-15 15:31:17 +0000619 // __NR_fchdir 133
nethercote5b653bc2004-11-15 14:32:12 +0000620 GO(__NR_fchdir, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000621 SY(__NR_fchdir, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000622
623 // __NR_bdflush 134
nethercote38e0a9e2004-11-15 20:42:06 +0000624 GO(__NR_bdflush, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000625 //SY(__NR_bdflush); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000626
627 // __NR_sysfs 135
nethercoted16f20b2004-11-16 17:59:04 +0000628 GO(__NR_sysfs, "n/a");
629 //SY(__NR_sysfs); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000630
nethercote42b2f312004-11-15 15:31:17 +0000631 // __NR_personality 136
nethercote5b653bc2004-11-15 14:32:12 +0000632 GO(__NR_personality, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000633 SY(__NR_personality, x0+0xffffffff); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000634
nethercote42b2f312004-11-15 15:31:17 +0000635 // __NR_afs_syscall 137
636 GO(__NR_afs_syscall, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000637 SY(__NR_afs_syscall); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000638
639 // __NR_setfsuid 138
640 GO(__NR_setfsuid, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000641 SY(__NR_setfsuid, x0); SUCC; // This syscall has a stupid return value
nethercote6c0e2d02004-11-14 18:11:55 +0000642
643 // __NR_setfsgid 139
644 GO(__NR_setfsgid, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000645 SY(__NR_setfsgid, x0); SUCC; // This syscall has a stupid return value
nethercote6c0e2d02004-11-14 18:11:55 +0000646
647 // __NR__llseek 140
nethercoted6b5a212004-11-15 17:04:14 +0000648 GO(__NR__llseek, "5s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000649 SY(__NR__llseek, x0, x0, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000650
nethercote42b2f312004-11-15 15:31:17 +0000651 // __NR_getdents 141
nethercote06c7bd72004-11-14 19:11:56 +0000652 GO(__NR_getdents, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000653 SY(__NR_getdents, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000654
nethercote42b2f312004-11-15 15:31:17 +0000655 // __NR__newselect 142
nethercote6c0e2d02004-11-14 18:11:55 +0000656 GO(__NR__newselect, "5s 4m");
nethercote92b2fd52004-11-16 16:15:41 +0000657 SY(__NR__newselect, x0+8, x0+0xffffffff, x0+1, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000658
659 // __NR_flock 143
nethercote06c7bd72004-11-14 19:11:56 +0000660 GO(__NR_flock, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000661 SY(__NR_flock, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000662
nethercote42b2f312004-11-15 15:31:17 +0000663 // __NR_msync 144
nethercote92b2fd52004-11-16 16:15:41 +0000664 GO(__NR_msync, "3s 1m");
665 SY(__NR_msync, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000666
667 // __NR_readv 145
nethercoted6b5a212004-11-15 17:04:14 +0000668 GO(__NR_readv, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000669 SY(__NR_readv, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000670
671 // __NR_writev 146
nethercoted6b5a212004-11-15 17:04:14 +0000672 GO(__NR_writev, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000673 SY(__NR_writev, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000674
nethercote42b2f312004-11-15 15:31:17 +0000675 // __NR_getsid 147
nethercote5b653bc2004-11-15 14:32:12 +0000676 GO(__NR_getsid, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000677 SY(__NR_getsid, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000678
nethercote42b2f312004-11-15 15:31:17 +0000679 // __NR_fdatasync 148
nethercotedc18c0a2004-11-14 20:06:27 +0000680 GO(__NR_fdatasync, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000681 SY(__NR_fdatasync, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000682
683 // __NR__sysctl 149
nethercote3954ea32004-11-15 17:19:22 +0000684 GO(__NR__sysctl, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000685 SY(__NR__sysctl, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000686
nethercote42b2f312004-11-15 15:31:17 +0000687 // __NR_mlock 150
nethercote06c7bd72004-11-14 19:11:56 +0000688 GO(__NR_mlock, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000689 SY(__NR_mlock, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000690
nethercote42b2f312004-11-15 15:31:17 +0000691 // __NR_munlock 151
nethercote06c7bd72004-11-14 19:11:56 +0000692 GO(__NR_munlock, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000693 SY(__NR_munlock, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000694
nethercote42b2f312004-11-15 15:31:17 +0000695 // __NR_mlockall 152
nethercote92b2fd52004-11-16 16:15:41 +0000696 GO(__NR_mlockall, "1s 0m");
697 SY(__NR_mlockall, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000698
nethercote42b2f312004-11-15 15:31:17 +0000699 // __NR_munlockall 153
700 GO(__NR_munlockall, "0s 0m");
sewardjb5f6f512005-03-10 23:59:00 +0000701 SY(__NR_munlockall); SUCC_OR_FAILx(EPERM);
nethercote6c0e2d02004-11-14 18:11:55 +0000702
nethercote42b2f312004-11-15 15:31:17 +0000703 // __NR_sched_setparam 154
nethercote5b653bc2004-11-15 14:32:12 +0000704 GO(__NR_sched_setparam, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000705 SY(__NR_sched_setparam, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000706
nethercote42b2f312004-11-15 15:31:17 +0000707 // __NR_sched_getparam 155
nethercote5b653bc2004-11-15 14:32:12 +0000708 GO(__NR_sched_getparam, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000709 SY(__NR_sched_getparam, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000710
nethercote42b2f312004-11-15 15:31:17 +0000711 // __NR_sched_setscheduler 156
nethercote5b653bc2004-11-15 14:32:12 +0000712 GO(__NR_sched_setscheduler, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000713 SY(__NR_sched_setscheduler, x0-1, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000714
nethercote42b2f312004-11-15 15:31:17 +0000715 // __NR_sched_getscheduler 157
nethercote5b653bc2004-11-15 14:32:12 +0000716 GO(__NR_sched_getscheduler, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000717 SY(__NR_sched_getscheduler, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000718
719 // __NR_sched_yield 158
nethercoted16f20b2004-11-16 17:59:04 +0000720 GO(__NR_sched_yield, "0s 0m");
721 SY(__NR_sched_yield); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000722
nethercote42b2f312004-11-15 15:31:17 +0000723 // __NR_sched_get_priority_max 159
nethercote5b653bc2004-11-15 14:32:12 +0000724 GO(__NR_sched_get_priority_max, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000725 SY(__NR_sched_get_priority_max, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000726
nethercote42b2f312004-11-15 15:31:17 +0000727 // __NR_sched_get_priority_min 160
nethercote5b653bc2004-11-15 14:32:12 +0000728 GO(__NR_sched_get_priority_min, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000729 SY(__NR_sched_get_priority_min, x0-1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000730
731 // __NR_sched_rr_get_interval 161
nethercote42b2f312004-11-15 15:31:17 +0000732 GO(__NR_sched_rr_get_interval, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000733 //SY(__NR_sched_rr_get_interval); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000734
nethercote42b2f312004-11-15 15:31:17 +0000735 // __NR_nanosleep 162
nethercote5b653bc2004-11-15 14:32:12 +0000736 GO(__NR_nanosleep, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000737 SY(__NR_nanosleep, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000738
739 // __NR_mremap 163
nethercoted16f20b2004-11-16 17:59:04 +0000740 GO(__NR_mremap, "5s 0m");
njn870f1702009-02-16 05:11:49 +0000741 SY(__NR_mremap, x0+1, x0, x0, x0+MREMAP_FIXED, x0); FAILx(EINVAL);
nethercote6c0e2d02004-11-14 18:11:55 +0000742
nethercote42b2f312004-11-15 15:31:17 +0000743 // __NR_setresuid 164
nethercote6c0e2d02004-11-14 18:11:55 +0000744 GO(__NR_setresuid, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000745 SY(__NR_setresuid, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000746
nethercote42b2f312004-11-15 15:31:17 +0000747 // __NR_getresuid 165
nethercote6c0e2d02004-11-14 18:11:55 +0000748 GO(__NR_getresuid, "3s 3m");
nethercote92b2fd52004-11-16 16:15:41 +0000749 SY(__NR_getresuid, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000750
751 // __NR_vm86 166
nethercote42b2f312004-11-15 15:31:17 +0000752 GO(__NR_vm86, "n/a");
753 // (will probably never be handled by Valgrind)
nethercote6c0e2d02004-11-14 18:11:55 +0000754
nethercote42b2f312004-11-15 15:31:17 +0000755 // __NR_query_module 167
756 GO(__NR_query_module, "ni");
nethercote92b2fd52004-11-16 16:15:41 +0000757 SY(__NR_query_module); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000758
nethercote42b2f312004-11-15 15:31:17 +0000759 // __NR_poll 168
nethercotef90953e2004-11-15 14:50:02 +0000760 GO(__NR_poll, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000761 SY(__NR_poll, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000762
763 // __NR_nfsservctl 169
nethercote42b2f312004-11-15 15:31:17 +0000764 GO(__NR_nfsservctl, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000765 //SY(__NR_nfsservctl); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000766
nethercote42b2f312004-11-15 15:31:17 +0000767 // __NR_setresgid 170
nethercote6c0e2d02004-11-14 18:11:55 +0000768 GO(__NR_setresgid, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000769 SY(__NR_setresgid, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000770
nethercote42b2f312004-11-15 15:31:17 +0000771 // __NR_getresgid 171
nethercote6c0e2d02004-11-14 18:11:55 +0000772 GO(__NR_getresgid, "3s 3m");
nethercote92b2fd52004-11-16 16:15:41 +0000773 SY(__NR_getresgid, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000774
nethercote3954ea32004-11-15 17:19:22 +0000775 // __NR_prctl 172
776 GO(__NR_prctl, "5s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000777 SY(__NR_prctl, x0, x0, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000778
Elliott Hughesed398002017-06-21 14:41:24 -0700779 char buf16[16] = "123456789012345.";
780 buf16[15] = x0; // this will cause 'using unitialised value'
781 GO(__NR_prctl, "2s 0m");
782 SY(__NR_prctl, x0 + PR_SET_NAME, buf16); SUCC;
783
784 char buf17[17] = "1234567890123456.";
785 buf17[16] = x0; // this must not cause 'using unitialised value'
786 GO(__NR_prctl, "1s 0m");
787 SY(__NR_prctl, x0 + PR_SET_NAME, buf17); SUCC;
788
nethercote6c0e2d02004-11-14 18:11:55 +0000789 // __NR_rt_sigreturn 173
nethercote42b2f312004-11-15 15:31:17 +0000790 GO(__NR_rt_sigreturn, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000791 //SY(__NR_rt_sigreturn); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000792
nethercote42b2f312004-11-15 15:31:17 +0000793 // __NR_rt_sigaction 174
njna23e6c92005-09-27 19:46:46 +0000794 GO(__NR_rt_sigaction, "4s 4m");
tomda503282005-08-08 18:32:54 +0000795 SY(__NR_rt_sigaction, x0, x0+&px[2], x0+&px[2], x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000796
797 // __NR_rt_sigprocmask 175
nethercote7fbe08a2004-11-15 19:03:27 +0000798 GO(__NR_rt_sigprocmask, "4s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000799 SY(__NR_rt_sigprocmask, x0, x0+1, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000800
801 // __NR_rt_sigpending 176
nethercote38e0a9e2004-11-15 20:42:06 +0000802 GO(__NR_rt_sigpending, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000803 SY(__NR_rt_sigpending, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000804
805 // __NR_rt_sigtimedwait 177
nethercote38e0a9e2004-11-15 20:42:06 +0000806 GO(__NR_rt_sigtimedwait, "4s 3m");
nethercote92b2fd52004-11-16 16:15:41 +0000807 SY(__NR_rt_sigtimedwait, x0+1, x0+1, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000808
809 // __NR_rt_sigqueueinfo 178
nethercote92b2fd52004-11-16 16:15:41 +0000810 GO(__NR_rt_sigqueueinfo, "3s 1m");
811 SY(__NR_rt_sigqueueinfo, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000812
813 // __NR_rt_sigsuspend 179
Elliott Hughesed398002017-06-21 14:41:24 -0700814 GO(__NR_rt_sigsuspend, "2s 1m");
815 SY(__NR_rt_sigsuspend, x0 + 1, x0 + sizeof(sigset_t)); FAILx(EFAULT);
nethercote6c0e2d02004-11-14 18:11:55 +0000816
817 // __NR_pread64 180
nethercote38e0a9e2004-11-15 20:42:06 +0000818 GO(__NR_pread64, "5s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000819 SY(__NR_pread64, x0, x0, x0+1, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000820
821 // __NR_pwrite64 181
nethercote38e0a9e2004-11-15 20:42:06 +0000822 GO(__NR_pwrite64, "5s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000823 SY(__NR_pwrite64, x0, x0, x0+1, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000824
nethercote42b2f312004-11-15 15:31:17 +0000825 // __NR_chown 182
nethercote6c0e2d02004-11-14 18:11:55 +0000826 GO(__NR_chown, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000827 SY(__NR_chown, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000828
829 // __NR_getcwd 183
nethercote38e0a9e2004-11-15 20:42:06 +0000830 GO(__NR_getcwd, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000831 SY(__NR_getcwd, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000832
nethercote42b2f312004-11-15 15:31:17 +0000833 // __NR_capget 184
nethercote5b653bc2004-11-15 14:32:12 +0000834 GO(__NR_capget, "2s 2m");
tom199c15b2012-10-04 21:38:27 +0000835 SY(__NR_capget, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000836
nethercote42b2f312004-11-15 15:31:17 +0000837 // __NR_capset 185
nethercote5b653bc2004-11-15 14:32:12 +0000838 GO(__NR_capset, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000839 SY(__NR_capset, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000840
841 // __NR_sigaltstack 186
nethercoteb77dee62004-11-16 17:13:24 +0000842 {
843 struct our_sigaltstack {
844 void *ss_sp;
845 int ss_flags;
846 size_t ss_size;
847 } ss;
848 ss.ss_sp = NULL;
849 ss.ss_flags = 0;
850 ss.ss_size = 0;
njndbf7ca72006-03-31 11:57:59 +0000851 VALGRIND_MAKE_MEM_NOACCESS(& ss, sizeof(struct our_sigaltstack));
nethercoteb77dee62004-11-16 17:13:24 +0000852 GO(__NR_sigaltstack, "2s 2m");
853 SY(__NR_sigaltstack, x0+&ss, x0+&ss); SUCC;
854 }
nethercote6c0e2d02004-11-14 18:11:55 +0000855
856 // __NR_sendfile 187
nethercote38e0a9e2004-11-15 20:42:06 +0000857 GO(__NR_sendfile, "4s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000858 SY(__NR_sendfile, x0, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000859
860 // __NR_getpmsg 188
nethercoteb77dee62004-11-16 17:13:24 +0000861 // Could do 5s 4m with more effort, but I can't be bothered for this
862 // crappy non-standard syscall.
863 GO(__NR_getpmsg, "5s 0m");
864 SY(__NR_getpmsg, x0, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000865
866 // __NR_putpmsg 189
nethercoteb77dee62004-11-16 17:13:24 +0000867 // Could do 5s 2m with more effort, but I can't be bothered for this
868 // crappy non-standard syscall.
869 GO(__NR_putpmsg, "5s 0m");
870 SY(__NR_putpmsg, x0, x0, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000871
872 // __NR_vfork 190
nethercote92b2fd52004-11-16 16:15:41 +0000873 GO(__NR_vfork, "other");
nethercote9b9b74b2004-11-15 16:11:20 +0000874 // (sse scalar_vfork.c)
nethercote6c0e2d02004-11-14 18:11:55 +0000875
876 // __NR_ugetrlimit 191
877 GO(__NR_ugetrlimit, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000878 SY(__NR_ugetrlimit, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000879
nethercote42b2f312004-11-15 15:31:17 +0000880 // __NR_mmap2 192
njn870f1702009-02-16 05:11:49 +0000881 GO(__NR_mmap2, "6s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000882 SY(__NR_mmap2, x0, x0, x0, x0, x0-1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000883
nethercote42b2f312004-11-15 15:31:17 +0000884 // __NR_truncate64 193
nethercote5a945af2004-11-14 18:37:07 +0000885 GO(__NR_truncate64, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000886 SY(__NR_truncate64, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000887
nethercote42b2f312004-11-15 15:31:17 +0000888 // __NR_ftruncate64 194
nethercote5a945af2004-11-14 18:37:07 +0000889 GO(__NR_ftruncate64, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000890 SY(__NR_ftruncate64, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000891
892 // __NR_stat64 195
893 GO(__NR_stat64, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000894 SY(__NR_stat64, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000895
896 // __NR_lstat64 196
897 GO(__NR_lstat64, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +0000898 SY(__NR_lstat64, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000899
900 // __NR_fstat64 197
901 GO(__NR_fstat64, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000902 SY(__NR_fstat64, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000903
nethercote42b2f312004-11-15 15:31:17 +0000904 // __NR_lchown32 198
nethercote6c0e2d02004-11-14 18:11:55 +0000905 GO(__NR_lchown32, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000906 SY(__NR_lchown32, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000907
nethercote42b2f312004-11-15 15:31:17 +0000908 // __NR_getuid32 199
909 GO(__NR_getuid32, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000910 SY(__NR_getuid32); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000911
nethercote42b2f312004-11-15 15:31:17 +0000912 // __NR_getgid32 200
913 GO(__NR_getgid32, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000914 SY(__NR_getgid32); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000915
nethercote42b2f312004-11-15 15:31:17 +0000916 // __NR_geteuid32 201
917 GO(__NR_geteuid32, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000918 SY(__NR_geteuid32); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000919
nethercote42b2f312004-11-15 15:31:17 +0000920 // __NR_getegid32 202
921 GO(__NR_getegid32, "0s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000922 SY(__NR_getegid32); SUCC;
nethercote6c0e2d02004-11-14 18:11:55 +0000923
924 // __NR_setreuid32 203
925 GO(__NR_setreuid32, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000926 SY(__NR_setreuid32, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000927
928 // __NR_setregid32 204
929 GO(__NR_setregid32, "2s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000930 SY(__NR_setregid32, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000931
nethercote42b2f312004-11-15 15:31:17 +0000932 // __NR_getgroups32 205
nethercote6c0e2d02004-11-14 18:11:55 +0000933 GO(__NR_getgroups32, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000934 SY(__NR_getgroups32, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000935
nethercote42b2f312004-11-15 15:31:17 +0000936 // __NR_setgroups32 206
nethercote6c0e2d02004-11-14 18:11:55 +0000937 GO(__NR_setgroups32, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000938 SY(__NR_setgroups32, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000939
nethercote42b2f312004-11-15 15:31:17 +0000940 // __NR_fchown32 207
nethercote6c0e2d02004-11-14 18:11:55 +0000941 GO(__NR_fchown32, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000942 SY(__NR_fchown32, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000943
nethercote42b2f312004-11-15 15:31:17 +0000944 // __NR_setresuid32 208
nethercote6c0e2d02004-11-14 18:11:55 +0000945 GO(__NR_setresuid32, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000946 SY(__NR_setresuid32, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000947
nethercote42b2f312004-11-15 15:31:17 +0000948 // __NR_getresuid32 209
nethercote6c0e2d02004-11-14 18:11:55 +0000949 GO(__NR_getresuid32, "3s 3m");
nethercote92b2fd52004-11-16 16:15:41 +0000950 SY(__NR_getresuid32, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000951
nethercote42b2f312004-11-15 15:31:17 +0000952 // __NR_setresgid32 210
nethercote6c0e2d02004-11-14 18:11:55 +0000953 GO(__NR_setresgid32, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000954 SY(__NR_setresgid32, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000955
nethercote42b2f312004-11-15 15:31:17 +0000956 // __NR_getresgid32 211
nethercote6c0e2d02004-11-14 18:11:55 +0000957 GO(__NR_getresgid32, "3s 3m");
nethercote92b2fd52004-11-16 16:15:41 +0000958 SY(__NR_getresgid32, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000959
nethercote42b2f312004-11-15 15:31:17 +0000960 // __NR_chown32 212
nethercote6c0e2d02004-11-14 18:11:55 +0000961 GO(__NR_chown32, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000962 SY(__NR_chown32, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000963
nethercote42b2f312004-11-15 15:31:17 +0000964 // __NR_setuid32 213
nethercote6c0e2d02004-11-14 18:11:55 +0000965 GO(__NR_setuid32, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000966 SY(__NR_setuid32, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000967
968 // __NR_setgid32 214
969 GO(__NR_setgid32, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000970 SY(__NR_setgid32, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000971
nethercote42b2f312004-11-15 15:31:17 +0000972 // __NR_setfsuid32 215
nethercote6c0e2d02004-11-14 18:11:55 +0000973 GO(__NR_setfsuid32, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000974 SY(__NR_setfsuid32, x0); SUCC; // This syscall has a stupid return value
nethercote6c0e2d02004-11-14 18:11:55 +0000975
nethercote42b2f312004-11-15 15:31:17 +0000976 // __NR_setfsgid32 216
nethercote6c0e2d02004-11-14 18:11:55 +0000977 GO(__NR_setfsgid32, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000978 SY(__NR_setfsgid32, x0); SUCC; // This syscall has a stupid return value
nethercote6c0e2d02004-11-14 18:11:55 +0000979
980 // __NR_pivot_root 217
nethercote42b2f312004-11-15 15:31:17 +0000981 GO(__NR_pivot_root, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +0000982 //SY(__NR_pivot_root); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000983
984 // __NR_mincore 218
nethercote38e0a9e2004-11-15 20:42:06 +0000985 GO(__NR_mincore, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000986 SY(__NR_mincore, x0, x0+40960, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000987
988 // __NR_madvise 219
nethercote38e0a9e2004-11-15 20:42:06 +0000989 GO(__NR_madvise, "3s 0m");
nethercote92b2fd52004-11-16 16:15:41 +0000990 SY(__NR_madvise, x0, x0+1, x0); FAILx(ENOMEM);
nethercote6c0e2d02004-11-14 18:11:55 +0000991
nethercote42b2f312004-11-15 15:31:17 +0000992 // __NR_getdents64 220
nethercote06c7bd72004-11-14 19:11:56 +0000993 GO(__NR_getdents64, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +0000994 SY(__NR_getdents64, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +0000995
996 // __NR_fcntl64 221
njn870f1702009-02-16 05:11:49 +0000997 // As with sys_open(), we don't trigger errors for the 1st two args for
998 // the later ones.
999 // For F_GETFD the 3rd arg is ignored.
njncfb8ad52004-11-23 14:57:49 +00001000 GO(__NR_fcntl64, "(GETFD) 2s 0m");
1001 SY(__NR_fcntl64, x0-1, x0+F_GETFD, x0); FAILx(EBADF);
1002
1003 // For F_DUPFD the 3rd arg is 'arg'
1004 GO(__NR_fcntl64, "(DUPFD) 1s 0m");
njn870f1702009-02-16 05:11:49 +00001005 SY(__NR_fcntl64, -1, F_DUPFD, x0); FAILx(EBADF);
njncfb8ad52004-11-23 14:57:49 +00001006
njn870f1702009-02-16 05:11:49 +00001007 // For F_GETLK the 3rd arg is 'lock'.
1008 // On x86, this fails w/EBADF. But on amd64 in 32-bit mode it fails
1009 // w/EFAULT.
1010 GO(__NR_fcntl64, "(GETLK) 1s 0m");
1011 SY(__NR_fcntl64, -1, +F_GETLK, x0); FAIL; //FAILx(EBADF);
nethercote6c0e2d02004-11-14 18:11:55 +00001012
nethercote42b2f312004-11-15 15:31:17 +00001013 // 222
1014 GO(222, "ni");
nethercote92b2fd52004-11-16 16:15:41 +00001015 SY(222); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001016
nethercote42b2f312004-11-15 15:31:17 +00001017 // 223
1018 GO(223, "ni");
nethercote92b2fd52004-11-16 16:15:41 +00001019 SY(223); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001020
1021 // __NR_gettid 224
nethercote42b2f312004-11-15 15:31:17 +00001022 GO(__NR_gettid, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001023 //SY(__NR_gettid); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001024
1025 // __NR_readahead 225
nethercote42b2f312004-11-15 15:31:17 +00001026 GO(__NR_readahead, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001027 //SY(__NR_readahead); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001028
nethercote42b2f312004-11-15 15:31:17 +00001029 // __NR_setxattr 226
nethercote6c0e2d02004-11-14 18:11:55 +00001030 GO(__NR_setxattr, "5s 3m");
nethercote92b2fd52004-11-16 16:15:41 +00001031 SY(__NR_setxattr, x0, x0, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001032
nethercote42b2f312004-11-15 15:31:17 +00001033 // __NR_lsetxattr 227
nethercote6c0e2d02004-11-14 18:11:55 +00001034 GO(__NR_lsetxattr, "5s 3m");
nethercote92b2fd52004-11-16 16:15:41 +00001035 SY(__NR_lsetxattr, x0, x0, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001036
nethercote42b2f312004-11-15 15:31:17 +00001037 // __NR_fsetxattr 228
nethercote6c0e2d02004-11-14 18:11:55 +00001038 GO(__NR_fsetxattr, "5s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001039 SY(__NR_fsetxattr, x0, x0, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001040
nethercote42b2f312004-11-15 15:31:17 +00001041 // __NR_getxattr 229
nethercote6c0e2d02004-11-14 18:11:55 +00001042 GO(__NR_getxattr, "4s 3m");
nethercote92b2fd52004-11-16 16:15:41 +00001043 SY(__NR_getxattr, x0, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001044
nethercote42b2f312004-11-15 15:31:17 +00001045 // __NR_lgetxattr 230
nethercote6c0e2d02004-11-14 18:11:55 +00001046 GO(__NR_lgetxattr, "4s 3m");
nethercote92b2fd52004-11-16 16:15:41 +00001047 SY(__NR_lgetxattr, x0, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001048
nethercote42b2f312004-11-15 15:31:17 +00001049 // __NR_fgetxattr 231
nethercote6c0e2d02004-11-14 18:11:55 +00001050 GO(__NR_fgetxattr, "4s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001051 SY(__NR_fgetxattr, x0, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001052
nethercote42b2f312004-11-15 15:31:17 +00001053 // __NR_listxattr 232
nethercote6c0e2d02004-11-14 18:11:55 +00001054 GO(__NR_listxattr, "3s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001055 SY(__NR_listxattr, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001056
nethercote42b2f312004-11-15 15:31:17 +00001057 // __NR_llistxattr 233
nethercote6c0e2d02004-11-14 18:11:55 +00001058 GO(__NR_llistxattr, "3s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001059 SY(__NR_llistxattr, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001060
nethercote42b2f312004-11-15 15:31:17 +00001061 // __NR_flistxattr 234
nethercote6c0e2d02004-11-14 18:11:55 +00001062 GO(__NR_flistxattr, "3s 1m");
njn5fd54532005-03-16 03:29:08 +00001063 SY(__NR_flistxattr, x0-1, x0, x0+1); FAIL; /* kernel returns EBADF, but both seem correct */
nethercote6c0e2d02004-11-14 18:11:55 +00001064
nethercote42b2f312004-11-15 15:31:17 +00001065 // __NR_removexattr 235
nethercote6c0e2d02004-11-14 18:11:55 +00001066 GO(__NR_removexattr, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001067 SY(__NR_removexattr, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001068
nethercote42b2f312004-11-15 15:31:17 +00001069 // __NR_lremovexattr 236
nethercote6c0e2d02004-11-14 18:11:55 +00001070 GO(__NR_lremovexattr, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001071 SY(__NR_lremovexattr, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001072
nethercote42b2f312004-11-15 15:31:17 +00001073 // __NR_fremovexattr 237
nethercote6c0e2d02004-11-14 18:11:55 +00001074 GO(__NR_fremovexattr, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001075 SY(__NR_fremovexattr, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001076
1077 // __NR_tkill 238
nethercote42b2f312004-11-15 15:31:17 +00001078 GO(__NR_tkill, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001079 //SY(__NR_tkill); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001080
1081 // __NR_sendfile64 239
nethercote38e0a9e2004-11-15 20:42:06 +00001082 GO(__NR_sendfile64, "4s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001083 SY(__NR_sendfile64, x0, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001084
1085 // __NR_futex 240
nethercote38e0a9e2004-11-15 20:42:06 +00001086 #ifndef FUTEX_WAIT
1087 #define FUTEX_WAIT 0
1088 #endif
1089 // XXX: again, glibc not doing 6th arg means we have only 5s errors
Elliott Hughesed398002017-06-21 14:41:24 -07001090 GO(__NR_futex, "4s 2m");
1091 SY(__NR_futex, x0+FUTEX_WAIT, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001092
nethercote42b2f312004-11-15 15:31:17 +00001093 // __NR_sched_setaffinity 241
nethercote5b653bc2004-11-15 14:32:12 +00001094 GO(__NR_sched_setaffinity, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001095 SY(__NR_sched_setaffinity, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001096
nethercote42b2f312004-11-15 15:31:17 +00001097 // __NR_sched_getaffinity 242
nethercote5b653bc2004-11-15 14:32:12 +00001098 GO(__NR_sched_getaffinity, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001099 SY(__NR_sched_getaffinity, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001100
1101 // __NR_set_thread_area 243
nethercoteb77dee62004-11-16 17:13:24 +00001102 GO(__NR_set_thread_area, "1s 1m");
1103 SY(__NR_set_thread_area, x0); FAILx(EFAULT);
nethercote6c0e2d02004-11-14 18:11:55 +00001104
1105 // __NR_get_thread_area 244
nethercoteb77dee62004-11-16 17:13:24 +00001106 GO(__NR_get_thread_area, "1s 1m");
1107 SY(__NR_get_thread_area, x0); FAILx(EFAULT);
nethercote6c0e2d02004-11-14 18:11:55 +00001108
1109 // __NR_io_setup 245
nethercote330abb52004-11-16 12:58:04 +00001110 GO(__NR_io_setup, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001111 SY(__NR_io_setup, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001112
1113 // __NR_io_destroy 246
nethercote330abb52004-11-16 12:58:04 +00001114 {
1115 // jump through hoops to prevent the PRE(io_destroy) wrapper crashing.
1116 struct fake_aio_ring {
1117 unsigned id; /* kernel internal index number */
1118 unsigned nr; /* number of io_events */
1119 // There are more fields in the real aio_ring, but the 'nr' field is
1120 // the only one used by the PRE() wrapper.
1121 } ring = { 0, 0 };
1122 struct fake_aio_ring* ringptr = &ring;
1123 GO(__NR_io_destroy, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +00001124 SY(__NR_io_destroy, x0+&ringptr); FAIL;
nethercote330abb52004-11-16 12:58:04 +00001125 }
nethercote6c0e2d02004-11-14 18:11:55 +00001126
1127 // __NR_io_getevents 247
nethercote330abb52004-11-16 12:58:04 +00001128 GO(__NR_io_getevents, "5s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001129 SY(__NR_io_getevents, x0, x0, x0+1, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001130
1131 // __NR_io_submit 248
nethercote330abb52004-11-16 12:58:04 +00001132 GO(__NR_io_submit, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001133 SY(__NR_io_submit, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001134
1135 // __NR_io_cancel 249
nethercote330abb52004-11-16 12:58:04 +00001136 GO(__NR_io_cancel, "3s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001137 SY(__NR_io_cancel, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001138
1139 // __NR_fadvise64 250
nethercote42b2f312004-11-15 15:31:17 +00001140 GO(__NR_fadvise64, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001141 //SY(__NR_fadvise64); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001142
nethercote42b2f312004-11-15 15:31:17 +00001143 // 251
1144 GO(251, "ni");
nethercote92b2fd52004-11-16 16:15:41 +00001145 SY(251); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001146
1147 // __NR_exit_group 252
nethercote9b9b74b2004-11-15 16:11:20 +00001148 GO(__NR_exit_group, "other");
1149 // (see scalar_exit_group.c)
nethercote6c0e2d02004-11-14 18:11:55 +00001150
nethercote42b2f312004-11-15 15:31:17 +00001151 // __NR_lookup_dcookie 253
nethercote6c0e2d02004-11-14 18:11:55 +00001152 GO(__NR_lookup_dcookie, "4s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001153 SY(__NR_lookup_dcookie, x0, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001154
nethercote42b2f312004-11-15 15:31:17 +00001155 // __NR_epoll_create 254
nethercotef90953e2004-11-15 14:50:02 +00001156 GO(__NR_epoll_create, "1s 0m");
njncfb8ad52004-11-23 14:57:49 +00001157 SY(__NR_epoll_create, x0); SUCC_OR_FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001158
nethercote42b2f312004-11-15 15:31:17 +00001159 // __NR_epoll_ctl 255
nethercotef90953e2004-11-15 14:50:02 +00001160 GO(__NR_epoll_ctl, "4s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001161 SY(__NR_epoll_ctl, x0, x0, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001162
nethercote42b2f312004-11-15 15:31:17 +00001163 // __NR_epoll_wait 256
nethercotef90953e2004-11-15 14:50:02 +00001164 GO(__NR_epoll_wait, "4s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001165 SY(__NR_epoll_wait, x0, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001166
1167 // __NR_remap_file_pages 257
nethercote38e0a9e2004-11-15 20:42:06 +00001168 GO(__NR_remap_file_pages, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001169 //SY(__NR_remap_file_pages); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001170
nethercote42b2f312004-11-15 15:31:17 +00001171 // __NR_set_tid_address 258
nethercote5b653bc2004-11-15 14:32:12 +00001172 GO(__NR_set_tid_address, "1s 0m");
sewardjb5f6f512005-03-10 23:59:00 +00001173 SY(__NR_set_tid_address, x0); SUCC_OR_FAILx(ENOSYS);
nethercote6c0e2d02004-11-14 18:11:55 +00001174
1175 // __NR_timer_create 259
nethercote92b2fd52004-11-16 16:15:41 +00001176 GO(__NR_timer_create, "3s 2m");
1177 SY(__NR_timer_create, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001178
1179 // __NR_timer_settime (__NR_timer_create+1)
nethercote92b2fd52004-11-16 16:15:41 +00001180 GO(__NR_timer_settime, "4s 2m");
1181 SY(__NR_timer_settime, x0, x0, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001182
1183 // __NR_timer_gettime (__NR_timer_create+2)
nethercote92b2fd52004-11-16 16:15:41 +00001184 GO(__NR_timer_gettime, "2s 1m");
1185 SY(__NR_timer_gettime, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001186
1187 // __NR_timer_getoverrun (__NR_timer_create+3)
nethercote92b2fd52004-11-16 16:15:41 +00001188 GO(__NR_timer_getoverrun, "1s 0m");
1189 SY(__NR_timer_getoverrun, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001190
1191 // __NR_timer_delete (__NR_timer_create+4)
nethercote92b2fd52004-11-16 16:15:41 +00001192 GO(__NR_timer_delete, "1s 0m");
1193 SY(__NR_timer_delete, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001194
1195 // __NR_clock_settime (__NR_timer_create+5)
nethercote92b2fd52004-11-16 16:15:41 +00001196 GO(__NR_clock_settime, "2s 1m");
1197 SY(__NR_clock_settime, x0, x0); FAIL; FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001198
1199 // __NR_clock_gettime (__NR_timer_create+6)
nethercote92b2fd52004-11-16 16:15:41 +00001200 GO(__NR_clock_gettime, "2s 1m");
1201 SY(__NR_clock_gettime, x0, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001202
1203 // __NR_clock_getres (__NR_timer_create+7)
nethercote92b2fd52004-11-16 16:15:41 +00001204 GO(__NR_clock_getres, "2s 1m");
1205 SY(__NR_clock_getres, x0+1, x0+1); FAIL; FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001206
1207 // __NR_clock_nanosleep (__NR_timer_create+8)
nethercote92b2fd52004-11-16 16:15:41 +00001208 GO(__NR_clock_nanosleep, "n/a");
1209 //SY(__NR_clock_nanosleep); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001210
nethercote42b2f312004-11-15 15:31:17 +00001211 // __NR_statfs64 268
nethercotedc18c0a2004-11-14 20:06:27 +00001212 GO(__NR_statfs64, "3s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001213 SY(__NR_statfs64, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001214
nethercote42b2f312004-11-15 15:31:17 +00001215 // __NR_fstatfs64 269
nethercotedc18c0a2004-11-14 20:06:27 +00001216 GO(__NR_fstatfs64, "3s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001217 SY(__NR_fstatfs64, x0, x0+1, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001218
1219 // __NR_tgkill 270
nethercote42b2f312004-11-15 15:31:17 +00001220 GO(__NR_tgkill, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001221 //SY(__NR_tgkill); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001222
1223 // __NR_utimes 271
nethercote38e0a9e2004-11-15 20:42:06 +00001224 GO(__NR_utimes, "2s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001225 SY(__NR_utimes, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001226
1227 // __NR_fadvise64_64 272
nethercote42b2f312004-11-15 15:31:17 +00001228 GO(__NR_fadvise64_64, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001229 //SY(__NR_fadvise64_64); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001230
nethercote42b2f312004-11-15 15:31:17 +00001231 // __NR_vserver 273
1232 GO(__NR_vserver, "ni");
nethercote92b2fd52004-11-16 16:15:41 +00001233 SY(__NR_vserver); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001234
1235 // __NR_mbind 274
nethercote42b2f312004-11-15 15:31:17 +00001236 GO(__NR_mbind, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001237 //SY(__NR_mbind); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001238
1239 // __NR_get_mempolicy 275
nethercote42b2f312004-11-15 15:31:17 +00001240 GO(__NR_get_mempolicy, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001241 //SY(__NR_get_mempolicy); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001242
1243 // __NR_set_mempolicy 276
nethercote42b2f312004-11-15 15:31:17 +00001244 GO(__NR_set_mempolicy, "n/a");
nethercote92b2fd52004-11-16 16:15:41 +00001245 //SY(__NR_set_mempolicy); // (Not yet handled by Valgrind) FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001246
nethercote42b2f312004-11-15 15:31:17 +00001247 // __NR_mq_open 277
nethercotefbd55ef2004-11-16 18:13:11 +00001248 GO(__NR_mq_open, "4s 3m");
nethercote92b2fd52004-11-16 16:15:41 +00001249 SY(__NR_mq_open, x0, x0+O_CREAT, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001250
1251 // __NR_mq_unlink (__NR_mq_open+1)
nethercote330abb52004-11-16 12:58:04 +00001252 GO(__NR_mq_unlink, "1s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001253 SY(__NR_mq_unlink, x0); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001254
1255 // __NR_mq_timedsend (__NR_mq_open+2)
nethercote330abb52004-11-16 12:58:04 +00001256 GO(__NR_mq_timedsend, "5s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001257 SY(__NR_mq_timedsend, x0, x0, x0+1, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001258
1259 // __NR_mq_timedreceive (__NR_mq_open+3)
nethercote330abb52004-11-16 12:58:04 +00001260 GO(__NR_mq_timedreceive, "5s 3m");
nethercote92b2fd52004-11-16 16:15:41 +00001261 SY(__NR_mq_timedreceive, x0, x0, x0+1, x0+1, x0+1); FAIL;
nethercote330abb52004-11-16 12:58:04 +00001262
nethercote6c0e2d02004-11-14 18:11:55 +00001263 // __NR_mq_notify (__NR_mq_open+4)
nethercote330abb52004-11-16 12:58:04 +00001264 GO(__NR_mq_notify, "2s 1m");
nethercote92b2fd52004-11-16 16:15:41 +00001265 SY(__NR_mq_notify, x0, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001266
1267 // __NR_mq_getsetattr (__NR_mq_open+5)
nethercote330abb52004-11-16 12:58:04 +00001268 GO(__NR_mq_getsetattr, "3s 2m");
nethercote92b2fd52004-11-16 16:15:41 +00001269 SY(__NR_mq_getsetattr, x0, x0+1, x0+1); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001270
nethercote42b2f312004-11-15 15:31:17 +00001271 // __NR_sys_kexec_load 283
1272 GO(__NR_sys_kexec_load, "ni");
nethercote92b2fd52004-11-16 16:15:41 +00001273 SY(__NR_sys_kexec_load); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001274
njn72715882009-07-10 12:02:03 +00001275 // __NR_epoll_create1 329
1276 GO(__NR_epoll_create1, "1s 0m");
1277 SY(__NR_epoll_create1, x0); SUCC_OR_FAIL;
1278
tom9e4b6362012-02-10 09:39:37 +00001279 // __NR_process_vm_readv 347
1280 GO(__NR_process_vm_readv, "6s 2m");
1281 SY(__NR_process_vm_readv, x0, x0, x0+1, x0, x0+1, x0); FAIL;
1282
1283 // __NR_process_vm_writev 348
1284 GO(__NR_process_vm_writev, "6s 2m");
1285 SY(__NR_process_vm_writev, x0, x0, x0+1, x0, x0+1, x0); FAIL;
1286
nethercote42b2f312004-11-15 15:31:17 +00001287 // no such syscall...
nethercote6c0e2d02004-11-14 18:11:55 +00001288 GO(9999, "1e");
nethercote92b2fd52004-11-16 16:15:41 +00001289 SY(9999); FAIL;
nethercote6c0e2d02004-11-14 18:11:55 +00001290
nethercote42b2f312004-11-15 15:31:17 +00001291 // __NR_exit 1
nethercotec6851dd2004-11-11 18:00:47 +00001292 GO(__NR_exit, "1s 0m");
nethercote92b2fd52004-11-16 16:15:41 +00001293 SY(__NR_exit, x0); FAIL;
nethercotee824cc42004-11-09 16:20:46 +00001294
1295 assert(0);
nethercote8b76fe52004-11-08 19:20:09 +00001296}
1297