aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/sys.txt
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2020-04-18 17:09:59 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-04-19 10:26:57 +0200
commit91db3ed8ce2dc73444bcd649f8003cbe96fcb227 (patch)
tree08013bd813d8f038060db3cef25fa02eb7eb53e5 /sys/linux/sys.txt
parent273e386b718deddf0859d1ed99e2699a9d3e2e5d (diff)
prog: add ignore_return and breaks_returns call attribtues
We had these hard-coded for fuchsia and linux accordingly. Replace with call attributes.
Diffstat (limited to 'sys/linux/sys.txt')
-rw-r--r--sys/linux/sys.txt38
1 files changed, 20 insertions, 18 deletions
diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt
index e6d7f5621..b4e470608 100644
--- a/sys/linux/sys.txt
+++ b/sys/linux/sys.txt
@@ -205,22 +205,24 @@ fcntl$F_GET_FILE_RW_HINT(fd fd, cmd const[F_GET_FILE_RW_HINT], hint ptr[out, int
fcntl$F_SET_RW_HINT(fd fd, cmd const[F_SET_RW_HINT], hint ptr[in, flags[fcntl_rw_hint, int64]])
fcntl$F_SET_FILE_RW_HINT(fd fd, cmd const[F_SET_FILE_RW_HINT], hint ptr[in, flags[fcntl_rw_hint, int64]])
-ptrace(req flags[ptrace_req], pid pid)
-ptrace$peek(req flags[ptrace_req_peek], pid pid, addr ptr[out, intptr])
-ptrace$poke(req flags[ptrace_req_poke], pid pid, addr ptr[out, intptr], data intptr)
-ptrace$peekuser(req const[PTRACE_PEEKUSR], pid pid, addr intptr)
-ptrace$pokeuser(req const[PTRACE_POKEUSR], pid pid, addr intptr, data intptr)
-ptrace$getregs(req flags[ptrace_req_getregs], pid pid, ignored intptr, data buffer[out])
-ptrace$getregset(req const[PTRACE_GETREGSET], pid pid, what flags[pthread_regset], data ptr[in, iovec_out])
-ptrace$setregs(req flags[ptrace_req_setregs], pid pid, ignored intptr, data buffer[in])
-ptrace$setregset(req const[PTRACE_SETREGSET], pid pid, what flags[pthread_regset], data ptr[in, iovec_in])
-ptrace$getsig(req const[PTRACE_GETSIGINFO], pid pid, ignored intptr, data ptr[out, siginfo])
-ptrace$setsig(req const[PTRACE_SETSIGINFO], pid pid, ignored intptr, data ptr[in, siginfo])
-ptrace$setopts(req flags[ptrace_req_setopts], pid pid, ignored intptr, flags flags[ptrace_options])
-ptrace$getenv(req const[PTRACE_GETEVENTMSG], pid pid, ignored intptr, data ptr[out, intptr])
-ptrace$cont(req flags[ptrace_req_cont], pid pid, ignored intptr, data intptr)
-ptrace$PTRACE_SECCOMP_GET_FILTER(req const[PTRACE_SECCOMP_GET_FILTER], pid pid, addr intptr, data ptr[out, array[int8]])
-ptrace$PTRACE_SECCOMP_GET_METADATA(req const[PTRACE_SECCOMP_GET_METADATA], pid pid, addr len[data], data ptr[in, seccomp_metadata])
+# Only some commands break return values.
+# When/if we have stricter enforcement of arguments, we may remove some of breaks_returns attributes.
+ptrace(req flags[ptrace_req], pid pid) (breaks_returns)
+ptrace$peek(req flags[ptrace_req_peek], pid pid, addr ptr[out, intptr]) (breaks_returns)
+ptrace$poke(req flags[ptrace_req_poke], pid pid, addr ptr[out, intptr], data intptr) (breaks_returns)
+ptrace$peekuser(req const[PTRACE_PEEKUSR], pid pid, addr intptr) (breaks_returns)
+ptrace$pokeuser(req const[PTRACE_POKEUSR], pid pid, addr intptr, data intptr) (breaks_returns)
+ptrace$getregs(req flags[ptrace_req_getregs], pid pid, ignored intptr, data buffer[out]) (breaks_returns)
+ptrace$getregset(req const[PTRACE_GETREGSET], pid pid, what flags[pthread_regset], data ptr[in, iovec_out]) (breaks_returns)
+ptrace$setregs(req flags[ptrace_req_setregs], pid pid, ignored intptr, data buffer[in]) (breaks_returns)
+ptrace$setregset(req const[PTRACE_SETREGSET], pid pid, what flags[pthread_regset], data ptr[in, iovec_in]) (breaks_returns)
+ptrace$getsig(req const[PTRACE_GETSIGINFO], pid pid, ignored intptr, data ptr[out, siginfo]) (breaks_returns)
+ptrace$setsig(req const[PTRACE_SETSIGINFO], pid pid, ignored intptr, data ptr[in, siginfo]) (breaks_returns)
+ptrace$setopts(req flags[ptrace_req_setopts], pid pid, ignored intptr, flags flags[ptrace_options]) (breaks_returns)
+ptrace$getenv(req const[PTRACE_GETEVENTMSG], pid pid, ignored intptr, data ptr[out, intptr]) (breaks_returns)
+ptrace$cont(req flags[ptrace_req_cont], pid pid, ignored intptr, data intptr) (breaks_returns)
+ptrace$PTRACE_SECCOMP_GET_FILTER(req const[PTRACE_SECCOMP_GET_FILTER], pid pid, addr intptr, data ptr[out, array[int8]]) (breaks_returns)
+ptrace$PTRACE_SECCOMP_GET_METADATA(req const[PTRACE_SECCOMP_GET_METADATA], pid pid, addr len[data], data ptr[in, seccomp_metadata]) (breaks_returns)
seccomp_metadata {
filter_off int64
@@ -263,8 +265,8 @@ utimes(filename ptr[in, filename], times ptr[in, itimerval])
futimesat(dir fd_dir, pathname ptr[in, filename], times ptr[in, itimerval])
utimensat(dir fd_dir, pathname ptr[in, filename], times ptr[in, itimerval], flags flags[utimensat_flags])
-clone(flags flags[clone_flags], sp buffer[in], parentid ptr[out, int32], childtid ptr[out, int32], tls buffer[in])
-clone3(args ptr[in, clone_args], size bytesize[args]) pid
+clone(flags flags[clone_flags], sp buffer[in], parentid ptr[out, int32], childtid ptr[out, int32], tls buffer[in]) (breaks_returns)
+clone3(args ptr[in, clone_args], size bytesize[args]) pid (breaks_returns)
clone_args {
flags flags[clone_flags, int64]