diff options
| -rw-r--r-- | pkg/report/akaros.go | 6 | ||||
| -rw-r--r-- | pkg/report/freebsd.go | 5 | ||||
| -rw-r--r-- | pkg/report/fuchsia.go | 6 | ||||
| -rw-r--r-- | pkg/report/fuzz.go | 3 | ||||
| -rw-r--r-- | pkg/report/gvisor.go | 5 | ||||
| -rw-r--r-- | pkg/report/linux.go | 7 | ||||
| -rw-r--r-- | pkg/report/linux_test.go | 3 | ||||
| -rw-r--r-- | pkg/report/netbsd.go | 5 | ||||
| -rw-r--r-- | pkg/report/openbsd.go | 5 | ||||
| -rw-r--r-- | pkg/report/report.go | 9 | ||||
| -rw-r--r-- | pkg/report/report_test.go | 3 | ||||
| -rw-r--r-- | pkg/report/stub.go | 5 |
12 files changed, 45 insertions, 17 deletions
diff --git a/pkg/report/akaros.go b/pkg/report/akaros.go index 44fff60ee..1aec59cfc 100644 --- a/pkg/report/akaros.go +++ b/pkg/report/akaros.go @@ -13,6 +13,7 @@ import ( "strings" "github.com/google/syzkaller/pkg/symbolizer" + "github.com/google/syzkaller/sys/targets" ) type akaros struct { @@ -20,12 +21,13 @@ type akaros struct { objfile string } -func ctorAkaros(kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { +func ctorAkaros(target *targets.Target, kernelSrc, kernelObj string, + ignores []*regexp.Regexp) (Reporter, []string, error) { ctx := &akaros{ ignores: ignores, } if kernelObj != "" { - ctx.objfile = filepath.Join(kernelObj, "akaros-kernel-64b") + ctx.objfile = filepath.Join(kernelObj, target.KernelObject) } return ctx, nil, nil } diff --git a/pkg/report/freebsd.go b/pkg/report/freebsd.go index 7e84cbea1..a4042f1a8 100644 --- a/pkg/report/freebsd.go +++ b/pkg/report/freebsd.go @@ -6,6 +6,8 @@ package report import ( "bytes" "regexp" + + "github.com/google/syzkaller/sys/targets" ) type freebsd struct { @@ -14,7 +16,8 @@ type freebsd struct { ignores []*regexp.Regexp } -func ctorFreebsd(kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { +func ctorFreebsd(target *targets.Target, kernelSrc, kernelObj string, + ignores []*regexp.Regexp) (Reporter, []string, error) { ctx := &freebsd{ kernelSrc: kernelSrc, kernelObj: kernelObj, diff --git a/pkg/report/fuchsia.go b/pkg/report/fuchsia.go index 11b8c1a35..725c0b302 100644 --- a/pkg/report/fuchsia.go +++ b/pkg/report/fuchsia.go @@ -13,6 +13,7 @@ import ( "strings" "github.com/google/syzkaller/pkg/symbolizer" + "github.com/google/syzkaller/sys/targets" "github.com/ianlancetaylor/demangle" ) @@ -38,12 +39,13 @@ var ( } ) -func ctorFuchsia(kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { +func ctorFuchsia(target *targets.Target, kernelSrc, kernelObj string, + ignores []*regexp.Regexp) (Reporter, []string, error) { ctx := &fuchsia{ ignores: ignores, } if kernelObj != "" { - ctx.obj = filepath.Join(kernelObj, "zircon.elf") + ctx.obj = filepath.Join(kernelObj, target.KernelObject) } suppressions := []string{ "fatal exception: process /tmp/syz-fuzzer", // OOM presumably diff --git a/pkg/report/fuzz.go b/pkg/report/fuzz.go index 8527c079b..82b42849f 100644 --- a/pkg/report/fuzz.go +++ b/pkg/report/fuzz.go @@ -49,7 +49,8 @@ var fuzzReporters = func() []Reporter { continue } cfg := &mgrconfig.Config{ - TargetOS: os, + TargetOS: os, + TargetArch: "amd64", } reporter, err := NewReporter(cfg) if err != nil { diff --git a/pkg/report/gvisor.go b/pkg/report/gvisor.go index 44ef39c4a..d988de5cf 100644 --- a/pkg/report/gvisor.go +++ b/pkg/report/gvisor.go @@ -6,13 +6,16 @@ package report import ( "bytes" "regexp" + + "github.com/google/syzkaller/sys/targets" ) type gvisor struct { ignores []*regexp.Regexp } -func ctorGvisor(kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { +func ctorGvisor(target *targets.Target, kernelSrc, kernelObj string, + ignores []*regexp.Regexp) (Reporter, []string, error) { ctx := &gvisor{ ignores: ignores, } diff --git a/pkg/report/linux.go b/pkg/report/linux.go index 77b1c0bac..bfd6c45b6 100644 --- a/pkg/report/linux.go +++ b/pkg/report/linux.go @@ -16,6 +16,7 @@ import ( "github.com/google/syzkaller/pkg/osutil" "github.com/google/syzkaller/pkg/symbolizer" + "github.com/google/syzkaller/sys/targets" ) type linux struct { @@ -32,11 +33,11 @@ type linux struct { eoi []byte } -func ctorLinux(kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { - vmlinux := "" +func ctorLinux(target *targets.Target, kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { var symbols map[string][]symbolizer.Symbol + vmlinux := "" if kernelObj != "" { - vmlinux = filepath.Join(kernelObj, "vmlinux") + vmlinux = filepath.Join(kernelObj, target.KernelObject) var err error symbols, err = symbolizer.ReadSymbols(vmlinux) if err != nil { diff --git a/pkg/report/linux_test.go b/pkg/report/linux_test.go index 83b631f55..ff083bb54 100644 --- a/pkg/report/linux_test.go +++ b/pkg/report/linux_test.go @@ -13,7 +13,8 @@ import ( func TestLinuxIgnores(t *testing.T) { cfg := &mgrconfig.Config{ - TargetOS: "linux", + TargetOS: "linux", + TargetArch: "amd64", } reporter, err := NewReporter(cfg) if err != nil { diff --git a/pkg/report/netbsd.go b/pkg/report/netbsd.go index 5457327c9..7de3f86cb 100644 --- a/pkg/report/netbsd.go +++ b/pkg/report/netbsd.go @@ -5,6 +5,8 @@ package report import ( "regexp" + + "github.com/google/syzkaller/sys/targets" ) type netbsd struct { @@ -13,7 +15,8 @@ type netbsd struct { ignores []*regexp.Regexp } -func ctorNetbsd(kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { +func ctorNetbsd(target *targets.Target, kernelSrc, kernelObj string, + ignores []*regexp.Regexp) (Reporter, []string, error) { ctx := &netbsd{ kernelSrc: kernelSrc, kernelObj: kernelObj, diff --git a/pkg/report/openbsd.go b/pkg/report/openbsd.go index 495ccc297..c87a1dc10 100644 --- a/pkg/report/openbsd.go +++ b/pkg/report/openbsd.go @@ -7,6 +7,8 @@ import ( "bufio" "bytes" "regexp" + + "github.com/google/syzkaller/sys/targets" ) type openbsd struct { @@ -15,7 +17,8 @@ type openbsd struct { ignores []*regexp.Regexp } -func ctorOpenbsd(kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { +func ctorOpenbsd(target *targets.Target, kernelSrc, kernelObj string, + ignores []*regexp.Regexp) (Reporter, []string, error) { ctx := &openbsd{ kernelSrc: kernelSrc, kernelObj: kernelObj, diff --git a/pkg/report/report.go b/pkg/report/report.go index 89322a6f4..be6e31216 100644 --- a/pkg/report/report.go +++ b/pkg/report/report.go @@ -13,6 +13,7 @@ import ( "strings" "github.com/google/syzkaller/pkg/mgrconfig" + "github.com/google/syzkaller/sys/targets" ) type Reporter interface { @@ -65,7 +66,11 @@ func NewReporter(cfg *mgrconfig.Config) (Reporter, error) { if err != nil { return nil, err } - rep, suppressions, err := ctor(cfg.KernelSrc, cfg.KernelObj, ignores) + target := targets.Get(cfg.TargetOS, cfg.TargetArch) + if target == nil && typ != "gvisor" { + return nil, fmt.Errorf("unknown target %v/%v", cfg.TargetOS, cfg.TargetArch) + } + rep, suppressions, err := ctor(target, cfg.KernelSrc, cfg.KernelObj, ignores) if err != nil { return nil, err } @@ -87,7 +92,7 @@ var ctors = map[string]fn{ "windows": ctorStub, } -type fn func(string, string, []*regexp.Regexp) (Reporter, []string, error) +type fn func(*targets.Target, string, string, []*regexp.Regexp) (Reporter, []string, error) func compileRegexps(list []string) ([]*regexp.Regexp, error) { compiled := make([]*regexp.Regexp, len(list)) diff --git a/pkg/report/report_test.go b/pkg/report/report_test.go index 6b83d2104..d5e381dda 100644 --- a/pkg/report/report_test.go +++ b/pkg/report/report_test.go @@ -255,7 +255,8 @@ func forEachFile(t *testing.T, dir string, fn func(t *testing.T, reporter Report t.Fatal(err) } cfg := &mgrconfig.Config{ - TargetOS: os, + TargetOS: os, + TargetArch: "amd64", } reporter, err := NewReporter(cfg) if err != nil { diff --git a/pkg/report/stub.go b/pkg/report/stub.go index 32bcb0085..e7f581c08 100644 --- a/pkg/report/stub.go +++ b/pkg/report/stub.go @@ -5,6 +5,8 @@ package report import ( "regexp" + + "github.com/google/syzkaller/sys/targets" ) type stub struct { @@ -13,7 +15,8 @@ type stub struct { ignores []*regexp.Regexp } -func ctorStub(kernelSrc, kernelObj string, ignores []*regexp.Regexp) (Reporter, []string, error) { +func ctorStub(target *targets.Target, kernelSrc, kernelObj string, + ignores []*regexp.Regexp) (Reporter, []string, error) { ctx := &stub{ kernelSrc: kernelSrc, kernelObj: kernelObj, |
