aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorAnton Lindqvist <anton@basename.se>2018-12-08 11:00:59 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-12-08 18:59:10 +0100
commit4e1aade2feeb2b9c8b40426b39296d2ae9aa0b99 (patch)
treea6297914f8b6839458511e9d593c01858cf7dda5 /pkg
parent2b3ea5d7e046d4827e367319b0c1b0717ea315b0 (diff)
pkg/report: pass the target to each OS report constructor
In order to use the already defined kernel name in sys/targets to reduce duplications.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/report/akaros.go6
-rw-r--r--pkg/report/freebsd.go5
-rw-r--r--pkg/report/fuchsia.go6
-rw-r--r--pkg/report/fuzz.go3
-rw-r--r--pkg/report/gvisor.go5
-rw-r--r--pkg/report/linux.go7
-rw-r--r--pkg/report/linux_test.go3
-rw-r--r--pkg/report/netbsd.go5
-rw-r--r--pkg/report/openbsd.go5
-rw-r--r--pkg/report/report.go9
-rw-r--r--pkg/report/report_test.go3
-rw-r--r--pkg/report/stub.go5
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,