aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-06-02 11:58:29 +0200
committerDmitry Vyukov <dvyukov@google.com>2024-06-04 09:50:32 +0000
commit06bf8101debe879447d0ef3a7a5b84cb11fa5acf (patch)
treed36506158005ab053b33b46559d48ba5e54b4a9e /sys
parent3f1713c975c911f9ca5d27d0292f7505b176c873 (diff)
executor: remove noshmem mode
All OSes we have now support shmem. Support for Fuchia/Starnix/Windows wasn't implemented, but generally they support shared memory. Remove all of the complexity and code associated with noshmem mode. If/when we revive these OSes, it's easier to properly implement shmem mode for them.
Diffstat (limited to 'sys')
-rw-r--r--sys/syz-sysgen/sysgen.go9
-rw-r--r--sys/targets/targets.go51
-rw-r--r--sys/test/arch_32.txt2
-rw-r--r--sys/test/csource.txt.const2
-rw-r--r--sys/test/expressions.txt.const4
-rw-r--r--sys/test/test.txt.const4
-rw-r--r--sys/test/test/align04
-rw-r--r--sys/test/test/align0_be4
-rw-r--r--sys/test/test/bf4
-rw-r--r--sys/test/test/bf24
-rw-r--r--sys/test/test/bf2_be4
-rw-r--r--sys/test/test/bf_be4
12 files changed, 38 insertions, 58 deletions
diff --git a/sys/syz-sysgen/sysgen.go b/sys/syz-sysgen/sysgen.go
index f170ad410..0022cea12 100644
--- a/sys/syz-sysgen/sysgen.go
+++ b/sys/syz-sysgen/sysgen.go
@@ -42,7 +42,6 @@ type Define struct {
type ArchData struct {
Revision string
ForkServer int
- Shmem int
GOARCH string
PageSize uint64
NumPages uint64
@@ -252,11 +251,11 @@ func generate(target *targets.Target, prg *compiler.Prog, consts map[string]uint
fmt.Fprintf(out, "func init() {\n")
fmt.Fprintf(out, "\tRegisterTarget(&Target{"+
"OS: %q, Arch: %q, Revision: revision_%v, PtrSize: %v, PageSize: %v, "+
- "NumPages: %v, DataOffset: %v, LittleEndian: %v, ExecutorUsesShmem: %v, "+
+ "NumPages: %v, DataOffset: %v, LittleEndian: %v, "+
"Syscalls: syscalls_%v, Resources: resources_%v, Consts: consts_%v,"+
"Flags: flags_%v}, types_%v, InitTarget)\n}\n\n",
target.OS, target.Arch, target.Arch, target.PtrSize, target.PageSize,
- target.NumPages, target.DataOffset, target.LittleEndian, target.ExecutorUsesShmem,
+ target.NumPages, target.DataOffset, target.LittleEndian,
target.Arch, target.Arch, target.Arch, target.Arch, target.Arch)
fmt.Fprintf(out, "var resources_%v = ", target.Arch)
@@ -298,9 +297,6 @@ func generateExecutorSyscalls(target *targets.Target, syscalls []*prog.Syscall,
if target.ExecutorUsesForkServer {
data.ForkServer = 1
}
- if target.ExecutorUsesShmem {
- data.Shmem = 1
- }
defines := make(map[string]string)
for _, c := range syscalls {
var attrVals []uint64
@@ -417,7 +413,6 @@ struct call_props_t { {{range $attr := $.CallProps}}
#define GOARCH "{{.GOARCH}}"
#define SYZ_REVISION "{{.Revision}}"
#define SYZ_EXECUTOR_USES_FORK_SERVER {{.ForkServer}}
-#define SYZ_EXECUTOR_USES_SHMEM {{.Shmem}}
#define SYZ_PAGE_SIZE {{.PageSize}}
#define SYZ_NUM_PAGES {{.NumPages}}
#define SYZ_DATA_OFFSET {{.DataOffset}}
diff --git a/sys/targets/targets.go b/sys/targets/targets.go
index 35068af01..5483897a1 100644
--- a/sys/targets/targets.go
+++ b/sys/targets/targets.go
@@ -66,8 +66,6 @@ type osCommon struct {
// E.g. "__NR_" or "SYS_".
SyscallPrefix string
// ipc<->executor communication tuning.
- // If ExecutorUsesShmem, programs and coverage are passed through shmem, otherwise via pipes.
- ExecutorUsesShmem bool
// If ExecutorUsesForkServer, executor uses extended protocol with handshake.
ExecutorUsesForkServer bool
// Special mode for OSes that do not have support for building Go binaries.
@@ -139,19 +137,19 @@ const (
GVisor = "gvisor"
Starnix = "starnix"
- AMD64 = "amd64"
- ARM64 = "arm64"
- ARM = "arm"
- I386 = "386"
- MIPS64LE = "mips64le"
- PPC64LE = "ppc64le"
- S390x = "s390x"
- RiscV64 = "riscv64"
- TestArch64 = "64"
- TestArch64Fuzz = "64_fuzz"
- TestArch64Fork = "64_fork"
- TestArch32Shmem = "32_shmem"
- TestArch32ForkShmem = "32_fork_shmem"
+ AMD64 = "amd64"
+ ARM64 = "arm64"
+ ARM = "arm"
+ I386 = "386"
+ MIPS64LE = "mips64le"
+ PPC64LE = "ppc64le"
+ S390x = "s390x"
+ RiscV64 = "riscv64"
+ TestArch64 = "64"
+ TestArch64Fuzz = "64_fuzz"
+ TestArch64Fork = "64_fork"
+ TestArch32 = "32"
+ TestArch32Fork = "32_fork"
)
func Get(OS, arch string) *Target {
@@ -193,7 +191,6 @@ var List = map[string]map[string]*Target{
osCommon: osCommon{
SyscallNumbers: true,
SyscallPrefix: "SYS_",
- ExecutorUsesShmem: false,
ExecutorUsesForkServer: false,
},
},
@@ -205,7 +202,6 @@ var List = map[string]map[string]*Target{
osCommon: osCommon{
SyscallNumbers: true,
SyscallPrefix: "SYS_",
- ExecutorUsesShmem: true,
ExecutorUsesForkServer: true,
},
},
@@ -222,11 +218,10 @@ var List = map[string]map[string]*Target{
osCommon: osCommon{
SyscallNumbers: true,
SyscallPrefix: "SYS_",
- ExecutorUsesShmem: false,
ExecutorUsesForkServer: true,
},
},
- TestArch32Shmem: {
+ TestArch32: {
PtrSize: 4,
PageSize: 8 << 10,
Int64Alignment: 4,
@@ -235,11 +230,10 @@ var List = map[string]map[string]*Target{
SyscallNumbers: true,
Int64SyscallArgs: true,
SyscallPrefix: "SYS_",
- ExecutorUsesShmem: true,
ExecutorUsesForkServer: false,
},
},
- TestArch32ForkShmem: {
+ TestArch32Fork: {
PtrSize: 4,
PageSize: 4 << 10,
CFlags: []string{"-static-pie"},
@@ -247,7 +241,6 @@ var List = map[string]map[string]*Target{
SyscallNumbers: true,
Int64SyscallArgs: true,
SyscallPrefix: "SYS_",
- ExecutorUsesShmem: true,
ExecutorUsesForkServer: true,
HostFuzzer: true,
},
@@ -498,7 +491,6 @@ var oses = map[string]osCommon{
Linux: {
SyscallNumbers: true,
SyscallPrefix: "__NR_",
- ExecutorUsesShmem: true,
ExecutorUsesForkServer: true,
KernelObject: "vmlinux",
PseudoSyscallDeps: map[string][]string{
@@ -515,7 +507,6 @@ var oses = map[string]osCommon{
SyscallNumbers: true,
Int64SyscallArgs: true,
SyscallPrefix: "SYS_",
- ExecutorUsesShmem: true,
ExecutorUsesForkServer: true,
KernelObject: "kernel.full",
CPP: "g++",
@@ -530,10 +521,9 @@ var oses = map[string]osCommon{
},
},
Darwin: {
- SyscallNumbers: true,
- Int64SyscallArgs: true,
- SyscallPrefix: "SYS_",
- ExecutorUsesShmem: true,
+ SyscallNumbers: true,
+ Int64SyscallArgs: true,
+ SyscallPrefix: "SYS_",
// FIXME(HerrSpace): ForkServer is b0rked in a peculiar way. I did some
// printf debugging in parseOutput in ipc.go. It usually works for a
// few executions. Eventually the reported ncmd stops making sense and
@@ -553,14 +543,12 @@ var oses = map[string]osCommon{
BuildOS: Linux,
SyscallNumbers: true,
SyscallPrefix: "SYS_",
- ExecutorUsesShmem: true,
ExecutorUsesForkServer: true,
KernelObject: "netbsd.gdb",
},
OpenBSD: {
SyscallNumbers: false,
SyscallPrefix: "SYS_",
- ExecutorUsesShmem: true,
ExecutorUsesForkServer: true,
KernelObject: "bsd.gdb",
CPP: "ecpp",
@@ -568,7 +556,6 @@ var oses = map[string]osCommon{
Fuchsia: {
BuildOS: Linux,
SyscallNumbers: false,
- ExecutorUsesShmem: false,
ExecutorUsesForkServer: false,
HostFuzzer: true,
ExecutorBin: "syz-executor",
@@ -576,7 +563,6 @@ var oses = map[string]osCommon{
},
Windows: {
SyscallNumbers: false,
- ExecutorUsesShmem: false,
ExecutorUsesForkServer: false,
ExeExtension: ".exe",
KernelObject: "vmlinux",
@@ -765,7 +751,6 @@ func initTarget(target *Target, OS, arch string) {
}
// Temporal hack.
if OS == Linux && os.Getenv("SYZ_STARNIX_HACK") != "" {
- target.ExecutorUsesShmem = false
target.ExecutorUsesForkServer = false
target.HostFuzzer = true
}
diff --git a/sys/test/arch_32.txt b/sys/test/arch_32.txt
index 192f308c3..aaa9963a9 100644
--- a/sys/test/arch_32.txt
+++ b/sys/test/arch_32.txt
@@ -1,7 +1,7 @@
# Copyright 2022 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.
-meta arches["32_shmem", "32_fork_shmem"]
+meta arches["32", "32_fork"]
resource unsupported3[int32]
diff --git a/sys/test/csource.txt.const b/sys/test/csource.txt.const
index 2c90daac7..3a0343e4d 100644
--- a/sys/test/csource.txt.const
+++ b/sys/test/csource.txt.const
@@ -1,4 +1,4 @@
-arches = 32_fork_shmem, 32_shmem, 64, 64_fork
+arches = 32, 32_fork, 64, 64_fork
BIT_0 = 1
BIT_1 = 2
BIT_0_AND_1 = 3
diff --git a/sys/test/expressions.txt.const b/sys/test/expressions.txt.const
index 77e181281..02c3c0e23 100644
--- a/sys/test/expressions.txt.const
+++ b/sys/test/expressions.txt.const
@@ -1,3 +1,3 @@
-arches = 32_fork_shmem, 32_shmem, 64, 64_fork, 64_fuzz
+arches = 32, 32_fork, 64, 64_fork, 64_fuzz
FIELD_FLAG1 = 2
-FIELD_FLAG2 = 4 \ No newline at end of file
+FIELD_FLAG2 = 4
diff --git a/sys/test/test.txt.const b/sys/test/test.txt.const
index 11f548df0..de2507e56 100644
--- a/sys/test/test.txt.const
+++ b/sys/test/test.txt.const
@@ -1,6 +1,6 @@
-arches = 32_fork_shmem, 32_shmem, 64, 64_fork
+arches = 32, 32_fork, 64, 64_fork
IPPROTO_ICMPV6 = 58
IPPROTO_TCP = 6
IPPROTO_UDP = 17
-ONLY_32BITS_CONST = 32_fork_shmem:1, 32_shmem:1
+ONLY_32BITS_CONST = 32:1, 32_fork:1
ARCH_64_SPECIFIC_CONST = 64:10
diff --git a/sys/test/test/align0 b/sys/test/test/align0
index 82272f5a9..e2aaf61ee 100644
--- a/sys/test/test/align0
+++ b/sys/test/test/align0
@@ -1,5 +1,5 @@
-# 32_shmem has 4-byte alignment for int64 and everything goes havoc.
-# requires: -arch=32_shmem littleendian
+# 32 has 4-byte alignment for int64 and everything goes havoc.
+# requires: -arch=32 littleendian
syz_compare(&AUTO="010000000200000003000400000000000500000000000000", 0x18, &AUTO=@align0={0x1, 0x2, 0x3, 0x4, 0x5}, AUTO)
syz_compare(&AUTO="", 0x18, &AUTO=@align0={0x0, 0x0, 0x0, 0x0, 0x0}, 0x17) # EBADF
diff --git a/sys/test/test/align0_be b/sys/test/test/align0_be
index 00f251cc9..f9072e841 100644
--- a/sys/test/test/align0_be
+++ b/sys/test/test/align0_be
@@ -1,5 +1,5 @@
-# 32_shmem has 4-byte alignment for int64 and everything goes havoc.
-# requires: -arch=32_shmem -littleendian
+# 32 has 4-byte alignment for int64 and everything goes havoc.
+# requires: -arch=32 -littleendian
syz_compare(&AUTO="000100000000000203000004000000000000000000000005", 0x18, &AUTO=@align0={0x1, 0x2, 0x3, 0x4, 0x5}, AUTO)
syz_compare(&AUTO="", 0x18, &AUTO=@align0={0x0, 0x0, 0x0, 0x0, 0x0}, 0x17) # EBADF
diff --git a/sys/test/test/bf b/sys/test/test/bf
index f35ff1336..6d7bb6364 100644
--- a/sys/test/test/bf
+++ b/sys/test/test/bf
@@ -1,5 +1,5 @@
-# 32_shmem has 4-byte alignment for int64 and everything goes havoc.
-# requires: -arch=32_shmem littleendian
+# 32 has 4-byte alignment for int64 and everything goes havoc.
+# requires: -arch=32 littleendian
syz_compare(&AUTO="ab03000000000000cdcdcdcdcdcdcdcdebffff03ab0303abaa00000000000000", 0x20, &AUTO=@bf0={0xabab, 0xcdcdcdcdcdcdcdcd, 0xabab, 0xffff, 0xffffff, 0xabab, 0xabab, 0xaaa}, AUTO)
syz_compare(&AUTO="dcfcde563422f10e", 0x8, &AUTO=@bf2={0x0abc, 0x0bcd, 0xcdef, 0x123456, 0x78ef12}, AUTO)
diff --git a/sys/test/test/bf2 b/sys/test/test/bf2
index e0345388b..82b9a0a1f 100644
--- a/sys/test/test/bf2
+++ b/sys/test/test/bf2
@@ -1,5 +1,5 @@
-# 32_shmem has 4-byte alignment for int64 and everything goes havoc.
-# requires: -arch=32_shmem littleendian
+# 32 has 4-byte alignment for int64 and everything goes havoc.
+# requires: -arch=32 littleendian
syz_compare(&AUTO="1200000034067800", AUTO, &AUTO=@bf4={0x12, {0x34, 0x56, 0x78}}, AUTO)
syz_compare(&AUTO="1200000034060000", AUTO, &AUTO=@bf5={0x12, {0x34, 0x56}}, AUTO)
diff --git a/sys/test/test/bf2_be b/sys/test/test/bf2_be
index 094c3f6e2..1c39a9f99 100644
--- a/sys/test/test/bf2_be
+++ b/sys/test/test/bf2_be
@@ -1,5 +1,5 @@
-# 32_shmem has 4-byte alignment for int64 and everything goes havoc.
-# requires: -arch=32_shmem -littleendian
+# 32 has 4-byte alignment for int64 and everything goes havoc.
+# requires: -arch=32 -littleendian
syz_compare(&AUTO="1200000034607800", AUTO, &AUTO=@bf4={0x12, {0x34, 0x56, 0x78}}, AUTO)
syz_compare(&AUTO="1200000034600000", AUTO, &AUTO=@bf5={0x12, {0x34, 0x56}}, AUTO)
diff --git a/sys/test/test/bf_be b/sys/test/test/bf_be
index 4c7fc85ec..b03794e91 100644
--- a/sys/test/test/bf_be
+++ b/sys/test/test/bf_be
@@ -1,5 +1,5 @@
-# 32_shmem has 4-byte alignment for int64 and everything goes havoc.
-# requires: -arch=32_shmem -littleendian
+# 32 has 4-byte alignment for int64 and everything goes havoc.
+# requires: -arch=32 -littleendian
syz_compare(&AUTO="eac0000000000000cdcdcdcdcdcdcdcd5fffffc075607560aa", 0x20, &AUTO=@bf0={0xabab, 0xcdcdcdcdcdcdcdcd, 0xabab, 0xffff, 0xffffff, 0xabab, 0xabab, 0xaaa}, AUTO)
syz_compare(&AUTO="ccddef23456ef120", 0x8, &AUTO=@bf2={0x0abc, 0x0bcd, 0xcdef, 0x123456, 0x78ef12}, AUTO)