diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2019-03-07 20:36:03 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2019-03-07 20:37:43 +0100 |
| commit | 4b69c3cbaccd51b7ea719e7bd756d680e825988d (patch) | |
| tree | f73f4504fccb75ef084a9f311fd21cc627f8f38c /pkg | |
| parent | 5fb683f0dacad8149e6702cac650c81474fbfcf7 (diff) | |
pkg/runtest: make tests pass on freebsd
The problem is stupid: <endian.h> should be included as <sys/endian.h> on freebsd.
Pass actual host OS to executor build as HOSTGOOS and use it to figure out
how we should include this header.
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/csource/build.go | 2 | ||||
| -rw-r--r-- | pkg/csource/common.go | 2 | ||||
| -rw-r--r-- | pkg/csource/generated.go | 2 | ||||
| -rw-r--r-- | pkg/runtest/run.go | 6 |
4 files changed, 11 insertions, 1 deletions
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 <sys/endian.h> #else #include <endian.h> 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 { |
