aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Bosch <tbosch@google.com>2019-07-18 07:34:03 -0700
committerTobias Bosch <tbosch@google.com>2019-07-22 08:06:42 +0000
commit31dec2c8cf3e272dc0bd1523e72565d9b2d3bcfb (patch)
treea032bcc2e6aaf651b79c0a078a9fe65641877099
parente23905c00b38f3a2858018040d73ec402e97c15f (diff)
downloadtoolchain-utils-31dec2c8cf3e272dc0bd1523e72565d9b2d3bcfb.tar.gz
Support clang host wrapper.
This change adds support for the clang host wrapper. The implementation is verified via comparing to the old clang host wrapper in the golden tests. BUG=chromium:773875 TEST=unit test Change-Id: I48284736014ab4b66bfd7e31e88ffd23956007bb Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1708750 Tested-by: Tobias Bosch <tbosch@google.com> Reviewed-by: George Burgess <gbiv@chromium.org>
-rwxr-xr-xcompiler_wrapper/build3
-rw-r--r--compiler_wrapper/clang_flags.go63
-rw-r--r--compiler_wrapper/clang_flags_test.go12
-rw-r--r--compiler_wrapper/command.go43
-rw-r--r--compiler_wrapper/compiler_wrapper.go24
-rw-r--r--compiler_wrapper/config.go29
-rw-r--r--compiler_wrapper/config_test.go19
-rw-r--r--compiler_wrapper/cros_hardened_config_test.go126
-rw-r--r--compiler_wrapper/cros_host_config_test.go36
-rw-r--r--compiler_wrapper/oldwrapper.go16
-rw-r--r--compiler_wrapper/print_config_flag_test.go2
-rw-r--r--compiler_wrapper/testdata/cros_clang_host_golden.json1695
-rw-r--r--compiler_wrapper/testdata/cros_hardened_golden.json62
-rw-r--r--compiler_wrapper/testdata/cros_nonhardened_golden.json60
14 files changed, 2016 insertions, 174 deletions
diff --git a/compiler_wrapper/build b/compiler_wrapper/build
index 9365b738..2b051967 100755
--- a/compiler_wrapper/build
+++ b/compiler_wrapper/build
@@ -16,7 +16,8 @@ import sys
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--config", required=True,
- choices=['cros.hardened', 'cros.nonhardened'], type=str)
+ choices=['cros.hardened', 'cros.nonhardened',
+ 'cros.host'], type=str)
parser.add_argument("--use_ccache", required=True,
choices=['true', 'false'], type=str)
return parser.parse_known_args()
diff --git a/compiler_wrapper/clang_flags.go b/compiler_wrapper/clang_flags.go
index 428ad0a8..b4dbfb88 100644
--- a/compiler_wrapper/clang_flags.go
+++ b/compiler_wrapper/clang_flags.go
@@ -15,15 +15,19 @@ func processClangFlags(builder *commandBuilder) error {
clangDir := env.getenv("CLANG")
if clangDir == "" {
- clangDir = filepath.Join(builder.rootPath, "usr/bin/")
- if !filepath.IsAbs(builder.path) {
- // If sysroot_wrapper is invoked by relative path, call actual compiler in
- // relative form. This is neccesary to remove absolute path from compile
- // outputs.
- var err error
- clangDir, err = filepath.Rel(env.getwd(), clangDir)
- if err != nil {
- return wrapErrorwithSourceLocf(err, "failed to make clangDir %s relative to %s.", clangDir, env.getwd())
+ if builder.cfg.isHostWrapper {
+ clangDir = filepath.Dir(builder.absWrapperPath)
+ } else {
+ clangDir = filepath.Join(builder.rootPath, "usr/bin/")
+ if !filepath.IsAbs(builder.path) {
+ // If sysroot_wrapper is invoked by relative path, call actual compiler in
+ // relative form. This is neccesary to remove absolute path from compile
+ // outputs.
+ var err error
+ clangDir, err = filepath.Rel(env.getwd(), clangDir)
+ if err != nil {
+ return wrapErrorwithSourceLocf(err, "failed to make clangDir %s relative to %s.", clangDir, env.getwd())
+ }
}
}
} else {
@@ -61,6 +65,9 @@ func processClangFlags(builder *commandBuilder) error {
// other hand, generate 'call __mulvdi3', which is implemented in libgcc. See
// bug chromium:503229.
armUnsupported := map[string]bool{"-ftrapv": true}
+ if builder.cfg.isHostWrapper {
+ unsupported["-ftrapv"] = true
+ }
// Clang may use different options for the same or similar functionality.
gccToClang := map[string]string{
@@ -129,24 +136,26 @@ func processClangFlags(builder *commandBuilder) error {
builder.path = filepath.Join(clangDir, clangBasename)
// Specify the target for clang.
- linkerPath := getLinkerPath(env, builder.target.target+"-ld", builder.rootPath)
- relLinkerPath, err := filepath.Rel(env.getwd(), linkerPath)
- if err != nil {
- return wrapErrorwithSourceLocf(err, "failed to make linker path %s relative to %s",
- linkerPath, env.getwd())
- }
- builder.addPostUserArgs("-B" + relLinkerPath)
- if startswithI86(builder.target.arch) {
- // TODO: -target i686-pc-linux-gnu causes clang to search for
- // libclang_rt.asan-i686.a which doesn't exist because it's packaged
- // as libclang_rt.asan-i386.a. We can't use -target i386-pc-linux-gnu
- // because then it would try to run i386-pc-linux-gnu-ld which doesn't
- // exist. Consider renaming the runtime library to use i686 in its name.
- builder.addPostUserArgs("-m32")
- // clang does not support -mno-movbe. This is the alternate way to do it.
- builder.addPostUserArgs("-Xclang", "-target-feature", "-Xclang", "-movbe")
- } else {
- builder.addPostUserArgs("-target", builder.target.target)
+ if !builder.cfg.isHostWrapper {
+ linkerPath := getLinkerPath(env, builder.target.target+"-ld", builder.rootPath)
+ relLinkerPath, err := filepath.Rel(env.getwd(), linkerPath)
+ if err != nil {
+ return wrapErrorwithSourceLocf(err, "failed to make linker path %s relative to %s",
+ linkerPath, env.getwd())
+ }
+ builder.addPostUserArgs("-B" + relLinkerPath)
+ if startswithI86(builder.target.arch) {
+ // TODO: -target i686-pc-linux-gnu causes clang to search for
+ // libclang_rt.asan-i686.a which doesn't exist because it's packaged
+ // as libclang_rt.asan-i386.a. We can't use -target i386-pc-linux-gnu
+ // because then it would try to run i386-pc-linux-gnu-ld which doesn't
+ // exist. Consider renaming the runtime library to use i686 in its name.
+ builder.addPostUserArgs("-m32")
+ // clang does not support -mno-movbe. This is the alternate way to do it.
+ builder.addPostUserArgs("-Xclang", "-target-feature", "-Xclang", "-movbe")
+ } else {
+ builder.addPostUserArgs("-target", builder.target.target)
+ }
}
return nil
}
diff --git a/compiler_wrapper/clang_flags_test.go b/compiler_wrapper/clang_flags_test.go
index bc70624d..1d56b1f0 100644
--- a/compiler_wrapper/clang_flags_test.go
+++ b/compiler_wrapper/clang_flags_test.go
@@ -66,6 +66,18 @@ func TestRelativeClangPathBasedOnRootPath(t *testing.T) {
})
}
+func TestClangPathForClangHostWrapper(t *testing.T) {
+ withTestContext(t, func(ctx *testContext) {
+ ctx.cfg.isHostWrapper = true
+ ctx.cfg.rootRelPath = "somepath"
+ cmd := ctx.must(callCompiler(ctx, ctx.cfg,
+ ctx.newCommand(clangX86_64, mainCc)))
+ if err := verifyPath(cmd, filepath.Join(ctx.tempDir, "clang")); err != nil {
+ t.Error(err)
+ }
+ })
+}
+
func TestUseXclangPathAndCalcResourceDirByNestedClangCall(t *testing.T) {
withTestContext(t, func(ctx *testContext) {
ctx.cfg.rootRelPath = "somepath"
diff --git a/compiler_wrapper/command.go b/compiler_wrapper/command.go
index 9d228b0f..b20f19eb 100644
--- a/compiler_wrapper/command.go
+++ b/compiler_wrapper/command.go
@@ -64,17 +64,18 @@ func newCommandBuilder(env env, cfg *config, cmd *command) (*commandBuilder, err
default:
compilerType = gccType
}
- absWrapperDir, err := getAbsWrapperDir(env, cmd)
+ absWrapperPath, err := getAbsWrapperPath(env, cmd)
if err != nil {
return nil, err
}
- rootPath := filepath.Join(absWrapperDir, cfg.rootRelPath)
+ rootPath := filepath.Join(filepath.Dir(absWrapperPath), cfg.rootRelPath)
return &commandBuilder{
- path: cmd.Path,
- args: createBuilderArgs( /*fromUser=*/ true, cmd.Args),
- env: env,
- cfg: cfg,
- rootPath: rootPath,
+ path: cmd.Path,
+ args: createBuilderArgs( /*fromUser=*/ true, cmd.Args),
+ env: env,
+ cfg: cfg,
+ rootPath: rootPath,
+ absWrapperPath: absWrapperPath,
target: builderTarget{
target: strings.Join(nameParts[:4], "-"),
arch: nameParts[0],
@@ -88,13 +89,14 @@ func newCommandBuilder(env env, cfg *config, cmd *command) (*commandBuilder, err
}
type commandBuilder struct {
- path string
- target builderTarget
- args []builderArg
- envUpdates []string
- env env
- cfg *config
- rootPath string
+ path string
+ target builderTarget
+ args []builderArg
+ envUpdates []string
+ env env
+ cfg *config
+ rootPath string
+ absWrapperPath string
}
type builderArg struct {
@@ -129,12 +131,13 @@ func createBuilderArgs(fromUser bool, args []string) []builderArg {
func (builder *commandBuilder) clone() *commandBuilder {
return &commandBuilder{
- path: builder.path,
- args: append([]builderArg{}, builder.args...),
- env: builder.env,
- cfg: builder.cfg,
- rootPath: builder.rootPath,
- target: builder.target,
+ path: builder.path,
+ args: append([]builderArg{}, builder.args...),
+ env: builder.env,
+ cfg: builder.cfg,
+ rootPath: builder.rootPath,
+ target: builder.target,
+ absWrapperPath: builder.absWrapperPath,
}
}
diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go
index 5545dc66..b2172c6e 100644
--- a/compiler_wrapper/compiler_wrapper.go
+++ b/compiler_wrapper/compiler_wrapper.go
@@ -108,7 +108,10 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int
}
func prepareClangCommand(builder *commandBuilder) (sysroot string, err error) {
- sysroot = processSysrootFlag(builder)
+ sysroot = ""
+ if !builder.cfg.isHostWrapper {
+ sysroot = processSysrootFlag(builder)
+ }
builder.addPreUserArgs(builder.cfg.clangFlags...)
calcCommonPreUserArgs(builder)
if err := processClangFlags(builder); err != nil {
@@ -138,27 +141,32 @@ func calcGccCommand(builder *commandBuilder) *command {
func calcCommonPreUserArgs(builder *commandBuilder) {
builder.addPreUserArgs(builder.cfg.commonFlags...)
- processPieFlags(builder)
- processStackProtectorFlags(builder)
- processThumbCodeFlags(builder)
- processX86Flags(builder)
+ if !builder.cfg.isHostWrapper {
+ processPieFlags(builder)
+ processStackProtectorFlags(builder)
+ processThumbCodeFlags(builder)
+ processX86Flags(builder)
+ }
processSanitizerFlags(builder)
}
func processGomaCCacheFlags(sysroot string, allowCCache bool, builder *commandBuilder) {
- gomaccUsed := processGomaCccFlags(builder)
+ gomaccUsed := false
+ if !builder.cfg.isHostWrapper {
+ gomaccUsed = processGomaCccFlags(builder)
+ }
if !gomaccUsed && allowCCache {
processCCacheFlag(sysroot, builder)
}
}
-func getAbsWrapperDir(env env, wrapperCmd *command) (string, error) {
+func getAbsWrapperPath(env env, wrapperCmd *command) (string, error) {
wrapperPath := getAbsCmdPath(env, wrapperCmd)
evaledCmdPath, err := filepath.EvalSymlinks(wrapperPath)
if err != nil {
return "", wrapErrorwithSourceLocf(err, "failed to evaluate symlinks for %s", wrapperPath)
}
- return filepath.Dir(evaledCmdPath), nil
+ return evaledCmdPath, nil
}
func printCompilerError(writer io.Writer, compilerErr error) {
diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go
index 9dce8fe6..f94206ff 100644
--- a/compiler_wrapper/config.go
+++ b/compiler_wrapper/config.go
@@ -9,6 +9,8 @@ import (
)
type config struct {
+ // TODO: Refactor this flag into more generic configuration properties.
+ isHostWrapper bool
// Whether to use ccache.
useCCache bool
// Flags to add to gcc and clang.
@@ -57,6 +59,8 @@ func getConfig(useCCache bool, configName string) (*config, error) {
return getCrosHardenedConfig(useCCache), nil
case "cros.nonhardened":
return getCrosNonHardenedConfig(useCCache), nil
+ case "cros.host":
+ return getCrosHostConfig(), nil
default:
return nil, newErrorwithSourceLocf("unknown config name: %s", configName)
}
@@ -126,3 +130,28 @@ func getCrosNonHardenedConfig(useCCache bool) *config {
newWarningsDir: "/tmp/fatal_clang_warnings",
}
}
+
+// Flags to be added to host toolchain.
+func getCrosHostConfig() *config {
+ return &config{
+ isHostWrapper: true,
+ useCCache: false,
+ rootRelPath: "../..",
+ oldWrapperPath: "./host_wrapper.old",
+ commonFlags: []string{},
+ gccFlags: []string{},
+ // Temporarily disable tautological-*-compare chromium:778316.
+ // Temporarily add no-unknown-warning-option to deal with old clang versions.
+ clangFlags: []string{
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ },
+ newWarningsDir: "/tmp/fatal_clang_warnings",
+ }
+}
diff --git a/compiler_wrapper/config_test.go b/compiler_wrapper/config_test.go
index 6e084c74..6b2deff7 100644
--- a/compiler_wrapper/config_test.go
+++ b/compiler_wrapper/config_test.go
@@ -48,8 +48,8 @@ func TestRealConfigWithConfigNameFlag(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- if !isHardened(cfg) {
- t.Fatal("ConfigName: Expected hardened config got non hardened")
+ if !isSysrootHardened(cfg) || cfg.isHostWrapper {
+ t.Fatalf("ConfigName: Expected sysroot hardened config. Got: %#v", cfg)
}
ConfigName = "cros.nonhardened"
@@ -57,8 +57,17 @@ func TestRealConfigWithConfigNameFlag(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- if isHardened(cfg) {
- t.Fatal("ConfigName: Expected non hardened config got hardened")
+ if isSysrootHardened(cfg) || cfg.isHostWrapper {
+ t.Fatalf("ConfigName: Expected sysroot non hardened config. Got: %#v", cfg)
+ }
+
+ ConfigName = "cros.host"
+ cfg, err = getRealConfig()
+ if err != nil {
+ t.Fatal(err)
+ }
+ if !cfg.isHostWrapper {
+ t.Fatalf("ConfigName: Expected clang host config. Got: %#v", cfg)
}
ConfigName = "invalid"
@@ -68,7 +77,7 @@ func TestRealConfigWithConfigNameFlag(t *testing.T) {
}
}
-func isHardened(cfg *config) bool {
+func isSysrootHardened(cfg *config) bool {
for _, arg := range cfg.commonFlags {
if arg == "-pie" {
return true
diff --git a/compiler_wrapper/cros_hardened_config_test.go b/compiler_wrapper/cros_hardened_config_test.go
index 7802449b..0a0a4022 100644
--- a/compiler_wrapper/cros_hardened_config_test.go
+++ b/compiler_wrapper/cros_hardened_config_test.go
@@ -68,63 +68,15 @@ func createSyswrapperGoldenInputs(ctx *testContext) []goldenRecordSection {
createGccPathGoldenInputs(gomaEnv),
createGoldenInputsForAllTargets("gcc", mainCc),
createSysrootWrapperCommonGoldenInputs("gcc", gomaEnv),
- {
- Name: "gcc specific args",
- Records: []goldenRecord{
- {
- WrapperCmd: newGoldenCmd(gccX86_64, "-march=goldmont", mainCc),
- Cmds: okResults,
- },
- {
- WrapperCmd: newGoldenCmd(gccX86_64, "-march=goldmont-plus", mainCc),
- Cmds: okResults,
- },
- {
- WrapperCmd: newGoldenCmd(gccX86_64, "-march=skylake", mainCc),
- Cmds: okResults,
- },
- },
- },
+ createSanitizerGoldenInputs("gcc"),
+ createGccArgsGoldenInputs(),
createClangSyntaxGoldenInputs(gomaEnv),
createClangPathGoldenInputs(gomaEnv),
createGoldenInputsForAllTargets("clang", mainCc),
createGoldenInputsForAllTargets("clang", "-ftrapv", mainCc),
createSysrootWrapperCommonGoldenInputs("clang", gomaEnv),
- {
- Name: "clang specific args",
- Records: []goldenRecord{
- {
- WrapperCmd: newGoldenCmd(clangX86_64, "-mno-movbe", "-pass-exit-codes", "-Wclobbered", "-Wno-psabi", "-Wlogical-op",
- "-Wmissing-parameter-type", "-Wold-style-declaration", "-Woverride-init", "-Wunsafe-loop-optimizations",
- "-Wstrict-aliasing=abc", "-finline-limit=abc", mainCc),
- Cmds: okResults,
- },
- {
- WrapperCmd: newGoldenCmd(clangX86_64, "-Wno-error=cpp", mainCc),
- Cmds: okResults,
- },
- {
- WrapperCmd: newGoldenCmd(clangX86_64, "-Wno-error=maybe-uninitialized", mainCc),
- Cmds: okResults,
- },
- {
- WrapperCmd: newGoldenCmd(clangX86_64, "-Wno-error=unused-but-set-variable", mainCc),
- Cmds: okResults,
- },
- {
- WrapperCmd: newGoldenCmd(clangX86_64, "-Wno-unused-but-set-variable", mainCc),
- Cmds: okResults,
- },
- {
- WrapperCmd: newGoldenCmd(clangX86_64, "-Wunused-but-set-variable", mainCc),
- Cmds: okResults,
- },
- {
- WrapperCmd: newGoldenCmd(clangX86_64, "-Xclang-only=-someflag", mainCc),
- Cmds: okResults,
- },
- },
- },
+ createSanitizerGoldenInputs("clang"),
+ createClangArgsGoldenInputs(),
createBisectGoldenInputs(),
createForceDisableWErrorGoldenInputs(),
createClangTidyGoldenInputs(gomaEnv),
@@ -412,6 +364,20 @@ func createSysrootWrapperCommonGoldenInputs(compiler string, gomaEnv string) gol
Cmds: okResults,
},
{
+ WrapperCmd: newGoldenCmd(wrapperPath, "--sysroot=xyz", mainCc),
+ Cmds: okResults,
+ },
+ },
+ }
+}
+
+func createSanitizerGoldenInputs(compiler string) goldenRecordSection {
+ // We are using a fixed target as all of the following args are target independent.
+ wrapperPath := "./x86_64-cros-linux-gnu-" + compiler
+ return goldenRecordSection{
+ Name: compiler + " sanitizer args",
+ Records: []goldenRecord{
+ {
WrapperCmd: newGoldenCmd(wrapperPath, "-fsanitize=kernel-address", "-Wl,--no-undefined", mainCc),
Cmds: okResults,
},
@@ -431,8 +397,62 @@ func createSysrootWrapperCommonGoldenInputs(compiler string, gomaEnv string) gol
WrapperCmd: newGoldenCmd(wrapperPath, "-fsanitize=fuzzer", mainCc),
Cmds: okResults,
},
+ },
+ }
+}
+
+func createGccArgsGoldenInputs() goldenRecordSection {
+ return goldenRecordSection{
+ Name: "gcc specific args",
+ Records: []goldenRecord{
{
- WrapperCmd: newGoldenCmd(wrapperPath, "--sysroot=xyz", mainCc),
+ WrapperCmd: newGoldenCmd(gccX86_64, "-march=goldmont", mainCc),
+ Cmds: okResults,
+ },
+ {
+ WrapperCmd: newGoldenCmd(gccX86_64, "-march=goldmont-plus", mainCc),
+ Cmds: okResults,
+ },
+ {
+ WrapperCmd: newGoldenCmd(gccX86_64, "-march=skylake", mainCc),
+ Cmds: okResults,
+ },
+ },
+ }
+}
+
+func createClangArgsGoldenInputs() goldenRecordSection {
+ return goldenRecordSection{
+ Name: "clang specific args",
+ Records: []goldenRecord{
+ {
+ WrapperCmd: newGoldenCmd(clangX86_64, "-mno-movbe", "-pass-exit-codes", "-Wclobbered", "-Wno-psabi", "-Wlogical-op",
+ "-Wmissing-parameter-type", "-Wold-style-declaration", "-Woverride-init", "-Wunsafe-loop-optimizations",
+ "-Wstrict-aliasing=abc", "-finline-limit=abc", mainCc),
+ Cmds: okResults,
+ },
+ {
+ WrapperCmd: newGoldenCmd(clangX86_64, "-Wno-error=cpp", mainCc),
+ Cmds: okResults,
+ },
+ {
+ WrapperCmd: newGoldenCmd(clangX86_64, "-Wno-error=maybe-uninitialized", mainCc),
+ Cmds: okResults,
+ },
+ {
+ WrapperCmd: newGoldenCmd(clangX86_64, "-Wno-error=unused-but-set-variable", mainCc),
+ Cmds: okResults,
+ },
+ {
+ WrapperCmd: newGoldenCmd(clangX86_64, "-Wno-unused-but-set-variable", mainCc),
+ Cmds: okResults,
+ },
+ {
+ WrapperCmd: newGoldenCmd(clangX86_64, "-Wunused-but-set-variable", mainCc),
+ Cmds: okResults,
+ },
+ {
+ WrapperCmd: newGoldenCmd(clangX86_64, "-Xclang-only=-someflag", mainCc),
Cmds: okResults,
},
},
diff --git a/compiler_wrapper/cros_host_config_test.go b/compiler_wrapper/cros_host_config_test.go
new file mode 100644
index 00000000..afc5b5ce
--- /dev/null
+++ b/compiler_wrapper/cros_host_config_test.go
@@ -0,0 +1,36 @@
+// Copyright 2019 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package main
+
+import (
+ "path"
+ "testing"
+)
+
+const oldClangHostWrapperPathForTest = "/usr/bin/clang_host_wrapper"
+const crosClangHostGoldenFile = "testdata/cros_clang_host_golden.json"
+
+func TestCrosClangHostConfig(t *testing.T) {
+ withTestContext(t, func(ctx *testContext) {
+ ctx.updateConfig(oldClangHostWrapperPathForTest, getCrosHostConfig())
+
+ gomaPath := path.Join(ctx.tempDir, "gomacc")
+ ctx.writeFile(gomaPath, "")
+ gomaEnv := "GOMACC_PATH=" + gomaPath
+
+ goldenSections := []goldenRecordSection{
+ createClangPathGoldenInputs(gomaEnv),
+ createGoldenInputsForAllTargets("clang", mainCc),
+ createGoldenInputsForAllTargets("clang", "-ftrapv", mainCc),
+ createSanitizerGoldenInputs("clang"),
+ createClangArgsGoldenInputs(),
+ createBisectGoldenInputs(),
+ createForceDisableWErrorGoldenInputs(),
+ createClangTidyGoldenInputs(gomaEnv),
+ }
+
+ runGoldenRecords(ctx, crosClangHostGoldenFile, goldenSections)
+ })
+}
diff --git a/compiler_wrapper/oldwrapper.go b/compiler_wrapper/oldwrapper.go
index 006bc666..163d8f56 100644
--- a/compiler_wrapper/oldwrapper.go
+++ b/compiler_wrapper/oldwrapper.go
@@ -172,13 +172,13 @@ type oldWrapperCmdResult struct {
}
func newOldWrapperConfig(env env, cfg *config, inputCmd *command) (*oldWrapperConfig, error) {
+ absWrapperPath, err := getAbsWrapperPath(env, inputCmd)
+ if err != nil {
+ return nil, err
+ }
absOldWrapperPath := cfg.oldWrapperPath
if !filepath.IsAbs(absOldWrapperPath) {
- absWrapperDir, err := getAbsWrapperDir(env, inputCmd)
- if err != nil {
- return nil, err
- }
- absOldWrapperPath = filepath.Join(absWrapperDir, cfg.oldWrapperPath)
+ absOldWrapperPath = filepath.Join(filepath.Dir(absWrapperPath), cfg.oldWrapperPath)
}
oldWrapperContentBytes, err := ioutil.ReadFile(absOldWrapperPath)
if err != nil {
@@ -186,10 +186,10 @@ func newOldWrapperConfig(env env, cfg *config, inputCmd *command) (*oldWrapperCo
}
oldWrapperContent := string(oldWrapperContentBytes)
oldWrapperContent = strings.ReplaceAll(oldWrapperContent, "from __future__ import print_function", "")
- // Disable the original call to main()
- oldWrapperContent = strings.ReplaceAll(oldWrapperContent, "__name__", "'none'")
// Replace sets with lists to make our comparisons deterministic
oldWrapperContent = strings.ReplaceAll(oldWrapperContent, "set(", "ListSet(")
+ oldWrapperContent = strings.ReplaceAll(oldWrapperContent, "if __name__ == '__main__':", "def runMain():")
+ oldWrapperContent = strings.ReplaceAll(oldWrapperContent, "__file__", "'"+absWrapperPath+"'")
return &oldWrapperConfig{
CmdPath: inputCmd.Path,
OldWrapperContent: oldWrapperContent,
@@ -296,7 +296,7 @@ os.execv = execv_mock
sys.argv[0] = '{{.CmdPath}}'
-sys.exit(main())
+runMain()
`
tmpl, err := template.New("mock").Parse(mockTemplate)
if err != nil {
diff --git a/compiler_wrapper/print_config_flag_test.go b/compiler_wrapper/print_config_flag_test.go
index bc91c103..1b1528e8 100644
--- a/compiler_wrapper/print_config_flag_test.go
+++ b/compiler_wrapper/print_config_flag_test.go
@@ -21,7 +21,7 @@ func TestRemovePrintConfigArg(t *testing.T) {
func TestPrintConfig(t *testing.T) {
withPrintConfigTestContext(t, func(ctx *testContext) {
ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, "-print-config", mainCc)))
- if !strings.Contains(ctx.stderrString(), "wrapper config: main.config{useCCache:false") {
+ if !strings.Contains(ctx.stderrString(), "wrapper config: main.config{") {
t.Errorf("config not printed to stderr. Got: %s", ctx.stderrString())
}
})
diff --git a/compiler_wrapper/testdata/cros_clang_host_golden.json b/compiler_wrapper/testdata/cros_clang_host_golden.json
new file mode 100644
index 00000000..0bb9332c
--- /dev/null
+++ b/compiler_wrapper/testdata/cros_clang_host_golden.json
@@ -0,0 +1,1695 @@
+[
+ {
+ "name": "clang path",
+ "records": [
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang++",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang++",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "CLANG=somepath/clang"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "somepath/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Xclang-path=/somedir",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "--print-resource-dir"
+ ]
+ },
+ "stdout": "someResourceDir"
+ },
+ {
+ "cmd": {
+ "path": "/somedir/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-resource-dir=someResourceDir",
+ "--gcc-toolchain=/usr",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "GOMACC_PATH=/tmp/stable/gomacc"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Xclang-path=/somedir",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "--print-resource-dir"
+ ]
+ },
+ "stdout": "someResourceDir"
+ },
+ {
+ "cmd": {
+ "path": "/somedir/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-resource-dir=someResourceDir",
+ "--gcc-toolchain=/usr",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Xclang-path=/somedir",
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "--print-resource-dir"
+ ]
+ },
+ "stdout": "someResourceDir"
+ },
+ {
+ "cmd": {
+ "path": "/somedir/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-resource-dir=someResourceDir",
+ "--gcc-toolchain=/usr",
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "clang [main.cc] target specific",
+ "records": [
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-eabi-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-win-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv7m-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv7m-cros-linux-eabi-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv7m-cros-win-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv8m-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv8m-cros-linux-eabi-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv8m-cros-win-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "clang [-ftrapv main.cc] target specific",
+ "records": [
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-eabi-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-win-gnu-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv7m-cros-linux-gnu-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv7m-cros-linux-eabi-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv7m-cros-win-gnu-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv8m-cros-linux-gnu-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv8m-cros-linux-eabi-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./armv8m-cros-win-gnu-clang",
+ "args": [
+ "-ftrapv",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "clang sanitizer args",
+ "records": [
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-fsanitize=kernel-address",
+ "-Wl,--no-undefined",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-fsanitize=kernel-address",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-fsanitize=kernel-address",
+ "-Wl,-z,defs",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-fsanitize=kernel-address",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-fsanitize=kernel-address",
+ "-D_FORTIFY_SOURCE=1",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-fsanitize=kernel-address",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-fsanitize=kernel-address",
+ "-D_FORTIFY_SOURCE=2",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-fsanitize=kernel-address",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-fsanitize=fuzzer",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-fno-experimental-new-pass-manager",
+ "-fsanitize=fuzzer",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "clang specific args",
+ "records": [
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-mno-movbe",
+ "-pass-exit-codes",
+ "-Wclobbered",
+ "-Wno-psabi",
+ "-Wlogical-op",
+ "-Wmissing-parameter-type",
+ "-Wold-style-declaration",
+ "-Woverride-init",
+ "-Wunsafe-loop-optimizations",
+ "-Wstrict-aliasing=abc",
+ "-finline-limit=abc",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Wno-error=cpp",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-Wno-#warnings",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Wno-error=maybe-uninitialized",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-Wno-error=uninitialized",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Wno-error=unused-but-set-variable",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-Wno-error=unused-variable",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Wno-unused-but-set-variable",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-Wno-unused-variable",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Wunused-but-set-variable",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-Wunused-variable",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "-Xclang-only=-someflag",
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "-someflag",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "bisect",
+ "records": [
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "BISECT_STAGE=someBisectStage",
+ "BISECT_DIR=someBisectDir"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/usr/bin/python2",
+ "args": [
+ "-c",
+ "import bisect_driver; sys.exit(bisect_driver.bisect_driver(sys.argv[1], sys.argv[2], sys.argv[3:]))",
+ "someBisectStage",
+ "someBisectDir",
+ "/tmp/stable/clang",
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "BISECT_STAGE=someBisectStage",
+ "BISECT_DIR=someBisectDir"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/usr/bin/python2",
+ "args": [
+ "-c",
+ "import bisect_driver; sys.exit(bisect_driver.bisect_driver(sys.argv[1], sys.argv[2], sys.argv[3:]))",
+ "someBisectStage",
+ "someBisectDir",
+ "/tmp/stable/clang",
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "force disable werror",
+ "records": [
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "FORCE_DISABLE_WERROR=1"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "FORCE_DISABLE_WERROR=1"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ },
+ "stderr": "-Werror originalerror",
+ "exitcode": 1
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc",
+ "-Wno-error"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "FORCE_DISABLE_WERROR=1"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ },
+ "stderr": "-Werror originalerror",
+ "exitcode": 1
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ },
+ "stderr": "-Werror originalerror",
+ "exitcode": 1
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc",
+ "-Wno-error"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "clang-tidy",
+ "records": [
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "WITH_TIDY=1"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "--print-resource-dir"
+ ]
+ },
+ "stdout": "someResourceDir"
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang-tidy",
+ "args": [
+ "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*",
+ "main.cc",
+ "--",
+ "-resource-dir=someResourceDir",
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "WITH_TIDY=1",
+ "GOMACC_PATH=/tmp/stable/gomacc"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ }
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "--print-resource-dir"
+ ]
+ },
+ "stdout": "someResourceDir"
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang-tidy",
+ "args": [
+ "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*",
+ "main.cc",
+ "--",
+ "-resource-dir=someResourceDir",
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "WITH_TIDY=1",
+ "GOMACC_PATH=/tmp/stable/gomacc"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerrorclang-tidy failed"
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "--print-resource-dir"
+ ]
+ },
+ "stdout": "someResourceDir"
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang-tidy",
+ "args": [
+ "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*",
+ "main.cc",
+ "--",
+ "-resource-dir=someResourceDir",
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "wd": "/tmp/stable",
+ "env": [
+ "WITH_TIDY=1",
+ "GOMACC_PATH=/tmp/stable/gomacc"
+ ],
+ "wrapper": {
+ "cmd": {
+ "path": "./x86_64-cros-linux-gnu-clang",
+ "args": [
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ },
+ "cmds": [
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "--print-resource-dir"
+ ]
+ },
+ "stdout": "someResourceDir"
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang-tidy",
+ "args": [
+ "-checks=*,google*,-bugprone-narrowing-conversions,-cppcoreguidelines-*,-fuchsia-*,-google-build-using-namespace,-google-default-arguments,-google-explicit-constructor,-google-readability*,-google-runtime-int,-google-runtime-references,-hicpp-avoid-c-arrays,-hicpp-braces-around-statements,-hicpp-no-array-decay,-hicpp-signed-bitwise,-hicpp-uppercase-literal-suffix,-hicpp-use-auto,-llvm-namespace-comment,-misc-non-private-member-variables-in-classes,-misc-unused-parameters,-modernize-*,-readability-*",
+ "main.cc",
+ "--",
+ "-resource-dir=someResourceDir",
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ }
+ },
+ {
+ "cmd": {
+ "path": "/tmp/stable/clang",
+ "args": [
+ "-Qunused-arguments",
+ "-grecord-gcc-switches",
+ "-fno-addrsig",
+ "-Wno-unused-local-typedefs",
+ "-Wno-deprecated-declarations",
+ "-Wno-tautological-constant-compare",
+ "-Wno-tautological-unsigned-enum-zero-compare",
+ "-Wno-unknown-warning-option",
+ "main.cc"
+ ]
+ },
+ "stdout": "somemessage",
+ "stderr": "someerror",
+ "exitcode": 1
+ }
+ ]
+ }
+ ]
+ }
+]
diff --git a/compiler_wrapper/testdata/cros_hardened_golden.json b/compiler_wrapper/testdata/cros_hardened_golden.json
index e80cd882..1b318f7b 100644
--- a/compiler_wrapper/testdata/cros_hardened_golden.json
+++ b/compiler_wrapper/testdata/cros_hardened_golden.json
@@ -605,8 +605,7 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
- "-fsanitize=kernel-address",
- "-Wl,--no-undefined",
+ "--sysroot=xyz",
"main.cc"
]
}
@@ -617,7 +616,6 @@
"path": "/usr/bin/ccache",
"args": [
"./x86_64-cros-linux-gnu-gcc.real",
- "--sysroot=/usr/x86_64-cros-linux-gnu",
"-fno-reorder-blocks-and-partition",
"-Wno-unused-local-typedefs",
"-Wno-maybe-uninitialized",
@@ -626,7 +624,7 @@
"-pie",
"-D_FORTIFY_SOURCE=2",
"-fno-omit-frame-pointer",
- "-fsanitize=kernel-address",
+ "--sysroot=xyz",
"main.cc",
"-mno-movbe"
],
@@ -638,7 +636,12 @@
}
}
]
- },
+ }
+ ]
+ },
+ {
+ "name": "gcc sanitizer args",
+ "records": [
{
"wd": "/tmp/stable",
"wrapper": {
@@ -646,7 +649,7 @@
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
"-fsanitize=kernel-address",
- "-Wl,-z,defs",
+ "-Wl,--no-undefined",
"main.cc"
]
}
@@ -686,7 +689,7 @@
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
"-fsanitize=kernel-address",
- "-D_FORTIFY_SOURCE=1",
+ "-Wl,-z,defs",
"main.cc"
]
}
@@ -726,7 +729,7 @@
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
"-fsanitize=kernel-address",
- "-D_FORTIFY_SOURCE=2",
+ "-D_FORTIFY_SOURCE=1",
"main.cc"
]
}
@@ -765,7 +768,8 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
- "-fsanitize=fuzzer",
+ "-fsanitize=kernel-address",
+ "-D_FORTIFY_SOURCE=2",
"main.cc"
]
}
@@ -785,7 +789,7 @@
"-pie",
"-D_FORTIFY_SOURCE=2",
"-fno-omit-frame-pointer",
- "-fsanitize=fuzzer",
+ "-fsanitize=kernel-address",
"main.cc",
"-mno-movbe"
],
@@ -804,7 +808,7 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
- "--sysroot=xyz",
+ "-fsanitize=fuzzer",
"main.cc"
]
}
@@ -815,6 +819,7 @@
"path": "/usr/bin/ccache",
"args": [
"./x86_64-cros-linux-gnu-gcc.real",
+ "--sysroot=/usr/x86_64-cros-linux-gnu",
"-fno-reorder-blocks-and-partition",
"-Wno-unused-local-typedefs",
"-Wno-maybe-uninitialized",
@@ -823,7 +828,7 @@
"-pie",
"-D_FORTIFY_SOURCE=2",
"-fno-omit-frame-pointer",
- "--sysroot=xyz",
+ "-fsanitize=fuzzer",
"main.cc",
"-mno-movbe"
],
@@ -2638,8 +2643,7 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
- "-fsanitize=kernel-address",
- "-Wl,--no-undefined",
+ "--sysroot=xyz",
"main.cc"
]
}
@@ -2650,7 +2654,6 @@
"path": "/usr/bin/ccache",
"args": [
"../../usr/bin/clang",
- "--sysroot=/usr/x86_64-cros-linux-gnu",
"-Qunused-arguments",
"-grecord-gcc-switches",
"-fno-addrsig",
@@ -2662,8 +2665,9 @@
"-fstack-protector-strong",
"-fPIE",
"-pie",
+ "-D_FORTIFY_SOURCE=2",
"-fno-omit-frame-pointer",
- "-fsanitize=kernel-address",
+ "--sysroot=xyz",
"main.cc",
"-B../../bin",
"-target",
@@ -2678,7 +2682,12 @@
}
}
]
- },
+ }
+ ]
+ },
+ {
+ "name": "clang sanitizer args",
+ "records": [
{
"wd": "/tmp/stable",
"wrapper": {
@@ -2686,7 +2695,7 @@
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
"-fsanitize=kernel-address",
- "-Wl,-z,defs",
+ "-Wl,--no-undefined",
"main.cc"
]
}
@@ -2733,7 +2742,7 @@
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
"-fsanitize=kernel-address",
- "-D_FORTIFY_SOURCE=1",
+ "-Wl,-z,defs",
"main.cc"
]
}
@@ -2780,7 +2789,7 @@
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
"-fsanitize=kernel-address",
- "-D_FORTIFY_SOURCE=2",
+ "-D_FORTIFY_SOURCE=1",
"main.cc"
]
}
@@ -2826,7 +2835,8 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
- "-fsanitize=fuzzer",
+ "-fsanitize=kernel-address",
+ "-D_FORTIFY_SOURCE=2",
"main.cc"
]
}
@@ -2850,8 +2860,7 @@
"-fPIE",
"-pie",
"-fno-omit-frame-pointer",
- "-fno-experimental-new-pass-manager",
- "-fsanitize=fuzzer",
+ "-fsanitize=kernel-address",
"main.cc",
"-B../../bin",
"-target",
@@ -2873,7 +2882,7 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
- "--sysroot=xyz",
+ "-fsanitize=fuzzer",
"main.cc"
]
}
@@ -2884,6 +2893,7 @@
"path": "/usr/bin/ccache",
"args": [
"../../usr/bin/clang",
+ "--sysroot=/usr/x86_64-cros-linux-gnu",
"-Qunused-arguments",
"-grecord-gcc-switches",
"-fno-addrsig",
@@ -2895,9 +2905,9 @@
"-fstack-protector-strong",
"-fPIE",
"-pie",
- "-D_FORTIFY_SOURCE=2",
"-fno-omit-frame-pointer",
- "--sysroot=xyz",
+ "-fno-experimental-new-pass-manager",
+ "-fsanitize=fuzzer",
"main.cc",
"-B../../bin",
"-target",
diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden.json b/compiler_wrapper/testdata/cros_nonhardened_golden.json
index 05cacadb..059ce2c4 100644
--- a/compiler_wrapper/testdata/cros_nonhardened_golden.json
+++ b/compiler_wrapper/testdata/cros_nonhardened_golden.json
@@ -550,8 +550,7 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
- "-fsanitize=kernel-address",
- "-Wl,--no-undefined",
+ "--sysroot=xyz",
"main.cc"
]
}
@@ -562,12 +561,11 @@
"path": "/usr/bin/ccache",
"args": [
"./x86_64-cros-linux-gnu-gcc.real",
- "--sysroot=/usr/x86_64-cros-linux-gnu",
"-Wno-maybe-uninitialized",
"-Wno-unused-local-typedefs",
"-Wno-deprecated-declarations",
"-Wtrampolines",
- "-fsanitize=kernel-address",
+ "--sysroot=xyz",
"main.cc",
"-mno-movbe"
],
@@ -579,7 +577,12 @@
}
}
]
- },
+ }
+ ]
+ },
+ {
+ "name": "gcc sanitizer args",
+ "records": [
{
"wd": "/tmp/stable",
"wrapper": {
@@ -587,7 +590,7 @@
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
"-fsanitize=kernel-address",
- "-Wl,-z,defs",
+ "-Wl,--no-undefined",
"main.cc"
]
}
@@ -623,7 +626,7 @@
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
"-fsanitize=kernel-address",
- "-D_FORTIFY_SOURCE=1",
+ "-Wl,-z,defs",
"main.cc"
]
}
@@ -659,7 +662,7 @@
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
"-fsanitize=kernel-address",
- "-D_FORTIFY_SOURCE=2",
+ "-D_FORTIFY_SOURCE=1",
"main.cc"
]
}
@@ -694,7 +697,8 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
- "-fsanitize=fuzzer",
+ "-fsanitize=kernel-address",
+ "-D_FORTIFY_SOURCE=2",
"main.cc"
]
}
@@ -710,7 +714,7 @@
"-Wno-unused-local-typedefs",
"-Wno-deprecated-declarations",
"-Wtrampolines",
- "-fsanitize=fuzzer",
+ "-fsanitize=kernel-address",
"main.cc",
"-mno-movbe"
],
@@ -729,7 +733,7 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-gcc",
"args": [
- "--sysroot=xyz",
+ "-fsanitize=fuzzer",
"main.cc"
]
}
@@ -740,11 +744,12 @@
"path": "/usr/bin/ccache",
"args": [
"./x86_64-cros-linux-gnu-gcc.real",
+ "--sysroot=/usr/x86_64-cros-linux-gnu",
"-Wno-maybe-uninitialized",
"-Wno-unused-local-typedefs",
"-Wno-deprecated-declarations",
"-Wtrampolines",
- "--sysroot=xyz",
+ "-fsanitize=fuzzer",
"main.cc",
"-mno-movbe"
],
@@ -2313,8 +2318,7 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
- "-fsanitize=kernel-address",
- "-Wl,--no-undefined",
+ "--sysroot=xyz",
"main.cc"
]
}
@@ -2325,14 +2329,13 @@
"path": "/usr/bin/ccache",
"args": [
"../../usr/bin/clang",
- "--sysroot=/usr/x86_64-cros-linux-gnu",
"-Qunused-arguments",
"-Wno-tautological-constant-compare",
"-Wno-tautological-unsigned-enum-zero-compare",
"-Wno-unknown-warning-option",
"-Wno-section",
"-static-libgcc",
- "-fsanitize=kernel-address",
+ "--sysroot=xyz",
"main.cc",
"-B../../bin",
"-target",
@@ -2347,7 +2350,12 @@
}
}
]
- },
+ }
+ ]
+ },
+ {
+ "name": "clang sanitizer args",
+ "records": [
{
"wd": "/tmp/stable",
"wrapper": {
@@ -2355,7 +2363,7 @@
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
"-fsanitize=kernel-address",
- "-Wl,-z,defs",
+ "-Wl,--no-undefined",
"main.cc"
]
}
@@ -2396,7 +2404,7 @@
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
"-fsanitize=kernel-address",
- "-D_FORTIFY_SOURCE=1",
+ "-Wl,-z,defs",
"main.cc"
]
}
@@ -2437,7 +2445,7 @@
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
"-fsanitize=kernel-address",
- "-D_FORTIFY_SOURCE=2",
+ "-D_FORTIFY_SOURCE=1",
"main.cc"
]
}
@@ -2477,7 +2485,8 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
- "-fsanitize=fuzzer",
+ "-fsanitize=kernel-address",
+ "-D_FORTIFY_SOURCE=2",
"main.cc"
]
}
@@ -2495,8 +2504,7 @@
"-Wno-unknown-warning-option",
"-Wno-section",
"-static-libgcc",
- "-fno-experimental-new-pass-manager",
- "-fsanitize=fuzzer",
+ "-fsanitize=kernel-address",
"main.cc",
"-B../../bin",
"-target",
@@ -2518,7 +2526,7 @@
"cmd": {
"path": "./x86_64-cros-linux-gnu-clang",
"args": [
- "--sysroot=xyz",
+ "-fsanitize=fuzzer",
"main.cc"
]
}
@@ -2529,13 +2537,15 @@
"path": "/usr/bin/ccache",
"args": [
"../../usr/bin/clang",
+ "--sysroot=/usr/x86_64-cros-linux-gnu",
"-Qunused-arguments",
"-Wno-tautological-constant-compare",
"-Wno-tautological-unsigned-enum-zero-compare",
"-Wno-unknown-warning-option",
"-Wno-section",
"-static-libgcc",
- "--sysroot=xyz",
+ "-fno-experimental-new-pass-manager",
+ "-fsanitize=fuzzer",
"main.cc",
"-B../../bin",
"-target",