Added a few more syscall descriptions, consts

and other related files.
This commit is contained in:
Utkarsh Anand 2017-10-29 16:49:33 +05:30 committed by Dmitry Vyukov
parent 9b42a968df
commit 4b567b4940
15 changed files with 2528 additions and 61 deletions

View File

@ -2,15 +2,93 @@
#if defined(__x86_64__) || 0
#define GOARCH "amd64"
#define SYZ_REVISION "604a77c538a0eb3ca09ec1ccdbcd056632216f56"
#define SYZ_REVISION "0bd253c590edd5bab97c9303498e5e6ca82b973e"
unsigned syscall_count = 51;
unsigned syscall_count = 188;
call_t syscalls[] = {
{"accept", 30},
{"accept$inet", 30},
{"accept$inet6", 30},
{"accept$unix", 30},
{"bind", 104},
{"bind$inet", 104},
{"bind$inet6", 104},
{"bind$unix", 104},
{"chdir", 12},
{"chmod", 15},
{"chown", 16},
{"chroot", 61},
{"clock_getres", 429},
{"clock_gettime", 427},
{"clock_nanosleep", 477},
{"clock_settime", 428},
{"close", 6},
{"connect", 98},
{"connect$inet", 98},
{"connect$inet6", 98},
{"connect$unix", 98},
{"dup", 41},
{"dup2", 90},
{"execve", 59},
{"faccessat", 462},
{"fchdir", 13},
{"fchmod", 124},
{"fchmodat", 463},
{"fchown", 123},
{"fchownat", 464},
{"fchroot", 297},
{"fcntl$dupfd", 92},
{"fcntl$getflags", 92},
{"fcntl$getown", 92},
{"fcntl$lock", 92},
{"fcntl$setflags", 92},
{"fcntl$setown", 92},
{"fcntl$setstatus", 92},
{"fdatasync", 241},
{"flock", 131},
{"fsync", 95},
{"ftruncate", 201},
{"getdents", 390},
{"getegid", 43},
{"geteuid", 25},
{"getgid", 47},
{"getgroups", 79},
{"getitimer", 426},
{"getpeername", 31},
{"getpeername$inet", 31},
{"getpeername$inet6", 31},
{"getpeername$unix", 31},
{"getpgid", 207},
{"getpgrp", 81},
{"getpid", 20},
{"getppid", 39},
{"getrlimit", 194},
{"getrusage", 445},
{"getsockname", 32},
{"getsockname$inet", 32},
{"getsockname$inet6", 32},
{"getsockname$unix", 32},
{"getsockopt", 118},
{"getsockopt$SO_PEERCRED", 118},
{"getsockopt$inet_opts", 118},
{"getsockopt$sock_cred", 118},
{"getsockopt$sock_int", 118},
{"getsockopt$sock_linger", 118},
{"getsockopt$sock_timeval", 118},
{"getuid", 24},
{"lchown", 275},
{"link", 9},
{"linkat", 457},
{"listen", 106},
{"lseek", 199},
{"lstat", 441},
{"madvise", 75},
{"mincore", 78},
{"mkdir", 136},
{"mkdirat", 461},
{"mknod", 450},
{"mknod$loop", 450},
{"mknodat", 460},
{"mlock", 203},
{"mlockall", 242},
{"mmap", 197},
@ -25,14 +103,29 @@ call_t syscalls[] = {
{"munlock", 204},
{"munlockall", 243},
{"munmap", 73},
{"nanosleep", 430},
{"open", 5},
{"open$dir", 5},
{"openat", 468},
{"paccept", 456},
{"pipe", 42},
{"pipe2", 453},
{"poll", 209},
{"preadv", 289},
{"pwritev", 290},
{"read", 3},
{"readlink", 58},
{"readlinkat", 469},
{"readv", 120},
{"recvfrom", 29},
{"recvfrom$inet", 29},
{"recvfrom$inet6", 29},
{"recvfrom$unix", 29},
{"recvmsg", 27},
{"rename", 128},
{"renameat", 458},
{"rmdir", 137},
{"select", 417},
{"semctl$GETALL", 442},
{"semctl$GETNCNT", 442},
{"semctl$GETPID", 442},
@ -46,6 +139,31 @@ call_t syscalls[] = {
{"semget", 221},
{"semget$private", 221},
{"semop", 222},
{"sendmsg", 28},
{"sendmsg$unix", 28},
{"sendto", 133},
{"sendto$inet", 133},
{"sendto$inet6", 133},
{"sendto$unix", 133},
{"setegid", 182},
{"seteuid", 183},
{"setgid", 181},
{"setgroups", 80},
{"setitimer", 425},
{"setpgid", 82},
{"setregid", 127},
{"setreuid", 126},
{"setrlimit", 195},
{"setsockopt", 105},
{"setsockopt$inet6_MRT6_ADD_MFC", 105},
{"setsockopt$inet6_MRT6_ADD_MIF", 105},
{"setsockopt$inet6_MRT6_DEL_MFC", 105},
{"setsockopt$inet_opts", 105},
{"setsockopt$sock_cred", 105},
{"setsockopt$sock_int", 105},
{"setsockopt$sock_linger", 105},
{"setsockopt$sock_timeval", 105},
{"setuid", 23},
{"shmat", 228},
{"shmctl$IPC_RMID", 443},
{"shmctl$IPC_SET", 443},
@ -55,6 +173,25 @@ call_t syscalls[] = {
{"shmdt", 230},
{"shmget", 231},
{"shmget$private", 231},
{"shutdown", 134},
{"socket", 394},
{"socket$inet", 394},
{"socket$inet6", 394},
{"socket$unix", 394},
{"socketpair", 135},
{"socketpair$inet", 135},
{"socketpair$inet6", 135},
{"socketpair$unix", 135},
{"stat", 439},
{"symlink", 57},
{"symlinkat", 470},
{"sync", 36},
{"truncate", 200},
{"unlink", 10},
{"unlinkat", 471},
{"utimensat", 467},
{"utimes", 420},
{"wait4", 449},
{"write", 4},
{"writev", 121},

File diff suppressed because it is too large Load Diff

View File

@ -9,6 +9,10 @@ include <unistd.h>
resource fd[int32]: 0xffffffffffffffff, AT_FDCWD
resource fd_dir[fd]
resource pid[int32]: 0, 0xffffffffffffffff
resource uid[int32]: 0, 0xffffffffffffffff
resource gid[int32]: 0, 0xffffffffffffffff
open(file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd
# Just so that we have something that creates fd_dir resources.
open$dir(file ptr[in, filename], flags flags[open_flags], mode flags[open_mode]) fd_dir

View File

@ -65,6 +65,10 @@ shmat_flags = SHM_RND, SHM_RDONLY
ipc_perm {
key int32
uid uid
gid gid
cuid uid
cgid gid
mode flags[open_mode, int32]
seq int16
pad0 const[0, int16]
@ -76,6 +80,8 @@ msqid_ds {
perm ipc_perm
qnum intptr
qbytes intptr
lspid pid
lrpid pid
stime intptr
rtime intptr
ctime intptr
@ -88,6 +94,8 @@ shmid_ds {
perm ipc_perm
segsz int32
nattch int16
cpid pid
lpid pid
atime intptr
dtime intptr
ctime intptr

117
sys/netbsd/socket.txt Normal file
View File

@ -0,0 +1,117 @@
# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
# TODO: due to autobind a socket can bind to port 0, that will result in a random port which is not reproducible
include <sys/types.h>
include <sys/socket.h>
include <netinet/in.h>
include <compat/linux/common/linux_socket.h>
resource sock[fd]
# TODO: describe socketcall syscall
socket(domain flags[socket_domain], type flags[socket_type], proto int8) sock
socketpair(domain flags[socket_domain], type flags[socket_type], proto int8, fds ptr[out, pipefd])
bind(fd sock, addr ptr[in, sockaddr_storage], addrlen len[addr])
connect(fd sock, addr ptr[in, sockaddr_storage], addrlen len[addr])
accept(fd sock, peer ptr[out, sockaddr_storage, opt], peerlen ptr[inout, len[peer, int32]]) sock
paccept(fd sock, peer ptr[out, sockaddr_storage, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock
sendto(fd sock, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_storage, opt], addrlen len[addr])
recvfrom(fd sock, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_storage, opt], addrlen len[addr])
getsockname(fd sock, addr ptr[out, sockaddr_storage], addrlen ptr[inout, len[addr, int32]])
getpeername(fd sock, peer ptr[out, sockaddr_storage], peerlen ptr[inout, len[peer, int32]])
sendmsg(fd sock, msg ptr[in, send_msghdr], f flags[send_flags])
recvmsg(fd sock, msg ptr[in, recv_msghdr], f flags[recv_flags])
listen(fd sock, backlog int32)
shutdown(fd sock, how flags[shutdown_flags])
getsockopt(fd sock, level int32, optname int32, optval buffer[out], optlen ptr[inout, len[optval, int32]])
setsockopt(fd sock, level int32, optname int32, optval buffer[in], optlen len[optval])
socket_domain = AF_LOCAL, AF_INET, AF_INET6, AF_NS, AF_BLUETOOTH, AF_APPLETALK
socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, SOCK_RDM, SOCK_SEQPACKET, SOCK_NONBLOCK, SOCK_CLOEXEC, SOCK_NOSIGPIPE
accept_flags = SOCK_NONBLOCK, SOCK_CLOEXEC, SOCK_NOSIGPIPE
shutdown_flags = SHUT_RD, SHUT_WR, SHUT_RDWR
send_flags = MSG_OOB, MSG_PEEK, MSG_DONTROUTE, MSG_EOR, MSG_NOSIGNAL
recv_flags = MSG_CMSG_CLOEXEC, MSG_OOB, MSG_PEEK, MSG_WAITALL
cmsg_levels = SOL_SOCKET, IPPROTO_ICMP, LINUX_SOL_IP, LINUX_SOL_TCP, LINUX_SOL_UDP, LINUX_SOL_IPV6, LINUX_SOL_IPX, LINUX_SOL_AX25
# This sockaddr type corresponds to the struct sockaddr and is 16 bytes or less.
sockaddr [
# AF_UNIX sockaddr in bigger than 16 bytes
in sockaddr_in
random array[int32, 4]
]
# This sockaddr type corresponds to the sockaddr_storage type and is 128 bytes size.
sockaddr_storage [
un sockaddr_un
in sockaddr_in
in6 sockaddr_in6
] [varlen]
sockaddr_generic {
sa_family flags[socket_domain, int16]
sa_data array[int8, 14]
}
sockaddr_storage_generic {
sa_family flags[socket_domain, int16]
sa_data array[int8, 126]
}
send_msghdr {
msg_name ptr[in, sockaddr_storage, opt]
msg_namelen len[msg_name, int32]
msg_iov ptr[in, array[iovec_in]]
msg_iovlen len[msg_iov, intptr]
msg_control ptr[in, array[cmsghdr]]
msg_controllen len[msg_control, intptr]
msg_flags flags[send_flags, int32]
}
send_mmsghdr {
msg_hdr send_msghdr
msg_len int32
}
recv_msghdr {
msg_name ptr[out, sockaddr_storage, opt]
msg_namelen len[msg_name, int32]
msg_iov ptr[in, array[iovec_out]]
msg_iovlen len[msg_iov, intptr]
msg_control buffer[out]
msg_controllen len[msg_control, intptr]
msg_flags int32
}
recv_mmsghdr {
msg_hdr recv_msghdr
msg_len int32
}
cmsghdr {
cmsg_len len[parent, intptr]
cmsg_level flags[cmsg_levels, int32]
cmsg_type int32
data array[int8]
} [align_ptr]
# Socket options
getsockopt$sock_int(fd sock, level const[SOL_SOCKET], optname flags[sockopt_opt_sock_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
setsockopt$sock_int(fd sock, level const[SOL_SOCKET], optname flags[sockopt_opt_sock_int], optval ptr[in, int32], optlen len[optval])
getsockopt$sock_linger(fd sock, level const[SOL_SOCKET], optname const[SO_LINGER], optval ptr[out, linger], optlen ptr[inout, len[optval, int32]])
setsockopt$sock_linger(fd sock, level const[SOL_SOCKET], optname const[SO_LINGER], optval ptr[in, linger], optlen len[optval])
getsockopt$sock_cred(fd sock, level const[SOL_SOCKET], optname const[SO_PEERCRED], optval ptr[out, ucred], optlen ptr[inout, len[optval, int32]])
setsockopt$sock_cred(fd sock, level const[SOL_SOCKET], optname const[SO_PEERCRED], optval ptr[in, ucred], optlen len[optval])
getsockopt$sock_timeval(fd sock, level const[SOL_SOCKET], optname flags[sockopt_opt_sock_timeval], optval ptr[out, timeval], optlen ptr[inout, len[optval, int32]])
setsockopt$sock_timeval(fd sock, level const[SOL_SOCKET], optname flags[sockopt_opt_sock_timeval], optval ptr[in, timeval], optlen len[optval])
getsockopt$SO_PEERCRED(fd sock, level const[SOL_SOCKET], optname const[SO_PEERCRED], optval ptr[out, ucred], optlen len[optval])
sockopt_opt_sock_int = SO_DEBUG, SO_REUSEADDR, SO_REUSEPORT, SO_KEEPALIVE, SO_DONTROUTE, SO_LINGER, SO_BROADCAST, SO_OOBINLINE, SO_SNDBUF, SO_RCVBUF, SO_SNDLOWAT, SO_RCVLOWAT, SO_TIMESTAMP, SO_ACCEPTFILTER, SO_NOSIGPIPE, SO_TYPE, SO_ERROR
sockopt_opt_sock_timeval = SO_RCVTIMEO, SO_SNDTIMEO

View File

@ -0,0 +1,95 @@
# AUTOGENERATED FILE
AF_APPLETALK = 16
AF_BLUETOOTH = 31
AF_INET = 2
AF_INET6 = 24
AF_LOCAL = 1
AF_NS = 6
IPPROTO_ICMP = 1
LINUX_AF_APPLETALK = 5
LINUX_AF_INET = 2
LINUX_AF_INET6 = 10
LINUX_MSG_DONTROUTE = 4
LINUX_MSG_EOR = 128
LINUX_MSG_NOSIGNAL = 16384
LINUX_MSG_OOB = 1
LINUX_MSG_PEEK = 2
LINUX_MSG_WAITALL = 256
LINUX_SOL_AX25 = 257
LINUX_SOL_IP = 0
LINUX_SOL_IPV6 = 41
LINUX_SOL_IPX = 256
LINUX_SOL_SOCKET = 1
LINUX_SOL_TCP = 6
LINUX_SOL_UDP = 17
LINUX_SO_BROADCAST = 6
LINUX_SO_DEBUG = 1
LINUX_SO_DONTROUTE = 5
LINUX_SO_ERROR = 4
LINUX_SO_KEEPALIVE = 9
LINUX_SO_LINGER = 13
LINUX_SO_OOBINLINE = 10
LINUX_SO_RCVBUF = 8
LINUX_SO_RCVLOWAT = 18
LINUX_SO_RCVTIMEO = 20
LINUX_SO_REUSEADDR = 2
LINUX_SO_SNDBUF = 7
LINUX_SO_SNDLOWAT = 19
LINUX_SO_SNDTIMEO = 21
LINUX_SO_TIMESTAMP = 29
LINUX_SO_TYPE = 3
MSG_CMSG_CLOEXEC = 2048
MSG_DONTROUTE = 4
MSG_EOR = 8
MSG_NOSIGNAL = 1024
MSG_OOB = 1
MSG_PEEK = 2
MSG_WAITALL = 64
SHUT_RD = 0
SHUT_RDWR = 2
SHUT_WR = 1
SOCK_CLOEXEC = 268435456
SOCK_DGRAM = 2
SOCK_NONBLOCK = 536870912
SOCK_NOSIGPIPE = 1073741824
SOCK_RAW = 3
SOCK_RDM = 4
SOCK_SEQPACKET = 5
SOCK_STREAM = 1
SOL_SOCKET = 65535
SO_ACCEPTFILTER = 4096
SO_BROADCAST = 32
SO_DEBUG = 1
SO_DONTROUTE = 16
SO_ERROR = 4103
SO_KEEPALIVE = 8
SO_LINGER = 128
SO_NOSIGPIPE = 2048
SO_OOBINLINE = 256
SO_PEERCRED = 17
SO_RCVBUF = 4098
SO_RCVLOWAT = 4100
SO_RCVTIMEO = 4108
SO_REUSEADDR = 4
SO_REUSEPORT = 512
SO_SNDBUF = 4097
SO_SNDLOWAT = 4099
SO_SNDTIMEO = 4107
SO_TIMESTAMP = 8192
SO_TYPE = 4104
SYS_accept = 30
SYS_bind = 104
SYS_connect = 98
SYS_getpeername = 31
SYS_getsockname = 32
SYS_getsockopt = 118
SYS_listen = 106
SYS_paccept = 456
SYS_recvfrom = 29
SYS_recvmsg = 27
SYS_sendmsg = 28
SYS_sendto = 133
SYS_setsockopt = 105
SYS_shutdown = 134
SYS_socket = 394
SYS_socketpair = 135

View File

@ -0,0 +1,64 @@
# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
include <sys/types.h>
include <sys/socket.h>
include <sys/sockio.h>
include <netinet/in.h>
# IP sockets
resource sock_in[sock]
sock_in_pair {
f0 sock_in
f1 sock_in
}
sockaddr_in {
family const[AF_INET, int16]
port proc[20000, 4, int16be]
pad array[const[0, int8], 8]
}
sockaddr_storage_in {
addr sockaddr_in
pad array[const[0, int64], 15]
}
socket$inet(domain const[AF_INET], type flags[socket_type], proto int8) sock_in
socketpair$inet(domain const[AF_INET], type flags[socket_type], proto int8, fds ptr[out, sock_in_pair])
accept$inet(fd sock_in, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]]) sock_in
bind$inet(fd sock_in, addr ptr[in, sockaddr_in], addrlen len[addr])
connect$inet(fd sock_in, addr ptr[in, sockaddr_in], addrlen len[addr])
sendto$inet(fd sock_in, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
recvfrom$inet(fd sock_in, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
getsockname$inet(fd sock_in, addr ptr[out, sockaddr_in], addrlen ptr[inout, len[addr, int32]])
getpeername$inet(fd sock_in, peer ptr[out, sockaddr_in], peerlen ptr[inout, len[peer, int32]])
# Generic IP options
# Specific IP options
sockopt_opt_ip_opts = IP_OPTIONS
getsockopt$inet_opts(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_opts], optval buffer[out], optlen ptr[inout, len[optval, int32]])
setsockopt$inet_opts(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_opts], optval buffer[in], optlen len[optval])
group_req_in {
gr_interface int32
gr_group sockaddr_storage_in
}
group_source_req_in {
gsr_interface int32
gsr_group sockaddr_storage_in
gsr_source sockaddr_storage_in
}
group_filter_in {
gf_interface int32
gf_group sockaddr_storage_in
gf_numsrc len[gf_slist, int32]
gf_slist array[sockaddr_storage_in]
}

View File

@ -0,0 +1,93 @@
# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
include <sys/types.h>
include <sys/param.h>
include <sys/socket.h>
include <netinet/in.h>
include <net/route.h>
include <netinet6/ip6_mroute.h>
include <compat/linux/common/linux_socket.h>
include <sys/sockio.h>
# IPv6 sockets
resource sock_in6[sock]
sock_in6_pair {
f0 sock_in6
f1 sock_in6
}
sockaddr_in6 {
family const[AF_INET6, int16]
port proc[20000, 4, int16be]
flow int32
scope int32
}
sockaddr_storage_in6 {
addr sockaddr_in6
pad array[const[0, int64], 12]
}
socket$inet6(domain const[AF_INET6], type flags[socket_type], proto int8) sock_in6
socketpair$inet6(domain const[AF_INET6], type flags[socket_type], proto int8, fds ptr[out, sock_in6_pair])
accept$inet6(fd sock_in6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]]) sock_in6
bind$inet6(fd sock_in6, addr ptr[in, sockaddr_in6], addrlen len[addr])
connect$inet6(fd sock_in6, addr ptr[in, sockaddr_in6], addrlen len[addr])
sendto$inet6(fd sock_in6, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
recvfrom$inet6(fd sock_in6, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
getsockname$inet6(fd sock_in6, addr ptr[out, sockaddr_in6], addrlen ptr[inout, len[addr, int32]])
getpeername$inet6(fd sock_in6, peer ptr[out, sockaddr_in6], peerlen ptr[inout, len[peer, int32]])
# Generic IPv6 options
# Specific IPv6 options
# TODO: IPV6_HOPOPTS, IPV6_RTHDRDSTOPTS, IPV6_RTHDR, IPV6_DSTOPTS
# TODO: IPV6_PATHMTU
# TODO: IP6T_SO_GET_REVISION_MATCH, IP6T_SO_GET_REVISION_TARGET
setsockopt$inet6_MRT6_ADD_MIF(fd sock_in6, level const[IPPROTO_IPV6], optname const[MRT6_ADD_MIF], optval ptr[in, mif6ctl], optlen len[optval])
setsockopt$inet6_MRT6_ADD_MFC(fd sock_in6, level const[IPPROTO_IPV6], optname const[MRT6_ADD_MFC], optval ptr[in, mf6cctl], optlen len[optval])
setsockopt$inet6_MRT6_DEL_MFC(fd sock_in6, level const[IPPROTO_IPV6], optname const[MRT6_DEL_MFC], optval ptr[in, mf6cctl], optlen len[optval])
mif6ctl {
mif6c_mifi int16
mif6c_flags flags[mif6c_flags, int8]
vifc_threshold int8
mif6c_pifi int16
vifc_rate_limit int32
}
mif6c_flags = MIFF_REGISTER
mf6cctl {
mf6cc_origin sockaddr_in6
mf6cc_mcastgrp sockaddr_in6
mf6cc_parent int16
mf6cc_ifset array[int32, 8]
}
group_req_in6 {
gr_interface int32
gr_group sockaddr_storage_in6
}
group_source_req_in6 {
gsr_interface int32
gsr_group sockaddr_storage_in6
gsr_source sockaddr_storage_in6
}
group_filter_in6 {
gf_interface int32
gf_group sockaddr_storage_in6
gf_numsrc len[gf_slist, int32]
gf_slist array[sockaddr_storage_in6]
}
in6_ifreq {
ifr6_prefixlen int32
}

View File

@ -0,0 +1,18 @@
# AUTOGENERATED FILE
AF_INET6 = 24
IPPROTO_IPV6 = 41
LINUX_AF_INET6 = 10
MIFF_REGISTER = 1
MRT6_ADD_MFC = 104
MRT6_ADD_MIF = 102
MRT6_DEL_MFC = 105
SYS_accept = 30
SYS_bind = 104
SYS_connect = 98
SYS_getpeername = 31
SYS_getsockname = 32
SYS_recvfrom = 29
SYS_sendto = 133
SYS_setsockopt = 105
SYS_socket = 394
SYS_socketpair = 135

View File

@ -0,0 +1,15 @@
# AUTOGENERATED FILE
AF_INET = 2
IPPROTO_IP = 0
IP_OPTIONS = 1
SYS_accept = 30
SYS_bind = 104
SYS_connect = 98
SYS_getpeername = 31
SYS_getsockname = 32
SYS_getsockopt = 118
SYS_recvfrom = 29
SYS_sendto = 133
SYS_setsockopt = 105
SYS_socket = 394
SYS_socketpair = 135

View File

@ -0,0 +1,78 @@
# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
# AF_UNIX support.
include <sys/types.h>
include <sys/socket.h>
include <netinet/in.h>
include <compat/linux/common/linux_socket.h>
resource sock_unix[sock]
socket$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0]) sock_unix
socketpair$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0], fds ptr[out, unix_pair])
bind$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
connect$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
accept$unix(fd sock_unix, peer ptr[out, sockaddr_un, opt], peerlen ptr[inout, len[peer, int32]]) sock_unix
sendto$unix(fd sock_unix, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
sendmsg$unix(fd sock_unix, msg ptr[in, msghdr_un], f flags[send_flags])
recvfrom$unix(fd sock_unix, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
getsockname$unix(fd sock_unix, addr ptr[out, sockaddr_un], addrlen ptr[inout, len[addr, int32]])
getpeername$unix(fd sock_unix, peer ptr[out, sockaddr_un], peerlen ptr[inout, len[peer, int32]])
unix_socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET
unix_socket_family = AF_UNIX, AF_UNSPEC
unix_pair {
fd0 sock_unix
fd1 sock_unix
}
sockaddr_un [
file sockaddr_un_file
abs sockaddr_un_abstract
] [varlen]
sockaddr_un_file {
family flags[unix_socket_family, int16]
path filename
} [packed]
sockaddr_un_abstract {
family flags[unix_socket_family, int16]
ind const[0, int8]
id proc[20000, 4, int32]
}
msghdr_un {
addr ptr[in, sockaddr_un]
addrlen len[addr, int32]
vec ptr[in, array[iovec_in]]
vlen len[vec, intptr]
ctrl ptr[in, array[cmsghdr_un], opt]
ctrllen len[ctrl, intptr]
f flags[send_flags, int32]
}
cmsghdr_un [
rights cmsghdr_un_rights
cred cmsghdr_un_cred
] [varlen]
cmsghdr_un_rights {
len len[parent, intptr]
level const[SOL_SOCKET, int32]
type const[SCM_RIGHTS, int32]
fds array[fd]
} [align_ptr]
cmsghdr_un_cred {
len len[parent, intptr]
level const[SOL_SOCKET, int32]
type const[LINUX_SCM_CREDENTIALS, int32]
pid pid
uid uid
gid gid
} [align_ptr]

View File

@ -0,0 +1,23 @@
# AUTOGENERATED FILE
AF_UNIX = 1
AF_UNSPEC = 0
LINUX_AF_UNIX = 1
LINUX_AF_UNSPEC = 0
LINUX_SCM_CREDENTIALS = 2
LINUX_SCM_RIGHTS = 1
LINUX_SOL_SOCKET = 1
SCM_RIGHTS = 1
SOCK_DGRAM = 2
SOCK_SEQPACKET = 5
SOCK_STREAM = 1
SOL_SOCKET = 65535
SYS_accept = 30
SYS_bind = 104
SYS_connect = 98
SYS_getpeername = 31
SYS_getsockname = 32
SYS_recvfrom = 29
SYS_sendmsg = 28
SYS_sendto = 133
SYS_socket = 394
SYS_socketpair = 135

404
sys/netbsd/sys.txt Normal file
View File

@ -0,0 +1,404 @@
# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
include <sys/types.h>
include <sys/mman.h>
include <sys/stat.h>
include <fcntl.h>
include <unistd.h>
include <sys/time.h>
include <dirent.h>
include <poll.h>
include <sys/select.h>
include <sys/param.h>
include <sys/resource.h>
include <time.h>
include <signal.h>
include <sys/wait.h>
pipe(pipefd ptr[out, pipefd])
stat(file ptr[in, filename], statbuf ptr[out, stat])
lstat(file ptr[in, filename], statbuf ptr[out, stat])
poll(fds ptr[in, array[pollfd]], nfds len[fds], timeout int32)
select(n len[inp], inp ptr[inout, fd_set], outp ptr[inout, fd_set], exp ptr[inout, fd_set], tvp ptr[inout, timeval])
mincore(addr vma, size len[addr], vec buffer[out])
fcntl$dupfd(fd fd, cmd flags[fcntl_dupfd], arg fd) fd
fcntl$getflags(fd fd, cmd flags[fcntl_getflags])
fcntl$setflags(fd fd, cmd const[F_SETFD], flags flags[fcntl_flags])
fcntl$setstatus(fd fd, cmd const[F_SETFL], flags flags[fcntl_status])
fcntl$lock(fd fd, cmd flags[fcntl_lock], lock ptr[in, flock])
fcntl$getown(fd fd, cmd const[F_GETOWN]) pid
fcntl$setown(fd fd, cmd const[F_SETOWN], pid pid)
mknod(file ptr[in, filename], mode flags[mknod_mode], dev int32)
mknod$loop(file ptr[in, filename], mode flags[mknod_mode], dev proc[1792, 2])
mknodat(dirfd fd_dir, file ptr[in, filename], mode flags[mknod_mode], dev int32)
chmod(file ptr[in, filename], mode flags[open_mode])
fchmod(fd fd, mode flags[open_mode])
fchmodat(dirfd fd_dir, file ptr[in, filename], mode flags[open_mode], flags flags[at_flags])
chown(file ptr[in, filename], uid uid, gid gid)
lchown(file ptr[in, filename], uid uid, gid gid)
fchown(fd fd, uid uid, gid gid)
fchownat(dirfd fd_dir, file ptr[in, filename], uid uid, gid gid, flags flags[at_flags])
faccessat(dirfd fd_dir, pathname ptr[in, filename], mode flags[open_mode], flags flags[faccessat_flags])
utimes(filename ptr[in, filename], times ptr[in, itimerval])
utimensat(dir fd_dir, pathname ptr[in, filename], times ptr[in, itimerval], flags flags[utimensat_flags])
execve(file ptr[in, filename], argv ptr[in, array[ptr[in, string]]], envp ptr[in, array[ptr[in, string]]])
getgid() gid
getegid() gid
setuid(uid uid)
setgid(gid gid)
seteuid(euid uid)
setegid(egid gid)
getuid() uid
geteuid() uid
setpgid(pid pid, pgid pid)
getpgid(pid pid) pid
getpgrp() pid
getpid() pid
getppid() pid
setreuid(ruid uid, euid uid)
setregid(rgid gid, egid gid)
getgroups(size len[list], list ptr[inout, array[gid]])
setgroups(size len[list], list ptr[in, array[gid]])
link(old ptr[in, filename], new ptr[in, filename])
linkat(oldfd fd_dir, old ptr[in, filename], newfd fd_dir, new ptr[in, filename], flags flags[linkat_flags])
symlinkat(old ptr[in, filename], newfd fd_dir, new ptr[in, filename])
symlink(old ptr[in, filename], new ptr[in, filename])
unlink(path ptr[in, filename])
unlinkat(fd fd_dir, path ptr[in, filename], flags flags[unlinkat_flags])
readlink(path ptr[in, filename], buf buffer[out], siz len[buf])
readlinkat(fd fd_dir, path ptr[in, filename], buf buffer[out], siz len[buf])
rename(old ptr[in, filename], new ptr[in, filename])
renameat(oldfd fd_dir, old ptr[in, filename], newfd fd_dir, new ptr[in, filename])
mkdir(path ptr[in, filename], mode flags[open_mode])
mkdirat(fd fd_dir, path ptr[in, filename], mode flags[open_mode])
rmdir(path ptr[in, filename])
truncate(file ptr[in, filename], len intptr)
ftruncate(fd fd, len intptr)
flock(fd fd, op flags[flock_op])
fsync(fd fd)
fdatasync(fd fd)
sync()
getdents(fd fd_dir, ent buffer[out], count len[ent])
chroot(dir ptr[in, filename])
fchroot(fd fd)
chdir(dir ptr[in, filename])
fchdir(fd fd)
getrusage(who flags[rusage_who], usage ptr[out, rusage])
getrlimit(res flags[rlimit_type], rlim ptr[out, rlimit])
setrlimit(res flags[rlimit_type], rlim ptr[in, rlimit])
clock_gettime(id flags[clock_id], tp ptr[out, timespec])
clock_settime(id flags[clock_id], tp ptr[in, timespec])
clock_getres(id flags[clock_id], tp ptr[out, timespec])
clock_nanosleep(id flags[clock_id], flags flags[timer_flags], rqtp ptr[in, timespec], rmtp ptr[out, timespec, opt])
nanosleep(req ptr[in, timespec], rem ptr[out, timespec, opt])
getitimer(which flags[getitimer_which], cur ptr[out, itimerval])
setitimer(which flags[getitimer_which], new ptr[in, itimerval], old ptr[out, itimerval, opt])
wait4(pid pid, status ptr[out, int32, opt], options flags[wait_options], ru ptr[out, rusage, opt])
pollfd {
fd fd
events flags[pollfd_events, int16]
revents const[0, int16]
}
sigset {
mask int64
}
sigset_size {
ss ptr[inout, sigset]
len len[ss, intptr]
}
resource time_sec[intptr]
resource time_nsec[intptr]
resource time_usec[intptr]
# prog knowns about this struct type
timespec {
sec intptr
nsec intptr
}
# prog knowns about this struct type
timeval {
sec intptr
usec intptr
}
statx_timestamp {
sec int64
nsec int32
__reserved int32
}
itimerspec {
interv timespec
value timespec
}
itimerval {
interv timeval
value timeval
}
utimbuf {
actime intptr
modtime intptr
}
io_event {
data int64
obj int64
res int64
res2 int32
}
sigevent {
val const[0, intptr]
signo signalno
notify flags[sigev_notify, int32]
u sigevent_u
pad array[const[0, int64], 8]
}
sigevent_u [
tid pid
thr sigevent_thread
]
sigevent_thread {
# TODO: this is function pointer and pthread_attr_t (?)
func buffer[in]
attr buffer[in]
}
cap_header {
var flags[cap_version, int32]
pid pid
}
cap_data {
eff0 int32
perm0 int32
inher0 int32
eff1 int32
perm1 int32
inher1 int32
}
# TODO: fd_set needs to be a separate type
fd_set {
mask0 int64
mask1 int64
mask2 int64
mask3 int64
mask4 int64
mask5 int64
mask6 int64
mask7 int64
}
sock_fprog {
len len[filter, int16]
filter ptr[in, array[sock_filter]]
}
sock_filter {
code int16
jt int8
jf int8
k int32
}
file_handle {
bytes len[parent, int32]
type int32
handle array[int8]
}
mq_attr {
flags intptr
maxmsg intptr
msgsize intptr
curmsg intptr
res0 intptr
res1 intptr
res2 intptr
res3 intptr
}
kexec_segment {
buf buffer[in]
sz len[buf, intptr]
# TODO: this is address in kernel
mem intptr
memsz intptr
}
robust_list {
next vma
off intptr
pend vma
}
rusage {
utime timeval
stime timeval
maxrss intptr
ixrss intptr
idrss intptr
isrss intptr
minflt intptr
majflt intptr
nswap intptr
inblock intptr
oublock intptr
msgsnd intptr
msgrcv intptr
signals intptr
nvcsw intptr
nivcsw intptr
}
rlimit {
soft intptr
hard intptr
}
sigaction {
# TODO: function pointers need special support
handler intptr
mask sigset
flags flags[sigaction_flags, intptr]
restor intptr
}
tms {
utime intptr
stime intptr
cutime intptr
cstime intptr
}
siginfo {
signo signalno
errno int32
code int32
pad3 int32
# actual size is 128 bytes
}
timex {
stuff0 intptr
stuff1 intptr
stuff2 intptr
stuff3 intptr
stuff4 intptr
stuff5 intptr
stuff6 intptr
stuff7 intptr
stuff8 intptr
stuff9 intptr
stuff10 intptr
stuff11 intptr
stuff12 intptr
stuff13 intptr
stuff14 intptr
stuff15 intptr
stuff16 intptr
stuff17 intptr
stuff18 intptr
stuff19 intptr
stuff20 intptr
stuff21 intptr
stuff22 intptr
stuff23 intptr
stuff24 intptr
stuff25 intptr
}
ustat {
free int32
inode intptr
nampac0 int32
nampac1 int32
nampac2 int32
}
user_desc {
entry_number int32
# Base should be vma and limit should be len[base]
# But these fields are int32, so we can't use vma.
base_addr flags[user_desc_bases, int32]
limit flags[user_desc_limits, int32]
seg_32bit int32:1
contents int32:2
read_exec_only int32:1
limit_in_pages int32:1
seg_not_present int32:1
useable int32:1
lm int32:1
}
user_desc_bases = 0, 4096, 1048576, 536870912, 536872960, 536875008, 0xffffffff
user_desc_limits = 0, 1024, 4096, 8192, 16384, 0xffffffff
flock {
type flags[flock_type, int16]
whence flags[seek_whence, int16]
start intptr
len intptr
pid pid
}
linger {
onoff int32
linger int32
}
ucred {
pid pid
uid uid
gid gid
}
fadvise_flags = POSIX_FADV_NORMAL, POSIX_FADV_SEQUENTIAL, POSIX_FADV_RANDOM, POSIX_FADV_NOREUSE, POSIX_FADV_WILLNEED, POSIX_FADV_DONTNEED
clock_type = CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID
sigev_notify = SIGEV_NONE, SIGEV_SIGNAL, SIGEV_THREAD
cap_version = 0x19980330, 0x20071026, 0x20080522
pollfd_events = POLLIN, POLLPRI, POLLOUT, POLLERR, POLLHUP, POLLNVAL, POLLRDNORM, POLLRDBAND, POLLWRNORM, POLLWRBAND
mknod_mode = S_IFREG, S_IFCHR, S_IFBLK, S_IFIFO, S_IFSOCK, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH
at_flags = AT_SYMLINK_NOFOLLOW, AT_SYMLINK_FOLLOW
linkat_flags = AT_SYMLINK_FOLLOW
unlinkat_flags = 0, AT_REMOVEDIR
flock_op = LOCK_SH, LOCK_EX, LOCK_UN, LOCK_NB
faccessat_flags = AT_EACCESS, AT_SYMLINK_NOFOLLOW
rusage_who = RUSAGE_SELF, RUSAGE_CHILDREN
rlimit_type = RLIMIT_AS, RLIMIT_CORE, RLIMIT_CPU, RLIMIT_DATA, RLIMIT_FSIZE, RLIMIT_MEMLOCK, RLIMIT_NOFILE, RLIMIT_NPROC, RLIMIT_RSS, RLIMIT_STACK, RLIMIT_NTHR, RLIMIT_STACK
clock_id = CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID, CLOCK_VIRTUAL, CLOCK_PROF
sigprocmask_how = SIG_BLOCK, SIG_UNBLOCK, SIG_SETMASK
getitimer_which = ITIMER_REAL, ITIMER_VIRTUAL, ITIMER_PROF, ITIMER_MONOTONIC
wait_options = WALLSIG, WALTSIG, WCONTINUED, WEXITED, WNOHANG, WNOZOMBIE, WSTOPPED, WTRAPPED, WUNTRACED
waitid_which = P_PID, P_PGID, P_ALL
sigaction_flags = SA_NOCLDSTOP, SA_NOCLDWAIT, SA_NODEFER, SA_ONSTACK, SA_RESETHAND, SA_RESTART, SA_SIGINFO
timer_flags = 0, TIMER_ABSTIME
utimensat_flags = 0, AT_SYMLINK_NOFOLLOW
priority_which = PRIO_PROCESS, PRIO_PGRP, PRIO_USER
fcntl_dupfd = F_DUPFD, F_DUPFD_CLOEXEC
fcntl_getflags = F_GETFD, F_GETFL
fcntl_lock = F_SETLK, F_SETLKW, F_GETLK
fcntl_flags = FD_CLOEXEC
fcntl_status = O_APPEND, O_ASYNC, O_NONBLOCK, O_DSYNC, O_RSYNC, O_ALT_IO, O_DIRECT, O_NOSIGPIPE
flock_type = F_RDLCK, F_WRLCK, F_UNLCK

186
sys/netbsd/sys_amd64.const Normal file
View File

@ -0,0 +1,186 @@
# AUTOGENERATED FILE
AT_EACCESS = 256
AT_REMOVEDIR = 2048
AT_SYMLINK_FOLLOW = 1024
AT_SYMLINK_NOFOLLOW = 512
CLOCK_MONOTONIC = 3
CLOCK_PROCESS_CPUTIME_ID = 1073741824
CLOCK_PROF = 2
CLOCK_REALTIME = 0
CLOCK_THREAD_CPUTIME_ID = 536870912
CLOCK_VIRTUAL = 1
FD_CLOEXEC = 1
F_DUPFD = 0
F_DUPFD_CLOEXEC = 12
F_GETFD = 1
F_GETFL = 3
F_GETLK = 7
F_GETOWN = 5
F_RDLCK = 1
F_SETFD = 2
F_SETFL = 4
F_SETLK = 8
F_SETLKW = 9
F_SETOWN = 6
F_UNLCK = 2
F_WRLCK = 3
ITIMER_MONOTONIC = 3
ITIMER_PROF = 2
ITIMER_REAL = 0
ITIMER_VIRTUAL = 1
LOCK_EX = 2
LOCK_NB = 4
LOCK_SH = 1
LOCK_UN = 8
O_ALT_IO = 262144
O_APPEND = 8
O_ASYNC = 64
O_DIRECT = 524288
O_DSYNC = 65536
O_NONBLOCK = 4
O_NOSIGPIPE = 16777216
O_RSYNC = 131072
POLLERR = 8
POLLHUP = 16
POLLIN = 1
POLLNVAL = 32
POLLOUT = 4
POLLPRI = 2
POLLRDBAND = 128
POLLRDNORM = 64
POLLWRBAND = 256
POLLWRNORM = 4
POSIX_FADV_DONTNEED = 4
POSIX_FADV_NOREUSE = 5
POSIX_FADV_NORMAL = 0
POSIX_FADV_RANDOM = 1
POSIX_FADV_SEQUENTIAL = 2
POSIX_FADV_WILLNEED = 3
PRIO_PGRP = 1
PRIO_PROCESS = 0
PRIO_USER = 2
P_ALL = 0
P_PGID = 4
P_PID = 1
RLIMIT_AS = 10
RLIMIT_CORE = 4
RLIMIT_CPU = 0
RLIMIT_DATA = 2
RLIMIT_FSIZE = 1
RLIMIT_MEMLOCK = 6
RLIMIT_NOFILE = 8
RLIMIT_NPROC = 7
RLIMIT_NTHR = 11
RLIMIT_RSS = 5
RLIMIT_STACK = 3
RUSAGE_CHILDREN = 18446744073709551615
RUSAGE_SELF = 0
SA_NOCLDSTOP = 8
SA_NOCLDWAIT = 32
SA_NODEFER = 16
SA_ONSTACK = 1
SA_RESETHAND = 4
SA_RESTART = 2
SA_SIGINFO = 64
SIGEV_NONE = 0
SIGEV_SIGNAL = 1
SIGEV_THREAD = 2
SIG_BLOCK = 1
SIG_SETMASK = 3
SIG_UNBLOCK = 2
SYS_chdir = 12
SYS_chmod = 15
SYS_chown = 16
SYS_chroot = 61
SYS_clock_getres = 429
SYS_clock_gettime = 427
SYS_clock_nanosleep = 477
SYS_clock_settime = 428
SYS_execve = 59
SYS_faccessat = 462
SYS_fchdir = 13
SYS_fchmod = 124
SYS_fchmodat = 463
SYS_fchown = 123
SYS_fchownat = 464
SYS_fchroot = 297
SYS_fcntl = 92
SYS_fdatasync = 241
SYS_flock = 131
SYS_fsync = 95
SYS_ftruncate = 201
SYS_getdents = 390
SYS_getegid = 43
SYS_geteuid = 25
SYS_getgid = 47
SYS_getgroups = 79
SYS_getitimer = 426
SYS_getpgid = 207
SYS_getpgrp = 81
SYS_getpid = 20
SYS_getppid = 39
SYS_getrlimit = 194
SYS_getrusage = 445
SYS_getuid = 24
SYS_lchown = 275
SYS_link = 9
SYS_linkat = 457
SYS_lstat = 441
SYS_mincore = 78
SYS_mkdir = 136
SYS_mkdirat = 461
SYS_mknod = 450
SYS_mknodat = 460
SYS_nanosleep = 430
SYS_pipe = 42
SYS_poll = 209
SYS_readlink = 58
SYS_readlinkat = 469
SYS_rename = 128
SYS_renameat = 458
SYS_rmdir = 137
SYS_select = 417
SYS_setegid = 182
SYS_seteuid = 183
SYS_setgid = 181
SYS_setgroups = 80
SYS_setitimer = 425
SYS_setpgid = 82
SYS_setregid = 127
SYS_setreuid = 126
SYS_setrlimit = 195
SYS_setuid = 23
SYS_stat = 439
SYS_symlink = 57
SYS_symlinkat = 470
SYS_sync = 36
SYS_truncate = 200
SYS_unlink = 10
SYS_unlinkat = 471
SYS_utimensat = 467
SYS_utimes = 420
SYS_wait4 = 449
S_IFBLK = 24576
S_IFCHR = 8192
S_IFIFO = 4096
S_IFREG = 32768
S_IFSOCK = 49152
S_IRGRP = 32
S_IROTH = 4
S_IRUSR = 256
S_IWGRP = 16
S_IWOTH = 2
S_IWUSR = 128
S_IXGRP = 8
S_IXOTH = 1
S_IXUSR = 64
TIMER_ABSTIME = 1
WALLSIG = 8
WALTSIG = 4
WCONTINUED = 16
WEXITED = 32
WNOHANG = 1
WNOZOMBIE = 131072
WSTOPPED = 2
WTRAPPED = 64
WUNTRACED = 2

View File

@ -59,9 +59,11 @@ func (*netbsd) processFile(arch *Arch, info *compiler.ConstInfo) (map[string]uin
const SYS = "SYS_"
if strings.HasPrefix(val, SYS) {
for _, prefix := range []string{"_", "__", "___"} {
compat := SYS + prefix + val[len(SYS):] + "50"
compatNames[val] = append(compatNames[val], compat)
info.Consts = append(info.Consts, compat)
for _, suffix := range []string{"30", "50"} {
compat := SYS + prefix + val[len(SYS):] + suffix
compatNames[val] = append(compatNames[val], compat)
info.Consts = append(info.Consts, compat)
}
}
} else {
compat := "LINUX_" + val