From 4b69c3cbaccd51b7ea719e7bd756d680e825988d Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 7 Mar 2019 20:36:03 +0100 Subject: pkg/runtest: make tests pass on freebsd The problem is stupid: should be included as on freebsd. Pass actual host OS to executor build as HOSTGOOS and use it to figure out how we should include this header. --- pkg/csource/build.go | 2 ++ pkg/csource/common.go | 2 ++ pkg/csource/generated.go | 2 +- pkg/runtest/run.go | 6 ++++++ 4 files changed, 11 insertions(+), 1 deletion(-) (limited to 'pkg') diff --git a/pkg/csource/build.go b/pkg/csource/build.go index 83b69b537..35ac28e83 100644 --- a/pkg/csource/build.go +++ b/pkg/csource/build.go @@ -9,6 +9,7 @@ import ( "io/ioutil" "os" "os/exec" + "runtime" "github.com/google/syzkaller/pkg/osutil" "github.com/google/syzkaller/prog" @@ -42,6 +43,7 @@ func build(target *prog.Target, src []byte, file string) (string, error) { "-o", bin, "-DGOOS_" + target.OS + "=1", "-DGOARCH_" + target.Arch + "=1", + "-DHOSTGOOS_" + runtime.GOOS + "=1", } if file == "" { flags = append(flags, "-x", "c", "-") diff --git a/pkg/csource/common.go b/pkg/csource/common.go index 56d6a6de7..07f7c40de 100644 --- a/pkg/csource/common.go +++ b/pkg/csource/common.go @@ -8,6 +8,7 @@ package csource import ( "bytes" "fmt" + "runtime" "sort" "strings" @@ -70,6 +71,7 @@ func defineList(p, mmapProg *prog.Prog, opts Options) (defines []string) { enabled := map[string]bool{ "GOOS_" + p.Target.OS: true, "GOARCH_" + p.Target.Arch: true, + "HOSTGOOS_" + runtime.GOOS: true, "SYZ_USE_BITMASKS": bitmasks, "SYZ_USE_CHECKSUMS": csums, "SYZ_SANDBOX_NONE": opts.Sandbox == sandboxNone, diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go index fbbd671bf..207a3a793 100644 --- a/pkg/csource/generated.go +++ b/pkg/csource/generated.go @@ -9,7 +9,7 @@ var commonHeader = ` #define _GNU_SOURCE #endif -#if GOOS_freebsd +#if GOOS_freebsd || GOOS_test && HOSTGOOS_freebsd #include #else #include diff --git a/pkg/runtest/run.go b/pkg/runtest/run.go index 13195dc36..67f736657 100644 --- a/pkg/runtest/run.go +++ b/pkg/runtest/run.go @@ -18,6 +18,7 @@ import ( "os" "path/filepath" "regexp" + "runtime" "sort" "strconv" "strings" @@ -422,6 +423,11 @@ func checkResult(req *RunRequest) error { // C code does not detect when a call was blocked. continue } + if runtime.GOOS == "freebsd" && flag == ipc.CallBlocked { + // Blocking detection is flaky on freebsd. + // TODO(dvyukov): try to increase the timeout in executor to make it non-flaky. + continue + } if (inf.Flags^want.Flags)&flag != 0 { not := " not" if inf.Flags&flag != 0 { -- cgit mrf-deployment