diff options
author | Tobias Bosch <tbosch@google.com> | 2019-07-18 07:34:03 -0700 |
---|---|---|
committer | Tobias Bosch <tbosch@google.com> | 2019-07-22 08:06:42 +0000 |
commit | 31dec2c8cf3e272dc0bd1523e72565d9b2d3bcfb (patch) | |
tree | a032bcc2e6aaf651b79c0a078a9fe65641877099 | |
parent | e23905c00b38f3a2858018040d73ec402e97c15f (diff) | |
download | toolchain-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-x | compiler_wrapper/build | 3 | ||||
-rw-r--r-- | compiler_wrapper/clang_flags.go | 63 | ||||
-rw-r--r-- | compiler_wrapper/clang_flags_test.go | 12 | ||||
-rw-r--r-- | compiler_wrapper/command.go | 43 | ||||
-rw-r--r-- | compiler_wrapper/compiler_wrapper.go | 24 | ||||
-rw-r--r-- | compiler_wrapper/config.go | 29 | ||||
-rw-r--r-- | compiler_wrapper/config_test.go | 19 | ||||
-rw-r--r-- | compiler_wrapper/cros_hardened_config_test.go | 126 | ||||
-rw-r--r-- | compiler_wrapper/cros_host_config_test.go | 36 | ||||
-rw-r--r-- | compiler_wrapper/oldwrapper.go | 16 | ||||
-rw-r--r-- | compiler_wrapper/print_config_flag_test.go | 2 | ||||
-rw-r--r-- | compiler_wrapper/testdata/cros_clang_host_golden.json | 1695 | ||||
-rw-r--r-- | compiler_wrapper/testdata/cros_hardened_golden.json | 62 | ||||
-rw-r--r-- | compiler_wrapper/testdata/cros_nonhardened_golden.json | 60 |
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", |