From 1508cc9c44358f1eaf1a53988c6f7c8b6c0dd7ee Mon Sep 17 00:00:00 2001 From: Anton Lindqvist Date: Sat, 17 Nov 2018 19:32:19 +0100 Subject: pkg/csource: add support for creating reproducers on OpenBSD --- docs/openbsd/setup.md | 6 ++++++ pkg/csource/common.go | 3 ++- sys/targets/targets.go | 9 +++++++++ tools/create-openbsd-gce-ci.sh | 2 +- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/docs/openbsd/setup.md b/docs/openbsd/setup.md index ccc150136..da27a235e 100644 --- a/docs/openbsd/setup.md +++ b/docs/openbsd/setup.md @@ -22,6 +22,12 @@ Variables used throughout the instructions: # pkg_add git gmake go ``` + In order for reproducers to work, GCC from ports is also required: + + ```sh + # pkg_add gcc + ``` + 2. Clone repository: ```sh diff --git a/pkg/csource/common.go b/pkg/csource/common.go index 80ce02ef6..9de387952 100644 --- a/pkg/csource/common.go +++ b/pkg/csource/common.go @@ -27,7 +27,8 @@ const ( func createCommonHeader(p, mmapProg *prog.Prog, replacements map[string]string, opts Options) ([]byte, error) { defines := defineList(p, mmapProg, opts) - cmd := osutil.Command("cpp", "-nostdinc", "-undef", "-fdirectives-only", "-dDI", "-E", "-P", "-") + sysTarget := targets.Get(p.Target.OS, p.Target.Arch) + cmd := osutil.Command(sysTarget.CPP, "-nostdinc", "-undef", "-fdirectives-only", "-dDI", "-E", "-P", "-") for _, def := range defines { cmd.Args = append(cmd.Args, "-D"+def) } diff --git a/sys/targets/targets.go b/sys/targets/targets.go index ad47579ed..9d5af07f4 100644 --- a/sys/targets/targets.go +++ b/sys/targets/targets.go @@ -45,6 +45,8 @@ type osCommon struct { ExeExtension string // Name of the kernel object file. KernelObject string + // Name of cpp(1) executable. + CPP string } func Get(OS, arch string) *Target { @@ -259,6 +261,7 @@ var oses = map[string]osCommon{ ExecutorUsesShmem: true, ExecutorUsesForkServer: true, KernelObject: "vmlinux", + CPP: "cpp", }, "freebsd": { SyscallNumbers: true, @@ -266,6 +269,7 @@ var oses = map[string]osCommon{ ExecutorUsesShmem: true, ExecutorUsesForkServer: true, KernelObject: "vmlinux", + CPP: "cpp", }, "netbsd": { SyscallNumbers: true, @@ -273,6 +277,7 @@ var oses = map[string]osCommon{ ExecutorUsesShmem: true, ExecutorUsesForkServer: true, KernelObject: "vmlinux", + CPP: "cpp", }, "openbsd": { SyscallNumbers: true, @@ -280,12 +285,14 @@ var oses = map[string]osCommon{ ExecutorUsesShmem: true, ExecutorUsesForkServer: true, KernelObject: "bsd.gdb", + CPP: "ecpp", }, "fuchsia": { SyscallNumbers: false, ExecutorUsesShmem: false, ExecutorUsesForkServer: false, KernelObject: "zircon.elf", + CPP: "cpp", }, "windows": { SyscallNumbers: false, @@ -293,6 +300,7 @@ var oses = map[string]osCommon{ ExecutorUsesForkServer: false, ExeExtension: ".exe", KernelObject: "vmlinux", + CPP: "cpp", }, "akaros": { SyscallNumbers: true, @@ -300,6 +308,7 @@ var oses = map[string]osCommon{ ExecutorUsesShmem: false, ExecutorUsesForkServer: true, KernelObject: "akaros-kernel-64b", + CPP: "cpp", }, "trusty": { SyscallNumbers: true, diff --git a/tools/create-openbsd-gce-ci.sh b/tools/create-openbsd-gce-ci.sh index e6ff0a92f..f5903f166 100755 --- a/tools/create-openbsd-gce-ci.sh +++ b/tools/create-openbsd-gce-ci.sh @@ -30,7 +30,7 @@ rm -fr etc && mkdir -p etc cat >install.site <