aboutsummaryrefslogtreecommitdiffstats
path: root/sys/netbsd
diff options
context:
space:
mode:
authorUtkarsh Anand <uanand009@gmail.com>2017-10-25 12:57:47 +0530
committerDmitry Vyukov <dvyukov@google.com>2017-10-25 09:27:47 +0200
commit3f955eba7f6eee3d98f78d3398863f3d922a0b35 (patch)
tree5bae0f6963f58fea690ee7a21d3e252a14b08cf3 /sys/netbsd
parent88999972bf16ffc379ada779bfb44a5fa6edf741 (diff)
Lots of changes to sys/netbsd (#397)
* Lots of changes to sys/netbsd: - Removed a few syscalls that did not have proper constants defined. - Autogenerated *.const files. - Removed a few types like uid and gid, that were not available. - Ran make generate * Few changes for NetBSD support: - Added sys/netbsd/init.go - Added netbsd to sys/sys.go * Fix order in sys/sys.go * Update documentation for NetBSD
Diffstat (limited to 'sys/netbsd')
-rw-r--r--sys/netbsd/amd64.go390
-rw-r--r--sys/netbsd/fs.txt5
-rw-r--r--sys/netbsd/fs_amd64.const48
-rw-r--r--sys/netbsd/init.go102
-rw-r--r--sys/netbsd/ipc.txt12
-rw-r--r--sys/netbsd/ipc_amd64.const37
-rw-r--r--sys/netbsd/mm.txt2
-rw-r--r--sys/netbsd/mm_amd64.const30
-rw-r--r--sys/netbsd/socket.txt117
9 files changed, 607 insertions, 136 deletions
diff --git a/sys/netbsd/amd64.go b/sys/netbsd/amd64.go
new file mode 100644
index 000000000..bf7b6df10
--- /dev/null
+++ b/sys/netbsd/amd64.go
@@ -0,0 +1,390 @@
+// AUTOGENERATED FILE
+package netbsd
+
+import . "github.com/google/syzkaller/prog"
+
+func init() {
+ RegisterTarget(&Target{OS: "netbsd", Arch: "amd64", Revision: revision_amd64, PtrSize: 8, Syscalls: syscalls_amd64, Resources: resources_amd64, Structs: structDescs_amd64, Consts: consts_amd64}, initTarget)
+}
+
+var resources_amd64 = []*ResourceDesc{
+ {Name: "fd", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"fd"}, Values: []uint64{18446744073709551615, 18446744073709551516}},
+ {Name: "fd_dir", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"fd", "fd_dir"}, Values: []uint64{18446744073709551615, 18446744073709551516}},
+ {Name: "ipc", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"ipc"}, Values: []uint64{0, 18446744073709551615}},
+ {Name: "ipc_msq", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"ipc", "ipc_msq"}, Values: []uint64{0, 18446744073709551615}},
+ {Name: "ipc_sem", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"ipc", "ipc_sem"}, Values: []uint64{0, 18446744073709551615}},
+ {Name: "ipc_shm", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}, Kind: []string{"ipc", "ipc_shm"}, Values: []uint64{0, 18446744073709551615}},
+ {Name: "shmaddr", Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", TypeSize: 8}}}, Kind: []string{"shmaddr"}, Values: []uint64{0}},
+}
+
+var structDescs_amd64 = []*KeyedStruct{
+ {Key: StructKey{Name: "iovec_in"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "iovec_in", TypeSize: 16}, Fields: []Type{
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "addr", TypeSize: 8}, Type: &BufferType{}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"},
+ }}},
+ {Key: StructKey{Name: "iovec_out"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "iovec_out", TypeSize: 16}, Fields: []Type{
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "addr", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"},
+ }}},
+ {Key: StructKey{Name: "ipc_perm"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "ipc_perm", TypeSize: 32}, Fields: []Type{
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "key", TypeSize: 4}}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "open_mode", FldName: "mode", TypeSize: 4}}, Vals: []uint64{256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "seq", TypeSize: 2}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad0", TypeSize: 2}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pad", TypeSize: 4}}, IsPad: true},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad1", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad2", TypeSize: 8}}},
+ }}},
+ {Key: StructKey{Name: "msgbuf"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "msgbuf"}, Fields: []Type{
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "msgbuf_type", FldName: "typ", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3}},
+ &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data"}},
+ }}},
+ {Key: StructKey{Name: "msgbuf", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "msgbuf", ArgDir: 1}, Fields: []Type{
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "msgbuf_type", FldName: "typ", TypeSize: 8, ArgDir: 1}}, Vals: []uint64{0, 1, 2, 3}},
+ &BufferType{TypeCommon: TypeCommon{TypeName: "array", FldName: "data", ArgDir: 1}},
+ }}},
+ {Key: StructKey{Name: "pipefd", Dir: 1}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "pipefd", TypeSize: 8, ArgDir: 1}, Fields: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "rfd", TypeSize: 4, ArgDir: 1}},
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "wfd", TypeSize: 4, ArgDir: 1}},
+ }}},
+ {Key: StructKey{Name: "sembuf"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "sembuf", TypeSize: 6}, Fields: []Type{
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "sem_sem_id", FldName: "num", TypeSize: 2}}, Vals: []uint64{0, 1, 2, 3, 4}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", FldName: "op", TypeSize: 2}}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "semop_flags", FldName: "flg", TypeSize: 2}}, Vals: []uint64{2048, 4096}},
+ }}},
+ {Key: StructKey{Name: "semid_ds"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "semid_ds", TypeSize: 72}, Fields: []Type{
+ &StructType{Key: StructKey{Name: "ipc_perm"}, FldName: "perm"},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "otime", TypeSize: 8}}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "ctime", TypeSize: 8}}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "intptr", FldName: "nsems", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad0", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "pad1", TypeSize: 8}}},
+ }}},
+}
+
+var syscalls_amd64 = []*Syscall{
+ {NR: 6, Name: "close", CallName: "close", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ }},
+ {ID: 1, NR: 41, Name: "dup", CallName: "dup", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "oldfd", TypeSize: 4}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 2, NR: 90, Name: "dup2", CallName: "dup2", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "oldfd", TypeSize: 4}},
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "newfd", TypeSize: 4}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 3, NR: 199, Name: "lseek", CallName: "lseek", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "fileoff", FldName: "offset", TypeSize: 8}}, Kind: 1},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "seek_whence", FldName: "whence", TypeSize: 8}}, Vals: []uint64{0, 1, 2}},
+ }},
+ {ID: 4, NR: 75, Name: "madvise", CallName: "madvise", Args: []Type{
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "madvise_flags", FldName: "advice", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4, 6}},
+ }},
+ {ID: 5, NR: 203, Name: "mlock", CallName: "mlock", Args: []Type{
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "size", TypeSize: 8}}, Buf: "addr"},
+ }},
+ {ID: 6, NR: 242, Name: "mlockall", CallName: "mlockall", Args: []Type{
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mlockall_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{1, 2}},
+ }},
+ {ID: 7, NR: 197, Name: "mmap", CallName: "mmap", Args: []Type{
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mmap_prot", FldName: "prot", TypeSize: 8}}, Vals: []uint64{4, 1, 2, 0}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mmap_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{4096, 0, 16, 512, 128, 1024, 2048, 2, 1}},
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "fileoff", FldName: "offset", TypeSize: 8}}, Kind: 1},
+ }, Ret: &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "ret", TypeSize: 8, ArgDir: 1}}},
+ {ID: 8, NR: 74, Name: "mprotect", CallName: "mprotect", Args: []Type{
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mmap_prot", FldName: "prot", TypeSize: 8}}, Vals: []uint64{4, 1, 2, 0}},
+ }},
+ {ID: 9, NR: 225, Name: "msgget", CallName: "msgget", Args: []Type{
+ &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "key", TypeSize: 8}}, ValuesStart: 2039379027, ValuesPerProc: 4},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "msgget_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{512, 1024, 256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_msq", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 10, NR: 225, Name: "msgget$private", CallName: "msgget", Args: []Type{
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "key", TypeSize: 8}}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "msgget_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{512, 1024, 256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_msq", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 11, NR: 227, Name: "msgrcv", CallName: "msgrcv", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_msq", FldName: "msqid", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "msgp", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "msgbuf", Dir: 1}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "sz", TypeSize: 8}}, Buf: "msgp"},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "msgbuf_type", FldName: "typ", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "msgrcv_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{2048, 4096}},
+ }},
+ {ID: 12, NR: 226, Name: "msgsnd", CallName: "msgsnd", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_msq", FldName: "msqid", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "msgp", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "msgbuf"}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "sz", TypeSize: 8}}, Buf: "msgp"},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "msgsnd_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{2048}},
+ }},
+ {ID: 13, NR: 204, Name: "munlock", CallName: "munlock", Args: []Type{
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "size", TypeSize: 8}}, Buf: "addr"},
+ }},
+ {ID: 14, NR: 243, Name: "munlockall", CallName: "munlockall"},
+ {ID: 15, NR: 73, Name: "munmap", CallName: "munmap", Args: []Type{
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "len", TypeSize: 8}}, Buf: "addr"},
+ }},
+ {ID: 16, NR: 5, Name: "open", CallName: "open", Args: []Type{
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "file", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "filename"}, Kind: 3}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "open_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 8, 512, 1024, 2048, 16, 32, 256, 4194304, 16777216, 65536, 128, 131072, 262144, 32768, 524288, 2097152, 64}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "open_mode", FldName: "mode", TypeSize: 8}}, Vals: []uint64{256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 17, NR: 5, Name: "open$dir", CallName: "open", Args: []Type{
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "file", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "filename"}, Kind: 3}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "open_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 8, 512, 1024, 2048, 16, 32, 256, 4194304, 16777216, 65536, 128, 131072, 262144, 32768, 524288, 2097152, 64}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "open_mode", FldName: "mode", TypeSize: 8}}, Vals: []uint64{256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "fd_dir", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 18, NR: 468, Name: "openat", CallName: "openat", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd_dir", FldName: "fd", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "file", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "filename"}, Kind: 3}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "open_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 8, 512, 1024, 2048, 16, 32, 256, 4194304, 16777216, 65536, 128, 131072, 262144, 32768, 524288, 2097152, 64}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "open_mode", FldName: "mode", TypeSize: 8}}, Vals: []uint64{256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 19, NR: 453, Name: "pipe2", CallName: "pipe2", Args: []Type{
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "pipefd", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "pipefd", Dir: 1}}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "pipe_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{4, 4194304, 16777216}},
+ }},
+ {ID: 20, NR: 289, Name: "preadv", CallName: "preadv", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "vec", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array"}, Type: &StructType{Key: StructKey{Name: "iovec_out"}}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "vlen", TypeSize: 8}}, Buf: "vec"},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "fileoff", FldName: "off", TypeSize: 8}}, Kind: 1},
+ }},
+ {ID: 21, NR: 290, Name: "pwritev", CallName: "pwritev", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "vec", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array"}, Type: &StructType{Key: StructKey{Name: "iovec_in"}}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "vlen", TypeSize: 8}}, Buf: "vec"},
+ &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "fileoff", FldName: "off", TypeSize: 8}}, Kind: 1},
+ }},
+ {ID: 22, NR: 3, Name: "read", CallName: "read", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "buf", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "count", TypeSize: 8}}, Buf: "buf"},
+ }},
+ {ID: 23, NR: 120, Name: "readv", CallName: "readv", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "vec", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array"}, Type: &StructType{Key: StructKey{Name: "iovec_out"}}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "vlen", TypeSize: 8}}, Buf: "vec"},
+ }},
+ {ID: 24, NR: 510, Name: "semctl$GETALL", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "semnum", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 6},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "arg", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1}}},
+ }},
+ {ID: 25, NR: 510, Name: "semctl$GETNCNT", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "sem_sem_id", FldName: "semnum", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 3},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "arg", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1}}},
+ }},
+ {ID: 26, NR: 510, Name: "semctl$GETPID", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "sem_sem_id", FldName: "semnum", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 4},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "arg", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1}}},
+ }},
+ {ID: 27, NR: 510, Name: "semctl$GETVAL", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "sem_sem_id", FldName: "semnum", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 5},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "arg", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1}}},
+ }},
+ {ID: 28, NR: 510, Name: "semctl$GETZCNT", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "sem_sem_id", FldName: "semnum", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 7},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "arg", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1}}},
+ }},
+ {ID: 29, NR: 510, Name: "semctl$IPC_RMID", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "semnum", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}},
+ }},
+ {ID: 30, NR: 510, Name: "semctl$IPC_SET", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "semnum", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 1},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "arg", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "semid_ds"}}},
+ }},
+ {ID: 31, NR: 510, Name: "semctl$IPC_STAT", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "semnum", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 2},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "arg", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{ArgDir: 1}}},
+ }},
+ {ID: 32, NR: 510, Name: "semctl$SETALL", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "semnum", TypeSize: 8}}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 9},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "arg", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array"}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int16", TypeSize: 2}}}}},
+ }},
+ {ID: 33, NR: 510, Name: "semctl$SETVAL", CallName: "semctl", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "sem_sem_id", FldName: "semnum", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4}},
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "cmd", TypeSize: 8}}, Val: 8},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "arg", TypeSize: 8}, Type: &IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", TypeSize: 4}}}},
+ }},
+ {ID: 34, NR: 221, Name: "semget", CallName: "semget", Args: []Type{
+ &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "key", TypeSize: 8}}, ValuesStart: 2039359027, ValuesPerProc: 4},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "sem_sem_id", FldName: "nsems", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "semget_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{512, 1024, 256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 35, NR: 221, Name: "semget$private", CallName: "semget", Args: []Type{
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "key", TypeSize: 8}}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "sem_sem_id", FldName: "nsems", TypeSize: 8}}, Vals: []uint64{0, 1, 2, 3, 4}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "semget_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{512, 1024, 256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 36, NR: 222, Name: "semop", CallName: "semop", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_sem", FldName: "semid", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "ops", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array"}, Type: &StructType{Key: StructKey{Name: "sembuf"}}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "nops", TypeSize: 8}}, Buf: "ops"},
+ }},
+ {ID: 37, NR: 228, Name: "shmat", CallName: "shmat", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_shm", FldName: "shmid", TypeSize: 4}},
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "addr", TypeSize: 8}},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "shmat_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{8192, 4096}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "shmaddr", FldName: "ret", TypeSize: 8, ArgDir: 1}}},
+ {ID: 38, NR: 230, Name: "shmdt", CallName: "shmdt", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "shmaddr", FldName: "addr", TypeSize: 8}},
+ }},
+ {ID: 39, NR: 231, Name: "shmget", CallName: "shmget", Args: []Type{
+ &ProcType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "proc", FldName: "key", TypeSize: 8}}, ValuesStart: 2039339027, ValuesPerProc: 4},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "size", TypeSize: 8}}, Buf: "unused"},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "shmget_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{512, 1024, 256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "unused", TypeSize: 8}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_shm", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 40, NR: 231, Name: "shmget$private", CallName: "shmget", Args: []Type{
+ &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "key", TypeSize: 8}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "size", TypeSize: 8}}, Buf: "unused"},
+ &FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "shmget_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{512, 1024, 256, 128, 64, 32, 16, 8, 4, 2, 1}},
+ &VmaType{TypeCommon: TypeCommon{TypeName: "vma", FldName: "unused", TypeSize: 8}},
+ }, Ret: &ResourceType{TypeCommon: TypeCommon{TypeName: "ipc_shm", FldName: "ret", TypeSize: 4, ArgDir: 1}}},
+ {ID: 41, NR: 4, Name: "write", CallName: "write", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "buffer", FldName: "buf", TypeSize: 8}, Type: &BufferType{}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "count", TypeSize: 8}}, Buf: "buf"},
+ }},
+ {ID: 42, NR: 121, Name: "writev", CallName: "writev", Args: []Type{
+ &ResourceType{TypeCommon: TypeCommon{TypeName: "fd", FldName: "fd", TypeSize: 4}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "vec", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array"}, Type: &StructType{Key: StructKey{Name: "iovec_in"}}}},
+ &LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "vlen", TypeSize: 8}}, Buf: "vec"},
+ }},
+}
+
+var consts_amd64 = []ConstValue{
+ {Name: "AT_FDCWD", Value: 18446744073709551516},
+ {Name: "GETALL", Value: 6},
+ {Name: "GETNCNT", Value: 3},
+ {Name: "GETPID", Value: 4},
+ {Name: "GETVAL", Value: 5},
+ {Name: "GETZCNT", Value: 7},
+ {Name: "IPC_CREAT", Value: 512},
+ {Name: "IPC_EXCL", Value: 1024},
+ {Name: "IPC_NOWAIT", Value: 2048},
+ {Name: "IPC_PRIVATE"},
+ {Name: "IPC_RMID"},
+ {Name: "IPC_SET", Value: 1},
+ {Name: "IPC_STAT", Value: 2},
+ {Name: "MADV_DONTNEED", Value: 4},
+ {Name: "MADV_FREE", Value: 6},
+ {Name: "MADV_NORMAL"},
+ {Name: "MADV_RANDOM", Value: 1},
+ {Name: "MADV_SEQUENTIAL", Value: 2},
+ {Name: "MADV_WILLNEED", Value: 3},
+ {Name: "MAP_ANON", Value: 4096},
+ {Name: "MAP_FILE"},
+ {Name: "MAP_FIXED", Value: 16},
+ {Name: "MAP_HASSEMAPHORE", Value: 512},
+ {Name: "MAP_INHERIT", Value: 128},
+ {Name: "MAP_PRIVATE", Value: 2},
+ {Name: "MAP_SHARED", Value: 1},
+ {Name: "MAP_TRYFIXED", Value: 1024},
+ {Name: "MAP_WIRED", Value: 2048},
+ {Name: "MCL_CURRENT", Value: 1},
+ {Name: "MCL_FUTURE", Value: 2},
+ {Name: "MSG_NOERROR", Value: 4096},
+ {Name: "O_ALT_IO", Value: 262144},
+ {Name: "O_APPEND", Value: 8},
+ {Name: "O_ASYNC", Value: 64},
+ {Name: "O_CLOEXEC", Value: 4194304},
+ {Name: "O_CREAT", Value: 512},
+ {Name: "O_DIRECT", Value: 524288},
+ {Name: "O_DIRECTORY", Value: 2097152},
+ {Name: "O_DSYNC", Value: 65536},
+ {Name: "O_EXCL", Value: 2048},
+ {Name: "O_EXLOCK", Value: 32},
+ {Name: "O_NOCTTY", Value: 32768},
+ {Name: "O_NOFOLLOW", Value: 256},
+ {Name: "O_NONBLOCK", Value: 4},
+ {Name: "O_NOSIGPIPE", Value: 16777216},
+ {Name: "O_RDONLY"},
+ {Name: "O_RDWR", Value: 2},
+ {Name: "O_RSYNC", Value: 131072},
+ {Name: "O_SHLOCK", Value: 16},
+ {Name: "O_SYNC", Value: 128},
+ {Name: "O_TRUNC", Value: 1024},
+ {Name: "O_WRONLY", Value: 1},
+ {Name: "PROT_EXEC", Value: 4},
+ {Name: "PROT_NONE"},
+ {Name: "PROT_READ", Value: 1},
+ {Name: "PROT_WRITE", Value: 2},
+ {Name: "SEEK_CUR", Value: 1},
+ {Name: "SEEK_END", Value: 2},
+ {Name: "SEEK_SET"},
+ {Name: "SEM_UNDO", Value: 4096},
+ {Name: "SETALL", Value: 9},
+ {Name: "SETVAL", Value: 8},
+ {Name: "SHM_RDONLY", Value: 4096},
+ {Name: "SHM_RND", Value: 8192},
+ {Name: "SYS_close", Value: 6},
+ {Name: "SYS_dup", Value: 41},
+ {Name: "SYS_dup2", Value: 90},
+ {Name: "SYS_lseek", Value: 199},
+ {Name: "SYS_madvise", Value: 75},
+ {Name: "SYS_mlock", Value: 203},
+ {Name: "SYS_mlockall", Value: 242},
+ {Name: "SYS_mmap", Value: 197},
+ {Name: "SYS_mprotect", Value: 74},
+ {Name: "SYS_msgget", Value: 225},
+ {Name: "SYS_msgrcv", Value: 227},
+ {Name: "SYS_msgsnd", Value: 226},
+ {Name: "SYS_munlock", Value: 204},
+ {Name: "SYS_munlockall", Value: 243},
+ {Name: "SYS_munmap", Value: 73},
+ {Name: "SYS_open", Value: 5},
+ {Name: "SYS_openat", Value: 468},
+ {Name: "SYS_pipe2", Value: 453},
+ {Name: "SYS_preadv", Value: 289},
+ {Name: "SYS_pwritev", Value: 290},
+ {Name: "SYS_read", Value: 3},
+ {Name: "SYS_readv", Value: 120},
+ {Name: "SYS_semctl", Value: 510},
+ {Name: "SYS_semget", Value: 221},
+ {Name: "SYS_semop", Value: 222},
+ {Name: "SYS_shmat", Value: 228},
+ {Name: "SYS_shmdt", Value: 230},
+ {Name: "SYS_shmget", Value: 231},
+ {Name: "SYS_write", Value: 4},
+ {Name: "SYS_writev", Value: 121},
+ {Name: "S_IRGRP", Value: 32},
+ {Name: "S_IROTH", Value: 4},
+ {Name: "S_IRUSR", Value: 256},
+ {Name: "S_IWGRP", Value: 16},
+ {Name: "S_IWOTH", Value: 2},
+ {Name: "S_IWUSR", Value: 128},
+ {Name: "S_IXGRP", Value: 8},
+ {Name: "S_IXOTH", Value: 1},
+ {Name: "S_IXUSR", Value: 64},
+}
+
+const revision_amd64 = "afbcea24bf5398f333788540f821f68b9e6fbe66"
diff --git a/sys/netbsd/fs.txt b/sys/netbsd/fs.txt
index 16d1d03f8..1a18a172d 100644
--- a/sys/netbsd/fs.txt
+++ b/sys/netbsd/fs.txt
@@ -10,8 +10,6 @@ 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.
@@ -28,7 +26,6 @@ lseek(fd fd, offset fileoff, whence flags[seek_whence])
dup(oldfd fd) fd
dup2(oldfd fd, newfd fd) fd
pipe2(pipefd ptr[out, pipefd], flags flags[pipe_flags])
-fstat(fd fd, statbuf ptr[out, stat])
pipefd {
rfd fd
@@ -50,8 +47,6 @@ stat {
ino int32
mode int16
nlink int16
- uid uid
- gid gid
rdev int16
size int32
blksize int32
diff --git a/sys/netbsd/fs_amd64.const b/sys/netbsd/fs_amd64.const
new file mode 100644
index 000000000..3b8b40a7d
--- /dev/null
+++ b/sys/netbsd/fs_amd64.const
@@ -0,0 +1,48 @@
+# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
+O_ALT_IO = 262144
+O_APPEND = 8
+O_ASYNC = 64
+O_CLOEXEC = 4194304
+O_CREAT = 512
+O_DIRECT = 524288
+O_DIRECTORY = 2097152
+O_DSYNC = 65536
+O_EXCL = 2048
+O_EXLOCK = 32
+O_NOCTTY = 32768
+O_NOFOLLOW = 256
+O_NONBLOCK = 4
+O_NOSIGPIPE = 16777216
+O_RDONLY = 0
+O_RDWR = 2
+O_RSYNC = 131072
+O_SHLOCK = 16
+O_SYNC = 128
+O_TRUNC = 1024
+O_WRONLY = 1
+SEEK_CUR = 1
+SEEK_END = 2
+SEEK_SET = 0
+SYS_close = 6
+SYS_dup = 41
+SYS_dup2 = 90
+SYS_lseek = 199
+SYS_open = 5
+SYS_openat = 468
+SYS_pipe2 = 453
+SYS_preadv = 289
+SYS_pwritev = 290
+SYS_read = 3
+SYS_readv = 120
+SYS_write = 4
+SYS_writev = 121
+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
diff --git a/sys/netbsd/init.go b/sys/netbsd/init.go
new file mode 100644
index 000000000..a4dc1eb11
--- /dev/null
+++ b/sys/netbsd/init.go
@@ -0,0 +1,102 @@
+// 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.
+
+package netbsd
+
+import (
+ "github.com/google/syzkaller/prog"
+)
+
+func initTarget(target *prog.Target) {
+ arch := &arch{
+ mmapSyscall: target.SyscallMap["mmap"],
+ PROT_READ: target.ConstMap["PROT_READ"],
+ PROT_WRITE: target.ConstMap["PROT_WRITE"],
+ MAP_ANONYMOUS: target.ConstMap["MAP_ANON"],
+ MAP_PRIVATE: target.ConstMap["MAP_PRIVATE"],
+ MAP_FIXED: target.ConstMap["MAP_FIXED"],
+ }
+
+ target.PageSize = pageSize
+ target.DataOffset = dataOffset
+ target.MmapSyscall = arch.mmapSyscall
+ target.MakeMmap = arch.makeMmap
+ target.AnalyzeMmap = arch.analyzeMmap
+ target.SanitizeCall = arch.sanitizeCall
+}
+
+const (
+ pageSize = 4 << 10
+ dataOffset = 512 << 20
+ invalidFD = ^uint64(0)
+)
+
+type arch struct {
+ mmapSyscall *prog.Syscall
+ clockGettimeSyscall *prog.Syscall
+
+ PROT_READ uint64
+ PROT_WRITE uint64
+ MAP_ANONYMOUS uint64
+ MAP_PRIVATE uint64
+ MAP_FIXED uint64
+}
+
+// createMmapCall creates a "normal" mmap call that maps [start, start+npages) page range.
+func (arch *arch) makeMmap(start, npages uint64) *prog.Call {
+ meta := arch.mmapSyscall
+ return &prog.Call{
+ Meta: meta,
+ Args: []prog.Arg{
+ prog.MakePointerArg(meta.Args[0], start, 0, npages, nil),
+ prog.MakeConstArg(meta.Args[1], npages*pageSize),
+ prog.MakeConstArg(meta.Args[2], arch.PROT_READ|arch.PROT_WRITE),
+ prog.MakeConstArg(meta.Args[3], arch.MAP_ANONYMOUS|arch.MAP_PRIVATE|arch.MAP_FIXED),
+ prog.MakeResultArg(meta.Args[4], nil, invalidFD),
+ prog.MakeConstArg(meta.Args[5], 0),
+ },
+ Ret: prog.MakeReturnArg(meta.Ret),
+ }
+}
+
+func (arch *arch) analyzeMmap(c *prog.Call) (start, npages uint64, mapped bool) {
+ switch c.Meta.Name {
+ case "mmap":
+ // Filter out only very wrong arguments.
+ npages = c.Args[1].(*prog.ConstArg).Val / pageSize
+ if npages == 0 {
+ return
+ }
+ flags := c.Args[3].(*prog.ConstArg).Val
+ fd := c.Args[4].(*prog.ResultArg).Val
+ if flags&arch.MAP_ANONYMOUS == 0 && fd == invalidFD {
+ return
+ }
+ start = c.Args[0].(*prog.PointerArg).PageIndex
+ mapped = true
+ return
+ case "munmap":
+ start = c.Args[0].(*prog.PointerArg).PageIndex
+ npages = c.Args[1].(*prog.ConstArg).Val / pageSize
+ mapped = false
+ return
+ default:
+ return
+ }
+}
+
+func (arch *arch) sanitizeCall(c *prog.Call) {
+ switch c.Meta.CallName {
+ case "mmap":
+ // Add MAP_FIXED flag, otherwise it produces non-deterministic results.
+ c.Args[3].(*prog.ConstArg).Val |= arch.MAP_FIXED
+ case "mknod", "mknodat":
+ break
+ case "exit":
+ code := c.Args[0].(*prog.ConstArg)
+ // These codes are reserved by executor.
+ if code.Val%128 == 67 || code.Val%128 == 68 {
+ code.Val = 1
+ }
+ }
+}
diff --git a/sys/netbsd/ipc.txt b/sys/netbsd/ipc.txt
index 75f45dd72..dc1e4d36e 100644
--- a/sys/netbsd/ipc.txt
+++ b/sys/netbsd/ipc.txt
@@ -20,9 +20,6 @@ msgget(key proc[2039379027, 4], flags flags[msgget_flags]) ipc_msq
msgget$private(key const[IPC_PRIVATE], flags flags[msgget_flags]) ipc_msq
msgsnd(msqid ipc_msq, msgp ptr[in, msgbuf], sz len[msgp], flags flags[msgsnd_flags])
msgrcv(msqid ipc_msq, msgp ptr[out, msgbuf], sz len[msgp], typ flags[msgbuf_type], flags flags[msgrcv_flags])
-msgctl$IPC_STAT(msqid ipc_msq, cmd const[IPC_STAT], buf buffer[out])
-msgctl$IPC_SET(msqid ipc_msq, cmd const[IPC_SET], buf ptr[in, msqid_ds])
-msgctl$IPC_RMID(msqid ipc_msq, cmd const[IPC_RMID])
resource ipc_sem[ipc]
semget(key proc[2039359027, 4], nsems flags[sem_sem_id], flags flags[semget_flags]) ipc_sem
@@ -46,11 +43,6 @@ resource shmaddr[intptr]: 0
shmget(key proc[2039339027, 4], size len[unused], flags flags[shmget_flags], unused vma) ipc_shm
shmget$private(key const[IPC_PRIVATE], size len[unused], flags flags[shmget_flags], unused vma) ipc_shm
shmat(shmid ipc_shm, addr vma, flags flags[shmat_flags]) shmaddr
-shmctl$IPC_STAT(shmid ipc_shm, cmd const[IPC_STAT], buf buffer[out])
-shmctl$IPC_SET(shmid ipc_shm, cmd const[IPC_SET], buf ptr[in, shmid_ds])
-shmctl$IPC_RMID(shmid ipc_shm, cmd const[IPC_RMID])
-shmctl$SHM_LOCK(shmid ipc_shm, cmd const[SHM_LOCK])
-shmctl$SHM_UNLOCK(shmid ipc_shm, cmd const[SHM_UNLOCK])
shmdt(addr shmaddr)
msgget_flags = IPC_CREAT, IPC_EXCL, S_IRUSR, S_IWUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH, S_IXOTH
@@ -65,10 +57,6 @@ 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]
diff --git a/sys/netbsd/ipc_amd64.const b/sys/netbsd/ipc_amd64.const
new file mode 100644
index 000000000..826ae6914
--- /dev/null
+++ b/sys/netbsd/ipc_amd64.const
@@ -0,0 +1,37 @@
+# AUTOGENERATED FILE
+GETALL = 6
+GETNCNT = 3
+GETPID = 4
+GETVAL = 5
+GETZCNT = 7
+IPC_CREAT = 512
+IPC_EXCL = 1024
+IPC_NOWAIT = 2048
+IPC_PRIVATE = 0
+IPC_RMID = 0
+IPC_SET = 1
+IPC_STAT = 2
+MSG_NOERROR = 4096
+SEM_UNDO = 4096
+SETALL = 9
+SETVAL = 8
+SHM_RDONLY = 4096
+SHM_RND = 8192
+SYS_msgget = 225
+SYS_msgrcv = 227
+SYS_msgsnd = 226
+SYS_semctl = 510
+SYS_semget = 221
+SYS_semop = 222
+SYS_shmat = 228
+SYS_shmdt = 230
+SYS_shmget = 231
+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
diff --git a/sys/netbsd/mm.txt b/sys/netbsd/mm.txt
index 46a319e99..02de4e21a 100644
--- a/sys/netbsd/mm.txt
+++ b/sys/netbsd/mm.txt
@@ -7,7 +7,6 @@ include <sys/mman.h>
mmap(addr vma, len len[addr], prot flags[mmap_prot], flags flags[mmap_flags], fd fd, offset fileoff) vma
munmap(addr vma, len len[addr])
mprotect(addr vma, len len[addr], prot flags[mmap_prot])
-msync(addr vma, len len[addr], f flags[msync_flags])
madvise(addr vma, len len[addr], advice flags[madvise_flags])
mlock(addr vma, size len[addr])
munlock(addr vma, size len[addr])
@@ -15,7 +14,6 @@ mlockall(flags flags[mlockall_flags])
munlockall()
mmap_prot = PROT_EXEC, PROT_READ, PROT_WRITE, PROT_NONE
-msync_flags = MS_ASYNC, MS_SYNC, MS_INVALIDATE
mmap_flags = MAP_ANON, MAP_FILE, MAP_FIXED, MAP_HASSEMAPHORE, MAP_INHERIT, MAP_TRYFIXED, MAP_WIRED, MAP_PRIVATE, MAP_SHARED
madvise_flags = MADV_NORMAL, MADV_RANDOM, MADV_SEQUENTIAL, MADV_WILLNEED, MADV_DONTNEED, MADV_FREE
mlockall_flags = MCL_CURRENT, MCL_FUTURE
diff --git a/sys/netbsd/mm_amd64.const b/sys/netbsd/mm_amd64.const
new file mode 100644
index 000000000..7cffb10ce
--- /dev/null
+++ b/sys/netbsd/mm_amd64.const
@@ -0,0 +1,30 @@
+# AUTOGENERATED FILE
+MADV_DONTNEED = 4
+MADV_FREE = 6
+MADV_NORMAL = 0
+MADV_RANDOM = 1
+MADV_SEQUENTIAL = 2
+MADV_WILLNEED = 3
+MAP_ANON = 4096
+MAP_FILE = 0
+MAP_FIXED = 16
+MAP_HASSEMAPHORE = 512
+MAP_INHERIT = 128
+MAP_PRIVATE = 2
+MAP_SHARED = 1
+MAP_TRYFIXED = 1024
+MAP_WIRED = 2048
+MCL_CURRENT = 1
+MCL_FUTURE = 2
+PROT_EXEC = 4
+PROT_NONE = 0
+PROT_READ = 1
+PROT_WRITE = 2
+SYS_madvise = 75
+SYS_mlock = 203
+SYS_mlockall = 242
+SYS_mmap = 197
+SYS_mprotect = 74
+SYS_munlock = 204
+SYS_munlockall = 243
+SYS_munmap = 73
diff --git a/sys/netbsd/socket.txt b/sys/netbsd/socket.txt
deleted file mode 100644
index 96943fe2b..000000000
--- a/sys/netbsd/socket.txt
+++ /dev/null
@@ -1,117 +0,0 @@
-# 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
-accept4(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