diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-04-18 17:09:59 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-04-19 10:26:57 +0200 |
| commit | 91db3ed8ce2dc73444bcd649f8003cbe96fcb227 (patch) | |
| tree | 08013bd813d8f038060db3cef25fa02eb7eb53e5 /sys/linux/sys.txt | |
| parent | 273e386b718deddf0859d1ed99e2699a9d3e2e5d (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.txt | 38 |
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] |
