From 83785c35e6d23abd24d30cc5eab36b0561b8eb5b Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 18 Jun 2020 18:10:27 -0700 Subject: wrapper: fork() before exec()ing This CL is a wild guess that tries to work around what appears to be an incredibly rare Go runtime bug (https://github.com/golang/go/issues/24484). As mentioned on the chromium bug, apparently execve is taking a while... somehow, and `pthread_create` fails with `EAGAIN` concurrently. So the intent here is to `fork()` + `exec()`. `fork()` will a) dispose of the thread that's trying to `pthread_create` b) isolate the `exec` in its own process, so the parent's runtime can spin up as many threads as it likes in peace. This slows down an 'ideal' kernel build (aka a build where ccache is a 100% hit rate, so the compiler wrapper's overheads are very pronounced) by ~4% in my measurements. BUG=chromium:1095528 TEST=sdk tryjob; CQ Change-Id: I73e1b238738b74c85def4709c09610f586fb04e5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2252552 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/libc_exec.go | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/compiler_wrapper/libc_exec.go b/compiler_wrapper/libc_exec.go index f8db9d86..d9867733 100644 --- a/compiler_wrapper/libc_exec.go +++ b/compiler_wrapper/libc_exec.go @@ -7,15 +7,31 @@ package main // #include +// #include // #include // #include // #include +// #include +// #include // // int libc_exec(const char *pathname, char *const argv[], char *const envp[]) { -// if (execve(pathname, argv, envp) != 0) { +// // Since fork() brings us to one thread, we can only use async-signal-safe funcs below. +// pid_t pid = fork(); +// if (pid == 0) { +// execve(pathname, argv, envp); +// fprintf(stderr, "exec failed (errno: %d)\n", errno); +// _exit(1); +// } +// if (pid < 0) { +// return errno; +// } +// +// int wstatus; +// pid_t waited = waitpid(pid, &wstatus, 0); +// if (waited == -1) { // return errno; // } -// return 0; +// exit(WEXITSTATUS(wstatus)); //} import "C" import ( @@ -29,7 +45,7 @@ import ( // Note that this changes the go binary to be a dynamically linked one. // See crbug.com/1000863 for details. // To use this version of exec, please add '-tags libc_exec' when building Go binary. -// Without the tags, libc_exec.go will be used. +// Without the tags, libc_exec.go will not be used. func execCmd(env env, cmd *command) error { freeList := []unsafe.Pointer{} -- cgit v1.2.3 From 647df117bbefdf56743f92e3063f2b9c3f1428b2 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Fri, 19 Jun 2020 14:41:15 -0700 Subject: crosperf: Save cpuinfo and top logs Copy cpuinfo and top logs into results directory. BUG=None TEST=tested on local DUT. Change-Id: Ic868894d681db4a27f78e378945e1e565d4a5cc7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2255007 Reviewed-by: Zhizhou Yang Commit-Queue: Denis Nikitin Tested-by: Denis Nikitin --- crosperf/results_cache.py | 13 +++++++++++++ crosperf/results_cache_unittest.py | 17 +++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index f7b78e39..b435eee3 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -58,6 +58,7 @@ class Result(object): self.results_file = [] self.turbostat_log_file = '' self.cpustats_log_file = '' + self.cpuinfo_file = '' self.top_log_file = '' self.wait_time_log_file = '' self.chrome_version = '' @@ -125,6 +126,13 @@ class Result(object): self.CopyFilesTo(dest_dir, self.results_file) self.CopyFilesTo(dest_dir, self.perf_data_files) self.CopyFilesTo(dest_dir, self.perf_report_files) + extra_files = [] + if self.top_log_file: + extra_files.append(self.top_log_file) + if self.cpuinfo_file: + extra_files.append(self.cpuinfo_file) + if extra_files: + self.CopyFilesTo(dest_dir, extra_files) if self.results_file or self.perf_data_files or self.perf_report_files: self._logger.LogOutput('Results files stored in %s.' % dest_dir) @@ -349,6 +357,10 @@ class Result(object): """Get cpustats log path string.""" return self.FindFilesInResultsDir('-name cpustats.log').split('\n')[0] + def GetCpuinfoFile(self): + """Get cpustats log path string.""" + return self.FindFilesInResultsDir('-name cpuinfo.log').split('\n')[0] + def GetTopFile(self): """Get cpustats log path string.""" return self.FindFilesInResultsDir('-name top.log').split('\n')[0] @@ -455,6 +467,7 @@ class Result(object): self.perf_report_files = self.GeneratePerfReportFiles() self.turbostat_log_file = self.GetTurbostatFile() self.cpustats_log_file = self.GetCpustatsFile() + self.cpuinfo_file = self.GetCpuinfoFile() self.top_log_file = self.GetTopFile() self.wait_time_log_file = self.GetWaitTimeFile() # TODO(asharif): Do something similar with perf stat. diff --git a/crosperf/results_cache_unittest.py b/crosperf/results_cache_unittest.py index 2c1996c4..812d5ab3 100755 --- a/crosperf/results_cache_unittest.py +++ b/crosperf/results_cache_unittest.py @@ -445,6 +445,7 @@ class ResultTest(unittest.TestCase): self.callGetTurbostatFile = False self.callGetCpustatsFile = False self.callGetTopFile = False + self.callGetCpuinfoFile = False self.callGetWaitTimeFile = False self.args = None self.callGatherPerfResults = False @@ -878,6 +879,15 @@ class ResultTest(unittest.TestCase): found_no_logs = self.result.GetTopFile() self.assertEqual(found_no_logs, '') + @mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput') + def test_get_cpuinfo_file_finds_single_log(self, mock_runcmd): + """Expected behavior when a single cpuinfo file found.""" + self.result.results_dir = '/tmp/test_results' + self.result.ce.RunCommandWOutput = mock_runcmd + mock_runcmd.return_value = (0, 'some/long/path/cpuinfo.log', '') + found_single_log = self.result.GetCpuinfoFile() + self.assertEqual(found_single_log, 'some/long/path/cpuinfo.log') + @mock.patch.object(command_executer.CommandExecuter, 'RunCommandWOutput') def test_get_cpustats_file_finds_single_log(self, mock_runcmd): """Expected behavior when a single log file found.""" @@ -1157,6 +1167,10 @@ class ResultTest(unittest.TestCase): self.callGetTopFile = True return [] + def FakeGetCpuinfoFile(): + self.callGetCpuinfoFile = True + return [] + def FakeGetWaitTimeFile(): self.callGetWaitTimeFile = True return [] @@ -1178,6 +1192,7 @@ class ResultTest(unittest.TestCase): self.callGetTurbostatFile = False self.callGetCpustatsFile = False self.callGetTopFile = False + self.callGetCpuinfoFile = False self.callGetWaitTimeFile = False self.callProcessResults = False @@ -1188,6 +1203,7 @@ class ResultTest(unittest.TestCase): self.result.GetTurbostatFile = FakeGetTurbostatFile self.result.GetCpustatsFile = FakeGetCpustatsFile self.result.GetTopFile = FakeGetTopFile + self.result.GetCpuinfoFile = FakeGetCpuinfoFile self.result.GetWaitTimeFile = FakeGetWaitTimeFile self.result.ProcessResults = FakeProcessResults @@ -1200,6 +1216,7 @@ class ResultTest(unittest.TestCase): self.assertTrue(self.callGetTurbostatFile) self.assertTrue(self.callGetCpustatsFile) self.assertTrue(self.callGetTopFile) + self.assertTrue(self.callGetCpuinfoFile) self.assertTrue(self.callGetWaitTimeFile) self.assertTrue(self.callProcessResults) -- cgit v1.2.3 From 5cbe70b09083d9d496d8dad81187b04620355178 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Tue, 23 Jun 2020 16:09:08 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R85-13295.0-1592818714 Update chromeos-kernel-4_4 to R85-13295.0-1592818619 Update chromeos-kernel-4_14 to R85-13295.0-1592818845 Update chromeos-kernel-4_19 to R85-13295.0-1592818980 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I67a06d70eb03b4d7d43d3ff7716bc13e758f4368 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2261738 Reviewed-by: Tiancong Wang Commit-Queue: Bob Haarman Tested-by: Bob Haarman --- afdo_metadata/kernel_afdo.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index a6f289f2..2529552f 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { - "chromeos-kernel-4_4": { - "name": "R85-13280.0-1592213800" - }, "chromeos-kernel-3_18": { - "name": "R85-13280.0-1592213569" + "name": "R85-13295.0-1592818714" + }, + "chromeos-kernel-4_4": { + "name": "R85-13295.0-1592818619" }, "chromeos-kernel-4_14": { - "name": "R85-13280.0-1592214019" + "name": "R85-13295.0-1592818845" }, "chromeos-kernel-4_19": { - "name": "R85-13280.0-1592214191" + "name": "R85-13295.0-1592818980" } } -- cgit v1.2.3 From 163efaa5f94d595a94b97f87c418c3c2659eb6ef Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 8 Jun 2020 10:58:36 -0700 Subject: wrapper: add support for Tricium clang-tidy This adds a special `WITH_TIDY` mode that's specifically for use with Tricium. Crucially, this has us dump diagnostics as YAML, and stash a fair amount of information about each clang-tidy invocation in the same place where we dump YAML. These bits are intended to be used by the script added in I54ecc88d38faa4bfd502d632d3fd5c74734dabc0. BUG=chromium:1035951 TEST=Ran on all platform2 packages `emerge`able on amd64-generic. Change-Id: I63ef06dc6ddc016ebb6ba0c4a0cea8320fef7415 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2245785 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/clang_tidy_flag.go | 163 +++++++++++++++++++++++++------ compiler_wrapper/clang_tidy_flag_test.go | 60 ++++++++++++ compiler_wrapper/compiler_wrapper.go | 19 +++- compiler_wrapper/config.go | 6 ++ compiler_wrapper/testutil_test.go | 1 + 5 files changed, 215 insertions(+), 34 deletions(-) diff --git a/compiler_wrapper/clang_tidy_flag.go b/compiler_wrapper/clang_tidy_flag.go index d8bf3cb2..edbbb412 100644 --- a/compiler_wrapper/clang_tidy_flag.go +++ b/compiler_wrapper/clang_tidy_flag.go @@ -5,15 +5,26 @@ package main import ( + "encoding/json" "fmt" + "io/ioutil" + "os" "path/filepath" "strings" ) -func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, useClangTidy bool) { +type useTidyMode int + +const ( + tidyModeNone useTidyMode = iota + tidyModeAll + tidyModeTricium +) + +func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, mode useTidyMode) { withTidy, _ := builder.env.getenv("WITH_TIDY") if withTidy == "" { - return "", false + return "", tidyModeNone } srcFileSuffixes := []string{ ".c", @@ -24,48 +35,138 @@ func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, useClangTi ".c++", } cSrcFile = "" + srcSuffix := "" lastArg := "" for _, arg := range builder.args { - if hasAtLeastOneSuffix(arg.value, srcFileSuffixes) && lastArg != "-o" { - cSrcFile = arg.value + if lastArg != "-o" { + for _, suffix := range srcFileSuffixes { + if strings.HasSuffix(arg.value, suffix) { + srcSuffix = suffix + cSrcFile = arg.value + break + } + } } lastArg = arg.value } - useClangTidy = cSrcFile != "" - return cSrcFile, useClangTidy -} -func runClangTidy(env env, clangCmd *command, cSrcFile string) error { - defaultTidyChecks := strings.Join([]string{ - "*", - "-bugprone-narrowing-conversions", - "-cppcoreguidelines-*", - "-fuchsia-*", - "-google-readability*", - "-google-runtime-references", - "-hicpp-*", - "-llvm-*", - "-misc-non-private-member-variables-in-classes", - "-misc-unused-parameters", - "-modernize-*", - "-readability-*", - }, ",") + if cSrcFile == "" { + return "", tidyModeNone + } + if withTidy == "tricium" { + // Files generated from protobufs can result in _many_ clang-tidy complaints, and aren't + // worth linting in general. Don't. + if strings.HasSuffix(cSrcFile, ".pb"+srcSuffix) { + mode = tidyModeNone + } else { + mode = tidyModeTricium + } + } else { + mode = tidyModeAll + } + return cSrcFile, mode +} + +func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFlags ...string) (*command, error) { resourceDir, err := getClangResourceDir(env, clangCmd.Path) if err != nil { - return err + return nil, err } clangTidyPath := filepath.Join(filepath.Dir(clangCmd.Path), "clang-tidy") - clangTidyCmd := &command{ - Path: clangTidyPath, - Args: append([]string{ - "-checks=" + defaultTidyChecks, - cSrcFile, - "--", - "-resource-dir=" + resourceDir, - }, clangCmd.Args...), + args := append([]string{}, tidyFlags...) + args = append(args, cSrcFile, "--", "-resource-dir="+resourceDir) + args = append(args, clangCmd.Args...) + return &command{ + Path: clangTidyPath, + Args: args, EnvUpdates: clangCmd.EnvUpdates, + }, nil +} + +func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string) error { + if err := os.MkdirAll(fixesDir, 0777); err != nil { + return fmt.Errorf("creating fixes directory at %q: %v", fixesDir, err) + } + + f, err := ioutil.TempFile(fixesDir, "lints-") + if err != nil { + return fmt.Errorf("making tempfile for tidy: %v", err) + } + f.Close() + + // `f` is an 'anchor'; it ensures we won't create a similarly-named file in the future. + // Hence, we can't delete it. + fixesFilePath := f.Name() + ".yaml" + fixesMetadataPath := f.Name() + ".json" + + // FIXME(gbiv): Remove `-checks=*` when testing is complete; we should defer to .clang-tidy + // files, which are both more expressive and more approachable than `-checks=*`. + clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, "-checks=*", "--export-fixes="+fixesFilePath) + if err != nil { + return fmt.Errorf("calculating tidy invocation: %v", err) + } + + stdstreams := &strings.Builder{} + // Note: We pass nil as stdin as we checked before that the compiler + // was invoked with a source file argument. + exitCode, err := wrapSubprocessErrorWithSourceLoc(clangTidyCmd, + env.run(clangTidyCmd, nil, stdstreams, stdstreams)) + if err != nil { + return err + } + + type metadata struct { + Args []string `json:"args"` + Executable string `json:"executable"` + ExitCode int `json:"exit_code"` + LintTarget string `json:"lint_target"` + Stdstreams string `json:"stdstreams"` + Wd string `json:"wd"` + } + + f, err = os.Create(fixesMetadataPath) + if err != nil { + return fmt.Errorf("creating fixes metadata: %v", err) + } + + meta := &metadata{ + Args: clangTidyCmd.Args, + Executable: clangTidyCmd.Path, + ExitCode: exitCode, + LintTarget: cSrcFile, + Stdstreams: stdstreams.String(), + Wd: env.getwd(), + } + if err := json.NewEncoder(f).Encode(meta); err != nil { + return fmt.Errorf("writing fixes metadata: %v", err) + } + + if err := f.Close(); err != nil { + return fmt.Errorf("finalizing fixes metadata: %v", err) + } + return nil +} + +func runClangTidy(env env, clangCmd *command, cSrcFile string) error { + clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, "-checks="+ + strings.Join([]string{ + "*", + "-bugprone-narrowing-conversions", + "-cppcoreguidelines-*", + "-fuchsia-*", + "-google-readability*", + "-google-runtime-references", + "-hicpp-*", + "-llvm-*", + "-misc-non-private-member-variables-in-classes", + "-misc-unused-parameters", + "-modernize-*", + "-readability-*", + }, ",")) + if err != nil { + return fmt.Errorf("calculating clang-tidy invocation: %v", err) } // Note: We pass nil as stdin as we checked before that the compiler diff --git a/compiler_wrapper/clang_tidy_flag_test.go b/compiler_wrapper/clang_tidy_flag_test.go index baf5219e..d45d1bdd 100644 --- a/compiler_wrapper/clang_tidy_flag_test.go +++ b/compiler_wrapper/clang_tidy_flag_test.go @@ -273,6 +273,66 @@ func TestPartiallyOmitGomaWithClangTidy(t *testing.T) { }) } +func TestTriciumClangTidyIsProperlyDetectedFromEnv(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + ctx.env = []string{"WITH_TIDY=tricium"} + ctx.cmdMock = func(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { + switch ctx.cmdCount { + case 1: + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + return nil + case 2: + if err := verifyPath(cmd, "usr/bin/clang-tidy"); err != nil { + return err + } + + hasFixesFile := false + for _, arg := range cmd.Args { + if path := strings.TrimPrefix(arg, "--export-fixes="); path != arg { + hasFixesFile = true + if !strings.HasPrefix(path, ctx.cfg.triciumNitsDir+"/") { + t.Errorf("fixes file was %q; expected it to be in %q", path, ctx.cfg.triciumNitsDir) + } + break + } + } + + if !hasFixesFile { + t.Error("no fixes file was provided to a tricium invocation") + } + + return nil + default: + return nil + } + } + cmd := ctx.must(callCompiler(ctx, ctx.cfg, + ctx.newCommand(clangX86_64, mainCc))) + if ctx.cmdCount != 3 { + t.Errorf("expected 3 calls. Got: %d", ctx.cmdCount) + } + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + }) +} + +func TestTriciumClangTidySkipsProtobufFiles(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + ctx.env = []string{"WITH_TIDY=tricium"} + cmd := ctx.must(callCompiler(ctx, ctx.cfg, + ctx.newCommand(clangX86_64, mainCc+".pb.cc"))) + if ctx.cmdCount != 1 { + t.Errorf("expected tricium clang-tidy to not execute on a protobuf file") + } + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + }) +} + func withClangTidyTestContext(t *testing.T, work func(ctx *testContext)) { withTestContext(t, func(ctx *testContext) { ctx.env = []string{"WITH_TIDY=1"} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index 4c3db14a..14de210a 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -90,16 +90,29 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int return 0, newErrorwithSourceLocf("unsupported compiler: %s", mainBuilder.target.compiler) } } else if mainBuilder.target.compilerType == clangType { - cSrcFile, useClangTidy := processClangTidyFlags(mainBuilder) + cSrcFile, tidyMode := processClangTidyFlags(mainBuilder) err := prepareClangCommand(mainBuilder) if err != nil { return 0, err } allowCCache := true - if useClangTidy { + if tidyMode != tidyModeNone { allowCCache = false clangCmdWithoutGomaAndCCache := mainBuilder.build() - if err := runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile); err != nil { + var err error + switch tidyMode { + case tidyModeTricium: + if cfg.triciumNitsDir == "" { + return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured") + } + err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir) + case tidyModeAll: + err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile) + default: + panic(fmt.Sprintf("Unknown tidy mode: %v", tidyMode)) + } + + if err != nil { return 0, err } } diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index a122b5a2..3c3668df 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -29,6 +29,8 @@ type config struct { rootRelPath string // Directory to store errors that were prevented with -Wno-error. newWarningsDir string + // Directory to store nits in when using `WITH_TIDY=tricium`. + triciumNitsDir string // Version. Only used for printing via -print-cmd. version string } @@ -137,6 +139,7 @@ var crosHardenedConfig = &config{ "-Wno-implicit-int-float-conversion", }, newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", } // Flags to be added to non-hardened toolchain. @@ -166,6 +169,7 @@ var crosNonHardenedConfig = &config{ "-Wno-implicit-int-float-conversion", }, newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", } // Flags to be added to host toolchain. @@ -200,6 +204,7 @@ var crosHostConfig = &config{ "-Wno-implicit-int-float-conversion", }, newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", } var androidConfig = &config{ @@ -211,4 +216,5 @@ var androidConfig = &config{ clangFlags: []string{}, clangPostFlags: []string{}, newWarningsDir: "", + triciumNitsDir: "", } diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index 5d8ef920..d23a8434 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -141,6 +141,7 @@ func (ctx *testContext) mustFail(exitCode int) string { func (ctx *testContext) updateConfig(cfg *config) { *ctx.cfg = *cfg ctx.cfg.newWarningsDir = filepath.Join(ctx.tempDir, "fatal_clang_warnings") + ctx.cfg.triciumNitsDir = filepath.Join(ctx.tempDir, "tricium_nits") } func (ctx *testContext) newCommand(path string, args ...string) *command { -- cgit v1.2.3 From 74a6b0951679e53f9bd43170bbddb3455a068792 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Tue, 23 Jun 2020 15:44:05 -0700 Subject: afdo_tools: add update_kernel_afdo script This adds a script, update_kernel_afdo, which automatically updates afdo_metadata/kernel_afdo.json. The changes are then shown with git diff and can be committed with git commit after review. BUG=None TEST=Ran the script, including with some variations to see the failure modes. Change-Id: Ibe473a80a874e32ddcb9c292e1c018fac72e7292 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2261732 Commit-Queue: Bob Haarman Tested-by: Bob Haarman Reviewed-by: Tiancong Wang --- afdo_tools/update_kernel_afdo | 98 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100755 afdo_tools/update_kernel_afdo diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo new file mode 100755 index 00000000..aac891cb --- /dev/null +++ b/afdo_tools/update_kernel_afdo @@ -0,0 +1,98 @@ +#! /bin/sh + +# Due to crbug.com/1081332, we need to update AFDO metadata +# manually. This script performs a few checks and generates a +# new kernel_afdo.json file, which can then be committed. +# +# USAGE: +# toolchain-utils$ ./afdo_tools/update_kernel_afdo +# +# The script modifies the JSON file and shows the git diff. +# +# If the changes look good, git commit them. Example commit +# message (from crrev.com/c/2197462): +# +# afdo_metadata: Publish the new kernel profiles +# +# Update chromeos-kernel-3_18 to R84-13080.0-1589189810 +# Update chromeos-kernel-4_4 to R84-13080.0-1589189726 +# Update chromeos-kernel-4_14 to R84-13080.0-1589190025 +# Update chromeos-kernel-4_19 to R84-13080.0-1589189550 +# +# BUG=None +# TEST=Verified in kernel-release-afdo-verify-orchestrator. +# + +set -eu + +GS_BASE=gs://chromeos-prebuilt/afdo-job/vetted/kernel +KVERS="3.18 4.4 4.14 4.19" +errs="" +successes=0 + +script_dir=$(dirname "$0") +tc_utils_dir="$script_dir/.." +metadata_dir="$tc_utils_dir/afdo_metadata" +outfile="$metadata_dir/kernel_afdo.json" + +# The most recent Monday, in Unix timestamp format. +if [ $(date +%a) = "Mon" ] +then + expected_time=$(date +%s -d 00:00:00) +else + expected_time=$(date +%s -d "last Monday") +fi + +json="{" +sep="" +for kver in $KVERS +do + latest=$(gsutil ls -l "$GS_BASE/$kver/" | tail -n 2 | head -n 1) + + # Verify that the file has the expected date. + file_time=$(echo "$latest" | awk '{print $2}') + file_time_unix=$(date +%s -d "$file_time") + if [ $file_time_unix -lt $expected_time ] + then + expected=$(env TZ=UTC date +%Y-%m-%dT%H:%M:%SZ -d @$expected_time) + echo "Wrong date for $kver: $file_time is before $expected" >&2 + errs="$errs $kver" + continue + fi + + # Generate JSON. + json_kver=$(echo "$kver" | tr . _) + # b/147370213 (migrating profiles from gcov format) may result in the + # pattern below no longer doing the right thing. + name=$(echo "$latest" | sed 's%.*/\(.*\)\.gcov.*%\1%') + json=$(cat <&2 + exit 2 +fi + +# Write new JSON file. +printf "%s\n}\n" "$json" > "$outfile" + +# Show the changes. +(cd "$tc_utils_dir" && git diff) + +# If no changes were made, say so. +outdir=$(dirname "$outfile") +shortstat=$(cd "$outdir" && git status --short $(basename "$outfile")) +[ -n "$shortstat" ] || echo $(basename "$outfile")" is up to date." + +# If we had any errors, warn about them. +[ -z "$errs" ] || echo "warning: failed to update$errs" >&2 -- cgit v1.2.3 From efb96d1a55f64e72489e219ea65d974e5468a753 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 24 Jun 2020 16:10:06 -0700 Subject: android_merge_from_upstream: fix up naming This replaces `master` with `main` where possible, per the linked bug. It also switches to a more concise way of making sure we're never on the local branch. BUG=chromium:1099035 TEST=Ran the script in android-llvm Change-Id: I0e656057acec857a2c91480cbd822a5bc6778563 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2265045 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- android_merge_from_upstream.sh | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/android_merge_from_upstream.sh b/android_merge_from_upstream.sh index cf07d4bf..b63eb6e1 100755 --- a/android_merge_from_upstream.sh +++ b/android_merge_from_upstream.sh @@ -18,11 +18,11 @@ remote_branch="${remote}/upstream-mirror-master" my_dir="$(dirname "$(readlink -m "$0")")" cd "${my_dir}" -ensure_head_is_upstream_master() { - local current_rev master_rev +ensure_head_is_upstream_main() { + local current_rev main_rev current_rev="$(git rev-parse HEAD)" - master_rev="$(git rev-parse ${local_upstream})" - if [[ "${current_rev}" != "${master_rev}" ]]; then + main_rev="$(git rev-parse ${local_upstream})" + if [[ "${current_rev}" != "${main_rev}" ]]; then echo "Please checkout ${local_upstream} and rerun this" >&2 exit fi @@ -42,16 +42,8 @@ ensure_no_local_branch_present() { exit 1 fi - # If we're *on* that branch, deleting it is difficult. - local current_branch - current_branch="$(git branch --show-current)" - if [[ "${current_branch}" == "${local_branch_name}" ]]; then - local rev - rev="$(git rev-parse HEAD)" - # This is fine, since we assume HEAD == upstream-mirror-master anyway - # (e.g., the existing branch was pointless.) - git checkout "${rev}" - fi + # If we're *on* that branch, deleting it is difficult. Always detach. + git checkout --detach || return git branch -D "${local_branch_name}" } @@ -61,7 +53,7 @@ get_merge_commit_list() { git log --oneline "${merge_base}..${remote_branch}" } -ensure_head_is_upstream_master +ensure_head_is_upstream_main ensure_no_local_branch_present echo "Ensuring repository is up-to-date..." -- cgit v1.2.3 From 536aff5f6d015f840bafd6ea70774bbc6b3da6f3 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 24 Jun 2020 16:27:44 -0700 Subject: llvm_tools: fix up naming This replaces `master` with `main` where possible, per the linked bug. Since upstream LLVM has a `master` branch, and there appears to be general support in FOSS for swapping to a different naming convention (`main`), this also makes LLVM's upstream branch name into a constant that we can easily flip if needed. BUG=chromium:1099035 TEST=Unittests Change-Id: I0844cfb4fec00f761e39b0443299daa918fa37ab Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2265047 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/README.md | 2 +- llvm_tools/get_llvm_hash.py | 43 ++++++++++++++---------------------- llvm_tools/get_llvm_hash_unittest.py | 5 ++--- llvm_tools/git_llvm_rev.py | 14 +++++++----- llvm_tools/git_llvm_rev_test.py | 28 ++++++++++++----------- llvm_tools/llvm_project.py | 11 ++++++--- llvm_tools/nightly_revert_checker.py | 9 ++++---- 7 files changed, 55 insertions(+), 57 deletions(-) diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 1c1862d8..547a3056 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -488,7 +488,7 @@ these synthesized numbers and git SHAs. Usage should be straightforward: 6f635f90929da9545dd696071a829a1a42f84b30 ~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --sha 6f635f90929da9545dd696071a829a1a42f84b30 r380000 -~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --sha origin/master +~> ./git_llvm_rev.py --llvm_dir llvm-project-copy/ --sha origin/some-branch r387778 ``` diff --git a/llvm_tools/get_llvm_hash.py b/llvm_tools/get_llvm_hash.py index a5b5429e..4200cffe 100755 --- a/llvm_tools/get_llvm_hash.py +++ b/llvm_tools/get_llvm_hash.py @@ -17,7 +17,8 @@ import tempfile from contextlib import contextmanager import git_llvm_rev -from subprocess_helpers import CheckCommand, check_output +from subprocess_helpers import CheckCommand +from subprocess_helpers import check_output _LLVM_GIT_URL = ('https://chromium.googlesource.com/external/github.com/llvm' '/llvm-project') @@ -39,7 +40,7 @@ def GetVersionFrom(src_dir, git_hash): version = git_llvm_rev.translate_sha_to_rev( git_llvm_rev.LLVMConfig(remote='origin', dir=src_dir), git_hash) # Note: branches aren't supported - assert version.branch == 'master', version.branch + assert version.branch == git_llvm_rev.MAIN_BRANCH, version.branch return version.number @@ -59,7 +60,7 @@ def GetGitHashFrom(src_dir, version): return git_llvm_rev.translate_rev_to_sha( git_llvm_rev.LLVMConfig(remote='origin', dir=src_dir), - git_llvm_rev.Rev(branch='master', number=version)) + git_llvm_rev.Rev(branch=git_llvm_rev.MAIN_BRANCH, number=version)) @contextmanager @@ -85,13 +86,10 @@ def CreateTempLLVMRepo(temp_dir): """ abs_path_to_llvm_project_dir = GetAndUpdateLLVMProjectInLLVMTools() - - add_worktree_cmd = [ + CheckCommand([ 'git', '-C', abs_path_to_llvm_project_dir, 'worktree', 'add', '--detach', - temp_dir, 'master' - ] - - CheckCommand(add_worktree_cmd) + temp_dir, git_llvm_rev.MAIN_BRANCH + ]) try: yield temp_dir @@ -117,7 +115,7 @@ def GetAndUpdateLLVMProjectInLLVMTools(): Raises: ValueError: LLVM repo (in 'llvm-project-copy' dir.) has changes or failed to - checkout to master or failed to fetch from chromium mirror of LLVM. + checkout to main or failed to fetch from chromium mirror of LLVM. """ abs_path_to_llvm_tools_dir = os.path.dirname(os.path.abspath(__file__)) @@ -143,15 +141,11 @@ def GetAndUpdateLLVMProjectInLLVMTools(): raise ValueError('LLVM repo in %s has changes, please remove.' % abs_path_to_llvm_project_dir) - checkout_to_master_cmd = [ - 'git', '-C', abs_path_to_llvm_project_dir, 'checkout', 'master' - ] - - CheckCommand(checkout_to_master_cmd) - - update_master_cmd = ['git', '-C', abs_path_to_llvm_project_dir, 'pull'] - - CheckCommand(update_master_cmd) + CheckCommand([ + 'git', '-C', abs_path_to_llvm_project_dir, 'checkout', + git_llvm_rev.MAIN_BRANCH + ]) + CheckCommand(['git', '-C', abs_path_to_llvm_project_dir, 'pull']) return abs_path_to_llvm_project_dir @@ -298,14 +292,9 @@ class LLVMHash(object): def GetTopOfTrunkGitHash(self): """Gets the latest git hash from top of trunk of LLVM.""" - path_to_master_branch = 'refs/heads/master' - - llvm_tot_git_hash_cmd = [ - 'git', 'ls-remote', _LLVM_GIT_URL, path_to_master_branch - ] - - llvm_tot_git_hash = check_output(llvm_tot_git_hash_cmd) - + path_to_main_branch = 'refs/heads/master' + llvm_tot_git_hash = check_output( + ['git', 'ls-remote', _LLVM_GIT_URL, path_to_main_branch]) return llvm_tot_git_hash.rstrip().split()[0] diff --git a/llvm_tools/get_llvm_hash_unittest.py b/llvm_tools/get_llvm_hash_unittest.py index c828f433..2e56aed5 100755 --- a/llvm_tools/get_llvm_hash_unittest.py +++ b/llvm_tools/get_llvm_hash_unittest.py @@ -8,12 +8,11 @@ from __future__ import print_function -import get_llvm_hash import subprocess import unittest import unittest.mock as mock -import test_helpers +import get_llvm_hash from get_llvm_hash import LLVMHash # We grab protected stuff from get_llvm_hash. That's OK. @@ -87,7 +86,7 @@ class TestGetLLVMHash(unittest.TestCase): @mock.patch.object(subprocess, 'check_output') def testSuccessfullyGetGitHashFromToTOfLLVM(self, mock_check_output): - mock_check_output.return_value = 'a123testhash1 path/to/master\n' + mock_check_output.return_value = 'a123testhash1 path/to/main\n' self.assertEqual(LLVMHash().GetTopOfTrunkGitHash(), 'a123testhash1') mock_check_output.assert_called_once() diff --git a/llvm_tools/git_llvm_rev.py b/llvm_tools/git_llvm_rev.py index 8eefcdce..07209f1e 100755 --- a/llvm_tools/git_llvm_rev.py +++ b/llvm_tools/git_llvm_rev.py @@ -18,6 +18,8 @@ import subprocess import sys import typing as t +MAIN_BRANCH = 'master' + # Note that after base_llvm_sha, we reach The Wild West(TM) of commits. # So reasonable input that could break us includes: # @@ -52,9 +54,9 @@ class Rev(t.NamedTuple('Rev', (('branch', str), ('number', int)))): # pairs. # # We support r${commits_since_base_commit} as shorthand for - # (master, r${commits_since_base_commit}). + # (main, r${commits_since_base_commit}). if rev.startswith('r'): - branch_name = 'master' + branch_name = MAIN_BRANCH rev_string = rev[1:] else: match = re.match(r'\((.+), r(\d+)\)', rev) @@ -67,7 +69,7 @@ class Rev(t.NamedTuple('Rev', (('branch', str), ('number', int)))): def __str__(self) -> str: branch_name, number = self - if branch_name == 'master': + if branch_name == MAIN_BRANCH: return 'r%d' % number return '(%s, r%d)' % (branch_name, number) @@ -141,7 +143,7 @@ def translate_sha_to_rev(llvm_config: LLVMConfig, sha_or_ref: str) -> Rev: cwd=llvm_config.dir, ) count = int(result.strip()) - return Rev(branch='master', number=count + base_llvm_revision) + return Rev(branch=MAIN_BRANCH, number=count + base_llvm_revision) # Otherwise, either: # - |merge_base| is |sha| (we have a guaranteed llvm-svn number on |sha|) @@ -150,7 +152,7 @@ def translate_sha_to_rev(llvm_config: LLVMConfig, sha_or_ref: str) -> Rev: merge_base_number = translate_prebase_sha_to_rev_number( llvm_config, merge_base) if merge_base == sha: - return Rev(branch='master', number=merge_base_number) + return Rev(branch=MAIN_BRANCH, number=merge_base_number) distance_from_base = check_output( [ @@ -270,7 +272,7 @@ def translate_rev_to_sha(llvm_config: LLVMConfig, rev: Rev) -> str: """ branch, number = rev - if branch == 'master': + if branch == MAIN_BRANCH: if number < base_llvm_revision: return translate_prebase_rev_to_sha(llvm_config, rev) base_sha = base_llvm_sha diff --git a/llvm_tools/git_llvm_rev_test.py b/llvm_tools/git_llvm_rev_test.py index 1e38f589..775ab1e6 100755 --- a/llvm_tools/git_llvm_rev_test.py +++ b/llvm_tools/git_llvm_rev_test.py @@ -12,6 +12,7 @@ import unittest import git_llvm_rev import llvm_project +from git_llvm_rev import MAIN_BRANCH def get_llvm_config() -> git_llvm_rev.LLVMConfig: @@ -32,17 +33,17 @@ class Test(unittest.TestCase): def test_sha_to_rev_on_base_sha_works(self) -> None: sha = self.rev_to_sha_with_round_trip( git_llvm_rev.Rev( - branch='master', number=git_llvm_rev.base_llvm_revision)) + branch=MAIN_BRANCH, number=git_llvm_rev.base_llvm_revision)) self.assertEqual(sha, git_llvm_rev.base_llvm_sha) def test_sha_to_rev_prior_to_base_rev_works(self) -> None: sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=375000)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=375000)) self.assertEqual(sha, '2f6da767f13b8fd81f840c211d405fea32ac9db7') def test_sha_to_rev_after_base_rev_works(self) -> None: sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=375506)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=375506)) self.assertEqual(sha, '3bf7fddeb05655d9baed4cc69e13535c677ed1dd') def test_llvm_svn_parsing_runs_ignore_reverts(self) -> None: @@ -51,18 +52,19 @@ class Test(unittest.TestCase): # Commit which performed the revert sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=374895)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=374895)) self.assertEqual(sha, '1731fc88d1fa1fa55edd056db73a339b415dd5d6') # Commit that was reverted sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=374841)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=374841)) self.assertEqual(sha, '2a1386c81de504b5bda44fbecf3f7b4cdfd748fc') def test_imaginary_revs_raise(self) -> None: with self.assertRaises(ValueError) as r: git_llvm_rev.translate_rev_to_sha( - get_llvm_config(), git_llvm_rev.Rev(branch='master', number=9999999)) + get_llvm_config(), git_llvm_rev.Rev( + branch=MAIN_BRANCH, number=9999999)) self.assertIn('Try updating your tree?', str(r.exception)) @@ -71,15 +73,15 @@ class Test(unittest.TestCase): # properties about it. merge_sha_rev_number = 4496 + git_llvm_rev.base_llvm_revision sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=merge_sha_rev_number)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number)) self.assertEqual(sha, '0f0d0ed1c78f1a80139a1f2133fad5284691a121') sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=merge_sha_rev_number - 1)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number - 1)) self.assertEqual(sha, '6f635f90929da9545dd696071a829a1a42f84b30') sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=merge_sha_rev_number + 1)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=merge_sha_rev_number + 1)) self.assertEqual(sha, '199700a5cfeedf227619f966aa3125cef18bc958') # NOTE: The below tests have _zz_ in their name as an optimization. Iterating @@ -101,11 +103,11 @@ class Test(unittest.TestCase): backing_sha = 'c89a3d78f43d81b9cff7b9248772ddf14d21b749' sha = self.rev_to_sha_with_round_trip( - git_llvm_rev.Rev(branch='master', number=rev_number)) + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=rev_number)) self.assertEqual(sha, backing_sha) - # Note that this won't round-trip: since this commit is on the master - # branch, we'll pick master for this. That's fine + # Note that this won't round-trip: since this commit is on the main + # branch, we'll pick main for this. That's fine. sha = git_llvm_rev.translate_rev_to_sha( get_llvm_config(), git_llvm_rev.Rev(branch='release/9.x', number=rev_number)) @@ -113,7 +115,7 @@ class Test(unittest.TestCase): def test_zz_branch_revs_work_after_merge_points(self) -> None: # Picking the commit on the 9.x branch after the merge-base for that + - # master. Note that this is where llvm-svn numbers should diverge from + # main. Note that this is where llvm-svn numbers should diverge from # ours, and are therefore untrustworthy. The commit for this *does* have a # different `llvm-svn:` string than we should have. sha = self.rev_to_sha_with_round_trip( diff --git a/llvm_tools/llvm_project.py b/llvm_tools/llvm_project.py index c171370c..7937729f 100644 --- a/llvm_tools/llvm_project.py +++ b/llvm_tools/llvm_project.py @@ -13,6 +13,7 @@ import subprocess import sys import get_llvm_hash +import git_llvm_rev def get_location() -> str: @@ -33,9 +34,13 @@ def ensure_up_to_date(): assert checkout == actual_checkout, '%s != %s' % (actual_checkout, checkout) commit_timestamp = subprocess.check_output( - ['git', 'log', '-n1', '--format=%ct', 'origin/master'], + [ + 'git', 'log', '-n1', '--format=%ct', + 'origin/' + git_llvm_rev.MAIN_BRANCH + ], cwd=checkout, - encoding='utf-8') + encoding='utf-8', + ) commit_time = datetime.datetime.fromtimestamp(int(commit_timestamp.strip())) now = datetime.datetime.now() @@ -52,7 +57,7 @@ def ensure_up_to_date(): (time_since_last_commit.days, checkout), file=sys.stderr) - result = subprocess.run(['git', 'fetch', 'origin'], cwd=checkout) + result = subprocess.run(['git', 'fetch', 'origin'], check=False, cwd=checkout) if result.returncode: print( 'Sync failed somehow; hoping that things are fresh enough, then...', diff --git a/llvm_tools/nightly_revert_checker.py b/llvm_tools/nightly_revert_checker.py index 71b5574b..3a23890a 100755 --- a/llvm_tools/nightly_revert_checker.py +++ b/llvm_tools/nightly_revert_checker.py @@ -27,6 +27,7 @@ import typing as t import cros_utils.email_sender as email_sender import cros_utils.tiny_render as tiny_render import get_llvm_hash +import git_llvm_rev import revert_checker State = t.Any @@ -44,12 +45,12 @@ def _find_interesting_android_shas( encoding='utf-8', ).strip() - master_legacy = get_llvm_merge_base('aosp/master-legacy') + main_legacy = get_llvm_merge_base('aosp/master-legacy') testing_upstream = get_llvm_merge_base('aosp/testing-upstream') - result = [('master-legacy', master_legacy)] + result = [('main-legacy', main_legacy)] # If these are the same SHA, there's no point in tracking both. - if master_legacy != testing_upstream: + if main_legacy != testing_upstream: result.append(('testing-upstream', testing_upstream)) return result @@ -270,7 +271,7 @@ def main(argv: t.List[str]) -> None: for friendly_name, sha in interesting_shas: logging.info('Finding reverts across %s (%s)', friendly_name, sha) all_reverts = revert_checker.find_reverts( - llvm_dir, sha, root='origin/master') + llvm_dir, sha, root='origin/' + git_llvm_rev.MAIN_BRANCH) logging.info('Detected the following revert(s) across %s:\n%s', friendly_name, pprint.pformat(all_reverts)) -- cgit v1.2.3 From ad5e320d98f0101b5c094270d6f26dae981c1460 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 24 Jun 2020 15:45:15 -0700 Subject: debug_info_test: replace whitelist with allowlist This CL tweaks language to better reflect the intent that's meant to be conveyed, per go/chromium-project-code-inclusion . This change is meant to trivially be a local, functional nop; renaming extensions will be a later CL. BUG=chromium:1099035 TEST=CQ+1 Change-Id: Iaee8b96c54660b4ebb4363a230e768c3da3f885a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2265049 Reviewed-by: Manoj Gupta Tested-by: George Burgess Commit-Queue: George Burgess --- debug_info_test/allowlist.py | 69 +++++++++++++++++++++++++++++++++ debug_info_test/check_exist.py | 10 ++--- debug_info_test/check_ngcc.py | 6 +-- debug_info_test/ngcc_dso_path.whitelist | 2 +- debug_info_test/whitelist.py | 68 -------------------------------- 5 files changed, 78 insertions(+), 77 deletions(-) create mode 100644 debug_info_test/allowlist.py delete mode 100644 debug_info_test/whitelist.py diff --git a/debug_info_test/allowlist.py b/debug_info_test/allowlist.py new file mode 100644 index 00000000..978b2370 --- /dev/null +++ b/debug_info_test/allowlist.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# Copyright 2018 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. + +"""Allowlist functions.""" + +from __future__ import print_function + +import glob +import os +import re + + +# Matching a string of length m in an NFA of size n is O(mn^2), but the +# performance also depends largely on the implementation. It appears to be fast +# enough according to the tests. +# +# The performance bottleneck of this script is readelf. Unless this becomes +# slower than readelf, don't waste time here. +def is_allowlisted(list_name, pattern): + """Check whether the given pattern is specified in the allowlist. + + Args: + list_name: name of the allowlist. + pattern: the target string. + + Returns: + True if matched otherwise False. + """ + return pattern and allowlists[list_name].match(pattern) + + +def prepare_allowlist(patterns): + """Join and compile the re patterns. + + Args: + patterns: regex patterns. + + Returns: + A compiled re object. + """ + return re.compile('|'.join(patterns)) + + +# FIXME: s/whitelist/allowlist/ in the file extension. +def load_allowlists(dirname): + """Load allowlists under dirname. + + An allowlist ends with .whitelist. + + Args: + dirname: path to the dir. + + Returns: + A dictionary of 'filename' -> allowlist matcher. + """ + wlist = {} + for fn in glob.glob(os.path.join(dirname, '*.whitelist')): + key = os.path.splitext(os.path.basename(fn))[0] + with open(fn, 'r', encoding='utf-8') as f: + patterns = f.read().splitlines() + patterns = [l for l in patterns if l != ''] + patterns = [l for l in patterns if l[0] != '#'] + wlist[key] = prepare_allowlist(patterns) + return wlist + + +allowlists = load_allowlists(os.path.dirname(__file__)) diff --git a/debug_info_test/check_exist.py b/debug_info_test/check_exist.py index dbb89127..f2cc7c6b 100644 --- a/debug_info_test/check_exist.py +++ b/debug_info_test/check_exist.py @@ -10,7 +10,7 @@ from __future__ import print_function import os import subprocess -from whitelist import is_whitelisted +from allowlist import is_allowlisted def check_debug_info(dso_path, readelf_content): @@ -24,8 +24,8 @@ def check_debug_info(dso_path, readelf_content): True if debug info section exists, otherwise False. """ - # Return True if it is whitelisted - if is_whitelisted('exist_debug_info', dso_path): + # Return True if it is allowlisted + if is_allowlisted('exist_debug_info', dso_path): return True for l in readelf_content: @@ -46,8 +46,8 @@ def check_producer(dso_path, readelf_content): Notice: If no compile unit in DSO, also return True. """ - # Return True if it is whitelisted - if is_whitelisted('exist_producer', dso_path): + # Return True if it is allowlisted + if is_allowlisted('exist_producer', dso_path): return True # Indicate if there is a producer under each cu diff --git a/debug_info_test/check_ngcc.py b/debug_info_test/check_ngcc.py index 501bb988..c86c220a 100644 --- a/debug_info_test/check_ngcc.py +++ b/debug_info_test/check_ngcc.py @@ -7,7 +7,7 @@ from __future__ import print_function -from whitelist import is_whitelisted +from allowlist import is_allowlisted def not_by_gcc(dso_path, producer, comp_path): @@ -21,10 +21,10 @@ def not_by_gcc(dso_path, producer, comp_path): Returns: False if compiled by gcc otherwise True. """ - if is_whitelisted('ngcc_comp_path', comp_path): + if is_allowlisted('ngcc_comp_path', comp_path): return True - if is_whitelisted('ngcc_dso_path', dso_path): + if is_allowlisted('ngcc_dso_path', dso_path): return True return 'GNU C' not in producer diff --git a/debug_info_test/ngcc_dso_path.whitelist b/debug_info_test/ngcc_dso_path.whitelist index 8d63a521..858465e0 100644 --- a/debug_info_test/ngcc_dso_path.whitelist +++ b/debug_info_test/ngcc_dso_path.whitelist @@ -1,5 +1,5 @@ # DSOs specified here are not CrOS packages compiled within CrOS SDK. -# CrOS packages should be whitelisted in *_comp_path.whitelist +# CrOS packages should be allowlisted in *_comp_path.allowlist # modules we don't care: .*/binutils/.* .*/binutils-bin/.* diff --git a/debug_info_test/whitelist.py b/debug_info_test/whitelist.py deleted file mode 100644 index b53387a8..00000000 --- a/debug_info_test/whitelist.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright 2018 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. - -"""Whitelist functions.""" - -from __future__ import print_function - -import os -import glob -import re - - -# Matching a string of length m in an NFA of size n is O(mn^2), but the -# performance also depends largely on the implementation. It appears to be fast -# enough according to the tests. -# -# The performance bottleneck of this script is readelf. Unless this becomes -# slower than readelf, don't waste time here. -def is_whitelisted(list_name, pattern): - """Check whether the given pattern is specified in the whitelist. - - Args: - list_name: name of the whitelist. - pattern: the target string. - - Returns: - True if matched otherwise False. - """ - return pattern and whitelists[list_name].match(pattern) - - -def prepare_whitelist(patterns): - """Join and compile the re patterns. - - Args: - patterns: regex patterns. - - Returns: - A compiled re object. - """ - return re.compile('|'.join(patterns)) - - -def load_whitelists(dirname): - """Load whitelists under dirname. - - A whitelist ends with .whitelist. - - Args: - dirname: path to the dir. - - Returns: - A dictionary of 'filename' -> whitelist matcher. - """ - wlist = {} - for fn in glob.glob(os.path.join(dirname, '*.whitelist')): - key = os.path.splitext(os.path.basename(fn))[0] - with open(fn, 'r', encoding='utf-8') as f: - patterns = f.read().splitlines() - patterns = [l for l in patterns if l != ''] - patterns = [l for l in patterns if l[0] != '#'] - wlist[key] = prepare_whitelist(patterns) - return wlist - - -whitelists = load_whitelists(os.path.dirname(__file__)) -- cgit v1.2.3 From 0c1730a05945799cf65aced40063c17ffafe737f Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 24 Jun 2020 17:00:47 -0700 Subject: debug_info_test: fix up naming This replaces 'whitelist' with 'allowlist' in debug_info_test's file names, as a follow up to the previous NFC CL's cleanups. BUG=chromium:1099035 TEST=CQ+1 Change-Id: I0e99fa230a78251a6a555941db6f4758d0cf9367 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2265050 Reviewed-by: Tiancong Wang Tested-by: George Burgess Commit-Queue: George Burgess --- debug_info_test/allowlist.py | 5 ++--- debug_info_test/exist_debug_info.allowlist | 13 +++++++++++++ debug_info_test/exist_debug_info.whitelist | 13 ------------- debug_info_test/exist_producer.allowlist | 8 ++++++++ debug_info_test/exist_producer.whitelist | 8 -------- debug_info_test/ngcc_comp_path.allowlist | 24 ++++++++++++++++++++++++ debug_info_test/ngcc_comp_path.whitelist | 24 ------------------------ debug_info_test/ngcc_dso_path.allowlist | 23 +++++++++++++++++++++++ debug_info_test/ngcc_dso_path.whitelist | 23 ----------------------- 9 files changed, 70 insertions(+), 71 deletions(-) create mode 100644 debug_info_test/exist_debug_info.allowlist delete mode 100644 debug_info_test/exist_debug_info.whitelist create mode 100644 debug_info_test/exist_producer.allowlist delete mode 100644 debug_info_test/exist_producer.whitelist create mode 100644 debug_info_test/ngcc_comp_path.allowlist delete mode 100644 debug_info_test/ngcc_comp_path.whitelist create mode 100644 debug_info_test/ngcc_dso_path.allowlist delete mode 100644 debug_info_test/ngcc_dso_path.whitelist diff --git a/debug_info_test/allowlist.py b/debug_info_test/allowlist.py index 978b2370..9cf42af0 100644 --- a/debug_info_test/allowlist.py +++ b/debug_info_test/allowlist.py @@ -43,11 +43,10 @@ def prepare_allowlist(patterns): return re.compile('|'.join(patterns)) -# FIXME: s/whitelist/allowlist/ in the file extension. def load_allowlists(dirname): """Load allowlists under dirname. - An allowlist ends with .whitelist. + An allowlist ends with .allowlist. Args: dirname: path to the dir. @@ -56,7 +55,7 @@ def load_allowlists(dirname): A dictionary of 'filename' -> allowlist matcher. """ wlist = {} - for fn in glob.glob(os.path.join(dirname, '*.whitelist')): + for fn in glob.glob(os.path.join(dirname, '*.allowlist')): key = os.path.splitext(os.path.basename(fn))[0] with open(fn, 'r', encoding='utf-8') as f: patterns = f.read().splitlines() diff --git a/debug_info_test/exist_debug_info.allowlist b/debug_info_test/exist_debug_info.allowlist new file mode 100644 index 00000000..e0076fd6 --- /dev/null +++ b/debug_info_test/exist_debug_info.allowlist @@ -0,0 +1,13 @@ +# To hide existing failures that some DSOs may have no debug info. +.*/usr/bin/memdiskfind\.debug +.*/usr/bin/isohybrid\.debug +.*/usr/bin/gethostip\.debug +.*/usr/lib.*/libevent-.*\.so.*\.debug +.*/usr/lib.*/libcares\.so.*\.debug +.*/usr/lib64/libdcerpc-samr\.so.*\.debug +.*/usr/lib64/libGLESv2\.so.*\.debug +.*/usr/lib64/python2.7/site-packages/selenium/webdriver/firefox/.*/x_ignore_nofocus\.so\.debug +.*/lib.*/libiptc\.so.*\.debug +.*/autotest/.*\.debug +.*/opt/intel/fw_parser\.debug +# todos: diff --git a/debug_info_test/exist_debug_info.whitelist b/debug_info_test/exist_debug_info.whitelist deleted file mode 100644 index e0076fd6..00000000 --- a/debug_info_test/exist_debug_info.whitelist +++ /dev/null @@ -1,13 +0,0 @@ -# To hide existing failures that some DSOs may have no debug info. -.*/usr/bin/memdiskfind\.debug -.*/usr/bin/isohybrid\.debug -.*/usr/bin/gethostip\.debug -.*/usr/lib.*/libevent-.*\.so.*\.debug -.*/usr/lib.*/libcares\.so.*\.debug -.*/usr/lib64/libdcerpc-samr\.so.*\.debug -.*/usr/lib64/libGLESv2\.so.*\.debug -.*/usr/lib64/python2.7/site-packages/selenium/webdriver/firefox/.*/x_ignore_nofocus\.so\.debug -.*/lib.*/libiptc\.so.*\.debug -.*/autotest/.*\.debug -.*/opt/intel/fw_parser\.debug -# todos: diff --git a/debug_info_test/exist_producer.allowlist b/debug_info_test/exist_producer.allowlist new file mode 100644 index 00000000..ee75de72 --- /dev/null +++ b/debug_info_test/exist_producer.allowlist @@ -0,0 +1,8 @@ +# To hide existing failures that producer not in certain compiler units. +.*/opt/google/chrome/libosmesa\.so\.debug +.*/opt/google/chrome/chrome-sandbox\.debug +.*/opt/google/chrome/chrome\.debug +.*/opt/google/chrome/libosmesa\.so\.debug +.*/opt/google/chrome/nacl_helper\.debug +.*/usr/local/chromedriver/chromedriver\.debug +# todos: diff --git a/debug_info_test/exist_producer.whitelist b/debug_info_test/exist_producer.whitelist deleted file mode 100644 index ee75de72..00000000 --- a/debug_info_test/exist_producer.whitelist +++ /dev/null @@ -1,8 +0,0 @@ -# To hide existing failures that producer not in certain compiler units. -.*/opt/google/chrome/libosmesa\.so\.debug -.*/opt/google/chrome/chrome-sandbox\.debug -.*/opt/google/chrome/chrome\.debug -.*/opt/google/chrome/libosmesa\.so\.debug -.*/opt/google/chrome/nacl_helper\.debug -.*/usr/local/chromedriver/chromedriver\.debug -# todos: diff --git a/debug_info_test/ngcc_comp_path.allowlist b/debug_info_test/ngcc_comp_path.allowlist new file mode 100644 index 00000000..45c5b4a2 --- /dev/null +++ b/debug_info_test/ngcc_comp_path.allowlist @@ -0,0 +1,24 @@ +# CrOS packages are compiled in /tmp/$board/portage/${CATEGORY}/${P}. +# They can be matched by .*/portage/${CATEGORY}/${PN}-.* +.*/portage/chromeos-base/ec-utils-.* +.*/portage/dev-libs/elfutils-.* +.*/portage/dev-libs/libusb-.* +.*/portage/dev-util/perf-.* +.*/portage/media-libs/arc-cros-gralloc-.* +.*/portage/media-video/yavta-.* +.*/portage/sys-apps/cavium-n3fips-driver-.* +.*/portage/sys-apps/cavium-n3fips-tools-.* +.*/portage/sys-apps/busybox-.* +.*/portage/sys-apps/snaggletooth-drivers-.* +.*/portage/sys-boot/syslinux-.* +.*/portage/sys-kernel/chromeos-kernel-.* +.*/portage/sys-kernel/fzm-kmod.* +.*/portage/sys-kernel/kernel-.* +.*/portage/sys-kernel/.*-kernel.* +.*/portage/sys-kernel/ti-uio-module-drv-.* +.*/portage/sys-libs/gcc-libs-.* +# glibc and libgcc are built in different ways. +# and libstdc++. +.*/glibc-.*/ +.*/libgcc/.* +.*/libstdc\+\+-.* diff --git a/debug_info_test/ngcc_comp_path.whitelist b/debug_info_test/ngcc_comp_path.whitelist deleted file mode 100644 index 45c5b4a2..00000000 --- a/debug_info_test/ngcc_comp_path.whitelist +++ /dev/null @@ -1,24 +0,0 @@ -# CrOS packages are compiled in /tmp/$board/portage/${CATEGORY}/${P}. -# They can be matched by .*/portage/${CATEGORY}/${PN}-.* -.*/portage/chromeos-base/ec-utils-.* -.*/portage/dev-libs/elfutils-.* -.*/portage/dev-libs/libusb-.* -.*/portage/dev-util/perf-.* -.*/portage/media-libs/arc-cros-gralloc-.* -.*/portage/media-video/yavta-.* -.*/portage/sys-apps/cavium-n3fips-driver-.* -.*/portage/sys-apps/cavium-n3fips-tools-.* -.*/portage/sys-apps/busybox-.* -.*/portage/sys-apps/snaggletooth-drivers-.* -.*/portage/sys-boot/syslinux-.* -.*/portage/sys-kernel/chromeos-kernel-.* -.*/portage/sys-kernel/fzm-kmod.* -.*/portage/sys-kernel/kernel-.* -.*/portage/sys-kernel/.*-kernel.* -.*/portage/sys-kernel/ti-uio-module-drv-.* -.*/portage/sys-libs/gcc-libs-.* -# glibc and libgcc are built in different ways. -# and libstdc++. -.*/glibc-.*/ -.*/libgcc/.* -.*/libstdc\+\+-.* diff --git a/debug_info_test/ngcc_dso_path.allowlist b/debug_info_test/ngcc_dso_path.allowlist new file mode 100644 index 00000000..858465e0 --- /dev/null +++ b/debug_info_test/ngcc_dso_path.allowlist @@ -0,0 +1,23 @@ +# DSOs specified here are not CrOS packages compiled within CrOS SDK. +# CrOS packages should be allowlisted in *_comp_path.allowlist +# modules we don't care: +.*/binutils/.* +.*/binutils-bin/.* +.*/boot/u-boot\.debug +.*/boot/vmlinux\.debug +.*/uboot/u-boot\.debug +.*/firmware/u-boot\.debug +.*/libpepflashplayer\.so\.debug +.*/opt/punybench/bin/.* +.*/opt/scribe/grpc/_cython/cygrpc\.so\.debug +.*/telemetry_dep/.* +.*/unixbench/.* +.*/usr/bin/core_collector32\.debug +.*/usr/bin/kubelet\.debug +.*/usr/lib/libatomic.so.*\.debug +.*/usr/lib/librk_aiq\.so\.debug +.*/usr/local/build/autotest/client/site_tests/factory_Leds/src/ec_ctl\.debug +.*/opt/google/containers/android/.* +.*/libmali\.so.*\.debug +.*/pyelftools/examples/sample_exe64\.elf\.debug +# todos: diff --git a/debug_info_test/ngcc_dso_path.whitelist b/debug_info_test/ngcc_dso_path.whitelist deleted file mode 100644 index 858465e0..00000000 --- a/debug_info_test/ngcc_dso_path.whitelist +++ /dev/null @@ -1,23 +0,0 @@ -# DSOs specified here are not CrOS packages compiled within CrOS SDK. -# CrOS packages should be allowlisted in *_comp_path.allowlist -# modules we don't care: -.*/binutils/.* -.*/binutils-bin/.* -.*/boot/u-boot\.debug -.*/boot/vmlinux\.debug -.*/uboot/u-boot\.debug -.*/firmware/u-boot\.debug -.*/libpepflashplayer\.so\.debug -.*/opt/punybench/bin/.* -.*/opt/scribe/grpc/_cython/cygrpc\.so\.debug -.*/telemetry_dep/.* -.*/unixbench/.* -.*/usr/bin/core_collector32\.debug -.*/usr/bin/kubelet\.debug -.*/usr/lib/libatomic.so.*\.debug -.*/usr/lib/librk_aiq\.so\.debug -.*/usr/local/build/autotest/client/site_tests/factory_Leds/src/ec_ctl\.debug -.*/opt/google/containers/android/.* -.*/libmali\.so.*\.debug -.*/pyelftools/examples/sample_exe64\.elf\.debug -# todos: -- cgit v1.2.3 From dc996b9cd333b330ca79985a93f9a71995676a71 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 17 Jun 2020 15:27:24 -0700 Subject: compiler_wrapper: redirect clang crash dignoses Redirect all diagnoses of clang crashes to a dedicated directory using fcrash-diagnostics-dir so we can upload these files to the cloud. The flag was added to clangPostFlags to overwite redirection done on package level. BUG=chromium:1056904 TEST=None Change-Id: I78bfc77d7f3af8556b4308f2e71407d627627747 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2251038 Reviewed-by: Manoj Gupta Commit-Queue: Jian Cai Tested-by: Jian Cai --- compiler_wrapper/config.go | 3 +++ compiler_wrapper/testdata/cros_clang_host_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_host_wrapper.json | 1 + .../cros_clang_host_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_path.json | 12 ++++++++++++ .../cros_clang_host_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_clang_host_golden/clang_specific_args.json | 7 +++++++ .../testdata/cros_clang_host_golden/clangtidy.json | 8 ++++++++ .../cros_clang_host_golden/force_disable_werror.json | 5 +++++ compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../cros_hardened_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_hardened_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_hardened_golden/clang_specific_args.json | 7 +++++++ .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++++++ .../testdata/cros_hardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_noccache_golden/bisect.json | 3 +++ .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_noccache_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_nonhardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_nonhardened_golden/clang_path.json | 12 ++++++++++++ .../cros_nonhardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../cros_nonhardened_golden/clang_specific_args.json | 7 +++++++ .../clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_nonhardened_golden/clangtidy.json | 8 ++++++++ .../cros_nonhardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_nonhardened_golden/gcc_clang_syntax.json | 4 ++++ 40 files changed, 271 insertions(+) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 3c3668df..b11c6808 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -134,6 +134,7 @@ var crosHardenedConfig = &config{ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", @@ -164,6 +165,7 @@ var crosNonHardenedConfig = &config{ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", @@ -199,6 +201,7 @@ var crosHostConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index 606fecda..f7a83659 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -36,6 +36,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -84,6 +85,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -135,6 +137,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index 7f45584a..fc20522c 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -27,6 +27,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -62,6 +63,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -97,6 +99,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -132,6 +135,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -167,6 +171,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -202,6 +207,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -237,6 +243,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -272,6 +279,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -307,6 +315,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index afb0329e..38905dbe 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -26,6 +26,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index 05b0ff96..d9b5978a 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -26,6 +26,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -60,6 +61,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -94,6 +96,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -128,6 +131,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -162,6 +166,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -196,6 +201,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -230,6 +236,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -264,6 +271,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -298,6 +306,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index f7924a06..6c3d029f 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -26,6 +26,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,6 +64,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -100,6 +102,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -137,6 +140,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -181,6 +185,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -230,6 +235,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -279,6 +285,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -318,6 +325,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -352,6 +360,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -386,6 +395,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -420,6 +430,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -457,6 +468,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 11ebc821..899b77fe 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -65,6 +66,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -102,6 +104,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -139,6 +142,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -175,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -213,6 +218,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -251,6 +257,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -287,6 +294,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 7a724c88..e1408c4e 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -37,6 +37,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -72,6 +73,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion" @@ -108,6 +110,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion" @@ -144,6 +147,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -180,6 +184,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -216,6 +221,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -252,6 +258,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index b4cd44c2..5e05d227 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -42,6 +42,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,6 +64,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -114,6 +116,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -135,6 +138,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -188,6 +192,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -212,6 +217,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -266,6 +272,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -287,6 +294,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 66e58dc9..3a77e21d 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -29,6 +29,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -66,6 +67,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -89,6 +91,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", @@ -130,6 +133,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -153,6 +157,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 5b95cdb7..45c36e87 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -38,6 +38,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index aa083d70..b4e0f9ce 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -29,6 +29,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -131,6 +133,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -182,6 +185,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -284,6 +289,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -386,6 +393,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -437,6 +445,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 257c0a05..09e6d846 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -77,6 +78,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -126,6 +128,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -175,6 +178,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -224,6 +228,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -273,6 +278,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -322,6 +328,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,6 +378,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +428,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index b9edc49d..4146d2cf 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index 2d70dfbf..a1d62535 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -30,6 +30,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,6 +82,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -183,6 +186,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -285,6 +290,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -337,6 +343,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -387,6 +394,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 50f71a6f..48bb8288 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -39,6 +39,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -89,6 +90,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -140,6 +142,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -191,6 +194,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -242,6 +246,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -293,6 +298,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -344,6 +350,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index b690e3ed..e925a784 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -63,6 +63,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -115,6 +116,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -160,6 +162,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -208,6 +211,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "-fno-stack-protector", @@ -257,6 +261,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-mthumb", "-fno-stack-protector", @@ -305,6 +310,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index 26abab87..b8b786db 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 61a63a37..0ee22133 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index a37725c0..d571c02e 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 5b95cdb7..45c36e87 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -38,6 +38,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index b9edc49d..4146d2cf 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index 26abab87..b8b786db 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 61a63a37..0ee22133 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index a37725c0..d571c02e 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index e9bc3661..dfe8c0c0 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -37,6 +37,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -94,6 +95,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -154,6 +156,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index c21d6198..c8a0e101 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -27,6 +27,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -119,6 +121,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,6 +168,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,6 +222,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -277,6 +282,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -383,6 +390,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,6 +434,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +478,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -512,6 +522,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -558,6 +569,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index 26abab87..b8b786db 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index ce35f311..9700b128 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -30,6 +30,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -76,6 +77,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -108,6 +110,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -158,6 +161,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -190,6 +194,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index f716dde3..3b31be3c 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -96,6 +97,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +166,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -216,6 +219,7 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index ce83cd72..4002d2f7 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -34,6 +34,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -86,6 +87,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -141,6 +143,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index db5bea28..3946b2b1 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -25,6 +25,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -67,6 +68,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -109,6 +111,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -151,6 +154,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -194,6 +198,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -236,6 +241,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -279,6 +285,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -322,6 +329,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -364,6 +372,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index 8b5d7088..d0e8c521 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -24,6 +24,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -64,6 +65,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -104,6 +106,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -144,6 +147,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -185,6 +189,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -225,6 +230,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -266,6 +272,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -307,6 +314,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -347,6 +355,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index 418f9d62..b224b952 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -24,6 +24,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -67,6 +68,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -110,6 +112,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -153,6 +156,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -203,6 +207,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -258,6 +263,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -308,6 +314,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -353,6 +360,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -393,6 +401,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -433,6 +442,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -473,6 +483,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -516,6 +527,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 54a3268c..609bec35 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -26,6 +26,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -69,6 +70,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -112,6 +114,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -155,6 +158,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -197,6 +201,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -241,6 +246,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -285,6 +291,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -327,6 +334,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index 4a30d74e..e84e1491 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -35,6 +35,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -76,6 +77,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", @@ -118,6 +120,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", @@ -160,6 +163,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -202,6 +206,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -244,6 +249,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -286,6 +292,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index 8b5c8b90..9c90d35b 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -55,6 +55,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -98,6 +99,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -134,6 +136,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -175,6 +178,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fno-stack-protector", "-D__KERNEL__", "main.cc", @@ -218,6 +222,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-mthumb", "-fno-stack-protector", "-D__KERNEL__", @@ -261,6 +266,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index cf30514c..c340e895 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -39,6 +39,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -60,6 +61,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -111,6 +113,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -133,6 +136,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -186,6 +190,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -211,6 +216,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -265,6 +271,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -287,6 +294,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 7aad322f..2ddb3514 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -27,6 +27,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -70,6 +71,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -99,6 +101,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -146,6 +149,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -175,6 +179,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index 76d81fa9..d21d2179 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -24,6 +24,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -84,6 +85,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -139,6 +141,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -182,6 +185,7 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", + "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", -- cgit v1.2.3 From 8078daaf7a0370d85546210425bbde7b507cfebf Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Fri, 26 Jun 2020 10:36:37 -0700 Subject: cros_utils: clean up unused file/code As an effort to fix up naming in crbug.com/1099035, we can just remove the unused code and variable in these two files. BUG=chromium:1099035 TEST=buildbot_utils_unittest.py pass after the removal. Change-Id: Id4c12aeab9bf44b67e58b11c4297ceafe441421d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2270723 Reviewed-by: Manoj Gupta Reviewed-by: Caroline Tice Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- cros_utils/buildbot_json.py | 1534 --------------------------------- cros_utils/buildbot_utils_unittest.py | 12 - 2 files changed, 1546 deletions(-) delete mode 100755 cros_utils/buildbot_json.py diff --git a/cros_utils/buildbot_json.py b/cros_utils/buildbot_json.py deleted file mode 100755 index 08a8ae05..00000000 --- a/cros_utils/buildbot_json.py +++ /dev/null @@ -1,1534 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# 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. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -# NOTE: This file is NOT under GPL. See above. - -"""Queries buildbot through the json interface. -""" - -from __future__ import print_function - -__author__ = 'maruel@chromium.org' -__version__ = '1.2' - -import code -import datetime -import functools -import json - -# Pylint recommends we use "from chromite.lib import cros_logging as logging". -# Chromite specific policy message, we want to keep using the standard logging. -# pylint: disable=cros-logging-import -import logging - -# pylint: disable=deprecated-module -import optparse - -import time -import sys -import urllib.error -import urllib.parse -import urllib.request - -try: - from natsort import natsorted -except ImportError: - # natsorted is a simple helper to sort "naturally", e.g. "vm40" is sorted - # after "vm7". Defaults to normal sorting. - natsorted = sorted - -# These values are buildbot constants used for Build and BuildStep. -# This line was copied from master/buildbot/status/builder.py. -SUCCESS, WARNINGS, FAILURE, SKIPPED, EXCEPTION, RETRY = list(range(6)) - -## Generic node caching code. - - -class Node(object): - """Root class for all nodes in the graph. - - Provides base functionality for any node in the graph, independent if it has - children or not or if its content can be addressed through an url or needs to - be fetched as part of another node. - - self.printable_attributes is only used for self documentation and for str() - implementation. - """ - printable_attributes = [] - - def __init__(self, parent, url): - self.printable_attributes = self.printable_attributes[:] - if url: - self.printable_attributes.append('url') - url = url.rstrip('/') - if parent is not None: - self.printable_attributes.append('parent') - self.url = url - self.parent = parent - - def __str__(self): - return self.to_string() - - def __repr__(self): - """Embeds key if present.""" - key = getattr(self, 'key', None) - if key is not None: - return '<%s key=%s>' % (self.__class__.__name__, key) - cached_keys = getattr(self, 'cached_keys', None) - if cached_keys is not None: - return '<%s keys=%s>' % (self.__class__.__name__, cached_keys) - return super(Node, self).__repr__() - - def to_string(self, maximum=100): - out = ['%s:' % self.__class__.__name__] - assert not 'printable_attributes' in self.printable_attributes - - def limit(txt): - txt = str(txt) - if maximum > 0: - if len(txt) > maximum + 2: - txt = txt[:maximum] + '...' - return txt - - for k in sorted(self.printable_attributes): - if k == 'parent': - # Avoid infinite recursion. - continue - out.append(limit(' %s: %r' % (k, getattr(self, k)))) - return '\n'.join(out) - - def refresh(self): - """Refreshes the data.""" - self.discard() - return self.cache() - - def cache(self): # pragma: no cover - """Caches the data.""" - raise NotImplementedError() - - def discard(self): # pragma: no cover - """Discards cached data. - - Pretty much everything is temporary except completed Build. - """ - raise NotImplementedError() - - -class AddressableBaseDataNode(Node): # pylint: disable=W0223 - """A node that contains a dictionary of data that can be fetched with an url. - - The node is directly addressable. It also often can be fetched by the parent. - """ - printable_attributes = Node.printable_attributes + ['data'] - - def __init__(self, parent, url, data): - super(AddressableBaseDataNode, self).__init__(parent, url) - self._data = data - - @property - def cached_data(self): - return self._data - - @property - def data(self): - self.cache() - return self._data - - def cache(self): - if self._data is None: - self._data = self._readall() - return True - return False - - def discard(self): - self._data = None - - def read(self, suburl): - assert self.url, self.__class__.__name__ - url = self.url - if suburl: - url = '%s/%s' % (self.url, suburl) - return self.parent.read(url) - - def _readall(self): - return self.read('') - - -class AddressableDataNode(AddressableBaseDataNode): # pylint: disable=W0223 - """Automatically encodes the url.""" - - def __init__(self, parent, url, data): - super(AddressableDataNode, self).__init__(parent, urllib.parse.quote(url), - data) - - -class NonAddressableDataNode(Node): # pylint: disable=W0223 - """A node that cannot be addressed by an unique url. - - The data comes directly from the parent. - """ - - def __init__(self, parent, subkey): - super(NonAddressableDataNode, self).__init__(parent, None) - self.subkey = subkey - - @property - def cached_data(self): - if self.parent.cached_data is None: - return None - return self.parent.cached_data[self.subkey] - - @property - def data(self): - return self.parent.data[self.subkey] - - def cache(self): - self.parent.cache() - - def discard(self): # pragma: no cover - """Avoid invalid state when parent recreate the object.""" - raise AttributeError('Call parent discard() instead') - - -class VirtualNodeList(Node): - """Base class for every node that has children. - - Adds partial supports for keys and iterator functionality. 'key' can be a - string or a int. Not to be used directly. - """ - printable_attributes = Node.printable_attributes + ['keys'] - - def __init__(self, parent, url): - super(VirtualNodeList, self).__init__(parent, url) - # Keeps the keys independently when ordering is needed. - self._is_cached = False - self._has_keys_cached = False - - def __contains__(self, key): - """Enables 'if i in obj:'.""" - return key in self.keys - - def __iter__(self): - """Enables 'for i in obj:'. It returns children.""" - self.cache_keys() - for key in self.keys: - yield self[key] - - def __len__(self): - """Enables 'len(obj)' to get the number of childs.""" - return len(self.keys) - - def discard(self): - """Discards data. - - The default behavior is to not invalidate cached keys. The only place where - keys need to be invalidated is with Builds. - """ - self._is_cached = False - self._has_keys_cached = False - - @property - def cached_children(self): # pragma: no cover - """Returns an iterator over the children that are cached.""" - raise NotImplementedError() - - @property - def cached_keys(self): # pragma: no cover - raise NotImplementedError() - - @property - def keys(self): # pragma: no cover - """Returns the keys for every children.""" - raise NotImplementedError() - - def __getitem__(self, key): # pragma: no cover - """Returns a child, without fetching its data. - - The children could be invalid since no verification is done. - """ - raise NotImplementedError() - - def cache(self): # pragma: no cover - """Cache all the children.""" - raise NotImplementedError() - - def cache_keys(self): # pragma: no cover - """Cache all children's keys.""" - raise NotImplementedError() - - -class NodeList(VirtualNodeList): # pylint: disable=W0223 - """Adds a cache of the keys.""" - - def __init__(self, parent, url): - super(NodeList, self).__init__(parent, url) - self._keys = [] - - @property - def cached_keys(self): - return self._keys - - @property - def keys(self): - self.cache_keys() - return self._keys - - -class NonAddressableNodeList(VirtualNodeList): # pylint: disable=W0223 - """A node that contains children but retrieves all its data from its parent. - - I.e. there's no url to get directly this data. - """ - # Child class object for children of this instance. For example, BuildSteps - # has BuildStep children. - _child_cls = None - - def __init__(self, parent, subkey): - super(NonAddressableNodeList, self).__init__(parent, None) - self.subkey = subkey - assert (not isinstance(self._child_cls, NonAddressableDataNode) and - issubclass(self._child_cls, NonAddressableDataNode)), ( - self._child_cls.__name__) - - @property - def cached_children(self): - if self.parent.cached_data is not None: - for i in range(len(self.parent.cached_data[self.subkey])): - yield self[i] - - @property - def cached_data(self): - if self.parent.cached_data is None: - return None - return self.parent.data.get(self.subkey, None) - - @property - def cached_keys(self): - if self.parent.cached_data is None: - return None - return list(range(len(self.parent.data.get(self.subkey, [])))) - - @property - def data(self): - return self.parent.data[self.subkey] - - def cache(self): - self.parent.cache() - - def cache_keys(self): - self.parent.cache() - - def discard(self): # pragma: no cover - """Do not call. - - Avoid infinite recursion by having the caller calls the parent's - discard() explicitely. - """ - raise AttributeError('Call parent discard() instead') - - def __iter__(self): - """Enables 'for i in obj:'. It returns children.""" - if self.data: - for i in range(len(self.data)): - yield self[i] - - def __getitem__(self, key): - """Doesn't cache the value, it's not needed. - - TODO(maruel): Cache? - """ - if isinstance(key, int) and key < 0: - key = len(self.data) + key - # pylint: disable=E1102 - return self._child_cls(self, key) - - -class AddressableNodeList(NodeList): - """A node that has children that can be addressed with an url.""" - - # Child class object for children of this instance. For example, Builders has - # Builder children and Builds has Build children. - _child_cls = None - - def __init__(self, parent, url): - super(AddressableNodeList, self).__init__(parent, url) - self._cache = {} - assert (not isinstance(self._child_cls, AddressableDataNode) and - issubclass(self._child_cls, AddressableDataNode)), ( - self._child_cls.__name__) - - @property - def cached_children(self): - for item in self._cache.values(): - if item.cached_data is not None: - yield item - - @property - def cached_keys(self): - return list(self._cache.keys()) - - def __getitem__(self, key): - """Enables 'obj[i]'.""" - if self._has_keys_cached and not key in self._keys: - raise KeyError(key) - - if not key in self._cache: - # Create an empty object. - self._create_obj(key, None) - return self._cache[key] - - def cache(self): - if not self._is_cached: - data = self._readall() - for key in sorted(data): - self._create_obj(key, data[key]) - self._is_cached = True - self._has_keys_cached = True - - def cache_partial(self, children): - """Caches a partial number of children. - - This method is more efficient since it does a single request for all the - children instead of one request per children. - - It only grab objects not already cached. - """ - # pylint: disable=W0212 - if not self._is_cached: - to_fetch = [ - child for child in children - if not (child in self._cache and self._cache[child].cached_data) - ] - if to_fetch: - # Similar to cache(). The only reason to sort is to simplify testing. - params = '&'.join( - 'select=%s' % urllib.parse.quote(str(v)) for v in sorted(to_fetch)) - data = self.read('?' + params) - for key in sorted(data): - self._create_obj(key, data[key]) - - def cache_keys(self): - """Implement to speed up enumeration. Defaults to call cache().""" - if not self._has_keys_cached: - self.cache() - assert self._has_keys_cached - - def discard(self): - """Discards temporary children.""" - super(AddressableNodeList, self).discard() - for v in self._cache.values(): - v.discard() - - def read(self, suburl): - assert self.url, self.__class__.__name__ - url = self.url - if suburl: - url = '%s/%s' % (self.url, suburl) - return self.parent.read(url) - - def _create_obj(self, key, data): - """Creates an object of type self._child_cls.""" - # pylint: disable=E1102 - obj = self._child_cls(self, key, data) - # obj.key and key may be different. - # No need to overide cached data with None. - if data is not None or obj.key not in self._cache: - self._cache[obj.key] = obj - if obj.key not in self._keys: - self._keys.append(obj.key) - - def _readall(self): - return self.read('') - - -class SubViewNodeList(VirtualNodeList): # pylint: disable=W0223 - """A node that shows a subset of children that comes from another structure. - - The node is not addressable. - - E.g. the keys are retrieved from parent but the actual data comes from - virtual_parent. - """ - - def __init__(self, parent, virtual_parent, subkey): - super(SubViewNodeList, self).__init__(parent, None) - self.subkey = subkey - self.virtual_parent = virtual_parent - assert isinstance(self.parent, AddressableDataNode) - assert isinstance(self.virtual_parent, NodeList) - - @property - def cached_children(self): - if self.parent.cached_data is not None: - for item in self.keys: - if item in self.virtual_parent.keys: - child = self[item] - if child.cached_data is not None: - yield child - - @property - def cached_keys(self): - return (self.parent.cached_data or {}).get(self.subkey, []) - - @property - def keys(self): - self.cache_keys() - return self.parent.data.get(self.subkey, []) - - def cache(self): - """Batch request for each child in a single read request.""" - if not self._is_cached: - self.virtual_parent.cache_partial(self.keys) - self._is_cached = True - - def cache_keys(self): - if not self._has_keys_cached: - self.parent.cache() - self._has_keys_cached = True - - def discard(self): - if self.parent.cached_data is not None: - for child in self.virtual_parent.cached_children: - if child.key in self.keys: - child.discard() - self.parent.discard() - super(SubViewNodeList, self).discard() - - def __getitem__(self, key): - """Makes sure the key is in our key but grab it from the virtual parent.""" - return self.virtual_parent[key] - - def __iter__(self): - self.cache() - return super(SubViewNodeList, self).__iter__() - - -# Buildbot-specific code - - -class Slave(AddressableDataNode): - """Buildbot slave class.""" - printable_attributes = AddressableDataNode.printable_attributes + [ - 'name', - 'key', - 'connected', - 'version', - ] - - def __init__(self, parent, name, data): - super(Slave, self).__init__(parent, name, data) - self.name = name - self.key = self.name - # TODO(maruel): Add SlaveBuilders and a 'builders' property. - # TODO(maruel): Add a 'running_builds' property. - - @property - def connected(self): - return self.data.get('connected', False) - - @property - def version(self): - return self.data.get('version') - - -class Slaves(AddressableNodeList): - """Buildbot slaves.""" - _child_cls = Slave - printable_attributes = AddressableNodeList.printable_attributes + ['names'] - - def __init__(self, parent): - super(Slaves, self).__init__(parent, 'slaves') - - @property - def names(self): - return self.keys - - -class BuilderSlaves(SubViewNodeList): - """Similar to Slaves but only list slaves connected to a specific builder.""" - printable_attributes = SubViewNodeList.printable_attributes + ['names'] - - def __init__(self, parent): - super(BuilderSlaves, self).__init__(parent, parent.parent.parent.slaves, - 'slaves') - - @property - def names(self): - return self.keys - - -class BuildStep(NonAddressableDataNode): - """Class for a buildbot build step.""" - printable_attributes = NonAddressableDataNode.printable_attributes + [ - 'name', - 'number', - 'start_time', - 'end_time', - 'duration', - 'is_started', - 'is_finished', - 'is_running', - 'result', - 'simplified_result', - ] - - def __init__(self, parent, number): - """Pre-loaded, since the data is retrieved via the Build object.""" - assert isinstance(number, int) - super(BuildStep, self).__init__(parent, number) - self.number = number - - @property - def start_time(self): - if self.data.get('times'): - return int(round(self.data['times'][0])) - - @property - def end_time(self): - times = self.data.get('times') - if times and len(times) == 2 and times[1]: - return int(round(times[1])) - - @property - def duration(self): - if self.start_time: - return (self.end_time or int(round(time.time()))) - self.start_time - - @property - def name(self): - return self.data['name'] - - @property - def is_started(self): - return self.data.get('isStarted', False) - - @property - def is_finished(self): - return self.data.get('isFinished', False) - - @property - def is_running(self): - return self.is_started and not self.is_finished - - @property - def result(self): - result = self.data.get('results') - if result is None: - # results may be 0, in that case with filter=1, the value won't be - # present. - if self.data.get('isFinished'): - result = self.data.get('results', 0) - while isinstance(result, list): - result = result[0] - return result - - @property - def simplified_result(self): - """Returns a simplified 3 state value, True, False or None.""" - result = self.result - if result in (SUCCESS, WARNINGS): - return True - elif result in (FAILURE, EXCEPTION, RETRY): - return False - assert result in (None, SKIPPED), (result, self.data) - return None - - -class BuildSteps(NonAddressableNodeList): - """Duplicates keys to support lookup by both step number and step name.""" - printable_attributes = NonAddressableNodeList.printable_attributes + [ - 'failed', - ] - _child_cls = BuildStep - - def __init__(self, parent): - """Pre-loaded, since the data is retrieved via the Build object.""" - super(BuildSteps, self).__init__(parent, 'steps') - - @property - def keys(self): - """Returns the steps name in order.""" - return [i['name'] for i in self.data or []] - - @property - def failed(self): - """Shortcuts that lists the step names of steps that failed.""" - return [step.name for step in self if step.simplified_result is False] - - def __getitem__(self, key): - """Accept step name in addition to index number.""" - if isinstance(key, str): - # It's a string, try to find the corresponding index. - for i, step in enumerate(self.data): - if step['name'] == key: - key = i - break - else: - raise KeyError(key) - return super(BuildSteps, self).__getitem__(key) - - -class Build(AddressableDataNode): - """Buildbot build info.""" - printable_attributes = AddressableDataNode.printable_attributes + [ - 'key', - 'number', - 'steps', - 'blame', - 'reason', - 'revision', - 'result', - 'simplified_result', - 'start_time', - 'end_time', - 'duration', - 'slave', - 'properties', - 'completed', - ] - - def __init__(self, parent, key, data): - super(Build, self).__init__(parent, str(key), data) - self.number = int(key) - self.key = self.number - self.steps = BuildSteps(self) - - @property - def blame(self): - return self.data.get('blame', []) - - @property - def builder(self): - """Returns the Builder object. - - Goes up the hierarchy to find the Buildbot.builders[builder] instance. - """ - return self.parent.parent.parent.parent.builders[self.data['builderName']] - - @property - def start_time(self): - if self.data.get('times'): - return int(round(self.data['times'][0])) - - @property - def end_time(self): - times = self.data.get('times') - if times and len(times) == 2 and times[1]: - return int(round(times[1])) - - @property - def duration(self): - if self.start_time: - return (self.end_time or int(round(time.time()))) - self.start_time - - @property - def eta(self): - return self.data.get('eta', 0) - - @property - def completed(self): - return self.data.get('currentStep') is None - - @property - def properties(self): - return self.data.get('properties', []) - - @property - def reason(self): - return self.data.get('reason') - - @property - def result(self): - result = self.data.get('results') - while isinstance(result, list): - result = result[0] - if result is None and self.steps: - # results may be 0, in that case with filter=1, the value won't be - # present. - result = self.steps[-1].result - return result - - @property - def revision(self): - return self.data.get('sourceStamp', {}).get('revision') - - @property - def simplified_result(self): - """Returns a simplified 3 state value, True, False or None.""" - result = self.result - if result in (SUCCESS, WARNINGS, SKIPPED): - return True - elif result in (FAILURE, EXCEPTION, RETRY): - return False - assert result is None, (result, self.data) - return None - - @property - def slave(self): - """Returns the Slave object. - - Goes up the hierarchy to find the Buildbot.slaves[slave] instance. - """ - return self.parent.parent.parent.parent.slaves[self.data['slave']] - - def discard(self): - """Completed Build isn't discarded.""" - if self._data and self.result is None: - assert not self.steps or not self.steps[-1].data.get('isFinished') - self._data = None - - -class CurrentBuilds(SubViewNodeList): - """Lists of the current builds.""" - - def __init__(self, parent): - super(CurrentBuilds, self).__init__(parent, parent.builds, 'currentBuilds') - - -class PendingBuilds(AddressableDataNode): - """List of the pending builds.""" - - def __init__(self, parent): - super(PendingBuilds, self).__init__(parent, 'pendingBuilds', None) - - -class Builds(AddressableNodeList): - """Supports iteration. - - Recommends using .cache() to speed up if a significant number of builds are - iterated over. - """ - _child_cls = Build - - def __init__(self, parent): - super(Builds, self).__init__(parent, 'builds') - - def __getitem__(self, key): - """Support for negative reference and enable retrieving non-cached builds. - - e.g. -1 is the last build, -2 is the previous build before the last one. - """ - key = int(key) - if key < 0: - # Convert negative to positive build number. - self.cache_keys() - # Since the negative value can be outside of the cache keys range, use the - # highest key value and calculate from it. - key = max(self._keys) + key + 1 - - if key not in self._cache: - # Create an empty object. - self._create_obj(key, None) - return self._cache[key] - - def __iter__(self): - """Returns cached Build objects in reversed order. - - The most recent build is returned first and then in reverse chronological - order, up to the oldest cached build by the server. Older builds can be - accessed but will trigger significantly more I/O so they are not included by - default in the iteration. - - To access the older builds, use self.iterall() instead. - """ - self.cache() - return reversed(list(self._cache.values())) - - def iterall(self): - """Returns Build objects in decreasing order unbounded up to build 0. - - The most recent build is returned first and then in reverse chronological - order. Older builds can be accessed and will trigger significantly more I/O - so use this carefully. - """ - # Only cache keys here. - self.cache_keys() - if self._keys: - for i in range(max(self._keys), -1, -1): - yield self[i] - - def cache_keys(self): - """Grabs the keys (build numbers) from the builder.""" - if not self._has_keys_cached: - for i in self.parent.data.get('cachedBuilds', []): - i = int(i) - self._cache.setdefault(i, Build(self, i, None)) - if i not in self._keys: - self._keys.append(i) - self._has_keys_cached = True - - def discard(self): - super(Builds, self).discard() - # Can't keep keys. - self._has_keys_cached = False - - def _readall(self): - return self.read('_all') - - -class Builder(AddressableDataNode): - """Builder status.""" - printable_attributes = AddressableDataNode.printable_attributes + [ - 'name', - 'key', - 'builds', - 'slaves', - 'pending_builds', - 'current_builds', - ] - - def __init__(self, parent, name, data): - super(Builder, self).__init__(parent, name, data) - self.name = name - self.key = name - self.builds = Builds(self) - self.slaves = BuilderSlaves(self) - self.current_builds = CurrentBuilds(self) - self.pending_builds = PendingBuilds(self) - - def discard(self): - super(Builder, self).discard() - self.builds.discard() - self.slaves.discard() - self.current_builds.discard() - - -class Builders(AddressableNodeList): - """Root list of builders.""" - _child_cls = Builder - - def __init__(self, parent): - super(Builders, self).__init__(parent, 'builders') - - -class Buildbot(AddressableBaseDataNode): - """This object should be recreated on a master restart as it caches data.""" - # Throttle fetches to not kill the server. - auto_throttle = None - printable_attributes = AddressableDataNode.printable_attributes + [ - 'slaves', - 'builders', - 'last_fetch', - ] - - def __init__(self, url): - super(Buildbot, self).__init__(None, url.rstrip('/') + '/json', None) - self._builders = Builders(self) - self._slaves = Slaves(self) - self.last_fetch = None - - @property - def builders(self): - return self._builders - - @property - def slaves(self): - return self._slaves - - def discard(self): - """Discards information about Builders and Slaves.""" - super(Buildbot, self).discard() - self._builders.discard() - self._slaves.discard() - - def read(self, suburl): - if self.auto_throttle: - if self.last_fetch: - delta = datetime.datetime.utcnow() - self.last_fetch - remaining = (datetime.timedelta(seconds=self.auto_throttle) - delta) - if remaining > datetime.timedelta(seconds=0): - logging.debug('Sleeping for %ss', remaining) - time.sleep(remaining.seconds) - self.last_fetch = datetime.datetime.utcnow() - url = '%s/%s' % (self.url, suburl) - if '?' in url: - url += '&filter=1' - else: - url += '?filter=1' - logging.info('read(%s)', suburl) - channel = urllib.request.urlopen(url) - data = channel.read() - try: - return json.loads(data) - except ValueError: - if channel.getcode() >= 400: - # Convert it into an HTTPError for easier processing. - raise urllib.error.HTTPError(url, channel.getcode(), - '%s:\n%s' % (url, data), channel.headers, - None) - raise - - def _readall(self): - return self.read('project') - - -# Controller code - - -def usage(more): - - def hook(fn): - fn.func_usage_more = more - return fn - - return hook - - -def need_buildbot(fn): - """Post-parse args to create a buildbot object.""" - - @functools.wraps(fn) - def hook(parser, args, *extra_args, **kwargs): - old_parse_args = parser.parse_args - - def new_parse_args(args): - options, args = old_parse_args(args) - if len(args) < 1: - parser.error('Need to pass the root url of the buildbot') - url = args.pop(0) - if not url.startswith('http'): - url = 'http://' + url - buildbot = Buildbot(url) - buildbot.auto_throttle = options.throttle - return options, args, buildbot - - parser.parse_args = new_parse_args - # Call the original function with the modified parser. - return fn(parser, args, *extra_args, **kwargs) - - hook.func_usage_more = '[options] ' - return hook - - -@need_buildbot -def CMDpending(parser, args): - """Lists pending jobs.""" - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - if not options.builders: - options.builders = buildbot.builders.keys - for builder in options.builders: - builder = buildbot.builders[builder] - pending_builds = builder.data.get('pendingBuilds', 0) - if not pending_builds: - continue - print('Builder %s: %d' % (builder.name, pending_builds)) - if not options.quiet: - for pending in builder.pending_builds.data: - if 'revision' in pending['source']: - print(' revision: %s' % pending['source']['revision']) - for change in pending['source']['changes']: - print(' change:') - print(' comment: %r' % change['comments'][:50]) - print(' who: %s' % change['who']) - return 0 - - -@usage('[options] [commands] ...') -@need_buildbot -def CMDrun(parser, args): - """Runs commands passed as parameters. - - When passing commands on the command line, each command will be run as if it - was on its own line. - """ - parser.add_option('-f', '--file', help='Read script from file') - parser.add_option( - '-i', dest='use_stdin', action='store_true', help='Read script on stdin') - # Variable 'buildbot' is not used directly. - # pylint: disable=W0612 - options, args, _ = parser.parse_args(args) - if (bool(args) + bool(options.use_stdin) + bool(options.file)) != 1: - parser.error('Need to pass only one of: , -f or -i') - if options.use_stdin: - cmds = sys.stdin.read() - elif options.file: - cmds = open(options.file).read() - else: - cmds = '\n'.join(args) - compiled = compile(cmds, '', 'exec') - # pylint: disable=eval-used - eval(compiled, globals(), locals()) - return 0 - - -@need_buildbot -def CMDinteractive(parser, args): - """Runs an interactive shell to run queries.""" - _, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - prompt = ('Buildbot interactive console for "%s".\n' - "Hint: Start with typing: 'buildbot.printable_attributes' or " - "'print str(buildbot)' to explore.") % buildbot.url[:-len('/json')] - local_vars = {'buildbot': buildbot, 'b': buildbot} - code.interact(prompt, None, local_vars) - - -@need_buildbot -def CMDidle(parser, args): - """Lists idle slaves.""" - return find_idle_busy_slaves(parser, args, True) - - -@need_buildbot -def CMDbusy(parser, args): - """Lists idle slaves.""" - return find_idle_busy_slaves(parser, args, False) - - -@need_buildbot -def CMDdisconnected(parser, args): - """Lists disconnected slaves.""" - _, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - for slave in buildbot.slaves: - if not slave.connected: - print(slave.name) - return 0 - - -def find_idle_busy_slaves(parser, args, show_idle): - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - parser.add_option( - '-s', - '--slave', - dest='slaves', - action='append', - default=[], - help='Slaves to filter on') - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - if not options.builders: - options.builders = buildbot.builders.keys - for builder in options.builders: - builder = buildbot.builders[builder] - if options.slaves: - # Only the subset of slaves connected to the builder. - slaves = list(set(options.slaves).intersection(set(builder.slaves.names))) - if not slaves: - continue - else: - slaves = builder.slaves.names - busy_slaves = [build.slave.name for build in builder.current_builds] - if show_idle: - slaves = natsorted(set(slaves) - set(busy_slaves)) - else: - slaves = natsorted(set(slaves) & set(busy_slaves)) - if options.quiet: - for slave in slaves: - print(slave) - else: - if slaves: - print('Builder %s: %s' % (builder.name, ', '.join(slaves))) - return 0 - - -def last_failure(buildbot, - builders=None, - slaves=None, - steps=None, - no_cache=False): - """Returns Build object with last failure with the specific filters.""" - builders = builders or buildbot.builders.keys - for builder in builders: - builder = buildbot.builders[builder] - if slaves: - # Only the subset of slaves connected to the builder. - builder_slaves = list(set(slaves).intersection(set(builder.slaves.names))) - if not builder_slaves: - continue - else: - builder_slaves = builder.slaves.names - - if not no_cache and len(builder.slaves) > 2: - # Unless you just want the last few builds, it's often faster to - # fetch the whole thing at once, at the cost of a small hickup on - # the buildbot. - # TODO(maruel): Cache only N last builds or all builds since - # datetime. - builder.builds.cache() - - found = [] - for build in builder.builds: - if build.slave.name not in builder_slaves or build.slave.name in found: - continue - # Only add the slave for the first completed build but still look for - # incomplete builds. - if build.completed: - found.append(build.slave.name) - - if steps: - if any(build.steps[step].simplified_result is False for step in steps): - yield build - elif build.simplified_result is False: - yield build - - if len(found) == len(builder_slaves): - # Found all the slaves, quit. - break - - -@need_buildbot -def CMDlast_failure(parser, args): - """Lists all slaves that failed on that step on their last build. - - Examples: - To find all slaves where their last build was a compile failure, - run with --step compile - """ - parser.add_option( - '-S', - '--step', - dest='steps', - action='append', - default=[], - help='List all slaves that failed on that step on their last build') - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - parser.add_option( - '-s', - '--slave', - dest='slaves', - action='append', - default=[], - help='Slaves to filter on') - parser.add_option( - '-n', - '--no_cache', - action='store_true', - help="Don't load all builds at once") - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - print_builders = not options.quiet and len(options.builders) != 1 - last_builder = None - for build in last_failure( - buildbot, - builders=options.builders, - slaves=options.slaves, - steps=options.steps, - no_cache=options.no_cache): - - if print_builders and last_builder != build.builder: - print(build.builder.name) - last_builder = build.builder - - if options.quiet: - if options.slaves: - print('%s: %s' % (build.builder.name, build.slave.name)) - else: - print(build.slave.name) - else: - out = '%d on %s: blame:%s' % (build.number, build.slave.name, ', '.join( - build.blame)) - if print_builders: - out = ' ' + out - print(out) - - if len(options.steps) != 1: - for step in build.steps: - if step.simplified_result is False: - # Assume the first line is the text name anyway. - summary = ', '.join(step.data['text'][1:])[:40] - out = ' %s: "%s"' % (step.data['name'], summary) - if print_builders: - out = ' ' + out - print(out) - return 0 - - -@need_buildbot -def CMDcurrent(parser, args): - """Lists current jobs.""" - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - parser.add_option( - '--blame', action='store_true', help='Only print the blame list') - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - if not options.builders: - options.builders = buildbot.builders.keys - - if options.blame: - blame = set() - for builder in options.builders: - for build in buildbot.builders[builder].current_builds: - if build.blame: - for blamed in build.blame: - blame.add(blamed) - print('\n'.join(blame)) - return 0 - - for builder in options.builders: - builder = buildbot.builders[builder] - if not options.quiet and builder.current_builds: - print(builder.name) - for build in builder.current_builds: - if options.quiet: - print(build.slave.name) - else: - out = '%4d: slave=%10s' % (build.number, build.slave.name) - out += ' duration=%5d' % (build.duration or 0) - if build.eta: - out += ' eta=%5.0f' % build.eta - else: - out += ' ' - if build.blame: - out += ' blame=' + ', '.join(build.blame) - print(out) - - return 0 - - -@need_buildbot -def CMDbuilds(parser, args): - """Lists all builds. - - Examples: - To find all builds on a single slave, run with -b bar -s foo. - """ - parser.add_option( - '-r', '--result', type='int', help='Build result to filter on') - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - parser.add_option( - '-s', - '--slave', - dest='slaves', - action='append', - default=[], - help='Slaves to filter on') - parser.add_option( - '-n', - '--no_cache', - action='store_true', - help="Don't load all builds at once") - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - builders = options.builders or buildbot.builders.keys - for builder in builders: - builder = buildbot.builders[builder] - for build in builder.builds: - if not options.slaves or build.slave.name in options.slaves: - if options.quiet: - out = '' - if options.builders: - out += '%s/' % builder.name - if len(options.slaves) != 1: - out += '%s/' % build.slave.name - out += '%d revision:%s result:%s blame:%s' % ( - build.number, build.revision, build.result, ','.join(build.blame)) - print(out) - else: - print(build) - return 0 - - -@need_buildbot -def CMDcount(parser, args): - """Count the number of builds that occured during a specific period.""" - parser.add_option( - '-o', '--over', type='int', help='Number of seconds to look for') - parser.add_option( - '-b', - '--builder', - dest='builders', - action='append', - default=[], - help='Builders to filter on') - options, args, buildbot = parser.parse_args(args) - if args: - parser.error('Unrecognized parameters: %s' % ' '.join(args)) - if not options.over: - parser.error( - 'Specify the number of seconds, e.g. --over 86400 for the last 24 ' - 'hours') - builders = options.builders or buildbot.builders.keys - counts = {} - since = time.time() - options.over - for builder in builders: - builder = buildbot.builders[builder] - counts[builder.name] = 0 - if not options.quiet: - print(builder.name) - for build in builder.builds.iterall(): - try: - start_time = build.start_time - except urllib.error.HTTPError: - # The build was probably trimmed. - print( - 'Failed to fetch build %s/%d' % (builder.name, build.number), - file=sys.stderr) - continue - if start_time >= since: - counts[builder.name] += 1 - else: - break - if not options.quiet: - print('.. %d' % counts[builder.name]) - - align_name = max(len(b) for b in counts) - align_number = max(len(str(c)) for c in counts.values()) - for builder in sorted(counts): - print('%*s: %*d' % (align_name, builder, align_number, counts[builder])) - print('Total: %d' % sum(counts.values())) - return 0 - - -def gen_parser(): - """Returns an OptionParser instance with default options. - - It should be then processed with gen_usage() before being used. - """ - parser = optparse.OptionParser(version=__version__) - # Remove description formatting - parser.format_description = lambda x: parser.description - # Add common parsing. - old_parser_args = parser.parse_args - - def Parse(*args, **kwargs): - options, args = old_parser_args(*args, **kwargs) - if options.verbose >= 2: - logging.basicConfig(level=logging.DEBUG) - elif options.verbose: - logging.basicConfig(level=logging.INFO) - else: - logging.basicConfig(level=logging.WARNING) - return options, args - - parser.parse_args = Parse - - parser.add_option( - '-v', - '--verbose', - action='count', - help='Use multiple times to increase logging leve') - parser.add_option( - '-q', - '--quiet', - action='store_true', - help='Reduces the output to be parsed by scripts, independent of -v') - parser.add_option( - '--throttle', - type='float', - help='Minimum delay to sleep between requests') - return parser - - -# Generic subcommand handling code - - -def Command(name): - return getattr(sys.modules[__name__], 'CMD' + name, None) - - -@usage('') -def CMDhelp(parser, args): - """Print list of commands or use 'help '.""" - _, args = parser.parse_args(args) - if len(args) == 1: - return main(args + ['--help']) - parser.print_help() - return 0 - - -def gen_usage(parser, command): - """Modifies an OptionParser object with the command's documentation. - - The documentation is taken from the function's docstring. - """ - obj = Command(command) - more = getattr(obj, 'func_usage_more') - # OptParser.description prefer nicely non-formatted strings. - parser.description = obj.__doc__ + '\n' - parser.set_usage('usage: %%prog %s %s' % (command, more)) - - -def main(args=None): - # Do it late so all commands are listed. - # pylint: disable=E1101 - CMDhelp.__doc__ += '\n\nCommands are:\n' + '\n'.join( - ' %-12s %s' % (fn[3:], Command(fn[3:]).__doc__.split('\n', 1)[0]) - for fn in dir(sys.modules[__name__]) - if fn.startswith('CMD')) - - parser = gen_parser() - if args is None: - args = sys.argv[1:] - if args: - command = Command(args[0]) - if command: - # "fix" the usage and the description now that we know the subcommand. - gen_usage(parser, args[0]) - return command(parser, args[1:]) - - # Not a known command. Default to help. - gen_usage(parser, 'help') - return CMDhelp(parser, args) - - -if __name__ == '__main__': - sys.exit(main()) diff --git a/cros_utils/buildbot_utils_unittest.py b/cros_utils/buildbot_utils_unittest.py index afbdfaef..c615c95f 100755 --- a/cros_utils/buildbot_utils_unittest.py +++ b/cros_utils/buildbot_utils_unittest.py @@ -21,18 +21,6 @@ from cros_utils import command_executer class TrybotTest(unittest.TestCase): """Test for CommandExecuter class.""" - old_tryjob_out = ( - 'Verifying patches...\n' - 'Submitting tryjob...\n' - 'Successfully sent PUT request to [buildbucket_bucket:master.chromiumos.t' - 'ryserver] with [config:success-build] [buildbucket_id:895272114382368817' - '6].\n' - 'Tryjob submitted!\n' - 'To view your tryjobs, visit:\n' - ' http://cros-goldeneye/chromeos/healthmonitoring/buildDetails?buildbuck' - 'etId=8952721143823688176\n' - ' https://uberchromegw.corp.google.com/i/chromiumos.tryserver/waterfall?' - 'committer=laszio@chromium.org&builder=etc\n') tryjob_out = ( '[{"buildbucket_id": "8952721143823688176", "build_config": ' '"cave-llvm-toolchain-tryjob", "url": ' -- cgit v1.2.3 From fab4f3c2a2954caa1363aa96b7c5587afb1dd070 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Fri, 26 Jun 2020 10:50:48 -0700 Subject: cros_util: fix up naming Since these two scripts are tracking upstream Chrome OS repos, fixing naming is a bit harder. This patch creates a variable to hold the name of the main branch, so it's easier to fix these files in case any future name fixing on upstream. Also run `yapf` during presubmit. BUG=chromium:1099035 TEST=None Change-Id: Ic72a213dadf12b382a76fe50d48cde6fcecc3b25 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2270728 Reviewed-by: Caroline Tice Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- cros_utils/manifest_versions.py | 12 ++++++++---- cros_utils/misc.py | 7 +++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/cros_utils/manifest_versions.py b/cros_utils/manifest_versions.py index 115c6046..4838de3c 100644 --- a/cros_utils/manifest_versions.py +++ b/cros_utils/manifest_versions.py @@ -19,6 +19,8 @@ import time from cros_utils import command_executer from cros_utils import logger +MANIFEST_VERSION_MAIN_BRANCH = 'master' + def IsCrosVersion(version): match = re.search(r'(\d+\.\d+\.\d+\.\d+)', version) @@ -72,7 +74,8 @@ class ManifestVersions(object): commands = [ 'cd {0}'.format(self.clone_location), 'cd manifest-versions', 'git checkout -f $(git rev-list' + - ' --max-count=1 --before={0} origin/master)'.format(my_time) + ' --max-count=1 --before={0} origin/{1})'.format( + my_time, MANIFEST_VERSION_MAIN_BRANCH) ] ret = self.ce.RunCommands(commands) if ret: @@ -106,7 +109,7 @@ class ManifestVersions(object): version = pp[-2] + '.' + small commands = [ 'cd {0}'.format(self.clone_location), 'cd manifest-versions', - 'git checkout master' + 'git checkout {0}'.format(MANIFEST_VERSION_MAIN_BRANCH) ] self.ce.RunCommands(commands) return version @@ -120,7 +123,8 @@ class ManifestVersions(object): commands = [ 'cd {0}'.format(self.clone_location), 'cd manifest-versions', 'git checkout -f $(git rev-list' + - ' --max-count=1 --before={0} origin/master)'.format(my_time) + ' --max-count=1 --before={0} origin/{1})'.format( + my_time, MANIFEST_VERSION_MAIN_BRANCH) ] ret = self.ce.RunCommands(commands) if ret: @@ -133,7 +137,7 @@ class ManifestVersions(object): version = pp[-2] + '.' + small commands = [ 'cd {0}'.format(self.clone_location), 'cd manifest-versions', - 'git checkout master' + 'git checkout {0}'.format(MANIFEST_VERSION_MAIN_BRANCH) ] self.ce.RunCommands(commands) return version diff --git a/cros_utils/misc.py b/cros_utils/misc.py index b4beb60c..d8b47d19 100644 --- a/cros_utils/misc.py +++ b/cros_utils/misc.py @@ -24,6 +24,8 @@ CHROMEOS_SCRIPTS_DIR = '/mnt/host/source/src/scripts' TOOLCHAIN_UTILS_PATH = ('/mnt/host/source/src/third_party/toolchain-utils/' 'cros_utils/toolchain_utils.sh') +CROS_MAIN_BRANCH = 'cros/master' + def GetChromeOSVersionFromLSBVersion(lsb_version): """Get Chromeos version from Lsb version.""" @@ -444,8 +446,9 @@ def DeleteChromeOsTree(chromeos_root, dry_run=False): cmd1, print_to_console=True) == 0 -def ApplyGerritPatches(chromeos_root, gerrit_patch_string, - branch='cros/master'): +def ApplyGerritPatches(chromeos_root, + gerrit_patch_string, + branch=CROS_MAIN_BRANCH): """Apply gerrit patches on a chromeos tree. Args: -- cgit v1.2.3 From f226ba1cf809c308f0375356352fa5723e86b369 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Mon, 29 Jun 2020 14:30:38 -0700 Subject: Update owners file Reflect current members of toolchain team. BUG=None TEST=None Change-Id: If6582da1f4352e3fdff415870d86a28c4fe92853 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2274096 Reviewed-by: Bob Haarman Tested-by: Manoj Gupta --- OWNERS.toolchain | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OWNERS.toolchain b/OWNERS.toolchain index f7d6e3f6..48ecc260 100644 --- a/OWNERS.toolchain +++ b/OWNERS.toolchain @@ -1,10 +1,10 @@ cmtice@chromium.org denik@chromium.org gbiv@chromium.org +inglorion@chromium.org jiancai@chromium.org llozano@chromium.org manojgupta@chromium.org -tbosch@chromium.org tcwang@chromium.org zhizhouy@chromium.org -- cgit v1.2.3 From cab42647a2c57f405010deffe3b6c83a33e46d45 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 29 Jun 2020 14:25:40 -0700 Subject: Update AFDO kernel profiles. (Weekly sheriff "workaround".) BUG=None TEST=None Change-Id: I7b4ca0213a28bde81ad83e9aab1ae8bf1dc5925e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2274717 Reviewed-by: Tiancong Wang Reviewed-by: Bob Haarman Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 2529552f..566d89e6 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R85-13295.0-1592818714" + "name": "R86-13308.0-1593423468" }, "chromeos-kernel-4_4": { - "name": "R85-13295.0-1592818619" + "name": "R86-13308.0-1593423371" }, "chromeos-kernel-4_14": { - "name": "R85-13295.0-1592818845" + "name": "R86-13308.0-1593423143" }, "chromeos-kernel-4_19": { - "name": "R85-13295.0-1592818980" + "name": "R86-13308.0-1593423563" } } -- cgit v1.2.3 From d6f4dfa85362baa904f328bfbafa50765315ac0e Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 29 Jun 2020 15:42:02 -0700 Subject: presubmits: add types to check-presubmit.py. Since presubmits handle py3 gracefully now && we're starting to add types in many places, it seems worth it to add these for better understandability in the future. No functional change is intended. BUG=chromium:1100659 TEST=Ran the presubmits. Change-Id: If4134b4d10b0f3692a52803e12c8e503b4574be5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2274727 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- toolchain_utils_githooks/check-presubmit.py | 74 ++++++++++++++++++----------- 1 file changed, 46 insertions(+), 28 deletions(-) diff --git a/toolchain_utils_githooks/check-presubmit.py b/toolchain_utils_githooks/check-presubmit.py index 26373342..10eb6e36 100755 --- a/toolchain_utils_githooks/check-presubmit.py +++ b/toolchain_utils_githooks/check-presubmit.py @@ -7,11 +7,7 @@ """Runs presubmit checks against a bundle of files.""" -# To keep `cros lint` happy -from __future__ import division, print_function - import argparse -import collections import datetime import multiprocessing import multiprocessing.pool @@ -26,7 +22,9 @@ import traceback import typing as t -def run_command_unchecked(command, cwd, env=None): +def run_command_unchecked(command: t.List[str], + cwd: str, + env: t.Dict[str, str] = None) -> t.Tuple[int, str]: """Runs a command in the given dir, returning its exit code and stdio.""" p = subprocess.Popen( command, @@ -42,12 +40,12 @@ def run_command_unchecked(command, cwd, env=None): return exit_code, stdout.decode('utf-8', 'replace') -def has_executable_on_path(exe): +def has_executable_on_path(exe: str) -> bool: """Returns whether we have `exe` somewhere on our $PATH""" return shutil.which(exe) is not None -def escape_command(command): +def escape_command(command: t.Iterable[str]) -> str: """Returns a human-readable and copy-pastable shell command. Only intended for use in output to users. shell=True is strongly discouraged. @@ -55,18 +53,18 @@ def escape_command(command): return ' '.join(shlex.quote(x) for x in command) -def remove_deleted_files(files): +def remove_deleted_files(files: t.Iterable[str]) -> t.List[str]: return [f for f in files if os.path.exists(f)] -def is_file_executable(file_path): +def is_file_executable(file_path: str) -> bool: return os.access(file_path, os.X_OK) # As noted in our docs, some of our Python code depends on modules that sit in # toolchain-utils/. Add that to PYTHONPATH to ensure that things like `cros # lint` are kept happy. -def env_with_pythonpath(toolchain_utils_root): +def env_with_pythonpath(toolchain_utils_root: str) -> t.Dict[str, str]: env = dict(os.environ) if 'PYTHONPATH' in env: env['PYTHONPATH'] += ':' + toolchain_utils_root @@ -86,12 +84,22 @@ def env_with_pythonpath(toolchain_utils_root): # least ${number_of_concurrently_running_checkers}+1 threads are present # in the pool. In order words, blocking on results from the provided # threadpool is OK. -CheckResult = collections.namedtuple('CheckResult', - ('ok', 'output', 'autofix_commands')) +CheckResult = t.NamedTuple( + 'CheckResult', + ( + ('ok', bool), + ('output', str), + ('autofix_commands', t.List[t.List[str]]), + ), +) + +def get_check_result_or_catch( + task: multiprocessing.pool.ApplyResult) -> CheckResult: + """Returns the result of task(); if that raises, returns a CheckResult. -def get_check_result_or_catch(task): - """Returns the result of task(); if that raises, returns a CheckResult.""" + The task is expected to return a CheckResult on get(). + """ try: return task.get() except Exception: @@ -103,7 +111,8 @@ def get_check_result_or_catch(task): ) -def check_yapf(toolchain_utils_root, python_files): +def check_yapf(toolchain_utils_root: str, + python_files: t.Iterable[str]) -> CheckResult: """Subchecker of check_py_format. Checks python file formats with yapf""" command = ['yapf', '-d'] + python_files exit_code, stdout_and_stderr = run_command_unchecked( @@ -146,7 +155,7 @@ def check_yapf(toolchain_utils_root, python_files): ) -def check_python_file_headers(python_files): +def check_python_file_headers(python_files: t.Iterable[str]) -> CheckResult: """Subchecker of check_py_format. Checks python #!s""" add_hashbang = [] remove_hashbang = [] @@ -188,7 +197,9 @@ def check_python_file_headers(python_files): ) -def check_py_format(toolchain_utils_root, thread_pool, files): +def check_py_format(toolchain_utils_root: str, + thread_pool: multiprocessing.pool.ThreadPool, + files: t.Iterable[str]) -> CheckResult: """Runs yapf on files to check for style bugs. Also checks for #!s.""" yapf = 'yapf' if not has_executable_on_path(yapf): @@ -217,7 +228,9 @@ def check_py_format(toolchain_utils_root, thread_pool, files): return [(name, get_check_result_or_catch(task)) for name, task in tasks] -def check_cros_lint(toolchain_utils_root, thread_pool, files): +def check_cros_lint( + toolchain_utils_root: str, thread_pool: multiprocessing.pool.ThreadPool, + files: t.Iterable[str]) -> t.Union[t.List[CheckResult], CheckResult]: """Runs `cros lint`""" fixed_env = env_with_pythonpath(toolchain_utils_root) @@ -225,7 +238,7 @@ def check_cros_lint(toolchain_utils_root, thread_pool, files): # We have to support users who don't have a chroot. So we either run `cros # lint` (if it's been made available to us), or we try a mix of # pylint+golint. - def try_run_cros_lint(cros_binary): + def try_run_cros_lint(cros_binary: str) -> t.Optional[CheckResult]: exit_code, output = run_command_unchecked( [cros_binary, 'lint', '--py3', '--'] + files, toolchain_utils_root, @@ -254,7 +267,7 @@ def check_cros_lint(toolchain_utils_root, thread_pool, files): tasks = [] - def check_result_from_command(command): + def check_result_from_command(command: t.List[str]) -> CheckResult: exit_code, output = run_command_unchecked( command, toolchain_utils_root, env=fixed_env) return CheckResult( @@ -266,7 +279,7 @@ def check_cros_lint(toolchain_utils_root, thread_pool, files): python_files = [f for f in remove_deleted_files(files) if f.endswith('.py')] if python_files: - def run_pylint(): + def run_pylint() -> CheckResult: # pylint is required. Fail hard if it DNE. return check_result_from_command(['pylint'] + python_files) @@ -275,7 +288,7 @@ def check_cros_lint(toolchain_utils_root, thread_pool, files): go_files = [f for f in remove_deleted_files(files) if f.endswith('.go')] if go_files: - def run_golint(): + def run_golint() -> CheckResult: if has_executable_on_path('golint'): return check_result_from_command(['golint', '-set_exit_status'] + go_files) @@ -362,7 +375,9 @@ def check_go_format(toolchain_utils_root, _thread_pool, files): ) -def check_tests(toolchain_utils_root, _thread_pool, files): +def check_tests(toolchain_utils_root: str, + _thread_pool: multiprocessing.pool.ThreadPool, + files: t.List[str]) -> CheckResult: """Runs tests.""" exit_code, stdout_and_stderr = run_command_unchecked( [os.path.join(toolchain_utils_root, 'run_tests_for.py'), '--'] + files, @@ -374,15 +389,17 @@ def check_tests(toolchain_utils_root, _thread_pool, files): ) -def detect_toolchain_utils_root(): +def detect_toolchain_utils_root() -> str: return os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -def process_check_result(check_name, check_results, start_time): +def process_check_result( + check_name: str, check_results: t.Union[t.List[CheckResult], CheckResult], + start_time: datetime.datetime) -> t.Tuple[bool, t.List[t.List[str]]]: """Prints human-readable output for the given check_results.""" indent = ' ' - def indent_block(text): + def indent_block(text: str) -> str: return indent + text.replace('\n', '\n' + indent) if isinstance(check_results, CheckResult): @@ -426,7 +443,8 @@ def process_check_result(check_name, check_results, start_time): return ok, autofix_commands -def try_autofix(all_autofix_commands, toolchain_utils_root): +def try_autofix(all_autofix_commands: t.List[t.List[str]], + toolchain_utils_root: str) -> None: """Tries to run all given autofix commands, if appropriate.""" if not all_autofix_commands: return @@ -534,7 +552,7 @@ def ensure_scipy_installed() -> None: subprocess.check_call(['pip', 'install', '--user', 'scipy']) -def main(argv): +def main(argv: t.List[str]) -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument( '--no_autofix', -- cgit v1.2.3 From edc59f7812ca3aa1b5e304d2db7ee4cc44d26482 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 29 Jun 2020 16:01:58 -0700 Subject: presubmits: respect CHROMEOS_ROOT_DIRECTORY when entering the chroot BUG=chromium:1100659 TEST=Ran presubmits inside of the CrOS tree, and outside with CHROMEOS_ROOT_DIRECTORY set. Change-Id: I119d13f8f7b6b0f8a1c94750fe5e90be5ad952be Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2274728 Reviewed-by: Manoj Gupta Reviewed-by: Caroline Tice Tested-by: George Burgess --- toolchain_utils_githooks/check-presubmit.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/toolchain_utils_githooks/check-presubmit.py b/toolchain_utils_githooks/check-presubmit.py index 10eb6e36..274a75f4 100755 --- a/toolchain_utils_githooks/check-presubmit.py +++ b/toolchain_utils_githooks/check-presubmit.py @@ -228,6 +228,10 @@ def check_py_format(toolchain_utils_root: str, return [(name, get_check_result_or_catch(task)) for name, task in tasks] +def find_chromeos_root_directory() -> t.Optional[str]: + return os.getenv('CHROMEOS_ROOT_DIRECTORY') + + def check_cros_lint( toolchain_utils_root: str, thread_pool: multiprocessing.pool.ThreadPool, files: t.Iterable[str]) -> t.Union[t.List[CheckResult], CheckResult]: @@ -259,7 +263,7 @@ def check_cros_lint( if cros_lint is not None: return cros_lint - cros_root = os.getenv('CHROMEOS_ROOT_DIRECTORY') + cros_root = find_chromeos_root_directory() if cros_root: cros_lint = try_run_cros_lint(os.path.join(cros_root, 'chromite/bin/cros')) if cros_lint is not None: @@ -496,10 +500,16 @@ def maybe_reexec_inside_chroot(autofix: bool, files: t.List[str]) -> None: return enter_chroot = True + chdir_to = None toolchain_utils = detect_toolchain_utils_root() if find_repo_root(toolchain_utils) is None: - print('Standalone toolchain-utils checkout detected; cannot enter chroot.') - enter_chroot = False + chromeos_root_dir = find_chromeos_root_directory() + if chromeos_root_dir is None: + print('Standalone toolchain-utils checkout detected; cannot enter ' + 'chroot.') + enter_chroot = False + else: + chdir_to = chromeos_root_dir if not has_executable_on_path('cros_sdk'): print('No `cros_sdk` detected on $PATH; cannot enter chroot.') @@ -529,7 +539,11 @@ def maybe_reexec_inside_chroot(autofix: bool, files: t.List[str]) -> None: args.append('--no_autofix') args.extend(rebase_path(x) for x in files) - print('Attempting to enter the chroot...') + if chdir_to is None: + print('Attempting to enter the chroot...') + else: + print(f'Attempting to enter the chroot for tree at {chdir_to}...') + os.chdir(chdir_to) os.execvp(args[0], args) -- cgit v1.2.3 From 8caccf6a0f744db9ff24daf10fc30d37615c9089 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Thu, 9 Jul 2020 09:33:39 -0700 Subject: afdo_metadata: Update kernel AFDO profiles Update chromeos-kernel-3_18 to R86-13308.0-1594028349 Update chromeos-kernel-4_4 to R86-13308.0-1594028015 Update chromeos-kernel-4_14 to R86-13308.0-1594028311 Update chromeos-kernel-4_19 to R86-13310.6-1594027984 BUG=None TEST=None Change-Id: Ia9c0386c41248346eda403eddf93539c9fd4e743 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2289901 Tested-by: Denis Nikitin Auto-Submit: Denis Nikitin Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 566d89e6..79929733 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13308.0-1593423468" + "name": "R86-13308.0-1594028349" }, "chromeos-kernel-4_4": { - "name": "R86-13308.0-1593423371" + "name": "R86-13308.0-1594028015" }, "chromeos-kernel-4_14": { - "name": "R86-13308.0-1593423143" + "name": "R86-13308.0-1594028311" }, "chromeos-kernel-4_19": { - "name": "R86-13308.0-1593423563" + "name": "R86-13310.6-1594027984" } } -- cgit v1.2.3 From 6cfbb3d75dbd5383419814804f4d94b699537b50 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 13 Jul 2020 16:05:18 -0700 Subject: afdo_metadata: Update kernel AFDO profiles Update chromeos-kernel-3_18 to R86-13310.3-1594633089 Update chromeos-kernel-4_4 to R86-13333.0-1594632882 Update chromeos-kernel-4_14 to R86-13308.0-1594632874 Update chromeos-kernel-4_19 to R86-13329.0-1594633362 BUG=chromium:1081332 TEST=None. Change-Id: Icd1f2478c1e8b7d7d03d9fabc2808bc81ded81d7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2296122 Reviewed-by: Tiancong Wang Commit-Queue: Jian Cai Tested-by: Jian Cai --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 79929733..dbb5ca7e 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13308.0-1594028349" + "name": "R86-13310.3-1594633089" }, "chromeos-kernel-4_4": { - "name": "R86-13308.0-1594028015" + "name": "R86-13333.0-1594632882" }, "chromeos-kernel-4_14": { - "name": "R86-13308.0-1594028311" + "name": "R86-13308.0-1594632874" }, "chromeos-kernel-4_19": { - "name": "R86-13310.6-1594027984" + "name": "R86-13329.0-1594633362" } } -- cgit v1.2.3 From 94fd622c652b7aa46f2ca24d3a0efe93c7fde040 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Thu, 9 Jul 2020 17:14:53 -0700 Subject: compiler_wrapper: remove -grecord-gcc-switches -grecord-gcc-switches causes the compiler and compiler flags to be stored in the produced debug information. This causes Goma builds to be non-deterministic, because the compiler path differs depending on whether the compiler was run locally or on Goma. This, in turn, causes cache pollution and needless work. Since we are not in fact using the information stored by -grecord-gcc-switches, this change disables it. We can re-enable it when we want to start using the information, provided we come up with another way to avoid the issues described earlier. BUG=chromium:1103065 TEST=Build an object file in chromeos-chrome and check that info is absent Change-Id: Ib8022a3a1baf2e4b5d3d9d1453deb67f539baff4 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2290624 Commit-Queue: Bob Haarman Tested-by: Bob Haarman Reviewed-by: George Burgess Reviewed-by: Tiancong Wang --- compiler_wrapper/config.go | 6 ++++-- compiler_wrapper/testdata/cros_clang_host_golden/bisect.json | 3 --- .../clang_ftrapv_maincc_target_specific.json | 9 --------- .../testdata/cros_clang_host_golden/clang_host_wrapper.json | 1 - .../cros_clang_host_golden/clang_maincc_target_specific.json | 9 --------- .../testdata/cros_clang_host_golden/clang_path.json | 12 ------------ .../cros_clang_host_golden/clang_sanitizer_args.json | 8 -------- .../testdata/cros_clang_host_golden/clang_specific_args.json | 7 ------- .../testdata/cros_clang_host_golden/clangtidy.json | 8 -------- .../cros_clang_host_golden/force_disable_werror.json | 5 ----- compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 --- .../clang_ftrapv_maincc_target_specific.json | 9 --------- .../cros_hardened_golden/clang_maincc_target_specific.json | 9 --------- .../testdata/cros_hardened_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 -------- .../testdata/cros_hardened_golden/clang_specific_args.json | 7 ------- .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ------ .../testdata/cros_hardened_golden/clangtidy.json | 8 -------- .../testdata/cros_hardened_golden/force_disable_werror.json | 5 ----- .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ---- .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 --- .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 -------- .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 ----- .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ---- .../testdata/cros_hardened_noccache_golden/bisect.json | 3 --- .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ------------ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 -------- .../cros_hardened_noccache_golden/force_disable_werror.json | 5 ----- .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ---- 30 files changed, 4 insertions(+), 199 deletions(-) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index b11c6808..0fc7336f 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -121,9 +121,10 @@ var crosHardenedConfig = &config{ // Disable "-faddrsig" since it produces object files that strip doesn't understand, chromium:915742. // Pass "-fcommon" till the packages are fixed to work with new clang default // "-fno-common", crbug.com/1060413. + // crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache; + // removed that flag for now. clangFlags: []string{ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -188,9 +189,10 @@ var crosHostConfig = &config{ // Temporarily add no-unknown-warning-option to deal with old clang versions. // Pass "-fcommon" till the packages are fixed to work with new clang default // "-fno-common", crbug.com/1060413. + // crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache; + // removed that flag for now. clangFlags: []string{ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index f7a83659..ebc55d49 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -25,7 +25,6 @@ "/tmp/sysroot_bisect", "/tmp/stable/clang", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -74,7 +73,6 @@ "someBisectDir", "/tmp/stable/clang", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -126,7 +124,6 @@ "someBisectDir", "/tmp/stable/clang", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index fc20522c..786be389 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -16,7 +16,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -52,7 +51,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -88,7 +86,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -124,7 +121,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -160,7 +156,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -196,7 +191,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -232,7 +226,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -268,7 +261,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -304,7 +296,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 38905dbe..813f9c3f 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -15,7 +15,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index d9b5978a..11bb939c 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -15,7 +15,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -50,7 +49,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -85,7 +83,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -120,7 +117,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -155,7 +151,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -190,7 +185,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -225,7 +219,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -260,7 +253,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -295,7 +287,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index 6c3d029f..04f1a730 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -15,7 +15,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -53,7 +52,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -91,7 +89,6 @@ "path": "/tmp/stable/clang++", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -129,7 +126,6 @@ "path": "somepath/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -174,7 +170,6 @@ "path": "/somedir/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -224,7 +219,6 @@ "path": "/somedir/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -274,7 +268,6 @@ "path": "/somedir/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -314,7 +307,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -349,7 +341,6 @@ "path": "/tmp/stable/a/b/c/d/e/f/g/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -384,7 +375,6 @@ "path": "/tmp/stable/a/b/c/d/e/f/g/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -419,7 +409,6 @@ "path": "/tmp/stable/somedir/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -457,7 +446,6 @@ "path": "/tmp/stable/pathenv/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 899b77fe..6ba5c97a 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -17,7 +17,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -55,7 +54,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -93,7 +91,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -131,7 +128,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -168,7 +164,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -207,7 +202,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -246,7 +240,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -283,7 +276,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index e1408c4e..2af36665 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -26,7 +26,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -62,7 +61,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -99,7 +97,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -136,7 +133,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -173,7 +169,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -210,7 +205,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -247,7 +241,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index 5e05d227..28022243 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -31,7 +31,6 @@ "--", "-resource-dir=someResourceDir", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -53,7 +52,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -105,7 +103,6 @@ "--", "-resource-dir=someResourceDir", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -127,7 +124,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -181,7 +177,6 @@ "--", "-resource-dir=someResourceDir", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -206,7 +201,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -261,7 +255,6 @@ "--", "-resource-dir=someResourceDir", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -283,7 +276,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 3a77e21d..2cb74e98 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -18,7 +18,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -56,7 +55,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -80,7 +78,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -122,7 +119,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", @@ -146,7 +142,6 @@ "path": "/tmp/stable/clang", "args": [ "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-fuse-ld=lld", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 45c36e87..36624783 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -27,7 +27,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -89,7 +88,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -154,7 +152,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index b4e0f9ce..e7eab203 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -18,7 +18,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -70,7 +69,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -122,7 +120,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -174,7 +171,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -226,7 +222,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -278,7 +273,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -330,7 +324,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -382,7 +375,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -434,7 +426,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 09e6d846..786d3326 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -17,7 +17,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -67,7 +66,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -117,7 +115,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -167,7 +164,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -217,7 +213,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -267,7 +262,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7m-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -317,7 +311,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -367,7 +360,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-eabi", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -417,7 +409,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv8m-cros-win-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 4146d2cf..1fe980a7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -17,7 +17,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -70,7 +69,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -123,7 +121,6 @@ "../../usr/bin/clang++", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -176,7 +173,6 @@ "somepath/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -236,7 +232,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -301,7 +296,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -361,7 +355,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -416,7 +409,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -466,7 +458,6 @@ "a/b/usr/bin/clang", "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -516,7 +507,6 @@ "a/b/usr/bin/clang", "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -566,7 +556,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -619,7 +608,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index a1d62535..0a94e86c 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -19,7 +19,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -71,7 +70,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -123,7 +121,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -175,7 +172,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -226,7 +222,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -279,7 +274,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -332,7 +326,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -383,7 +376,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 48bb8288..5add66fb 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -28,7 +28,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -79,7 +78,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -131,7 +129,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -183,7 +180,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -235,7 +231,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -287,7 +282,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -339,7 +333,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index e925a784..f30920d6 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -52,7 +52,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -105,7 +104,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -151,7 +149,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -200,7 +197,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -250,7 +246,6 @@ "../../usr/bin/clang", "--sysroot=/usr/armv7a-cros-linux-gnueabihf", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -299,7 +294,6 @@ "args": [ "../../usr/bin/clang", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index b8b786db..eae5c3d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -32,7 +32,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -63,7 +62,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -124,7 +122,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -156,7 +153,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -219,7 +215,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -254,7 +249,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -318,7 +312,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -350,7 +343,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 0ee22133..d415fb78 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -20,7 +20,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -73,7 +72,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -112,7 +110,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -169,7 +166,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -208,7 +204,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index d571c02e..576f4b69 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -17,7 +17,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -91,7 +90,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -160,7 +158,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -213,7 +210,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 45c36e87..36624783 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -27,7 +27,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -89,7 +88,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -154,7 +152,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 4146d2cf..1fe980a7 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -17,7 +17,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -70,7 +69,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -123,7 +121,6 @@ "../../usr/bin/clang++", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -176,7 +173,6 @@ "somepath/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -236,7 +232,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -301,7 +296,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -361,7 +355,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -416,7 +409,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -466,7 +458,6 @@ "a/b/usr/bin/clang", "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -516,7 +507,6 @@ "a/b/usr/bin/clang", "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -566,7 +556,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -619,7 +608,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index b8b786db..eae5c3d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -32,7 +32,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -63,7 +62,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -124,7 +122,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -156,7 +153,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -219,7 +215,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -254,7 +249,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -318,7 +312,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -350,7 +343,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 0ee22133..d415fb78 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -20,7 +20,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -73,7 +72,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -112,7 +110,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -169,7 +166,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -208,7 +204,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index d571c02e..576f4b69 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -17,7 +17,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -91,7 +90,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -160,7 +158,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -213,7 +210,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index dfe8c0c0..f31bbe96 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -26,7 +26,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -84,7 +83,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -145,7 +143,6 @@ "/usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index c8a0e101..b2cdeb46 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -16,7 +16,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -63,7 +62,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -110,7 +108,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -157,7 +154,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -211,7 +207,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -271,7 +266,6 @@ "/somedir/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -330,7 +324,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -379,7 +372,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -423,7 +415,6 @@ "args": [ "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -467,7 +458,6 @@ "args": [ "--sysroot=/tmp/stable/a/b/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -511,7 +501,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -558,7 +547,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index b8b786db..eae5c3d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -32,7 +32,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -63,7 +62,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -124,7 +122,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -156,7 +153,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -219,7 +215,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -254,7 +249,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -318,7 +312,6 @@ "-resource-dir=someResourceDir", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -350,7 +343,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index 9700b128..d01ceac3 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -19,7 +19,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -66,7 +65,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -99,7 +97,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -150,7 +147,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -183,7 +179,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index 3b31be3c..e9f5e64a 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -17,7 +17,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -86,7 +85,6 @@ "../../usr/bin/clang", "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -155,7 +153,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", @@ -208,7 +205,6 @@ "args": [ "--sysroot=/usr/x86_64-cros-linux-gnu", "-Qunused-arguments", - "-grecord-gcc-switches", "-fno-addrsig", "-fcommon", "-Wno-tautological-constant-compare", -- cgit v1.2.3 From 916add28cdd83fddfb7f0a1c274b25b9547c2ebb Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Fri, 17 Jul 2020 16:38:54 -0700 Subject: compiler_wrapper: rename update_compiler_wrapper.sh Rename the script to install_compiler_wrapper.sh to avoid confusion with chromiumos-overlay/sys-devel/llvm/files/update_compiler_wrapper.sh. BUG=None. Test=None. Change-Id: I39bbc3dc4a63fa480c394f2e92c1723033cdc321 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2304726 Tested-by: Jian Cai Reviewed-by: Bob Haarman --- compiler_wrapper/README.md | 22 +++++++++------ compiler_wrapper/install_compiler_wrapper.sh | 40 ++++++++++++++++++++++++++++ compiler_wrapper/update_compiler_wrapper.sh | 40 ---------------------------- 3 files changed, 54 insertions(+), 48 deletions(-) create mode 100755 compiler_wrapper/install_compiler_wrapper.sh delete mode 100755 compiler_wrapper/update_compiler_wrapper.sh diff --git a/compiler_wrapper/README.md b/compiler_wrapper/README.md index 794e1635..e64f01b6 100644 --- a/compiler_wrapper/README.md +++ b/compiler_wrapper/README.md @@ -12,25 +12,31 @@ package, including the build script, and then build from there without a dependency on toolchain-utils itself. -## Update Chrome OS +## Update source files Copy over sources and `build.py` to Chrome OS: ``` -(chroot) /mnt/host/source/src/third_party/chromiumos-overlay/sys-devel/llvm/files/update_compiler_wrapper.sh +(chroot) /mnt/host/source/src/third_party/chromiumos-overlay/sys-devel/llvm/files/update\_compiler\_wrapper.sh ``` `build.py` is called by these ebuilds: -- third_party/chromiumos-overlay/sys-devel/llvm/llvm-9.0_pre361749_p20190714.ebuild -- third_party/chromiumos-overlay/sys-devel/gcc/gcc-*.ebuild +- third_party/chromiumos-overlay/sys-devel/llvm/llvm-11.0\_pre394483\_p20200618-r3.ebuild +- third_party/chromiumos-overlay/sys-devel/gcc/gcc-\*.ebuild +## Update compiler wrappers +``` +(chroot) /mnt/host/source/src/third|_party/toolchain-utils/compiler\_wrapper/install\_compiler\_wrapper.sh +``` Generated wrappers are stored here: - Sysroot wrapper with ccache: - `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot_wrapper.hardened.ccache` + `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot\_wrapper.hardened.ccache` - Sysroot wrapper without ccache: - `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot_wrapper.hardened.noccache` + `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot\_wrapper.hardened.noccache` - Clang host wrapper: - `/usr/bin/clang_host_wrapper` + `/usr/bin/clang\_host\_wrapper` - Gcc host wrapper: - `/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.x/host_wrapper` + `/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.x/host\_wrapper` + + diff --git a/compiler_wrapper/install_compiler_wrapper.sh b/compiler_wrapper/install_compiler_wrapper.sh new file mode 100755 index 00000000..479b112c --- /dev/null +++ b/compiler_wrapper/install_compiler_wrapper.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# +# Copyright 2020 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. + +# This script rebuilds and installs compiler wrappers + +if [[ ! -e /etc/cros_chroot_version ]]; then + echo "Please run this script inside chroot" + exit 1 +fi +set -e +cd "$(dirname "$(readlink -m "$0")")" +echo "Updated files:" +# Update the host wrapper +./build.py --config=cros.host --use_ccache=false --use_llvm_next=false --output_file=./clang_host_wrapper +sudo mv ./clang_host_wrapper /usr/bin/clang_host_wrapper +echo "/usr/bin/clang_host_wrapper" +sudo cp ../binary_search_tool/bisect_driver.py /usr/bin +echo "/usr/bin/clang_host_wrapper/bisect_driver.py" +# Update the target wrappers +for GCC in cross-x86_64-cros-linux-gnu/gcc cross-armv7a-cros-linux-gnueabihf/gcc cross-aarch64-cros-linux-gnu/gcc; do + if ! FILES="$(equery f ${GCC})"; then + if [[ $(equery l "${GCC}" 2>&1 | wc -c) -eq 0 ]]; then + echo "no ${GCC} package found; skipping" >&2 + continue + fi + # Something went wrong, and the equery above probably complained about it. + exit 1 + fi + ./build.py --config=cros.hardened --use_ccache=false --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.noccache + sudo mv ./sysroot_wrapper.hardened.noccache "$(grep sysroot_wrapper.hardened.noccache <<< "${FILES}")" + grep sysroot_wrapper.hardened.noccache <<< "${FILES}" + ./build.py --config=cros.hardened --use_ccache=true --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.ccache + sudo mv ./sysroot_wrapper.hardened.ccache "$(grep sysroot_wrapper.hardened.ccache <<< "${FILES}")" + grep sysroot_wrapper.hardened.ccache <<< "${FILES}" + sudo cp ../binary_search_tool/bisect_driver.py "$(grep bisect_driver.py <<< "${FILES}")" + grep bisect_driver.py <<< "${FILES}" +done diff --git a/compiler_wrapper/update_compiler_wrapper.sh b/compiler_wrapper/update_compiler_wrapper.sh deleted file mode 100755 index 479b112c..00000000 --- a/compiler_wrapper/update_compiler_wrapper.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# -# Copyright 2020 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. - -# This script rebuilds and installs compiler wrappers - -if [[ ! -e /etc/cros_chroot_version ]]; then - echo "Please run this script inside chroot" - exit 1 -fi -set -e -cd "$(dirname "$(readlink -m "$0")")" -echo "Updated files:" -# Update the host wrapper -./build.py --config=cros.host --use_ccache=false --use_llvm_next=false --output_file=./clang_host_wrapper -sudo mv ./clang_host_wrapper /usr/bin/clang_host_wrapper -echo "/usr/bin/clang_host_wrapper" -sudo cp ../binary_search_tool/bisect_driver.py /usr/bin -echo "/usr/bin/clang_host_wrapper/bisect_driver.py" -# Update the target wrappers -for GCC in cross-x86_64-cros-linux-gnu/gcc cross-armv7a-cros-linux-gnueabihf/gcc cross-aarch64-cros-linux-gnu/gcc; do - if ! FILES="$(equery f ${GCC})"; then - if [[ $(equery l "${GCC}" 2>&1 | wc -c) -eq 0 ]]; then - echo "no ${GCC} package found; skipping" >&2 - continue - fi - # Something went wrong, and the equery above probably complained about it. - exit 1 - fi - ./build.py --config=cros.hardened --use_ccache=false --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.noccache - sudo mv ./sysroot_wrapper.hardened.noccache "$(grep sysroot_wrapper.hardened.noccache <<< "${FILES}")" - grep sysroot_wrapper.hardened.noccache <<< "${FILES}" - ./build.py --config=cros.hardened --use_ccache=true --use_llvm_next=false --output_file=./sysroot_wrapper.hardened.ccache - sudo mv ./sysroot_wrapper.hardened.ccache "$(grep sysroot_wrapper.hardened.ccache <<< "${FILES}")" - grep sysroot_wrapper.hardened.ccache <<< "${FILES}" - sudo cp ../binary_search_tool/bisect_driver.py "$(grep bisect_driver.py <<< "${FILES}")" - grep bisect_driver.py <<< "${FILES}" -done -- cgit v1.2.3 From 7b9d2ba0c68bd53dc38085c961005d2b406a7718 Mon Sep 17 00:00:00 2001 From: Allen Webb Date: Thu, 16 Jul 2020 10:53:04 -0500 Subject: Put reference filters on 'git ls-remote'. This saves time and bandwidth expecially as the number of references scale up with uploaded CLs. BUG=None TEST=CQ passes Change-Id: Idf0e9eea97bc533ec21f29cfd8267a260f7322ef Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2302949 Reviewed-by: Tiancong Wang Commit-Queue: Allen Webb Tested-by: Allen Webb --- cros_utils/misc.py | 3 ++- setup_chromeos.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cros_utils/misc.py b/cros_utils/misc.py index d8b47d19..93d1b3b6 100644 --- a/cros_utils/misc.py +++ b/cros_utils/misc.py @@ -31,7 +31,8 @@ def GetChromeOSVersionFromLSBVersion(lsb_version): """Get Chromeos version from Lsb version.""" ce = command_executer.GetCommandExecuter() command = ('git ls-remote ' - 'https://chromium.googlesource.com/chromiumos/manifest.git') + 'https://chromium.googlesource.com/chromiumos/manifest.git ' + 'refs/heads/release-R*') ret, out, _ = ce.RunCommandWOutput(command, print_to_console=False) assert ret == 0, 'Command %s failed' % command lower = [] diff --git a/setup_chromeos.py b/setup_chromeos.py index 63206492..07c7530d 100755 --- a/setup_chromeos.py +++ b/setup_chromeos.py @@ -244,7 +244,7 @@ Default is 'latest_lkgm'.""") return cmd_executer.RunCommand( 'git ls-remote ' 'https://chrome-internal.googlesource.com/chrome/src-internal.git ' - '> /dev/null') + 'refs/HEAD > /dev/null') if __name__ == '__main__': -- cgit v1.2.3 From 6c2e5c4448ade8e7764d3ebfb8a168441f59cf92 Mon Sep 17 00:00:00 2001 From: Luis Lozano Date: Tue, 21 Jul 2020 16:14:38 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R86-13310.18-1595237847 Update chromeos-kernel-4_4 to R86-13333.0-1595237618 Update chromeos-kernel-4_14 to R86-13310.18-1595237997 Update chromeos-kernel-4_19 to R86-13329.0-1595238172 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I6171e28a5beff90a66b70bacc415679a48c23371 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2311358 Commit-Queue: Luis Lozano Commit-Queue: Tiancong Wang Tested-by: Luis Lozano Auto-Submit: Luis Lozano Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index dbb5ca7e..6d775d58 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13310.3-1594633089" + "name": "R86-13310.18-1595237847" }, "chromeos-kernel-4_4": { - "name": "R86-13333.0-1594632882" + "name": "R86-13333.0-1595237618" }, "chromeos-kernel-4_14": { - "name": "R86-13308.0-1594632874" + "name": "R86-13310.18-1595237997" }, "chromeos-kernel-4_19": { - "name": "R86-13329.0-1594633362" + "name": "R86-13329.0-1595238172" } } -- cgit v1.2.3 From cb46500d29085ee65b524981f0fbf4af3badc0bb Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 20 Jul 2020 16:53:39 -0700 Subject: compiler_wrapper: add -clang-tidy-flag support This CL adds support for specifying compiler flags that're meant to be passed only to clang-tidy. This allows for easier local experimentation with clang-tidy by users. BUG=chromium:982944 TEST=`WITH_TIDY=1 emerge-amd64-generic biod` with custom cflags; cq+1 on crrev.com/c/2308774 Change-Id: I654559d14a78ade4920fe37757fb5b249a997290 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2309152 Reviewed-by: Caroline Tice Tested-by: George Burgess --- compiler_wrapper/clang_tidy_flag.go | 30 ++++++++---- compiler_wrapper/clang_tidy_flag_test.go | 53 +++++++++++++++++++++ compiler_wrapper/compiler_wrapper.go | 80 ++++++++++++++++---------------- 3 files changed, 115 insertions(+), 48 deletions(-) diff --git a/compiler_wrapper/clang_tidy_flag.go b/compiler_wrapper/clang_tidy_flag.go index edbbb412..2d97ddd3 100644 --- a/compiler_wrapper/clang_tidy_flag.go +++ b/compiler_wrapper/clang_tidy_flag.go @@ -21,10 +21,20 @@ const ( tidyModeTricium ) -func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, mode useTidyMode) { +func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, clangTidyFlags []string, mode useTidyMode) { + builder.transformArgs(func(arg builderArg) string { + const prefix = "-clang-tidy-flag=" + if !strings.HasPrefix(arg.value, prefix) { + return arg.value + } + + clangTidyFlags = append(clangTidyFlags, arg.value[len(prefix):]) + return "" + }) + withTidy, _ := builder.env.getenv("WITH_TIDY") if withTidy == "" { - return "", tidyModeNone + return "", clangTidyFlags, tidyModeNone } srcFileSuffixes := []string{ ".c", @@ -51,7 +61,7 @@ func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, mode useTi } if cSrcFile == "" { - return "", tidyModeNone + return "", clangTidyFlags, tidyModeNone } if withTidy == "tricium" { @@ -65,7 +75,7 @@ func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, mode useTi } else { mode = tidyModeAll } - return cSrcFile, mode + return cSrcFile, clangTidyFlags, mode } func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFlags ...string) (*command, error) { @@ -85,7 +95,7 @@ func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFl }, nil } -func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string) error { +func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string, extraTidyFlags []string) error { if err := os.MkdirAll(fixesDir, 0777); err != nil { return fmt.Errorf("creating fixes directory at %q: %v", fixesDir, err) } @@ -103,7 +113,8 @@ func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir strin // FIXME(gbiv): Remove `-checks=*` when testing is complete; we should defer to .clang-tidy // files, which are both more expressive and more approachable than `-checks=*`. - clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, "-checks=*", "--export-fixes="+fixesFilePath) + extraTidyFlags = append(extraTidyFlags, "-checks=*", "--export-fixes="+fixesFilePath) + clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, extraTidyFlags...) if err != nil { return fmt.Errorf("calculating tidy invocation: %v", err) } @@ -149,9 +160,9 @@ func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir strin return nil } -func runClangTidy(env env, clangCmd *command, cSrcFile string) error { - clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, "-checks="+ - strings.Join([]string{ +func runClangTidy(env env, clangCmd *command, cSrcFile string, extraTidyFlags []string) error { + extraTidyFlags = append(extraTidyFlags, + "-checks="+strings.Join([]string{ "*", "-bugprone-narrowing-conversions", "-cppcoreguidelines-*", @@ -165,6 +176,7 @@ func runClangTidy(env env, clangCmd *command, cSrcFile string) error { "-modernize-*", "-readability-*", }, ",")) + clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, extraTidyFlags...) if err != nil { return fmt.Errorf("calculating clang-tidy invocation: %v", err) } diff --git a/compiler_wrapper/clang_tidy_flag_test.go b/compiler_wrapper/clang_tidy_flag_test.go index d45d1bdd..54159cdc 100644 --- a/compiler_wrapper/clang_tidy_flag_test.go +++ b/compiler_wrapper/clang_tidy_flag_test.go @@ -333,6 +333,59 @@ func TestTriciumClangTidySkipsProtobufFiles(t *testing.T) { }) } +func testClangTidyFiltersClangTidySpecificFlagsWithPresetEnv(t *testing.T, ctx *testContext) { + addedFlag := "--some_clang_tidy=flag" + ctx.cmdMock = func(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { + switch ctx.cmdCount { + case 1: + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } else if err := verifyArgCount(cmd, 0, addedFlag); err != nil { + t.Error(err) + } + return nil + case 2: + if err := verifyPath(cmd, "usr/bin/clang-tidy"); err != nil { + t.Error(err) + } else if verifyArgCount(cmd, 1, addedFlag); err != nil { + t.Error(err) + } + return nil + default: + return nil + } + } + cmd := ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangX86_64, mainCc, "-clang-tidy-flag="+addedFlag))) + if ctx.cmdCount != 3 { + t.Errorf("expected 3 calls. Got: %d", ctx.cmdCount) + } + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } +} + +func TestClangTidyFiltersClangTidySpecificFlagsForTricium(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + ctx.env = []string{"WITH_TIDY=tricium"} + testClangTidyFiltersClangTidySpecificFlagsWithPresetEnv(t, ctx) + }) +} + +func TestClangTidyFiltersClangTidySpecificFlags(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + testClangTidyFiltersClangTidySpecificFlagsWithPresetEnv(t, ctx) + }) +} + +func TestClangTidyFlagsAreFilteredFromGccInvocations(t *testing.T) { + withTestContext(t, func(ctx *testContext) { + cmd := ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, mainCc, "-clang-tidy-flag=--foo"))) + if err := verifyArgCount(cmd, 0, ".*--foo.*"); err != nil { + t.Error(err) + } + }) +} + func withClangTidyTestContext(t *testing.T, work func(ctx *testContext)) { withTestContext(t, func(ctx *testContext) { ctx.env = []string{"WITH_TIDY=1"} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index 14de210a..a5d35a2c 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -89,53 +89,55 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int default: return 0, newErrorwithSourceLocf("unsupported compiler: %s", mainBuilder.target.compiler) } - } else if mainBuilder.target.compilerType == clangType { - cSrcFile, tidyMode := processClangTidyFlags(mainBuilder) - err := prepareClangCommand(mainBuilder) - if err != nil { - return 0, err - } - allowCCache := true - if tidyMode != tidyModeNone { - allowCCache = false - clangCmdWithoutGomaAndCCache := mainBuilder.build() - var err error - switch tidyMode { - case tidyModeTricium: - if cfg.triciumNitsDir == "" { - return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured") - } - err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir) - case tidyModeAll: - err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile) - default: - panic(fmt.Sprintf("Unknown tidy mode: %v", tidyMode)) - } - + } else { + cSrcFile, tidyFlags, tidyMode := processClangTidyFlags(mainBuilder) + if mainBuilder.target.compilerType == clangType { + err := prepareClangCommand(mainBuilder) if err != nil { return 0, err } - } - if err := processGomaCCacheFlags(allowCCache, mainBuilder); err != nil { - return 0, err - } - compilerCmd = mainBuilder.build() - } else { - if clangSyntax { - allowCCache := false - clangCmd, err := calcClangCommand(allowCCache, mainBuilder.clone()) - if err != nil { + allowCCache := true + if tidyMode != tidyModeNone { + allowCCache = false + clangCmdWithoutGomaAndCCache := mainBuilder.build() + var err error + switch tidyMode { + case tidyModeTricium: + if cfg.triciumNitsDir == "" { + return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured") + } + err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir, tidyFlags) + case tidyModeAll: + err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile, tidyFlags) + default: + panic(fmt.Sprintf("Unknown tidy mode: %v", tidyMode)) + } + + if err != nil { + return 0, err + } + } + if err := processGomaCCacheFlags(allowCCache, mainBuilder); err != nil { return 0, err } - gccCmd, err := calcGccCommand(mainBuilder) + compilerCmd = mainBuilder.build() + } else { + if clangSyntax { + allowCCache := false + clangCmd, err := calcClangCommand(allowCCache, mainBuilder.clone()) + if err != nil { + return 0, err + } + gccCmd, err := calcGccCommand(mainBuilder) + if err != nil { + return 0, err + } + return checkClangSyntax(env, clangCmd, gccCmd) + } + compilerCmd, err = calcGccCommand(mainBuilder) if err != nil { return 0, err } - return checkClangSyntax(env, clangCmd, gccCmd) - } - compilerCmd, err = calcGccCommand(mainBuilder) - if err != nil { - return 0, err } } rusageLogfileName := getRusageLogFilename(env) -- cgit v1.2.3 From 120da3fec7feb6e2f85c0443406cbf753b16b448 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 22 Jul 2020 15:48:59 -0700 Subject: rust_tools: add a monitor for upstream gentoo commits + rust releases Apparently it's useful to watch upstream Gentoo's patches to dev-lang/rust, and it'd be nice in general if we were pinged for new Rust stable releases. This CL adds a tool to handle the alerting of all of that for us. BUG=None TEST=Ran in a few different ways with `--skip_email` Change-Id: Ie972872d597870c715266f88df50812b55e30c75 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2314745 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_watch.py | 351 ++++++++++++++++++++++++++++++++++++++++++ rust_tools/rust_watch_test.py | 202 ++++++++++++++++++++++++ 2 files changed, 553 insertions(+) create mode 100755 rust_tools/rust_watch.py create mode 100755 rust_tools/rust_watch_test.py diff --git a/rust_tools/rust_watch.py b/rust_tools/rust_watch.py new file mode 100755 index 00000000..b9ad7b82 --- /dev/null +++ b/rust_tools/rust_watch.py @@ -0,0 +1,351 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Checks for various upstream events with the Rust toolchain. + +Sends an email if something interesting (probably) happened. +""" + +# pylint: disable=cros-logging-import + +import argparse +import itertools +import json +import logging +import pathlib +import re +import shutil +import subprocess +import sys +import time +from typing import Any, Dict, Iterable, List, Optional, Tuple, NamedTuple + +from cros_utils import email_sender +from cros_utils import tiny_render + + +def gentoo_sha_to_link(sha: str) -> str: + """Gets a URL to a webpage that shows the Gentoo commit at `sha`.""" + return f'https://gitweb.gentoo.org/repo/gentoo.git/commit?id={sha}' + + +def send_email(subject: str, body: List[tiny_render.Piece]) -> None: + """Sends an email with the given title and body to... whoever cares.""" + email_sender.EmailSender().SendX20Email( + subject=subject, + identifier='rust-watch', + well_known_recipients=['cros-team'], + text_body=tiny_render.render_text_pieces(body), + html_body=tiny_render.render_html_pieces(body), + ) + + +class RustReleaseVersion(NamedTuple): + """Represents a version of Rust's stable compiler.""" + major: int + minor: int + patch: int + + @staticmethod + def from_string(version_string: str) -> 'RustReleaseVersion': + m = re.match(r'(\d+)\.(\d+)\.(\d+)', version_string) + if not m: + raise ValueError(f"{version_string!r} isn't a valid version string") + return RustReleaseVersion(*[int(x) for x in m.groups()]) + + def __str__(self) -> str: + return f'{self.major}.{self.minor}.{self.patch}' + + def to_json(self) -> str: + return str(self) + + @staticmethod + def from_json(s: str) -> 'RustReleaseVersion': + return RustReleaseVersion.from_string(s) + + +class State(NamedTuple): + """State that we keep around from run to run.""" + # The last Rust release tag that we've seen. + last_seen_release: RustReleaseVersion + + # We track Gentoo's upstream Rust ebuild. This is the last SHA we've seen + # that updates it. + last_gentoo_sha: str + + def to_json(self) -> Dict[str, Any]: + return { + 'last_seen_release': self.last_seen_release.to_json(), + 'last_gentoo_sha': self.last_gentoo_sha, + } + + @staticmethod + def from_json(s: Dict[str, Any]) -> 'State': + return State( + last_seen_release=RustReleaseVersion.from_json(s['last_seen_release']), + last_gentoo_sha=s['last_gentoo_sha'], + ) + + +def parse_release_tags(lines: Iterable[str]) -> Iterable[RustReleaseVersion]: + """Parses `git ls-remote --tags` output into Rust stable release versions.""" + refs_tags = 'refs/tags/' + for line in lines: + _sha, tag = line.split(None, 1) + tag = tag.strip() + # Each tag has an associated 'refs/tags/name^{}', which is the actual + # object that the tag points to. That's irrelevant to us. + if tag.endswith('^{}'): + continue + + if not tag.startswith(refs_tags): + continue + + short_tag = tag[len(refs_tags):] + # There are a few old versioning schemes. Ignore them. + if short_tag.startswith('0.') or short_tag.startswith('release-'): + continue + yield RustReleaseVersion.from_string(short_tag) + + +def fetch_most_recent_release() -> RustReleaseVersion: + """Fetches the most recent stable `rustc` version.""" + result = subprocess.run( + ['git', 'ls-remote', '--tags', 'https://github.com/rust-lang/rust'], + check=True, + stdin=None, + capture_output=True, + encoding='utf-8', + ) + tag_lines = result.stdout.strip().splitlines() + return max(parse_release_tags(tag_lines)) + + +class GitCommit(NamedTuple): + """Represents a single git commit.""" + sha: str + subject: str + + +def update_git_repo(git_dir: pathlib.Path) -> None: + """Updates the repo at `git_dir`, retrying a few times on failure.""" + for i in itertools.count(start=1): + result = subprocess.run( + ['git', 'fetch', 'origin'], + check=False, + cwd=str(git_dir), + stdin=None, + ) + + if not result.returncode: + break + + if i == 5: + # 5 attempts is too many. Something else may be wrong. + result.check_returncode() + + sleep_time = 60 * i + logging.error("Failed updating gentoo's repo; will try again in %ds...", + sleep_time) + time.sleep(sleep_time) + + +def get_new_gentoo_commits(git_dir: pathlib.Path, + most_recent_sha: str) -> List[GitCommit]: + """Gets commits to dev-lang/rust since `most_recent_sha`. + + Older commits come earlier in the returned list. + """ + commits = subprocess.run( + [ + 'git', + 'log', + '--format=%H %s', + f'{most_recent_sha}..origin/master', + '--', + 'dev-lang/rust', + ], + capture_output=True, + check=False, + cwd=str(git_dir), + encoding='utf-8', + ) + + if commits.returncode: + logging.error('Error getting new gentoo commits; stderr:\n%s', + commits.stderr) + commits.check_returncode() + + results = [] + for line in commits.stdout.strip().splitlines(): + sha, subject = line.strip().split(None, 1) + results.append(GitCommit(sha=sha, subject=subject)) + + # `git log` outputs things in newest -> oldest order. + results.reverse() + return results + + +def setup_gentoo_git_repo(git_dir: pathlib.Path) -> str: + """Sets up a gentoo git repo at the given directory. Returns HEAD.""" + subprocess.run( + [ + 'git', 'clone', 'https://anongit.gentoo.org/git/repo/gentoo.git', + str(git_dir) + ], + stdin=None, + check=True, + ) + + head_rev = subprocess.run( + ['git', 'rev-parse', 'HEAD'], + cwd=str(git_dir), + check=True, + stdin=None, + capture_output=True, + encoding='utf-8', + ) + return head_rev.stdout.strip() + + +def read_state(state_file: pathlib.Path) -> State: + """Reads state from the given file.""" + with state_file.open(encoding='utf-8') as f: + return State.from_json(json.load(f)) + + +def atomically_write_state(state_file: pathlib.Path, state: State) -> None: + """Writes state to the given file.""" + temp_file = pathlib.Path(str(state_file) + '.new') + with temp_file.open('w', encoding='utf-8') as f: + json.dump(state.to_json(), f) + temp_file.rename(state_file) + + +def maybe_compose_email(old_state: State, newest_release: RustReleaseVersion, + new_gentoo_commits: List[GitCommit] + ) -> Optional[Tuple[str, List[tiny_render.Piece]]]: + """Creates an email given our new state, if doing so is appropriate.""" + subject_pieces = [] + body_pieces = [] + + if newest_release > old_state.last_seen_release: + subject_pieces.append('new rustc release detected') + body_pieces.append(f'Rustc tag for v{newest_release} was found.') + + if new_gentoo_commits: + # Separate the sections a bit for prettier output. + if body_pieces: + body_pieces += [tiny_render.line_break, tiny_render.line_break] + + if len(new_gentoo_commits) == 1: + subject_pieces.append('new rust ebuild commit detected') + body_pieces.append('commit:') + else: + subject_pieces.append('new rust ebuild commits detected') + body_pieces.append('commits (newest first):') + + commit_lines = [] + for commit in new_gentoo_commits: + commit_lines.append([ + tiny_render.Link( + gentoo_sha_to_link(commit.sha), + commit.sha[:12], + ), + f': {commit.subject}', + ]) + + body_pieces.append(tiny_render.UnorderedList(commit_lines)) + + if not subject_pieces: + return None + + subject = '[rust-watch] ' + '; '.join(subject_pieces) + return subject, body_pieces + + +def main(argv: List[str]) -> None: + logging.basicConfig(level=logging.INFO) + + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--state_dir', required=True, help='Directory to store state in.') + parser.add_argument( + '--skip_email', action='store_true', help="Don't send an email.") + parser.add_argument( + '--skip_state_update', + action='store_true', + help="Don't update the state file. Doesn't apply to initial setup.") + opts = parser.parse_args(argv) + + state_dir = pathlib.Path(opts.state_dir) + state_file = state_dir / 'state.json' + gentoo_subdir = state_dir / 'upstream-gentoo' + if not state_file.exists(): + logging.info("state_dir isn't fully set up; doing that now.") + + # Could be in a partially set-up state. + if state_dir.exists(): + logging.info('incomplete state_dir detected; removing.') + shutil.rmtree(str(state_dir)) + + state_dir.mkdir(parents=True) + most_recent_release = fetch_most_recent_release() + most_recent_gentoo_commit = setup_gentoo_git_repo(gentoo_subdir) + atomically_write_state( + state_file, + State( + last_seen_release=most_recent_release, + last_gentoo_sha=most_recent_gentoo_commit, + ), + ) + # Running through this _should_ be a nop, but do it anyway. Should make any + # bugs more obvious on the first run of the script. + + prior_state = read_state(state_file) + logging.info('Last state was %r', prior_state) + + most_recent_release = fetch_most_recent_release() + logging.info('Most recent Rust release is %s', most_recent_release) + + logging.info('Fetching new commits from Gentoo') + update_git_repo(gentoo_subdir) + new_commits = get_new_gentoo_commits(gentoo_subdir, + prior_state.last_gentoo_sha) + logging.info('New commits: %r', new_commits) + + maybe_email = maybe_compose_email(prior_state, most_recent_release, + new_commits) + + if maybe_email is None: + logging.info('No updates to send') + else: + title, body = maybe_email + if opts.skip_email: + logging.info('Skipping sending email with title %r and contents\n%s', + title, tiny_render.render_html_pieces(body)) + else: + logging.info('Sending email') + send_email(title, body) + + if opts.skip_state_update: + logging.info('Skipping state update, as requested') + return + + newest_sha = ( + new_commits[-1].sha if new_commits else prior_state.last_gentoo_sha) + atomically_write_state( + state_file, + State( + last_seen_release=most_recent_release, + last_gentoo_sha=newest_sha, + ), + ) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/rust_tools/rust_watch_test.py b/rust_tools/rust_watch_test.py new file mode 100755 index 00000000..97d111fc --- /dev/null +++ b/rust_tools/rust_watch_test.py @@ -0,0 +1,202 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for rust_watch.py.""" + +# pylint: disable=cros-logging-import + +import logging +import pathlib +import subprocess +import time +import unittest +import unittest.mock + +import rust_watch +from cros_utils import tiny_render + + +class Test(unittest.TestCase): + """Tests.""" + + def _silence_logs(self): + """Silences all log output until the end of the current test.""" + + def should_log(_record): + return 0 + + logger = logging.root + logger.addFilter(should_log) + self.addCleanup(logger.removeFilter, should_log) + + def test_release_version_parsing(self): + self.assertEqual( + rust_watch.RustReleaseVersion.from_string('1.2.3'), + rust_watch.RustReleaseVersion(1, 2, 3), + ) + + def test_release_version_json_round_trips(self): + ver = rust_watch.RustReleaseVersion(1, 2, 3) + self.assertEqual( + rust_watch.RustReleaseVersion.from_json(ver.to_json()), ver) + + def test_state_json_round_trips(self): + state = rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 2, 3), + last_gentoo_sha='abc123', + ) + + self.assertEqual(rust_watch.State.from_json(state.to_json()), state) + + @unittest.mock.patch.object(subprocess, 'run') + @unittest.mock.patch.object(time, 'sleep') + def test_update_git_repo_tries_again_on_failure(self, sleep_mock, run_mock): + self._silence_logs() + + oh_no_error = ValueError('oh no') + + def check_returncode(): + raise oh_no_error + + run_call_count = 0 + + def run_sideeffect(*_args, **_kwargs): + nonlocal run_call_count + run_call_count += 1 + result = unittest.mock.Mock() + result.returncode = 1 + result.check_returncode = check_returncode + return result + + run_mock.side_effect = run_sideeffect + + with self.assertRaises(ValueError) as raised: + rust_watch.update_git_repo(pathlib.Path('/does/not/exist/at/all')) + + self.assertIs(raised.exception, oh_no_error) + self.assertEqual(run_call_count, 5) + + sleep_timings = [unittest.mock.call(60 * i) for i in range(1, 5)] + self.assertEqual(sleep_mock.mock_calls, sleep_timings) + + @unittest.mock.patch.object(subprocess, 'run') + def test_get_new_gentoo_commits_functions(self, run_mock): + returned = unittest.mock.Mock() + returned.returncode = 0 + returned.stdout = '\n'.join(( + 'abc123 newer commit', + 'abcdef and an older commit', + )) + run_mock.return_value = returned + results = rust_watch.get_new_gentoo_commits( + pathlib.Path('/does/not/exist/at/all'), 'defabc') + self.assertEqual(results, [ + rust_watch.GitCommit('abcdef', 'and an older commit'), + rust_watch.GitCommit('abc123', 'newer commit'), + ]) + + def test_compose_email_on_a_new_release(self): + new_release = rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 0, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 1, 0), + new_gentoo_commits=[], + ) + + self.assertEqual(new_release, ('[rust-watch] new rustc release detected', + ['Rustc tag for v1.1.0 was found.'])) + + def test_compose_email_on_a_new_gentoo_commit(self): + sha_a = 'a' * 40 + new_commit = rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 0, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 0, 0), + new_gentoo_commits=[ + rust_watch.GitCommit( + sha=sha_a, + subject='summary_a', + ), + ], + ) + + self.assertEqual(new_commit, + ('[rust-watch] new rust ebuild commit detected', [ + 'commit:', + tiny_render.UnorderedList([ + [ + tiny_render.Link( + rust_watch.gentoo_sha_to_link(sha_a), + sha_a[:12], + ), + ': summary_a', + ], + ]) + ])) + + def test_compose_email_on_multiple_events(self): + sha_a = 'a' * 40 + new_commit_and_release = rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 0, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 1, 0), + new_gentoo_commits=[ + rust_watch.GitCommit( + sha=sha_a, + subject='summary_a', + ), + ], + ) + + self.assertEqual( + new_commit_and_release, + ('[rust-watch] new rustc release detected; new rust ebuild commit ' + 'detected', [ + 'Rustc tag for v1.1.0 was found.', + tiny_render.line_break, + tiny_render.line_break, + 'commit:', + tiny_render.UnorderedList([ + [ + tiny_render.Link( + rust_watch.gentoo_sha_to_link(sha_a), + sha_a[:12], + ), + ': summary_a', + ], + ]), + ])) + + def test_compose_email_composes_nothing_when_no_new_updates_exist(self): + self.assertIsNone( + rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 0, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 0, 0), + new_gentoo_commits=[], + )) + + self.assertIsNone( + rust_watch.maybe_compose_email( + old_state=rust_watch.State( + last_seen_release=rust_watch.RustReleaseVersion(1, 1, 0), + last_gentoo_sha='', + ), + newest_release=rust_watch.RustReleaseVersion(1, 0, 0), + new_gentoo_commits=[], + )) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From e8ef27352c43229116188d2df87e5b236713cb3e Mon Sep 17 00:00:00 2001 From: inglorion Date: Fri, 17 Jul 2020 17:17:14 -0700 Subject: compiler_wrapper: Updated instructions for updating the wrapper This change adds some more details on how to test and commit changes to the compiler wrapper. BUG=None TEST=Followed the steps locally to verify that they work. Change-Id: I5a3d644e92fd94ed3792a59a30f39db08053390d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2305371 Commit-Queue: Bob Haarman Tested-by: Bob Haarman Reviewed-by: George Burgess Reviewed-by: Jian Cai --- compiler_wrapper/README.md | 69 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 14 deletions(-) diff --git a/compiler_wrapper/README.md b/compiler_wrapper/README.md index e64f01b6..e55bb669 100644 --- a/compiler_wrapper/README.md +++ b/compiler_wrapper/README.md @@ -12,31 +12,72 @@ package, including the build script, and then build from there without a dependency on toolchain-utils itself. -## Update source files +## Testing Inside the Chroot -Copy over sources and `build.py` to Chrome OS: +To test updates to the wrapper locally: + +Run `install_compiler_wrapper.sh` to install the new wrapper in the chroot: ``` -(chroot) /mnt/host/source/src/third_party/chromiumos-overlay/sys-devel/llvm/files/update\_compiler\_wrapper.sh +(chroot) ~/trunk/src/third_party/toolchain-utils/compiler_wrapper/install_compiler_wrapper.sh ``` -`build.py` is called by these ebuilds: +Then perform the tests, e.g. build with the new compiler. + + +## Updating the Wrapper for Chrome OS + +To update the wrapper for everyone, the new wrapper configuration must be copied +into chromiumos-overlay, and new revisions of the gcc and llvm ebuilds must be +created. + +Copy over sources and `build.py` to chromiumos-overlay: +``` +(chroot) /mnt/host/source/src/third_party/chromiumos-overlay/sys-devel/llvm/files/update_compiler_wrapper.sh +``` -- third_party/chromiumos-overlay/sys-devel/llvm/llvm-11.0\_pre394483\_p20200618-r3.ebuild -- third_party/chromiumos-overlay/sys-devel/gcc/gcc-\*.ebuild +Rename chromiumos-overlay/sys-devel/llvm/llvm-${VERSION}.ebuild to the next +revision number. For example, if the current version is +11.0_pre394483_p20200618-r2: +``` +(chroot) cd ~/trunk/src/third_party/chromiumos-overlay +(chroot) git mv llvm-11.0_pre394483_p20200618-r2.ebuild llvm-11.0_pre394483_p20200618-r3.ebuild +``` -## Update compiler wrappers +Rename chromiumos-overlay/sys-devel/gcc/gcc-${VERSION}.ebuild to the next +revision number. For example, if the current version is 4.9.2-r254: +``` +(chroot) cd ~/trunk/src/third_party/chromiumos-overlay +(chroot) git mv sys-devel/gcc/gcc-4.9.2-r254.ebuild sys-devel/gcc/gcc-4.9.2-r255.ebuild ``` -(chroot) /mnt/host/source/src/third|_party/toolchain-utils/compiler\_wrapper/install\_compiler\_wrapper.sh + +Edit the new ebuild file and change the number at the end to match the new revision: ``` +-# If you need to force a cros_workon uprev, change this number (you can use next +-# uprev): 254 ++# If you need to force a cros_workon uprev, change this number (you can use next ++# uprev): 255 +``` + +Commit those changes together with the changes made by +`update_compiler_wrapper.sh`. + +The changes can then be reviewed and submitted through the normal process. + + +## Paths + +`build.py` is called by these ebuilds: + +- third_party/chromiumos-overlay/sys-devel/llvm/llvm-*.ebuild +- third_party/chromiumos-overlay/sys-devel/gcc/gcc-*.ebuild + Generated wrappers are stored here: - Sysroot wrapper with ccache: - `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot\_wrapper.hardened.ccache` + `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot_wrapper.hardened.ccache` - Sysroot wrapper without ccache: - `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot\_wrapper.hardened.noccache` + `/usr/x86_64-pc-linux-gnu//gcc-bin/4.9.x/sysroot_wrapper.hardened.noccache` - Clang host wrapper: - `/usr/bin/clang\_host\_wrapper` + `/usr/bin/clang_host_wrapper` - Gcc host wrapper: - `/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.x/host\_wrapper` - - + `/usr/x86_64-pc-linux-gnu/gcc-bin/4.9.x/host_wrapper` -- cgit v1.2.3 From 4f29d442786192cced1564f4bbee43fdaa53908e Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 27 Jul 2020 11:31:25 -0700 Subject: llvm_tools: remove future import Now that we're guaranteed to be on py3, this isn't needed. Mostly doing this to test a crbug feature. Fixed: 1109998 BUG=chromium:1109998 TEST=None Change-Id: I1f5d0c9c7c1297e9281be07ced4127e42546b3c8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321109 Tested-by: George Burgess Reviewed-by: Denis Nikitin --- llvm_tools/git_llvm_rev_test.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/llvm_tools/git_llvm_rev_test.py b/llvm_tools/git_llvm_rev_test.py index 775ab1e6..74280c5d 100755 --- a/llvm_tools/git_llvm_rev_test.py +++ b/llvm_tools/git_llvm_rev_test.py @@ -6,8 +6,6 @@ """Tests for git_llvm_rev.""" -from __future__ import print_function - import unittest import git_llvm_rev @@ -63,8 +61,8 @@ class Test(unittest.TestCase): def test_imaginary_revs_raise(self) -> None: with self.assertRaises(ValueError) as r: git_llvm_rev.translate_rev_to_sha( - get_llvm_config(), git_llvm_rev.Rev( - branch=MAIN_BRANCH, number=9999999)) + get_llvm_config(), + git_llvm_rev.Rev(branch=MAIN_BRANCH, number=9999999)) self.assertIn('Try updating your tree?', str(r.exception)) -- cgit v1.2.3 From 92596836d539e53bb14e659cbaec5206d74f0c56 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 27 Jul 2020 15:33:05 -0700 Subject: afdo_metadata: Update kernel AFDO profiles Update chromeos-kernel-3_18 to R86-13310.26-1595842968 Update chromeos-kernel-4_4 to R86-13352.0-1595842406 Update chromeos-kernel-4_14 to R86-13310.26-1595842760 Update chromeos-kernel-4_19 to R86-13354.0-1595842495 BUG=None TEST=None Change-Id: I329100ceb860288c95d6abbf71270eda774f126f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321277 Tested-by: Tiancong Wang Reviewed-by: Tiancong Wang Commit-Queue: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 6d775d58..62fe5c67 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13310.18-1595237847" + "name": "R86-13310.26-1595842968" }, "chromeos-kernel-4_4": { - "name": "R86-13333.0-1595237618" + "name": "R86-13352.0-1595842406" }, "chromeos-kernel-4_14": { - "name": "R86-13310.18-1595237997" + "name": "R86-13310.26-1595842760" }, "chromeos-kernel-4_19": { - "name": "R86-13329.0-1595238172" + "name": "R86-13354.0-1595842495" } } -- cgit v1.2.3 From d81dc939e7a1778b1e93f16f022c8634f509c9a8 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 27 Jul 2020 15:27:27 -0700 Subject: afdo_tools: Update script to sort profiles by timestamp Our update_kernel_afdo tries to get all the profiles with gsutil. However, the command gives results by sorting the profile name, so the last profile is not necessarily the newest. A counter example is: R86-13310.3-1594633089.gcov.xz appears after R86-13310.18-1595237847.gcov.xz So this patch sorts the results of gsutil by the timestamp and grep all the master profiles (otherwise we might get some beta/stable profiles). BUG=None TEST=Tool can be used to generate kernel_afdo.json CL Change-Id: I9c9f6ee2ab446f5e07ea577e11f0c3d562bff5e3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321122 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: George Burgess --- afdo_tools/update_kernel_afdo | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo index aac891cb..64e5e477 100755 --- a/afdo_tools/update_kernel_afdo +++ b/afdo_tools/update_kernel_afdo @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash # Due to crbug.com/1081332, we need to update AFDO metadata # manually. This script performs a few checks and generates a @@ -24,6 +24,7 @@ # set -eu +set -o pipefail GS_BASE=gs://chromeos-prebuilt/afdo-job/vetted/kernel KVERS="3.18 4.4 4.14 4.19" @@ -43,11 +44,17 @@ else expected_time=$(date +%s -d "last Monday") fi +# Get the current master branch number (using beta + 1) +beta=$(git ls-remote -h https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay | sed -n -e "s/^.*release-R\([0-9][0-9]*\).*$/\1/p" | sort -g | tail -1) +master="$(($beta + 1))" + json="{" sep="" for kver in $KVERS do - latest=$(gsutil ls -l "$GS_BASE/$kver/" | tail -n 2 | head -n 1) + # Sort the gs output by timestamp (default ordering is by name, so + # R86-13310.3-1594633089.gcov.xz goes after R86-13310.18-1595237847.gcov.xz) + latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | grep "R${master}" | tail -1) # Verify that the file has the expected date. file_time=$(echo "$latest" | awk '{print $2}') -- cgit v1.2.3 From 0869ed00c33f5ca17553cb84c75f82dfed280c18 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 27 Jul 2020 16:27:32 -0700 Subject: llvm_tools: check for uncommited changes before cherry-picks Exit when uncommited changes in chromiumos-overlay repo is detected. BUG=chromium:1057428 TEST=local tests. Change-Id: I6dacfb67028036b415672c8fba622b49c4ae8b76 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321560 Tested-by: Jian Cai Reviewed-by: George Burgess Reviewed-by: Luis Lozano --- llvm_tools/cherrypick_cl.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/llvm_tools/cherrypick_cl.py b/llvm_tools/cherrypick_cl.py index 78330d19..9e306725 100755 --- a/llvm_tools/cherrypick_cl.py +++ b/llvm_tools/cherrypick_cl.py @@ -170,32 +170,34 @@ def main(): help='Automatically create a CL if specified') args = parser.parse_args() - llvm_config = git_llvm_rev.LLVMConfig( - remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools()) - llvm_symlink = chroot.ConvertChrootPathsToAbsolutePaths( args.chroot_path, chroot.GetChrootEbuildPaths(args.chroot_path, ['sys-devel/llvm']))[0] + llvm_symlink_dir = os.path.dirname(llvm_symlink) + + git_status = subprocess.check_output(['git', 'status', '-s'], + cwd=llvm_symlink_dir, + encoding='utf-8') + if git_status: + raise ValueError('Uncommited changes detected in %s' % + os.path.dirname(os.path.dirname(llvm_symlink_dir))) + start_sha = args.start_sha if start_sha == 'llvm': - start_sha = parse_ebuild_for_assignment( - os.path.dirname(llvm_symlink), 'LLVM_HASH') + start_sha = parse_ebuild_for_assignment(llvm_symlink_dir, 'LLVM_HASH') elif start_sha == 'llvm-next': - start_sha = parse_ebuild_for_assignment( - os.path.dirname(llvm_symlink), 'LLVM_NEXT_HASH') + start_sha = parse_ebuild_for_assignment(llvm_symlink_dir, 'LLVM_NEXT_HASH') logging.info('Base llvm hash == %s', start_sha) + llvm_config = git_llvm_rev.LLVMConfig( + remote='origin', dir=get_llvm_hash.GetAndUpdateLLVMProjectInLLVMTools()) + start_sha = resolve_llvm_ref(llvm_config.dir, start_sha) start_rev = git_llvm_rev.translate_sha_to_rev(llvm_config, start_sha) if args.create_cl: branch = 'cherry-pick' - symlink = os.path.dirname( - chroot.GetChrootEbuildPaths(args.chroot_path, ['sys-devel/llvm'])[0]) - symlink = chroot.ConvertChrootPathsToAbsolutePaths(args.chroot_path, - [symlink])[0] - symlink_dir = os.path.dirname(symlink) - git.CreateBranch(symlink_dir, branch) + git.CreateBranch(llvm_symlink_dir, branch) symlinks_to_uprev = [] commit_messages = [ 'llvm: cherry-pick CLs from upstream\n', @@ -221,9 +223,9 @@ def main(): relative_patches_dir = 'cherry' if package == 'llvm' else '' patches_dir = os.path.join(symlink_dir, 'files', relative_patches_dir) logging.info('Cherrypicking %s (%s) into %s', rev, sha, package) + add_cherrypick(patches_json_path, patches_dir, relative_patches_dir, start_rev, llvm_config.dir, rev, sha, package) - if args.create_cl: symlinks_to_uprev.extend(symlinks) commit_messages.extend([ @@ -240,8 +242,8 @@ def main(): for symlink in symlinks_to_uprev: update_chromeos_llvm_hash.UprevEbuildSymlink(symlink) subprocess.check_output(['git', 'add', '--all'], cwd=symlink_dir) - git.UploadChanges(symlink_dir, branch, commit_messages) - git.DeleteBranch(symlink_dir, branch) + git.UploadChanges(llvm_symlink_dir, branch, commit_messages) + git.DeleteBranch(llvm_symlink_dir, branch) if __name__ == '__main__': -- cgit v1.2.3 From e1db85555d7b3e7eb8ed5e43ac7debd65215027d Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 27 Jul 2020 16:47:53 -0700 Subject: llvm_tools: clarify that syncing all of llvm is only done once There was some confusion about the intended frequency of LLVM syncs. Adding a bit to the "syncing" message should hopefully clear that up. BUG=None TEST=None Change-Id: I2454267602d9eaab79073882b172d61b3cb98daa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2321565 Reviewed-by: Luis Lozano Tested-by: Luis Lozano --- llvm_tools/get_llvm_hash.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm_tools/get_llvm_hash.py b/llvm_tools/get_llvm_hash.py index 4200cffe..4c479962 100755 --- a/llvm_tools/get_llvm_hash.py +++ b/llvm_tools/get_llvm_hash.py @@ -125,7 +125,8 @@ def GetAndUpdateLLVMProjectInLLVMTools(): if not os.path.isdir(abs_path_to_llvm_project_dir): print( - 'Checking out LLVM from scratch. This could take a while...', + 'Checking out LLVM from scratch. This could take a while...\n' + '(This should only need to be done once, though.)', file=sys.stderr) os.mkdir(abs_path_to_llvm_project_dir) -- cgit v1.2.3 From d1a9a25c3b25e5eb3623c2ca1f5428673ca2ee37 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 29 Jul 2020 18:03:33 -0700 Subject: compiler_wrapper: add -fexperimental-new-pass-manager LLVM is currently build with DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=ON on Chrome OS. This is however not reflected in clang crash diagnoses. Adding -fexperimental-new-pass-manager to help with reproducibility on 4c. BUG=chromium:1111103 TEST=CQ tests. Change-Id: Ie01431dff397e982469e29c9132e21374354762d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2327414 Reviewed-by: George Burgess Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/config.go | 3 +++ compiler_wrapper/testdata/cros_clang_host_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_host_wrapper.json | 1 + .../cros_clang_host_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_clang_host_golden/clang_path.json | 12 ++++++++++++ .../cros_clang_host_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_clang_host_golden/clang_specific_args.json | 7 +++++++ .../testdata/cros_clang_host_golden/clangtidy.json | 8 ++++++++ .../cros_clang_host_golden/force_disable_werror.json | 5 +++++ compiler_wrapper/testdata/cros_hardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../cros_hardened_golden/clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_hardened_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../testdata/cros_hardened_golden/clang_specific_args.json | 7 +++++++ .../cros_hardened_golden/clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++++++ .../testdata/cros_hardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_noccache_golden/bisect.json | 3 +++ .../testdata/cros_hardened_noccache_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_noccache_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_nonhardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 9 +++++++++ .../clang_maincc_target_specific.json | 9 +++++++++ .../testdata/cros_nonhardened_golden/clang_path.json | 12 ++++++++++++ .../cros_nonhardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../cros_nonhardened_golden/clang_specific_args.json | 7 +++++++ .../clang_sysroot_wrapper_common.json | 6 ++++++ .../testdata/cros_nonhardened_golden/clangtidy.json | 8 ++++++++ .../cros_nonhardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_nonhardened_golden/gcc_clang_syntax.json | 4 ++++ 40 files changed, 271 insertions(+) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 0fc7336f..546a0e11 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -136,6 +136,7 @@ var crosHardenedConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", @@ -167,6 +168,7 @@ var crosNonHardenedConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", @@ -204,6 +206,7 @@ var crosHostConfig = &config{ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index ebc55d49..c40faf67 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -36,6 +36,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -84,6 +85,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -135,6 +137,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ], diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index 786be389..2870f96f 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -27,6 +27,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -62,6 +63,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -97,6 +99,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -132,6 +135,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -167,6 +171,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -202,6 +207,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -237,6 +243,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -272,6 +279,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -307,6 +315,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 813f9c3f..3bae0706 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -26,6 +26,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index 11bb939c..b8048024 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -26,6 +26,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -60,6 +61,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -94,6 +96,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -128,6 +131,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -162,6 +166,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -196,6 +201,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -230,6 +236,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -264,6 +271,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -298,6 +306,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index 04f1a730..8eb8d5a4 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -26,6 +26,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,6 +64,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -100,6 +102,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -137,6 +140,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -181,6 +185,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -230,6 +235,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -279,6 +285,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -318,6 +325,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -352,6 +360,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -386,6 +395,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -420,6 +430,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -457,6 +468,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 6ba5c97a..8dc90e25 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -28,6 +28,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -65,6 +66,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -102,6 +104,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -139,6 +142,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -175,6 +179,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -213,6 +218,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -251,6 +257,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -287,6 +294,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 2af36665..02e3cec6 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -37,6 +37,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -72,6 +73,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion" @@ -108,6 +110,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion" @@ -144,6 +147,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -180,6 +184,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -216,6 +221,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -252,6 +258,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index 28022243..44c58f84 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -42,6 +42,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,6 +64,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -114,6 +116,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -135,6 +138,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -188,6 +192,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -212,6 +217,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -266,6 +272,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -287,6 +294,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index 2cb74e98..fb854019 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -29,6 +29,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -66,6 +67,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -89,6 +91,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", @@ -130,6 +133,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -153,6 +157,7 @@ "-Werror=poison-system-directories", "-Wno-unknown-warning-option", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 36624783..2302669a 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -38,6 +38,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index e7eab203..49ac5646 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -29,6 +29,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -131,6 +133,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -182,6 +185,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -284,6 +289,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -386,6 +393,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -437,6 +445,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 786d3326..6fc2b8e7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -77,6 +78,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -126,6 +128,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -175,6 +178,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -224,6 +228,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -273,6 +278,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -322,6 +328,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,6 +378,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +428,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 1fe980a7..6ba05ab1 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index 0a94e86c..a9bd08c4 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -30,6 +30,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,6 +82,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -183,6 +186,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -233,6 +237,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -285,6 +290,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -337,6 +343,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -387,6 +394,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 5add66fb..0535df12 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -39,6 +39,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -89,6 +90,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -140,6 +142,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -191,6 +194,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -242,6 +246,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -293,6 +298,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -344,6 +350,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index f30920d6..306873c9 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -63,6 +63,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -115,6 +116,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -160,6 +162,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -208,6 +211,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "-fno-stack-protector", @@ -257,6 +261,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-D_FORTIFY_SOURCE=2", "-mthumb", "-fno-stack-protector", @@ -305,6 +310,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index eae5c3d9..59642459 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index d415fb78..23cb8f59 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index 576f4b69..9cf7ab2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 36624783..2302669a 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -38,6 +38,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,6 +100,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -163,6 +165,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 1fe980a7..6ba05ab1 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,6 +81,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,6 +134,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,6 +187,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -243,6 +247,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -307,6 +312,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -366,6 +372,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -420,6 +427,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +477,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -518,6 +527,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -567,6 +577,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -619,6 +630,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index eae5c3d9..59642459 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index d415fb78..23cb8f59 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,6 +84,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -121,6 +123,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,6 +180,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -215,6 +219,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 576f4b69..9cf7ab2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,6 +102,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -169,6 +171,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,6 +224,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index f31bbe96..48b28521 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -37,6 +37,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -94,6 +95,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -154,6 +156,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index b2cdeb46..e5c37c89 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -27,6 +27,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -119,6 +121,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,6 +168,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,6 +222,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -277,6 +282,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -335,6 +341,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -383,6 +390,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,6 +434,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -469,6 +478,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -512,6 +522,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -558,6 +569,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index eae5c3d9..59642459 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,6 +74,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,6 +135,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +167,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -226,6 +230,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -260,6 +265,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -323,6 +329,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -354,6 +361,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index d01ceac3..9510bfc3 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -30,6 +30,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -76,6 +77,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -108,6 +110,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -158,6 +161,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -190,6 +194,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index e9f5e64a..723c03c6 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -96,6 +97,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,6 +166,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", @@ -216,6 +219,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index 4002d2f7..06f5420c 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -35,6 +35,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -88,6 +89,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -144,6 +146,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index 3946b2b1..bf851e46 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -26,6 +26,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -69,6 +70,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -112,6 +114,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -155,6 +158,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-ftrapv", "main.cc", @@ -199,6 +203,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -242,6 +247,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-ftrapv", "main.cc", @@ -286,6 +292,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-ftrapv", "main.cc", @@ -330,6 +337,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -373,6 +381,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-ftrapv", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index d0e8c521..06abf6e4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -25,6 +25,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -66,6 +67,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -107,6 +109,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -148,6 +151,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -190,6 +194,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -231,6 +236,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -273,6 +279,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -315,6 +322,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -356,6 +364,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index b224b952..ce071110 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -25,6 +25,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -69,6 +70,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -113,6 +115,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -157,6 +160,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -208,6 +212,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -264,6 +269,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -315,6 +321,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -361,6 +368,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -402,6 +410,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -443,6 +452,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -484,6 +494,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -528,6 +539,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 609bec35..3a29fb7f 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -27,6 +27,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -71,6 +72,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -115,6 +117,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -159,6 +162,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -202,6 +206,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -247,6 +252,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -292,6 +298,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -335,6 +342,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index e84e1491..dc5b53a1 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -36,6 +36,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -78,6 +79,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", @@ -121,6 +123,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", @@ -164,6 +167,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -207,6 +211,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -250,6 +255,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -293,6 +299,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index 9c90d35b..a2ac55b4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -56,6 +56,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -100,6 +101,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -137,6 +139,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -179,6 +182,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-fno-stack-protector", "-D__KERNEL__", "main.cc", @@ -223,6 +227,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "-mthumb", "-fno-stack-protector", "-D__KERNEL__", @@ -267,6 +272,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index c340e895..2e73f74e 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -40,6 +40,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -62,6 +63,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -114,6 +116,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -137,6 +140,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -191,6 +195,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -217,6 +222,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -272,6 +278,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -295,6 +302,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 2ddb3514..e4bc550c 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -72,6 +73,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -102,6 +104,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -150,6 +153,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -180,6 +184,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index d21d2179..a3cabd88 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -25,6 +25,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -86,6 +87,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -142,6 +144,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -186,6 +189,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", + "-fexperimental-new-pass-manager", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", -- cgit v1.2.3 From f30ddd44636b4767889080bbf914cbea5f322258 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Wed, 29 Jul 2020 16:05:07 -0700 Subject: default_remotes: Update toolchain DUT names BUG=b:153872557 TEST=None Change-Id: Ibc9f16d253ee9bd113fc654846462e647dc0594c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2327953 Tested-by: Tiancong Wang Reviewed-by: George Burgess Commit-Queue: George Burgess Auto-Submit: Tiancong Wang --- crosperf/default_remotes | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/crosperf/default_remotes b/crosperf/default_remotes index 7b59c2af..cc7f33ef 100644 --- a/crosperf/default_remotes +++ b/crosperf/default_remotes @@ -1,8 +1,9 @@ -elm : chromeos2-row9-rack8-host19.cros chromeos2-row9-rack8-host21.cros -bob : chromeos2-row9-rack7-host1.cros chromeos2-row9-rack7-host3.cros -chell : chromeos2-row9-rack8-host3.cros chromeos2-row9-rack8-host5.cros -kefka : chromeos2-row9-rack9-host21.cros chromeos2-row9-rack8-host1.cros -lulu : chromeos2-row9-rack8-host9.cros chromeos2-row9-rack8-host7.cros -nautilus : chromeos2-row9-rack7-host11.cros chromeos2-row9-rack7-host9.cros -snappy : chromeos2-row9-rack7-host5.cros chromeos2-row9-rack7-host7.cros -veyron_minnie : chromeos2-row9-rack8-host15.cros chromeos2-row9-rack8-host17.cros +bob : chromeos2-row10-rack9-host1.cros chromeos2-row10-rack9-host3.cros +coral : chromeos2-row9-rack9-host9.cros chromeos2-row9-rack9-host11.cros chromeos2-row9-rack9-host13.cros +elm : chromeos2-row10-rack9-host19.cros chromeos2-row10-rack9-host21.cros +chell : chromeos2-row9-rack9-host1.cros chromeos2-row9-rack9-host3.cros +kefka : chromeos2-row9-rack9-host21.cros chromeos2-row10-rack9-host13.cros +lulu : chromeos2-row9-rack9-host5.cros chromeos2-row9-rack9-host7.cros +nautilus : chromeos2-row10-rack9-host9.cros chromeos2-row10-rack9-host11.cros +snappy : chromeos2-row10-rack9-host5.cros chromeos2-row10-rack9-host7.cros +veyron_minnie : chromeos2-row10-rack9-host15.cros chromeos2-row10-rack9-host17.cros -- cgit v1.2.3 From 9726f506eb43c95e3abc8df3253d42291c9d5d7b Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Tue, 28 Jul 2020 15:02:33 -0700 Subject: llvm_tools: add a tool to bisect clang crashes Add a tool that downloads clang crash diagnoses from chrome-toolchain-artifacts/clang-crash-dignoses and send them to 4c server for bisection. BUG=chromium:1056904 TEST=local tests Change-Id: I75081259705c236a20173fc591d080c6b0504cc5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2325008 Tested-by: Jian Cai Reviewed-by: George Burgess --- llvm_tools/README.md | 18 +++++ llvm_tools/bisect_clang_crashes.py | 109 ++++++++++++++++++++++++++++ llvm_tools/bisect_clang_crashes_unittest.py | 92 +++++++++++++++++++++++ 3 files changed, 219 insertions(+) create mode 100755 llvm_tools/bisect_clang_crashes.py create mode 100755 llvm_tools/bisect_clang_crashes_unittest.py diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 547a3056..9c4a9c08 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -550,3 +550,21 @@ PYTHONPATH=../ ./nightly_revert_checker.py \ --llvm_dir llvm-project-copy \ --chromeos_dir ../../../../ ``` + +### `bisect_clang_crashes.py` + +This script downloads clang crash diagnoses from +gs://chrome-toolchain-artifacts/clang-crash-diagnoses and send them to 4c for +bisectiton. + +Usage example: + +``` +$ ./bisect_clang_crashes.py --4c 4c-cli --state_file ./output/state.json +``` + +The above command downloads the artifacts of clang crash diagnoses and send them +to 4c server for bisection. The summary of submitted jobs will be saved in +output/state.json under the current path. The output directory will be created +automatically if it does not exist yet. To get more information of the submitted +jobs, please refer to go/4c-cli. diff --git a/llvm_tools/bisect_clang_crashes.py b/llvm_tools/bisect_clang_crashes.py new file mode 100755 index 00000000..e7ce96e4 --- /dev/null +++ b/llvm_tools/bisect_clang_crashes.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Fetches and submits the artifacts from Chrome OS toolchain's crash bucket. +""" + +# pylint: disable=cros-logging-import + +import argparse +import glob +import json +import logging +import os +import os.path +import shutil +import subprocess +import sys + +import chroot + + +def get_artifacts(pattern): + results = subprocess.check_output(['gsutil', 'ls', pattern], + stderr=subprocess.STDOUT, + encoding='utf-8') + return [l.strip() for l in results.splitlines()] + + +def get_crash_reproducers(working_dir): + results = [] + for src in [ + f for f in glob.glob('%s/*.c*' % working_dir) + if f.split('.')[-1] in ['c', 'cc', 'cpp'] + ]: + script = '.'.join(src.split('.')[:-1]) + '.sh' + if not os.path.exists(script): + logging.warning('could not find the matching script of %s', src) + else: + results.append((src, script)) + return results + + +def main(argv): + chroot.VerifyOutsideChroot() + logging.basicConfig( + format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s', + level=logging.INFO, + ) + cur_dir = os.path.dirname(os.path.abspath(__file__)) + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + '--4c', dest='forcey', required=True, help='Path to a 4c client binary') + parser.add_argument( + '--state_file', + default=os.path.join(cur_dir, 'chromeos-state.json'), + help='The path to the state file.') + parser.add_argument( + '--nocleanup', + action='store_false', + dest='cleanup', + help='Keep temporary files created after the script finishes.') + opts = parser.parse_args(argv) + + state_file = os.path.abspath(opts.state_file) + os.makedirs(os.path.dirname(state_file), exist_ok=True) + temporary_directory = '/tmp/bisect_clang_crashes' + os.makedirs(temporary_directory, exist_ok=True) + urls = get_artifacts('gs://chromeos-toolchain-artifacts/clang-crash-diagnoses' + '/**/*clang_crash_diagnoses.tar.xz') + visited = {} + if os.path.exists(state_file): + buildbucket_ids = {url.split('/')[-2] for url in urls} + with open(state_file, encoding='utf-8') as f: + data = json.load(f) + visited = {k: v for k, v in data.items() if k in buildbucket_ids} + for url in urls: + splits = url.split('/') + buildbucket_id = splits[-2] + # Skip the builds that has been processed + if buildbucket_id in visited: + continue + visited[buildbucket_id] = '%s' % url + dest_dir = os.path.join(temporary_directory, buildbucket_id) + dest_file = os.path.join(dest_dir, splits[-1]) + subprocess.check_output(['gsutil', 'cp', url, dest_file]) + subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) + + for src, script in get_crash_reproducers(dest_dir): + subprocess.check_output( + [ + opts.forcey, 'reduce', '-wait=false', '-note', + '%s:%s' % (url, src), '-sh_file', script, '-src_file', src + ], + encoding='utf-8', + ) + + tmp_state_file = state_file + '.tmp' + with open(tmp_state_file, 'w', encoding='utf-8') as f: + json.dump(visited, f, indent=2) + os.rename(tmp_state_file, state_file) + if opts.cleanup: + shutil.rmtree(temporary_directory) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/llvm_tools/bisect_clang_crashes_unittest.py b/llvm_tools/bisect_clang_crashes_unittest.py new file mode 100755 index 00000000..66923ffc --- /dev/null +++ b/llvm_tools/bisect_clang_crashes_unittest.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for bisect_clang_crashes.""" + +# pylint: disable=cros-logging-import +import glob +import logging +import os.path +import subprocess +import unittest +import unittest.mock as mock + +import bisect_clang_crashes + + +class Test(unittest.TestCase): + """Tests for bisect_clang_crashes.""" + + class _SilencingFilter(object): + """Silences all log messages. + + Also collects info about log messages that would've been emitted. + """ + + def __init__(self): + self.messages = [] + + def filter(self, record): + self.messages.append(record.getMessage()) + return 0 + + @mock.patch.object(subprocess, 'check_output') + def test_get_artifacts(self, mock_gsutil_ls): + pattern = 'gs://chromeos-toolchain-artifacts/clang-crash-diagnoses/' \ + '**/*clang_crash_diagnoses.tar.xz' + mock_gsutil_ls.return_value = 'artifact1\nartifact2\nartifact3' + results = bisect_clang_crashes.get_artifacts(pattern) + self.assertEqual(results, ['artifact1', 'artifact2', 'artifact3']) + mock_gsutil_ls.assert_called_once_with(['gsutil', 'ls', pattern], + stderr=subprocess.STDOUT, + encoding='utf-8') + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(glob, 'glob') + def test_get_crash_reproducers_succeed(self, mock_file_search, + mock_file_check): + working_dir = 'SomeDirectory' + mock_file_search.return_value = ['a.c', 'b.cpp', 'c.cc'] + mock_file_check.side_effect = [True, True, True] + results = bisect_clang_crashes.get_crash_reproducers(working_dir) + mock_file_search.assert_called_once_with('%s/*.c*' % working_dir) + self.assertEqual(mock_file_check.call_count, 3) + self.assertEqual(mock_file_check.call_args_list[0], mock.call('a.sh')) + self.assertEqual(mock_file_check.call_args_list[1], mock.call('b.sh')) + self.assertEqual(mock_file_check.call_args_list[2], mock.call('c.sh')) + self.assertEqual(results, [('a.c', 'a.sh'), ('b.cpp', 'b.sh'), + ('c.cc', 'c.sh')]) + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(glob, 'glob') + def test_get_crash_reproducers_no_matching_script(self, mock_file_search, + mock_file_check): + + def silence_logging(): + root = logging.getLogger() + filt = self._SilencingFilter() + root.addFilter(filt) + self.addCleanup(root.removeFilter, filt) + return filt + + log_filter = silence_logging() + working_dir = 'SomeDirectory' + mock_file_search.return_value = ['a.c', 'b.cpp', 'c.cc'] + mock_file_check.side_effect = [True, False, True] + results = bisect_clang_crashes.get_crash_reproducers(working_dir) + mock_file_search.assert_called_once_with('%s/*.c*' % working_dir) + self.assertEqual(mock_file_check.call_count, 3) + self.assertEqual(mock_file_check.call_args_list[0], mock.call('a.sh')) + self.assertEqual(mock_file_check.call_args_list[1], mock.call('b.sh')) + self.assertEqual(mock_file_check.call_args_list[2], mock.call('c.sh')) + self.assertEqual(results, [('a.c', 'a.sh'), ('c.cc', 'c.sh')]) + self.assertTrue( + any('could not find the matching script of b.cpp' in x + for x in log_filter.messages), log_filter.messages) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From 9f9902361b91ce750a073b4b85476701aafb165e Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 3 Aug 2020 17:00:42 -0700 Subject: afdo_metadata: Publish the new kernel profiles. Update chromeos-kernel-3_18 to R86-13371.0-1596447357 Update chromeos-kernel-4_4 to R86-13371.0-1596447182 Update chromeos-kernel_4_14 to R86-13371.0-1596447453 Update chromeeos-kernel-4_19 to R86-13374.0-1596447620 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I902516a74b1b2a308a4e92aca79d31c0b9148eb8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2335787 Reviewed-by: Tiancong Wang Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 62fe5c67..c72952d2 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13310.26-1595842968" + "name": "R86-13371.0-1596447357" }, "chromeos-kernel-4_4": { - "name": "R86-13352.0-1595842406" + "name": "R86-13371.0-1596447182" }, "chromeos-kernel-4_14": { - "name": "R86-13310.26-1595842760" + "name": "R86-13371.0-1596447453" }, "chromeos-kernel-4_19": { - "name": "R86-13354.0-1595842495" + "name": "R86-13374.0-1596447620" } } -- cgit v1.2.3 From 811b580723a9c10f57ceca934c9f0b3a847baa3c Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 6 Aug 2020 08:14:34 -0700 Subject: Update cleanup script to get chrome temp files too. BUG=None TEST=Tested updated script on chrotomation3 Change-Id: Ic7c684e2a6fcb52596cbdc9f308e0ca1fbb6f05b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2340400 Commit-Queue: Caroline Tice Tested-by: Caroline Tice Reviewed-by: George Burgess --- auto_delete_nightly_test_data.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index e40b95c2..0cda051f 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -209,6 +209,25 @@ def CleanOldCLs(days_to_preserve='1', dry_run=False): return ce.ChrootRunCommand( chromeos_root, abandon_cls_cmd, print_to_console=False) +def CleanChromeTelemetryTmpFiles(dry_run): + rv = 0 + ce = command_executer.GetCommandExecuter() + tmp_dir = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos', '.cache', + 'distfiles', 'target', 'chrome-src-internal', 'src', + 'tmp'); + cmd = f'rm -fr {shlex.quote(tmp_dir)}/tmp*telemetry_Crosperf' + if dry_run: + print(f'Going to execute:\n{shlex.quote(cmd)}') + else: + rv = ce.RunCommand(cmd, print_to_console=False) + if rv == 0: + print(f'Successfully cleaned chrome tree tmp directory ' + '"{shlex.quote(tmp_dir)}".' + else: + print(f'Some directories were not removed under chrome tree ' + 'tmp directory -"{shlex.quote(tmp_dir)}".') + return rv + def Main(argv): """Delete nightly test data directories, tmps and test images.""" @@ -239,7 +258,10 @@ def Main(argv): # Clean CLs that are not updated in last 2 weeks. rv3 = CleanOldCLs('14', options.dry_run) - return rv + rv2 + rv3 + # Clean telemetry temporaries from chrome source tree inside chroot. + rv4 = CleanChromeTelemetryTmpFiles(options.dry_run) + + return rv + rv2 + rv3 + rv4 if __name__ == '__main__': -- cgit v1.2.3 From 2953a41a804820ea859e484fd8e28aa7e9ea9de8 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 6 Aug 2020 11:11:52 -0700 Subject: Update cleanup script to get chrome temp files too. Final patch didn't get uploaded last time; here it is. BUG=None TEST=Tested updaed script on chrotomation3. Change-Id: I8abccb8c5ed98b7086dc03bc05bd3d75ae8b6734 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2341096 Reviewed-by: George Burgess Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- auto_delete_nightly_test_data.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 0cda051f..03d59b28 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -16,6 +16,7 @@ import datetime import os import re import shutil +import shlex import sys import time @@ -217,15 +218,15 @@ def CleanChromeTelemetryTmpFiles(dry_run): 'tmp'); cmd = f'rm -fr {shlex.quote(tmp_dir)}/tmp*telemetry_Crosperf' if dry_run: - print(f'Going to execute:\n{shlex.quote(cmd)}') + print(f'Going to execute:\n{cmd}') else: rv = ce.RunCommand(cmd, print_to_console=False) if rv == 0: print(f'Successfully cleaned chrome tree tmp directory ' - '"{shlex.quote(tmp_dir)}".' + f'{tmp_dir!r} .') else: print(f'Some directories were not removed under chrome tree ' - 'tmp directory -"{shlex.quote(tmp_dir)}".') + f'tmp directory {tmp_dir!r}.') return rv -- cgit v1.2.3 From 0a377f4bba0a15d994624bf078b8120ac7cdf5ce Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 5 Aug 2020 15:03:36 -0700 Subject: compiler_wrapper: dump tricium clang-tidy crash information This CL has us dump extra info when we observe a crash while using `WITH_TIDY=tricium`. In particular: - We'll now try to generate a -E'ed source file, and stash that in a subdirectory of our general crash_diagnostics directory. - Our JSON object that represents clang-tidy output has metadata about the aforementioned crash file, if it was generated. BUG=chromium:1113442 TEST=`go test`; ran locally with a crashy clang-tidy Change-Id: I577e5ec8e990af3b7cf1d8a9fea347582d5b227b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2343974 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/clang_tidy_flag.go | 70 +++++++++++++++++++++++++------- compiler_wrapper/clang_tidy_flag_test.go | 57 ++++++++++++++++++++++++++ compiler_wrapper/compiler_wrapper.go | 2 +- compiler_wrapper/config.go | 33 +++++++++------ compiler_wrapper/testutil_test.go | 1 + 5 files changed, 134 insertions(+), 29 deletions(-) diff --git a/compiler_wrapper/clang_tidy_flag.go b/compiler_wrapper/clang_tidy_flag.go index 2d97ddd3..01387fd6 100644 --- a/compiler_wrapper/clang_tidy_flag.go +++ b/compiler_wrapper/clang_tidy_flag.go @@ -9,12 +9,15 @@ import ( "fmt" "io/ioutil" "os" + "path" "path/filepath" "strings" ) type useTidyMode int +const clangTidyCrashSubstring = "PLEASE submit a bug report" + const ( tidyModeNone useTidyMode = iota tidyModeAll @@ -95,7 +98,7 @@ func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFl }, nil } -func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string, extraTidyFlags []string) error { +func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string, extraTidyFlags []string, crashArtifactsDir string) error { if err := os.MkdirAll(fixesDir, 0777); err != nil { return fmt.Errorf("creating fixes directory at %q: %v", fixesDir, err) } @@ -128,13 +131,58 @@ func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir strin return err } + type crashOutput struct { + CrashReproducerPath string `json:"crash_reproducer_path"` + Stdstreams string `json:"stdstreams"` + } + type metadata struct { - Args []string `json:"args"` - Executable string `json:"executable"` - ExitCode int `json:"exit_code"` - LintTarget string `json:"lint_target"` - Stdstreams string `json:"stdstreams"` - Wd string `json:"wd"` + Args []string `json:"args"` + CrashOutput *crashOutput `json:"crash_output"` + Executable string `json:"executable"` + ExitCode int `json:"exit_code"` + LintTarget string `json:"lint_target"` + Stdstreams string `json:"stdstreams"` + Wd string `json:"wd"` + } + + meta := &metadata{ + Args: clangTidyCmd.Args, + CrashOutput: nil, + Executable: clangTidyCmd.Path, + ExitCode: exitCode, + LintTarget: cSrcFile, + Stdstreams: stdstreams.String(), + Wd: env.getwd(), + } + + // Sometimes, clang-tidy crashes. Unfortunately, these don't get funnelled through the + // standard clang crash machinery. :(. Try to work with our own. + if crashArtifactsDir != "" && strings.Contains(meta.Stdstreams, clangTidyCrashSubstring) { + tidyCrashArtifacts := path.Join(crashArtifactsDir, "clang-tidy") + if err := os.MkdirAll(tidyCrashArtifacts, 0777); err != nil { + return fmt.Errorf("creating crash artifacts directory at %q: %v", tidyCrashArtifacts, err) + } + + f, err := ioutil.TempFile(tidyCrashArtifacts, "crash-") + if err != nil { + return fmt.Errorf("making tempfile for crash output: %v", err) + } + f.Close() + + reproCmd := &command{} + *reproCmd = *clangCmd + reproCmd.Args = append(reproCmd.Args, "-E", "-o", f.Name()) + + reproOut := &strings.Builder{} + _, err = wrapSubprocessErrorWithSourceLoc(reproCmd, env.run(reproCmd, nil, reproOut, reproOut)) + if err != nil { + return fmt.Errorf("attempting to produce a clang-tidy crash reproducer: %v", err) + } + meta.CrashOutput = &crashOutput{ + CrashReproducerPath: f.Name(), + Stdstreams: reproOut.String(), + } } f, err = os.Create(fixesMetadataPath) @@ -142,14 +190,6 @@ func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir strin return fmt.Errorf("creating fixes metadata: %v", err) } - meta := &metadata{ - Args: clangTidyCmd.Args, - Executable: clangTidyCmd.Path, - ExitCode: exitCode, - LintTarget: cSrcFile, - Stdstreams: stdstreams.String(), - Wd: env.getwd(), - } if err := json.NewEncoder(f).Encode(meta); err != nil { return fmt.Errorf("writing fixes metadata: %v", err) } diff --git a/compiler_wrapper/clang_tidy_flag_test.go b/compiler_wrapper/clang_tidy_flag_test.go index 54159cdc..4293bb21 100644 --- a/compiler_wrapper/clang_tidy_flag_test.go +++ b/compiler_wrapper/clang_tidy_flag_test.go @@ -386,6 +386,63 @@ func TestClangTidyFlagsAreFilteredFromGccInvocations(t *testing.T) { }) } +func TestTriciumReportsClangTidyCrashesGracefully(t *testing.T) { + withClangTidyTestContext(t, func(ctx *testContext) { + ctx.env = []string{"WITH_TIDY=tricium"} + ctx.cmdMock = func(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { + switch ctx.cmdCount { + case 1: + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + return nil + case 2: + if err := verifyPath(cmd, "usr/bin/clang-tidy"); err != nil { + return err + } + + if _, err := io.WriteString(stdout, clangTidyCrashSubstring); err != nil { + return err + } + return nil + case 3: + if err := verifyPath(cmd, "usr/bin/clang"); err != nil { + t.Error(err) + } + + args := cmd.Args + if len(args) < 3 { + t.Errorf("insufficient number of args provided; got %d; want at least 3", len(args)) + return nil + } + + lastArgs := args[len(args)-3:] + eArg, oArg, outFileArg := lastArgs[0], lastArgs[1], lastArgs[2] + if eArg != "-E" { + t.Errorf("got eArg=%q; wanted -E", eArg) + } + + if oArg != "-o" { + t.Errorf("got oArg=%q; wanted -o", oArg) + } + + wantPrefix := path.Join(ctx.cfg.crashArtifactsDir, "clang-tidy") + if !strings.HasPrefix(outFileArg, wantPrefix) { + t.Errorf("got out file %q; wanted one starting with %q", outFileArg, wantPrefix) + } + + return nil + default: + return nil + } + } + ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(clangX86_64, mainCc))) + if ctx.cmdCount != 4 { + t.Errorf("expected 3 calls. Got: %d", ctx.cmdCount) + } + }) +} + func withClangTidyTestContext(t *testing.T, work func(ctx *testContext)) { withTestContext(t, func(ctx *testContext) { ctx.env = []string{"WITH_TIDY=1"} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index a5d35a2c..da712a33 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -106,7 +106,7 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int if cfg.triciumNitsDir == "" { return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured") } - err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir, tidyFlags) + err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir, tidyFlags, cfg.crashArtifactsDir) case tidyModeAll: err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile, tidyFlags) default: diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 546a0e11..e87c7baa 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -31,6 +31,8 @@ type config struct { newWarningsDir string // Directory to store nits in when using `WITH_TIDY=tricium`. triciumNitsDir string + // Directory to store crash artifacts in. + crashArtifactsDir string // Version. Only used for printing via -print-cmd. version string } @@ -143,6 +145,8 @@ var crosHardenedConfig = &config{ }, newWarningsDir: "/tmp/fatal_clang_warnings", triciumNitsDir: "/tmp/linting_output/clang-tidy", + // FIXME(gbiv): apply -fcrash-diagnostics-dir based on this. + crashArtifactsDir: "/tmp/clang_crash_diagnostics", } // Flags to be added to non-hardened toolchain. @@ -173,8 +177,9 @@ var crosNonHardenedConfig = &config{ clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", }, - newWarningsDir: "/tmp/fatal_clang_warnings", - triciumNitsDir: "/tmp/linting_output/clang-tidy", + newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", + crashArtifactsDir: "/tmp/clang_crash_diagnostics", } // Flags to be added to host toolchain. @@ -211,18 +216,20 @@ var crosHostConfig = &config{ clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", }, - newWarningsDir: "/tmp/fatal_clang_warnings", - triciumNitsDir: "/tmp/linting_output/clang-tidy", + newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", + crashArtifactsDir: "/tmp/clang_crash_diagnostics", } var androidConfig = &config{ - isHostWrapper: false, - isAndroidWrapper: true, - rootRelPath: "./", - commonFlags: []string{}, - gccFlags: []string{}, - clangFlags: []string{}, - clangPostFlags: []string{}, - newWarningsDir: "", - triciumNitsDir: "", + isHostWrapper: false, + isAndroidWrapper: true, + rootRelPath: "./", + commonFlags: []string{}, + gccFlags: []string{}, + clangFlags: []string{}, + clangPostFlags: []string{}, + newWarningsDir: "", + triciumNitsDir: "", + crashArtifactsDir: "", } diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index d23a8434..21b7169d 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -142,6 +142,7 @@ func (ctx *testContext) updateConfig(cfg *config) { *ctx.cfg = *cfg ctx.cfg.newWarningsDir = filepath.Join(ctx.tempDir, "fatal_clang_warnings") ctx.cfg.triciumNitsDir = filepath.Join(ctx.tempDir, "tricium_nits") + ctx.cfg.crashArtifactsDir = filepath.Join(ctx.tempDir, "clang_crash_diagnostics") } func (ctx *testContext) newCommand(path string, args ...string) *command { -- cgit v1.2.3 From 1713d258a4eaa8a52a7216971bf4b40b36b27aee Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 7 Aug 2020 19:17:52 -0700 Subject: compiler_wrapper: use crashArtifactsDir to apply clang opts Since we now have crashArtifactsDir as a more abstract concept, it seems good to apply '-fcrash-diagnostics-dir=' based on that, rather than having it as an explicit clang flag. BUG=chromium:1113442 TEST=FIXME Change-Id: I147779d7cf8806b3bc712c2998446158e87ec967 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2343975 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- compiler_wrapper/compiler_wrapper.go | 3 +++ compiler_wrapper/config.go | 4 ---- .../testdata/cros_clang_host_golden/bisect.json | 6 +++--- .../clang_ftrapv_maincc_target_specific.json | 18 ++++++++-------- .../cros_clang_host_golden/clang_host_wrapper.json | 2 +- .../clang_maincc_target_specific.json | 18 ++++++++-------- .../cros_clang_host_golden/clang_path.json | 24 +++++++++++----------- .../clang_sanitizer_args.json | 16 +++++++-------- .../clang_specific_args.json | 14 ++++++------- .../testdata/cros_clang_host_golden/clangtidy.json | 16 +++++++-------- .../force_disable_werror.json | 10 ++++----- .../testdata/cros_hardened_golden/bisect.json | 6 +++--- .../clang_ftrapv_maincc_target_specific.json | 18 ++++++++-------- .../clang_maincc_target_specific.json | 18 ++++++++-------- .../testdata/cros_hardened_golden/clang_path.json | 24 +++++++++++----------- .../cros_hardened_golden/clang_sanitizer_args.json | 16 +++++++-------- .../cros_hardened_golden/clang_specific_args.json | 14 ++++++------- .../clang_sysroot_wrapper_common.json | 12 +++++------ .../testdata/cros_hardened_golden/clangtidy.json | 16 +++++++-------- .../cros_hardened_golden/force_disable_werror.json | 10 ++++----- .../cros_hardened_golden/gcc_clang_syntax.json | 8 ++++---- .../cros_hardened_llvmnext_golden/bisect.json | 6 +++--- .../cros_hardened_llvmnext_golden/clang_path.json | 24 +++++++++++----------- .../cros_hardened_llvmnext_golden/clangtidy.json | 16 +++++++-------- .../force_disable_werror.json | 10 ++++----- .../gcc_clang_syntax.json | 8 ++++---- .../cros_hardened_noccache_golden/bisect.json | 6 +++--- .../cros_hardened_noccache_golden/clang_path.json | 24 +++++++++++----------- .../cros_hardened_noccache_golden/clangtidy.json | 16 +++++++-------- .../force_disable_werror.json | 10 ++++----- .../gcc_clang_syntax.json | 8 ++++---- .../testdata/cros_nonhardened_golden/bisect.json | 6 +++--- .../clang_ftrapv_maincc_target_specific.json | 18 ++++++++-------- .../clang_maincc_target_specific.json | 18 ++++++++-------- .../cros_nonhardened_golden/clang_path.json | 24 +++++++++++----------- .../clang_sanitizer_args.json | 16 +++++++-------- .../clang_specific_args.json | 14 ++++++------- .../clang_sysroot_wrapper_common.json | 12 +++++------ .../cros_nonhardened_golden/clangtidy.json | 16 +++++++-------- .../force_disable_werror.json | 10 ++++----- .../cros_nonhardened_golden/gcc_clang_syntax.json | 8 ++++---- 41 files changed, 271 insertions(+), 272 deletions(-) diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index da712a33..aa52dfdc 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -182,6 +182,9 @@ func prepareClangCommand(builder *commandBuilder) (err error) { processSysrootFlag(builder) } builder.addPreUserArgs(builder.cfg.clangFlags...) + if builder.cfg.crashArtifactsDir != "" { + builder.addPreUserArgs("-fcrash-diagnostics-dir=" + builder.cfg.crashArtifactsDir) + } builder.addPostUserArgs(builder.cfg.clangPostFlags...) calcCommonPreUserArgs(builder) return processClangFlags(builder) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index e87c7baa..10a69679 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -137,7 +137,6 @@ var crosHardenedConfig = &config{ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ @@ -145,7 +144,6 @@ var crosHardenedConfig = &config{ }, newWarningsDir: "/tmp/fatal_clang_warnings", triciumNitsDir: "/tmp/linting_output/clang-tidy", - // FIXME(gbiv): apply -fcrash-diagnostics-dir based on this. crashArtifactsDir: "/tmp/clang_crash_diagnostics", } @@ -171,7 +169,6 @@ var crosNonHardenedConfig = &config{ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ @@ -210,7 +207,6 @@ var crosHostConfig = &config{ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", }, clangPostFlags: []string{ diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json index c40faf67..cc55bc4f 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/bisect.json @@ -35,8 +35,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -84,8 +84,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], @@ -136,8 +136,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ], diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json index 2870f96f..5a59277c 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_ftrapv_maincc_target_specific.json @@ -26,8 +26,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -62,8 +62,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -98,8 +98,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -134,8 +134,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -170,8 +170,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -206,8 +206,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -242,8 +242,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -278,8 +278,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -314,8 +314,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json index 3bae0706..44b2fb91 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_host_wrapper.json @@ -25,8 +25,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json index b8048024..0b951f3e 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_maincc_target_specific.json @@ -25,8 +25,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -60,8 +60,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -95,8 +95,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -130,8 +130,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -165,8 +165,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -200,8 +200,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -235,8 +235,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -270,8 +270,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -305,8 +305,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json index 8eb8d5a4..69fb4410 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_path.json @@ -25,8 +25,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,8 +63,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -101,8 +101,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -139,8 +139,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -184,8 +184,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -234,8 +234,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -284,8 +284,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -324,8 +324,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -359,8 +359,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -394,8 +394,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -429,8 +429,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -467,8 +467,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json index 8dc90e25..93e566fe 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_sanitizer_args.json @@ -27,8 +27,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -65,8 +65,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -103,8 +103,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -141,8 +141,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -178,8 +178,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -217,8 +217,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -256,8 +256,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion" @@ -293,8 +293,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 02e3cec6..06030a09 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -36,8 +36,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -72,8 +72,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion" @@ -109,8 +109,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion" @@ -146,8 +146,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -183,8 +183,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -220,8 +220,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion" @@ -257,8 +257,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion" diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json index 44c58f84..c4f86b01 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clangtidy.json @@ -41,8 +41,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -63,8 +63,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -115,8 +115,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -137,8 +137,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -191,8 +191,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -216,8 +216,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -271,8 +271,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -293,8 +293,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json index fb854019..272b4220 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/force_disable_werror.json @@ -28,8 +28,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -66,8 +66,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -90,8 +90,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", @@ -132,8 +132,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion" ] @@ -156,8 +156,8 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-Wno-unknown-warning-option", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-error", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 2302669a..97f5b1cf 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -37,8 +37,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,8 +99,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,8 +164,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index 49ac5646..7d5a38cb 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -28,8 +28,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,8 +80,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -132,8 +132,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -184,8 +184,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -236,8 +236,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -288,8 +288,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -340,8 +340,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -392,8 +392,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -444,8 +444,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index 6fc2b8e7..c7b278ae 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -77,8 +77,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -127,8 +127,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -177,8 +177,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -227,8 +227,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -277,8 +277,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -327,8 +327,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -377,8 +377,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -427,8 +427,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 6ba05ab1..1e0e5480 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,8 +80,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,8 +133,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -186,8 +186,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -246,8 +246,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -311,8 +311,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,8 +371,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,8 +426,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -476,8 +476,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -526,8 +526,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -576,8 +576,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -629,8 +629,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index a9bd08c4..c47b0bb8 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -29,8 +29,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -81,8 +81,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,8 +133,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -185,8 +185,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -236,8 +236,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -289,8 +289,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -342,8 +342,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -393,8 +393,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 0535df12..859597d7 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -38,8 +38,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -89,8 +89,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -141,8 +141,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -193,8 +193,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -245,8 +245,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -297,8 +297,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -349,8 +349,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 306873c9..5f3e3a65 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -62,8 +62,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -115,8 +115,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -161,8 +161,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", @@ -210,8 +210,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", "-fno-stack-protector", @@ -260,8 +260,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-D_FORTIFY_SOURCE=2", "-mthumb", "-fno-stack-protector", @@ -309,8 +309,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index 59642459..b526ec7c 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -42,8 +42,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,8 +73,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,8 +134,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -166,8 +166,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -229,8 +229,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -264,8 +264,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -328,8 +328,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -360,8 +360,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index 23cb8f59..f4bbf664 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -30,8 +30,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,8 +83,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -122,8 +122,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -179,8 +179,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,8 +218,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index 9cf7ab2f..024ac23a 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,8 +101,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -170,8 +170,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -223,8 +223,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 2302669a..97f5b1cf 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -37,8 +37,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -99,8 +99,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -164,8 +164,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 6ba05ab1..1e0e5480 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -80,8 +80,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -133,8 +133,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -186,8 +186,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -246,8 +246,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -311,8 +311,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -371,8 +371,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -426,8 +426,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -476,8 +476,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -526,8 +526,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -576,8 +576,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -629,8 +629,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index 59642459..b526ec7c 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -42,8 +42,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,8 +73,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,8 +134,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -166,8 +166,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -229,8 +229,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -264,8 +264,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -328,8 +328,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -360,8 +360,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 23cb8f59..f4bbf664 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -30,8 +30,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -83,8 +83,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -122,8 +122,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -179,8 +179,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,8 +218,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 9cf7ab2f..024ac23a 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -101,8 +101,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -170,8 +170,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -223,8 +223,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index 48b28521..dfbbbfe2 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -36,8 +36,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -94,8 +94,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -155,8 +155,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index e5c37c89..8637b8ea 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -26,8 +26,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,8 +73,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -120,8 +120,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -167,8 +167,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -221,8 +221,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -281,8 +281,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -340,8 +340,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -389,8 +389,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -433,8 +433,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -477,8 +477,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -521,8 +521,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -568,8 +568,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index 59642459..b526ec7c 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -42,8 +42,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -73,8 +73,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -134,8 +134,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -166,8 +166,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -229,8 +229,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -264,8 +264,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -328,8 +328,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -360,8 +360,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index 9510bfc3..a84e7baf 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -29,8 +29,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -76,8 +76,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -109,8 +109,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -160,8 +160,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -193,8 +193,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index 723c03c6..b18c608e 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -27,8 +27,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -96,8 +96,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -165,8 +165,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", @@ -218,8 +218,8 @@ "-fuse-ld=lld", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", "-pie", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index 06f5420c..bd3696c4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -34,8 +34,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -88,8 +88,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -145,8 +145,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index bf851e46..c81f6332 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -25,8 +25,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -69,8 +69,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -113,8 +113,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -157,8 +157,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -202,8 +202,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -246,8 +246,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -291,8 +291,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", @@ -336,8 +336,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", @@ -380,8 +380,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-ftrapv", "main.cc", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index 06abf6e4..6b7b80f2 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -24,8 +24,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -66,8 +66,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -108,8 +108,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -150,8 +150,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -193,8 +193,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -235,8 +235,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -278,8 +278,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", @@ -321,8 +321,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -363,8 +363,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index ce071110..b237e784 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -24,8 +24,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -69,8 +69,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -114,8 +114,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -159,8 +159,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -211,8 +211,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -268,8 +268,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -320,8 +320,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-resource-dir=someResourceDir", "--gcc-toolchain=/usr", "main.cc", @@ -367,8 +367,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -409,8 +409,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -451,8 +451,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-Ba/b/bin", @@ -493,8 +493,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -538,8 +538,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 3a29fb7f..7e2f61ee 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -26,8 +26,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -71,8 +71,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -116,8 +116,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -161,8 +161,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -205,8 +205,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=fuzzer", "main.cc", @@ -251,8 +251,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-experimental-new-pass-manager", "-fsanitize=address", "-fprofile-instr-generate", @@ -297,8 +297,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", @@ -341,8 +341,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index dc5b53a1..b82782ea 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -35,8 +35,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -78,8 +78,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", @@ -122,8 +122,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", @@ -166,8 +166,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -210,8 +210,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -254,8 +254,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", @@ -298,8 +298,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index a2ac55b4..82b0efd4 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -55,8 +55,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -100,8 +100,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -138,8 +138,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -181,8 +181,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fno-stack-protector", "-D__KERNEL__", "main.cc", @@ -226,8 +226,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-mthumb", "-fno-stack-protector", "-D__KERNEL__", @@ -271,8 +271,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index 2e73f74e..5ea4c766 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -39,8 +39,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -62,8 +62,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -115,8 +115,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -139,8 +139,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -194,8 +194,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -221,8 +221,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -277,8 +277,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -301,8 +301,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index e4bc550c..9e979d63 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -27,8 +27,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -72,8 +72,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -103,8 +103,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -152,8 +152,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -183,8 +183,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index a3cabd88..ca16f412 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -24,8 +24,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -86,8 +86,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -143,8 +143,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", @@ -188,8 +188,8 @@ "-static-libgcc", "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", - "-fcrash-diagnostics-dir=/tmp/clang_crash_diagnostics", "-fexperimental-new-pass-manager", + "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", "-B../../bin", -- cgit v1.2.3 From 3dac9faa8373733a66905243cd6925b050635a38 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Fri, 31 Jul 2020 16:33:00 -0700 Subject: rust_tools: Add a tool to automatically generate a Rust uprev This is the first pass to add a tool to convert rust upgrade process into a program that can generate CLs autoamatically. The tool is resumable, so when patches fail to apply, the user can fix the patch, resume the tool until no problems exist. The current tool only supports uprev from the earlier Rust ebuild in chroot and will need future passes to add more features. BUG=chromium:1112551 TEST=unittest;generated a CL locally Change-Id: I77fccd14c69548824a8b235d756357aee0c42ef2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2339593 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: Bob Haarman Reviewed-by: George Burgess --- rust_tools/rust_uprev.py | 422 ++++++++++++++++++++++++++++++++++++++++++ rust_tools/rust_uprev_test.py | 308 ++++++++++++++++++++++++++++++ 2 files changed, 730 insertions(+) create mode 100755 rust_tools/rust_uprev.py create mode 100755 rust_tools/rust_uprev_test.py diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py new file mode 100755 index 00000000..f8c03331 --- /dev/null +++ b/rust_tools/rust_uprev.py @@ -0,0 +1,422 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tool to automatically generate a new Rust uprev CL. + +This tool is intended to automatically generate a CL to uprev Rust to a +newer version in Chrome OS. It's based on +src/third_party/chromiumos-overlay/dev-lang/rust/UPGRADE.md. When using +the tool, the progress can be saved to a JSON file, so the user can resume +the process after a failing step is fixed. Example usage: + +1. (inside chroot) $ ./rust_tools/rust_uprev.py --rust_version 1.45.0 \ + --state_file /tmp/state-file.json +2. Step "compile rust" failed due to the patches can't apply to new version +3. Manually fix the patches +4. Execute the command in step 1 again. +5. Iterate 1-4 for each failed step until the tool passes. + +See `--help` for all available options. +""" + +# pylint: disable=cros-logging-import + +import argparse +import pathlib +import json +import logging +import os +import re +import shutil +import subprocess +import sys +import tempfile +from typing import Any, Callable, Dict, List, NamedTuple, Optional, T, Tuple + +from llvm_tools import chroot, git + + +def get_command_output(command: List[str]) -> str: + return subprocess.check_output(command, encoding='utf-8').strip() + + +class RustVersion(NamedTuple): + """NamedTuple represents a Rust version""" + major: int + minor: int + patch: int + + def __str__(self): + return f'{self.major}.{self.minor}.{self.patch}' + + @staticmethod + def parse_from_ebuild(ebuild_name: str) -> 'RustVersion': + input_re = re.compile(r'^rust-' + r'(?P\d+)\.' + r'(?P\d+)\.' + r'(?P\d+)' + r'\.ebuild$') + m = input_re.match(ebuild_name) + assert m, f'failed to parse {ebuild_name!r}' + return RustVersion( + int(m.group('major')), int(m.group('minor')), int(m.group('patch'))) + + @staticmethod + def parse(x: str) -> 'RustVersion': + input_re = re.compile(r'^(?:rust-)?' + r'(?P\d+)\.' + r'(?P\d+)\.' + r'(?P\d+)' + r'(?:.ebuild)?$') + m = input_re.match(x) + assert m, f'failed to parse {x!r}' + return RustVersion( + int(m.group('major')), int(m.group('minor')), int(m.group('patch'))) + + +def parse_stage0_file(new_version: RustVersion) -> Tuple[str, str, str]: + # Find stage0 date, rustc and cargo + stage0_file = get_command_output([ + 'curl', '-f', 'https://raw.githubusercontent.com/rust-lang/rust/' + f'{new_version}/src/stage0.txt' + ]) + regexp = re.compile(r'date:\s*(?P\d+-\d+-\d+)\s+' + r'rustc:\s*(?P\d+\.\d+\.\d+)\s+' + r'cargo:\s*(?P\d+\.\d+\.\d+)') + m = regexp.search(stage0_file) + assert m, 'failed to parse stage0.txt file' + stage0_date, stage0_rustc, stage0_cargo = m.groups() + logging.info('Found stage0 file has date: %s, rustc: %s, cargo: %s', + stage0_date, stage0_rustc, stage0_cargo) + return stage0_date, stage0_rustc, stage0_cargo + + +def prepare_uprev_from_json(json_input: Any + ) -> Tuple[str, RustVersion, RustVersion]: + a, b, c = json_input + return a, RustVersion(*b), RustVersion(*c) + + +def prepare_uprev(rust_version: RustVersion, + reset: bool) -> Tuple[str, RustVersion, RustVersion]: + ebuild_path = get_command_output(['equery', 'w', 'rust']) + rust_path, ebuild_name = os.path.split(ebuild_path) + if reset: + subprocess.check_call(['git', 'reset', '--hard'], cwd=rust_path) + ebuild_path = get_command_output(['equery', 'w', 'rust']) + _, ebuild_name = os.path.split(ebuild_path) + + current_version = RustVersion.parse(ebuild_name) + if rust_version <= current_version: + logging.info('Requested version %s is not newer than existing version %s.', + rust_version, current_version) + return '', None, None + + logging.info('Current Rust version is %s', current_version) + other_ebuilds = [ + x for x in os.listdir(rust_path) if '.ebuild' in x and x != ebuild_name + ] + if len(other_ebuilds) != 1: + raise Exception('Expect exactly 1 previous version ebuild, ' + f'but actually found {other_ebuilds}') + # TODO(tcwang): Only support uprev from the older ebuild; need support to + # pick either version of the Rust to uprev from + old_version = RustVersion.parse(other_ebuilds[0]) + # Prepare a repo branch for uprev + branch_name = f'rust-to-{rust_version}' + git.CreateBranch(rust_path, branch_name) + logging.info('Create a new repo branch %s', branch_name) + return rust_path, current_version, old_version + + +def copy_patches(rust_path: str, old_version: RustVersion, + current_version: RustVersion, + new_version: RustVersion) -> None: + patch_path = os.path.join(rust_path, 'files') + for f in os.listdir(patch_path): + if f'rust-{current_version}' not in f: + continue + logging.info('Rename patch %s to new version', f) + new_name = f.replace(str(current_version), str(new_version)) + shutil.copyfile( + os.path.join(patch_path, f), + os.path.join(patch_path, new_name), + ) + + subprocess.check_call(['git', 'add', f'files/rust-{new_version}-*.patch'], + cwd=rust_path) + + subprocess.check_call(['git', 'rm', f'files/rust-{old_version}-*.patch'], + cwd=rust_path) + + +def rename_ebuild(rust_path: str, old_version: RustVersion, + current_version: RustVersion, + new_version: RustVersion) -> str: + shutil.copyfile( + os.path.join(rust_path, f'rust-{current_version}.ebuild'), + os.path.join(rust_path, f'rust-{new_version}.ebuild')) + subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'], + cwd=rust_path) + subprocess.check_call(['git', 'rm', f'rust-{old_version}.ebuild'], + cwd=rust_path) + return os.path.join(rust_path, f'rust-{new_version}.ebuild') + + +def update_ebuild(ebuild_file: str, stage0_info: Tuple[str, str, str]) -> None: + stage0_date, stage0_rustc, stage0_cargo = stage0_info + with open(ebuild_file, encoding='utf-8') as f: + contents = f.read() + # Update STAGE0_DATE in the ebuild + stage0_date_re = re.compile(r'STAGE0_DATE="(\d+-\d+-\d+)"') + if not stage0_date_re.search(contents): + raise RuntimeError('STAGE0_DATE not found in rust ebuild') + new_contents = stage0_date_re.sub(f'STAGE0_DATE="{stage0_date}"', contents) + + # Update STAGE0_VERSION in the ebuild + stage0_rustc_re = re.compile(r'STAGE0_VERSION="[^"]*"') + if not stage0_rustc_re.search(new_contents): + raise RuntimeError('STAGE0_VERSION not found in rust ebuild') + new_contents = stage0_rustc_re.sub(f'STAGE0_VERSION="{stage0_rustc}"', + new_contents) + + # Update STAGE0_VERSION_CARGO in the ebuild + stage0_cargo_re = re.compile(r'STAGE0_VERSION_CARGO="[^"]*"') + if not stage0_cargo_re.search(new_contents): + raise RuntimeError('STAGE0_VERSION_CARGO not found in rust ebuild') + new_contents = stage0_cargo_re.sub(f'STAGE0_VERSION_CARGO="{stage0_cargo}"', + new_contents) + with open(ebuild_file, 'w', encoding='utf-8') as f: + f.write(new_contents) + logging.info( + 'Rust ebuild file has STAGE0_DATE, STAGE0_VERSION, STAGE0_VERSION_CARGO ' + 'updated to %s, %s, %s respectively', stage0_date, stage0_rustc, + stage0_cargo) + return ebuild_file + + +def flip_mirror_in_ebuild(ebuild_file: str, add: bool) -> None: + restrict_re = re.compile( + r'(?PRESTRICT=")(?P"[^"]*"|.*)(?P")') + with open(ebuild_file, encoding='utf-8') as f: + contents = f.read() + m = restrict_re.search(contents) + assert m, 'failed to find RESTRICT variable in Rust ebuild' + values = m.group('values') + if add: + if 'mirror' in values: + return + values += ' mirror' + else: + if 'mirror' not in values: + return + values = values.replace(' mirror', '') + new_contents = restrict_re.sub(r'\g%s\g' % values, contents) + with open(ebuild_file, 'w', encoding='utf-8') as f: + f.write(new_contents) + + +def rust_ebuild_command(command: str, sudo: bool = False) -> None: + ebuild_path_inchroot = get_command_output(['equery', 'w', 'rust']) + cmd = ['ebuild', ebuild_path_inchroot, command] + if sudo: + cmd = ['sudo'] + cmd + subprocess.check_call(cmd, stderr=subprocess.STDOUT) + + +def update_manifest(ebuild_file: str) -> None: + logging.info('Added "mirror" to RESTRICT to Rust ebuild') + flip_mirror_in_ebuild(ebuild_file, add=True) + rust_ebuild_command('manifest') + logging.info('Removed "mirror" to RESTRICT from Rust ebuild') + flip_mirror_in_ebuild(ebuild_file, add=False) + + +def upgrade_rust_packages(ebuild_file: str, old_version: RustVersion, + current_version: RustVersion, + new_version: RustVersion) -> None: + package_file = os.path.join( + os.path.dirname(ebuild_file), + '../../profiles/targets/chromeos/package.provided') + with open(package_file, encoding='utf-8') as f: + contents = f.read() + old_str = f'dev-lang/rust-{old_version}' + current_str = f'dev-lang/rust-{current_version}' + new_str = f'dev-lang/rust-{new_version}' + if old_str not in contents or current_str not in contents: + raise Exception(f'Expect {old_str} and {current_str} to be in ' + 'profiles/targets/chromeos/package.provided') + # Replace the two strings (old_str, current_str) with (current_str, new_str), + # so they are still ordered by rust versions + new_contents = contents.replace(current_str, + new_str).replace(old_str, current_str) + with open(package_file, 'w', encoding='utf-8') as f: + f.write(new_contents) + logging.info('package.provided has been updated from %s, %s to %s, %s', + old_str, current_str, current_str, new_str) + + +def update_virtual_rust(ebuild_file: str, old_version: RustVersion, + new_version: RustVersion) -> None: + virtual_rust_dir = os.path.join( + os.path.dirname(ebuild_file), '../../virtual/rust') + assert os.path.exists(virtual_rust_dir) + subprocess.check_call( + ['git', 'mv', f'rust-{old_version}.ebuild', f'rust-{new_version}.ebuild'], + cwd=virtual_rust_dir) + + +def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: + tarfile_name = f'rustc-{rust_version}-src.tar.gz' + rust_src = f'https://static.rust-lang.org/dist/{tarfile_name}' + logging.info('Downloading Rust from %s', rust_src) + gsutil_location = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' + + local_file = os.path.join(tempdir, tarfile_name) + subprocess.check_call(['curl', '-f', '-o', local_file, rust_src]) + # Since we are using `-n` to skip an item if it already exists, there's no + # need to check if the file exists on GS bucket or not. + subprocess.check_call( + ['gsutil', 'cp', '-n', '-a', 'public-read', local_file, gsutil_location]) + + +def perform_step(state_file: pathlib.Path, + tmp_state_file: pathlib.Path, + completed_steps: Dict[str, Any], + step_name: str, + step_fn: Callable[[], T], + result_from_json: Optional[Callable[[Any], T]] = None, + result_to_json: Optional[Callable[[T], Any]] = None) -> T: + if step_name in completed_steps: + logging.info('Skipping previously completed step %s', step_name) + if result_from_json: + return result_from_json(completed_steps[step_name]) + return completed_steps[step_name] + + logging.info('Running step %s', step_name) + val = step_fn() + logging.info('Step %s complete', step_name) + if result_to_json: + completed_steps[step_name] = result_to_json(val) + else: + completed_steps[step_name] = val + + with tmp_state_file.open('w', encoding='utf-8') as f: + json.dump(completed_steps, f, indent=4) + tmp_state_file.rename(state_file) + return val + + +def main(): + if not chroot.InChroot(): + raise RuntimeError('This script must be executed inside chroot') + + logging.basicConfig(level=logging.INFO) + + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--rust_version', + type=RustVersion.parse, + required=True, + help='Rust version to upgrade to, in the form a.b.c', + ) + parser.add_argument( + '--state_file', + required=True, + help='A state file to hold previous completed steps. If the file ' + 'exists, it needs to be used together with --continue or --restart. ' + 'If not exist (do not use --continue in this case), we will create a ' + 'file for you.', + ) + parser.add_argument( + '--skip_compile', + action='store_true', + help='Skip compiling rust to test the tool. Only for testing', + ) + parser.add_argument( + '--restart', + action='store_true', + help='Restart from the first step. Ignore the completed steps in ' + 'the state file', + ) + parser.add_argument( + '--continue', + dest='cont', + action='store_true', + help='Continue the steps from the state file', + ) + + args = parser.parse_args() + + rust_version = args.rust_version + state_file = pathlib.Path(args.state_file) + tmp_state_file = pathlib.Path(args.state_file + '.tmp') + + if args.cont and args.restart: + parser.error('Please select either --continue or --restart') + + if os.path.exists(state_file): + if not args.cont and not args.restart: + parser.error('State file exists, so you should either --continue ' + 'or --restart') + if args.cont and not os.path.exists(state_file): + parser.error('Indicate --continue but the state file does not exist') + + if args.restart and os.path.exists(state_file): + os.remove(state_file) + + try: + with state_file.open(encoding='utf-8') as f: + completed_steps = json.load(f) + except FileNotFoundError: + completed_steps = {} + + def run_step( + step_name: str, + step_fn: Callable[[], T], + result_from_json: Optional[Callable[[Any], T]] = None, + result_to_json: Optional[Callable[[T], Any]] = None, + ) -> T: + return perform_step(state_file, tmp_state_file, completed_steps, step_name, + step_fn, result_from_json, result_to_json) + + stage0_info = run_step( + 'parse stage0 file', lambda: parse_stage0_file(rust_version)) + rust_path, current_version, old_version = run_step( + 'prepare uprev', + lambda: prepare_uprev(rust_version, args.restart), + result_from_json=prepare_uprev_from_json, + ) + if current_version is None: + return + + current_version = RustVersion(*current_version) + old_version = RustVersion(*old_version) + + run_step( + 'copy patches', lambda: copy_patches(rust_path, old_version, + current_version, rust_version)) + ebuild_file = run_step( + 'rename ebuild', lambda: rename_ebuild(rust_path, old_version, + current_version, rust_version)) + run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) + with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: + run_step('upload_to_localmirror', lambda: upload_to_localmirror( + tempdir, rust_version)) + run_step('update manifest', lambda: update_manifest(ebuild_file)) + if not args.skip_compile: + run_step('compile rust', lambda: rust_ebuild_command('compile')) + run_step('merge rust', lambda: rust_ebuild_command('merge', sudo=True)) + run_step( + 'upgrade rust packages', lambda: upgrade_rust_packages( + ebuild_file, old_version, current_version, rust_version)) + run_step('upgrade virtual/rust', lambda: update_virtual_rust( + ebuild_file, old_version, rust_version)) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py new file mode 100755 index 00000000..28b23bfa --- /dev/null +++ b/rust_tools/rust_uprev_test.py @@ -0,0 +1,308 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for rust_uprev.py""" + +# pylint: disable=cros-logging-import +import os +import shutil +import subprocess +import unittest +from unittest import mock + +import rust_uprev +from llvm_tools import git + + +class RustVersionTest(unittest.TestCase): + """Tests for RustVersion class""" + + def test_str(self): + obj = rust_uprev.RustVersion(major=1, minor=2, patch=3) + self.assertEqual(str(obj), '1.2.3') + + def test_parse_version_only(self): + expected = rust_uprev.RustVersion(major=1, minor=2, patch=3) + actual = rust_uprev.RustVersion.parse('1.2.3') + self.assertEqual(expected, actual) + + def test_parse_ebuild_name(self): + expected = rust_uprev.RustVersion(major=1, minor=2, patch=3) + actual = rust_uprev.RustVersion.parse_from_ebuild('rust-1.2.3.ebuild') + self.assertEqual(expected, actual) + + def test_parse_fail(self): + with self.assertRaises(AssertionError) as context: + rust_uprev.RustVersion.parse('invalid-rust-1.2.3') + self.assertEqual("failed to parse 'invalid-rust-1.2.3'", + str(context.exception)) + + +class PrepareUprevTest(unittest.TestCase): + """Tests for prepare_uprev step in rust_uprev""" + mock_equery = '/path/to/rust/rust-1.2.3.ebuild' + mock_lsdir = ['rust-1.1.1.ebuild', 'rust-1.2.3.ebuild', 'an-unrelated-file'] + + @mock.patch.object(subprocess, 'check_call') + @mock.patch.object(git, 'CreateBranch') + @mock.patch.object(rust_uprev, 'get_command_output') + @mock.patch.object(os, 'listdir') + def test_success(self, mock_ls, mock_command, mock_git, mock_reset): + mock_ls.return_value = self.mock_lsdir + mock_command.return_value = self.mock_equery + input_version = rust_uprev.RustVersion(1, 3, 5) + expected = ('/path/to/rust', rust_uprev.RustVersion(1, 2, 3), + rust_uprev.RustVersion(1, 1, 1)) + actual = rust_uprev.prepare_uprev(input_version, True) + self.assertEqual(expected, actual) + mock_reset.assert_called_once_with(['git', 'reset', '--hard'], + cwd='/path/to/rust') + mock_git.assert_called_once_with('/path/to/rust', 'rust-to-1.3.5') + + @mock.patch.object(git, 'CreateBranch') + @mock.patch.object( + rust_uprev, + 'get_command_output', + return_value='/path/to/rust/rust-1.2.3.ebuild') + @mock.patch.object(os, 'listdir') + def test_current_version_larger_failure(self, mock_ls, mock_command, + mock_git): + mock_command.return_value = self.mock_equery + input_version = rust_uprev.RustVersion(1, 1, 1) + rust_path, current, old = rust_uprev.prepare_uprev(input_version, False) + self.assertEqual(rust_path, '') + self.assertIsNone(current) + self.assertIsNone(old) + mock_ls.assert_not_called() + mock_git.assert_not_called() + + @mock.patch.object(git, 'CreateBranch') + @mock.patch.object(rust_uprev, 'get_command_output') + @mock.patch.object(os, 'listdir') + def test_more_than_two_ebuilds_fail(self, mock_ls, mock_command, mock_git): + mock_command.return_value = self.mock_equery + mock_ls.return_value = self.mock_lsdir + ['rust-1.0.0.ebuild'] + input_version = rust_uprev.RustVersion(1, 3, 5) + with self.assertRaises(Exception) as context: + rust_uprev.prepare_uprev(input_version, False) + self.assertIn('Expect exactly 1 previous version ebuild', + str(context.exception)) + mock_git.assert_not_called() + + def test_prepare_uprev_from_json(self): + json_result = [ + '/path/to/rust', + [1, 44, 0], + [1, 43, 0], + ] + expected = ('/path/to/rust', rust_uprev.RustVersion(1, 44, 0), + rust_uprev.RustVersion(1, 43, 0)) + actual = rust_uprev.prepare_uprev_from_json(json_result) + self.assertEqual(expected, actual) + + +class UpdateEbuildTest(unittest.TestCase): + """Tests for update_ebuild step in rust_uprev""" + ebuild_file_before = """ + STAGE0_DATE="2019-01-01" + STAGE0_VERSION="any.random.(number)" + STAGE0_VERSION_CARGO="0.0.0" + """ + ebuild_file_after = """ + STAGE0_DATE="2020-01-01" + STAGE0_VERSION="1.1.1" + STAGE0_VERSION_CARGO="0.1.0" + """ + + def test_success(self): + mock_open = mock.mock_open(read_data=self.ebuild_file_before) + ebuild_file = '/path/to/rust/rust-1.3.5.ebuild' + with mock.patch('builtins.open', mock_open): + rust_uprev.update_ebuild(ebuild_file, ('2020-01-01', '1.1.1', '0.1.0')) + mock_open.return_value.__enter__().write.assert_called_once_with( + self.ebuild_file_after) + + def test_fail_when_ebuild_misses_a_variable(self): + ebuild_file = 'STAGE0_DATE="2019-01-01"' + mock_open = mock.mock_open(read_data=ebuild_file) + ebuild_file = '/path/to/rust/rust-1.3.5.ebuild' + with mock.patch('builtins.open', mock_open): + with self.assertRaises(RuntimeError) as context: + rust_uprev.update_ebuild(ebuild_file, ('2020-01-01', '1.1.1', '0.1.0')) + self.assertEqual('STAGE0_VERSION not found in rust ebuild', + str(context.exception)) + + +class UpdateManifestTest(unittest.TestCase): + """Tests for update_manifest step in rust_uprev""" + + # pylint: disable=protected-access + def _run_test_flip_mirror(self, before, after, add, expect_write): + mock_open = mock.mock_open(read_data=f'RESTRICT="{before}"') + with mock.patch('builtins.open', mock_open): + rust_uprev.flip_mirror_in_ebuild('', add=add) + if expect_write: + mock_open.return_value.__enter__().write.assert_called_once_with( + f'RESTRICT="{after}"') + + def test_add_mirror_in_ebuild(self): + self._run_test_flip_mirror( + before='variable1 variable2', + after='variable1 variable2 mirror', + add=True, + expect_write=True) + + def test_remove_mirror_in_ebuild(self): + self._run_test_flip_mirror( + before='variable1 variable2 mirror', + after='variable1 variable2', + add=False, + expect_write=True) + + def test_add_mirror_when_exists(self): + self._run_test_flip_mirror( + before='variable1 variable2 mirror', + after='variable1 variable2 mirror', + add=True, + expect_write=False) + + def test_remove_mirror_when_not_exists(self): + self._run_test_flip_mirror( + before='variable1 variable2', + after='variable1 variable2', + add=False, + expect_write=False) + + @mock.patch.object(rust_uprev, 'flip_mirror_in_ebuild') + @mock.patch.object(rust_uprev, 'rust_ebuild_command') + def test_update_manifest(self, mock_run, mock_flip): + ebuild_file = '/path/to/rust/rust-1.1.1.ebuild' + rust_uprev.update_manifest(ebuild_file) + mock_run.assert_called_once_with('manifest') + mock_flip.assert_has_calls( + [mock.call(ebuild_file, add=True), + mock.call(ebuild_file, add=False)]) + + +class RustUprevOtherTests(unittest.TestCase): + """Tests for other steps in rust_uprev""" + + def setUp(self): + self.rust_path = '/path/to/rust' + self.old_version = rust_uprev.RustVersion(1, 1, 0) + self.current_version = rust_uprev.RustVersion(1, 2, 3) + self.new_version = rust_uprev.RustVersion(1, 3, 5) + self.ebuild_file = os.path.join(self.rust_path, + 'rust-{self.new_version}.ebuild') + + @mock.patch.object(rust_uprev, 'get_command_output') + def test_parse_stage0_file(self, mock_get): + stage0_file = """ + unrelated stuff before + date: 2020-01-01 + rustc: 1.1.1 + cargo: 0.1.0 + unrelated stuff after + """ + mock_get.return_value = stage0_file + expected = '2020-01-01', '1.1.1', '0.1.0' + rust_version = rust_uprev.RustVersion(1, 2, 3) + actual = rust_uprev.parse_stage0_file(rust_version) + self.assertEqual(expected, actual) + mock_get.assert_called_once_with([ + 'curl', '-f', 'https://raw.githubusercontent.com/rust-lang/rust/' + f'{rust_version}/src/stage0.txt' + ]) + + @mock.patch.object(shutil, 'copyfile') + @mock.patch.object(os, 'listdir') + @mock.patch.object(subprocess, 'check_call') + def test_copy_patches(self, mock_call, mock_ls, mock_copy): + mock_ls.return_value = [ + f'rust-{self.old_version}-patch-1.patch', + f'rust-{self.old_version}-patch-2-old.patch', + f'rust-{self.current_version}-patch-1.patch', + f'rust-{self.current_version}-patch-2-new.patch' + ] + rust_uprev.copy_patches(self.rust_path, self.old_version, + self.current_version, self.new_version) + mock_copy.assert_has_calls([ + mock.call( + os.path.join(self.rust_path, 'files', + f'rust-{self.current_version}-patch-1.patch'), + os.path.join(self.rust_path, 'files', + f'rust-{self.new_version}-patch-1.patch'), + ), + mock.call( + os.path.join(self.rust_path, 'files', + f'rust-{self.current_version}-patch-2-new.patch'), + os.path.join(self.rust_path, 'files', + f'rust-{self.new_version}-patch-2-new.patch')) + ]) + mock_call.assert_has_calls([ + mock.call(['git', 'add', f'files/rust-{self.new_version}-*.patch'], + cwd=self.rust_path), + mock.call(['git', 'rm', f'files/rust-{self.old_version}-*.patch'], + cwd=self.rust_path) + ]) + + @mock.patch.object(shutil, 'copyfile') + @mock.patch.object(subprocess, 'check_call') + def test_rename_ebuild(self, mock_call, mock_copy): + rust_uprev.rename_ebuild(self.rust_path, self.old_version, + self.current_version, self.new_version) + mock_copy.assert_called_once_with( + os.path.join(self.rust_path, f'rust-{self.current_version}.ebuild'), + os.path.join(self.rust_path, f'rust-{self.new_version}.ebuild')) + mock_call.assert_has_calls([ + mock.call(['git', 'add', f'rust-{self.new_version}.ebuild'], + cwd=self.rust_path), + mock.call(['git', 'rm', f'rust-{self.old_version}.ebuild'], + cwd=self.rust_path) + ]) + + def test_upgrade_rust_packages(self): + package_before = (f'dev-lang/rust-{self.old_version}\n' + f'dev-lang/rust-{self.current_version}') + package_after = (f'dev-lang/rust-{self.current_version}\n' + f'dev-lang/rust-{self.new_version}') + mock_open = mock.mock_open(read_data=package_before) + with mock.patch('builtins.open', mock_open): + rust_uprev.upgrade_rust_packages(self.ebuild_file, self.old_version, + self.current_version, self.new_version) + mock_open.return_value.__enter__().write.assert_called_once_with( + package_after) + + @mock.patch.object(os.path, 'exists', return_value=True) + @mock.patch.object(subprocess, 'check_call') + def test_update_virtual_rust(self, mock_call, _): + rust_uprev.update_virtual_rust(self.ebuild_file, self.old_version, + self.new_version) + mock_call.assert_called_once_with([ + 'git', 'mv', f'rust-{self.old_version}.ebuild', + f'rust-{self.new_version}.ebuild' + ], + cwd=os.path.join(self.rust_path, + '../../virtual/rust')) + + @mock.patch.object(subprocess, 'check_call') + def test_upload_to_localmirror(self, mock_call): + tempdir = '/tmp/any/dir' + rust_uprev.upload_to_localmirror(tempdir, self.new_version) + + tarfile_name = f'rustc-{self.new_version}-src.tar.gz' + rust_src = f'https://static.rust-lang.org/dist/{tarfile_name}' + gsurl = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' + local_file = os.path.join(tempdir, tarfile_name) + mock_call.assert_has_calls([ + mock.call(['curl', '-f', '-o', local_file, rust_src]), + mock.call( + ['gsutil', 'cp', '-n', '-a', 'public-read', local_file, gsurl]) + ]) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From 0b767f9b8019ee1b38bc9a85152c788a1ce089f3 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 10 Aug 2020 11:01:57 -0700 Subject: pgo_tools: Add a monitor for LLVM PGO profile freshness This CL lands a monitor that'll poke our mage if we have no recent LLVM PGO profiles sitting in our bucket. The intent is to run it every few days on chrotomation3, just like the other monitoring infra we have. BUG=chromium:978741 TEST=unittests; ran with a very low days value, and verified the email Change-Id: Ie7a7d44d58c260dd4f17f0759c9fc84bbf8f120d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2346840 Tested-by: George Burgess Reviewed-by: Tiancong Wang --- pgo_tools/monitor_pgo_profiles.py | 150 +++++++++++++++++++++++++++++ pgo_tools/monitor_pgo_profiles_unittest.py | 100 +++++++++++++++++++ 2 files changed, 250 insertions(+) create mode 100755 pgo_tools/monitor_pgo_profiles.py create mode 100755 pgo_tools/monitor_pgo_profiles_unittest.py diff --git a/pgo_tools/monitor_pgo_profiles.py b/pgo_tools/monitor_pgo_profiles.py new file mode 100755 index 00000000..86701675 --- /dev/null +++ b/pgo_tools/monitor_pgo_profiles.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python3 +# Copyright 2020 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. + +"""Emails the mage if PGO profile generation hasn't succeeded recently.""" + +# pylint: disable=cros-logging-import + +import argparse +import datetime +import sys +import subprocess +import logging +from typing import List, NamedTuple, Optional, Tuple + +from cros_utils import email_sender +from cros_utils import tiny_render + +PGO_BUILDBOT_LINK = ('https://ci.chromium.org/p/chromeos/builders/toolchain/' + 'pgo-generate-llvm-next-orchestrator') + + +class ProfdataInfo(NamedTuple): + """Data about an llvm profdata in our gs:// bucket.""" + date: datetime.datetime + location: str + + +def parse_date(date: str) -> datetime.datetime: + time_format = '%Y-%m-%dT%H:%M:%SZ' + if not date.endswith('Z'): + time_format += '%z' + return datetime.datetime.strptime(date, time_format) + + +def fetch_most_recent_profdata(arch: str) -> ProfdataInfo: + result = subprocess.run( + [ + 'gsutil', + 'ls', + '-l', + f'gs://chromeos-toolchain-artifacts/llvm-pgo/{arch}/' + '*.profdata.tar.xz', + ], + check=True, + stdout=subprocess.PIPE, + encoding='utf-8', + ) + + # Each line will be a profdata; the last one is a summary, so drop it. + infos = [] + for rec in result.stdout.strip().splitlines()[:-1]: + _size, date, url = rec.strip().split() + infos.append(ProfdataInfo(date=parse_date(date), location=url)) + return max(infos) + + +def compose_complaint_email( + out_of_date_profiles: List[Tuple[datetime.datetime, ProfdataInfo]] +) -> Optional[Tuple[str, tiny_render.Piece]]: + if not out_of_date_profiles: + return None + + if len(out_of_date_profiles) == 1: + subject = '1 llvm profile is out of date' + body = ['out-of-date profile:'] + else: + subject = f'{len(out_of_date_profiles)} llvm profiles are out of date' + body = ['out-of-date profiles:'] + + out_of_date_items = [] + for arch, profdata_info in out_of_date_profiles: + out_of_date_items.append( + f'{arch} (most recent profile was from {profdata_info.date} at ' + f'{profdata_info.location!r})') + + body += [ + tiny_render.UnorderedList(out_of_date_items), + tiny_render.line_break, + tiny_render.line_break, + 'PTAL to see if the llvm-pgo-generate bots are functioning normally. ' + 'Their status can be found at ', + tiny_render.Link(href=PGO_BUILDBOT_LINK, inner=PGO_BUILDBOT_LINK), + '.', + ] + return subject, body + + +def main() -> None: + logging.basicConfig(level=logging.INFO) + + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--dry_run', + action='store_true', + help="Don't actually send an email", + ) + parser.add_argument( + '--max_age_days', + # These builders run ~weekly. If we fail to generate two in a row, + # something's probably wrong. + default=15, + type=int, + help='How old to let profiles get before complaining, in days', + ) + args = parser.parse_args() + + now = datetime.datetime.now() + logging.info('Start time is %r', now) + + max_age = datetime.timedelta(days=args.max_age_days) + out_of_date_profiles = [] + for arch in ('arm', 'arm64', 'amd64'): + logging.info('Fetching most recent profdata for %r', arch) + most_recent = fetch_most_recent_profdata(arch) + logging.info('Most recent profdata for %r is %r', arch, most_recent) + + age = now - most_recent.date + if age >= max_age: + out_of_date_profiles.append((arch, most_recent)) + + email = compose_complaint_email(out_of_date_profiles) + if not email: + logging.info('No email to send; quit') + return + + subject, body = email + + identifier = 'llvm-pgo-monitor' + subject = f'[{identifier}] {subject}' + + logging.info('Sending email with title %r', subject) + if args.dry_run: + logging.info('Dry run specified\nSubject: %s\nBody:\n%s', subject, + tiny_render.render_text_pieces(body)) + else: + email_sender.EmailSender().SendX20Email( + subject=subject, + identifier=identifier, + well_known_recipients=['mage'], + direct_recipients=['gbiv@google.com'], + text_body=tiny_render.render_text_pieces(body), + html_body=tiny_render.render_html_pieces(body), + ) + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/pgo_tools/monitor_pgo_profiles_unittest.py b/pgo_tools/monitor_pgo_profiles_unittest.py new file mode 100755 index 00000000..b4e085ec --- /dev/null +++ b/pgo_tools/monitor_pgo_profiles_unittest.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +# Copyright 2020 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. + +"""Tests for monitor_pgo_profiles.""" + +import datetime +import subprocess +import unittest +import unittest.mock + +import monitor_pgo_profiles +from cros_utils import tiny_render + + +class Test(unittest.TestCase): + """Tests for monitor_pgo_profiles.""" + + def test_compose_complaint_email_with_zero_out_of_date(self): + self.assertIsNone(monitor_pgo_profiles.compose_complaint_email([])) + + def test_compose_complaint_email_with_one_out_of_date(self): + profdata_info = monitor_pgo_profiles.ProfdataInfo( + date=datetime.datetime(2020, 1, 2, 3, 4, 5), + location='gs://somewhere', + ) + result = monitor_pgo_profiles.compose_complaint_email([ + ('some_arch', profdata_info), + ]) + self.assertEqual(result, ('1 llvm profile is out of date', [ + 'out-of-date profile:', + tiny_render.UnorderedList([ + f'some_arch (most recent profile was from {profdata_info.date} at ' + f'{profdata_info.location!r})' + ]), + tiny_render.line_break, + tiny_render.line_break, + 'PTAL to see if the llvm-pgo-generate bots are functioning normally. ' + 'Their status can be found at ', + tiny_render.Link( + href=monitor_pgo_profiles.PGO_BUILDBOT_LINK, + inner=monitor_pgo_profiles.PGO_BUILDBOT_LINK, + ), + '.', + ])) + + def test_compose_complaint_email_with_two_out_of_date(self): + profdata_info_1 = monitor_pgo_profiles.ProfdataInfo( + date=datetime.datetime(2020, 1, 2, 3, 4, 5), + location='gs://somewhere', + ) + profdata_info_2 = monitor_pgo_profiles.ProfdataInfo( + date=datetime.datetime(2020, 3, 2, 1, 4, 5), + location='gs://somewhere-else', + ) + result = monitor_pgo_profiles.compose_complaint_email([ + ('some_arch', profdata_info_1), + ('some_other_arch', profdata_info_2), + ]) + self.assertEqual(result, ('2 llvm profiles are out of date', [ + 'out-of-date profiles:', + tiny_render.UnorderedList([ + f'some_arch (most recent profile was from {profdata_info_1.date} ' + f'at {profdata_info_1.location!r})', + f'some_other_arch (most recent profile was from ' + f'{profdata_info_2.date} at {profdata_info_2.location!r})' + ]), + tiny_render.line_break, + tiny_render.line_break, + 'PTAL to see if the llvm-pgo-generate bots are functioning normally. ' + 'Their status can be found at ', + tiny_render.Link( + href=monitor_pgo_profiles.PGO_BUILDBOT_LINK, + inner=monitor_pgo_profiles.PGO_BUILDBOT_LINK, + ), + '.', + ])) + + @unittest.mock.patch.object(subprocess, 'run') + def test_fetching_profdata_functions(self, subprocess_run_mock): + ls_return_value = unittest.mock.MagicMock() + ls_return_value.stdout = '\n'.join(( + ' 1234 2020-06-26T05:26:40Z gs://bar', + ' 44 2020-06-23T05:26:40Z gs://foo', + ' 1234 2020-06-25T05:26:40Z gs://zzz', + )) + subprocess_run_mock.return_value = ls_return_value + + most_recent = monitor_pgo_profiles.fetch_most_recent_profdata('arm') + self.assertEqual( + most_recent, + monitor_pgo_profiles.ProfdataInfo( + date=datetime.datetime(2020, 6, 26, 5, 26, 40), + location='gs://bar', + )) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From 59defebaee972ff84cea962fe1d880ca31e0a8f8 Mon Sep 17 00:00:00 2001 From: Manoj Gupta Date: Tue, 11 Aug 2020 13:20:26 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R86-13371.0-1597051939 Update chromeos-kernel-4_4 to R86-13380.0-1597052123 Update chromeos-kernel-4_14 to R86-13380.0-1597052364 Update chromeos-kernel-4_19 to R86-13380.0-1597052000 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: I6f0ec7e7780511720199f752c807854cc71cad50 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2350439 Commit-Queue: Manoj Gupta Tested-by: Manoj Gupta Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index c72952d2..66507a3b 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13371.0-1596447357" + "name": "R86-13371.0-1597051939" }, "chromeos-kernel-4_4": { - "name": "R86-13371.0-1596447182" + "name": "R86-13380.0-1597052123" }, "chromeos-kernel-4_14": { - "name": "R86-13371.0-1596447453" + "name": "R86-13380.0-1597052364" }, "chromeos-kernel-4_19": { - "name": "R86-13374.0-1596447620" + "name": "R86-13380.0-1597052000" } } -- cgit v1.2.3 From 7c7161d3c1c5882461f2f7b59d2df223bf6fbefe Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Tue, 11 Aug 2020 15:16:41 -0700 Subject: rust_tools: Refactor to create and remove Rust versions independently With this change, a user can run `./rust_uprev.py create` or `./rust_uprev.py remove` to create a new Rust uprev or remove old Rust version independently. Both supports using a state file to save the progress. BUG=chromium:1112551 TEST=unittest;generated a CL locally Change-Id: I8aa629cb56fb6fb79a50c08e11304d0c88515e7f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2350441 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: George Burgess --- rust_tools/rust_uprev.py | 371 ++++++++++++++++++++++++------------------ rust_tools/rust_uprev_test.py | 215 +++++++++++++----------- 2 files changed, 325 insertions(+), 261 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index f8c03331..50f85eb9 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -7,18 +7,25 @@ """Tool to automatically generate a new Rust uprev CL. This tool is intended to automatically generate a CL to uprev Rust to a -newer version in Chrome OS. It's based on +newer version in Chrome OS, including creating a new Rust version or +removing an old version. It's based on src/third_party/chromiumos-overlay/dev-lang/rust/UPGRADE.md. When using the tool, the progress can be saved to a JSON file, so the user can resume -the process after a failing step is fixed. Example usage: +the process after a failing step is fixed. Example usage to create a new +version: -1. (inside chroot) $ ./rust_tools/rust_uprev.py --rust_version 1.45.0 \ - --state_file /tmp/state-file.json +1. (inside chroot) $ ./rust_tools/rust_uprev.py + --state_file /tmp/state-file.json + create --rust_version 1.45.0 2. Step "compile rust" failed due to the patches can't apply to new version 3. Manually fix the patches 4. Execute the command in step 1 again. 5. Iterate 1-4 for each failed step until the tool passes. +Replace `create --rust_version 1.45.0` with `remove --rust_version 1.43.0` +if you want to remove all 1.43.0 related stuff in the same CL. Remember to +use a different state file if you choose to run different subcommands. + See `--help` for all available options. """ @@ -36,7 +43,8 @@ import sys import tempfile from typing import Any, Callable, Dict, List, NamedTuple, Optional, T, Tuple -from llvm_tools import chroot, git +from llvm_tools import chroot +RUST_PATH = '/mnt/host/source/src/third_party/chromiumos-overlay/dev-lang/rust' def get_command_output(command: List[str]) -> str: @@ -77,6 +85,84 @@ class RustVersion(NamedTuple): int(m.group('major')), int(m.group('minor')), int(m.group('patch'))) +def parse_commandline_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '--state_file', + required=True, + help='A state file to hold previous completed steps. If the file ' + 'exists, it needs to be used together with --continue or --restart. ' + 'If not exist (do not use --continue in this case), we will create a ' + 'file for you.', + ) + parser.add_argument( + '--restart', + action='store_true', + help='Restart from the first step. Ignore the completed steps in ' + 'the state file', + ) + parser.add_argument( + '--continue', + dest='cont', + action='store_true', + help='Continue the steps from the state file', + ) + + subparsers = parser.add_subparsers(dest='subparser_name') + subparser_names = [] + + create_parser = subparsers.add_parser('create') + subparser_names.append('create') + create_parser.add_argument( + '--rust_version', + type=RustVersion.parse, + required=True, + help='Rust version to upgrade to, in the form a.b.c', + ) + create_parser.add_argument( + '--template', + type=RustVersion.parse, + default=None, + help='A template to use for creating a Rust uprev from, in the form ' + 'a.b.c The ebuild has to exist in the chroot. If not specified, the ' + 'tool will use the current Rust version in the chroot as template.', + ) + create_parser.add_argument( + '--skip_compile', + action='store_true', + help='Skip compiling rust to test the tool. Only for testing', + ) + + subparser_names.append('remove') + remove_parser = subparsers.add_parser('remove') + remove_parser.add_argument( + '--rust_version', + type=RustVersion.parse, + required=True, + help='Rust version to upgrade to, in the form a.b.c', + ) + + args = parser.parse_args() + if args.subparser_name not in subparser_names: + parser.error('one of %s must be specified' % subparser_names) + + if args.cont and args.restart: + parser.error('Please select either --continue or --restart') + + if os.path.exists(args.state_file): + if not args.cont and not args.restart: + parser.error('State file exists, so you should either --continue ' + 'or --restart') + if args.cont and not os.path.exists(args.state_file): + parser.error('Indicate --continue but the state file does not exist') + + if args.restart and os.path.exists(args.state_file): + os.remove(args.state_file) + + return args + + def parse_stage0_file(new_version: RustVersion) -> Tuple[str, str, str]: # Find stage0 date, rustc and cargo stage0_file = get_command_output([ @@ -94,76 +180,55 @@ def parse_stage0_file(new_version: RustVersion) -> Tuple[str, str, str]: return stage0_date, stage0_rustc, stage0_cargo -def prepare_uprev_from_json(json_input: Any - ) -> Tuple[str, RustVersion, RustVersion]: - a, b, c = json_input - return a, RustVersion(*b), RustVersion(*c) +def prepare_uprev_from_json(json_input: Any) -> RustVersion: + return RustVersion(*json_input) def prepare_uprev(rust_version: RustVersion, - reset: bool) -> Tuple[str, RustVersion, RustVersion]: - ebuild_path = get_command_output(['equery', 'w', 'rust']) - rust_path, ebuild_name = os.path.split(ebuild_path) - if reset: - subprocess.check_call(['git', 'reset', '--hard'], cwd=rust_path) + template: Optional[RustVersion]) -> RustVersion: + if template is None: ebuild_path = get_command_output(['equery', 'w', 'rust']) - _, ebuild_name = os.path.split(ebuild_path) - - current_version = RustVersion.parse(ebuild_name) - if rust_version <= current_version: - logging.info('Requested version %s is not newer than existing version %s.', - rust_version, current_version) - return '', None, None - - logging.info('Current Rust version is %s', current_version) - other_ebuilds = [ - x for x in os.listdir(rust_path) if '.ebuild' in x and x != ebuild_name - ] - if len(other_ebuilds) != 1: - raise Exception('Expect exactly 1 previous version ebuild, ' - f'but actually found {other_ebuilds}') - # TODO(tcwang): Only support uprev from the older ebuild; need support to - # pick either version of the Rust to uprev from - old_version = RustVersion.parse(other_ebuilds[0]) - # Prepare a repo branch for uprev - branch_name = f'rust-to-{rust_version}' - git.CreateBranch(rust_path, branch_name) - logging.info('Create a new repo branch %s', branch_name) - return rust_path, current_version, old_version - - -def copy_patches(rust_path: str, old_version: RustVersion, - current_version: RustVersion, + ebuild_name = os.path.basename(ebuild_path) + template_version = RustVersion.parse(ebuild_name) + else: + if not os.path.exists(os.path.join(RUST_PATH, f'rust-{template}.ebuild')): + raise ValueError(f'Template ebuild file {template} does not exist') + template_version = template + if rust_version <= template_version: + logging.info( + 'Requested version %s is not newer than the template version %s.', + rust_version, template_version) + return None + + logging.info('Template Rust version is %s', template_version) + return template_version + + +def copy_patches(template_version: RustVersion, new_version: RustVersion) -> None: - patch_path = os.path.join(rust_path, 'files') + patch_path = os.path.join(RUST_PATH, 'files') for f in os.listdir(patch_path): - if f'rust-{current_version}' not in f: + if f'rust-{template_version}' not in f: continue logging.info('Rename patch %s to new version', f) - new_name = f.replace(str(current_version), str(new_version)) + new_name = f.replace(str(template_version), str(new_version)) shutil.copyfile( os.path.join(patch_path, f), os.path.join(patch_path, new_name), ) subprocess.check_call(['git', 'add', f'files/rust-{new_version}-*.patch'], - cwd=rust_path) - - subprocess.check_call(['git', 'rm', f'files/rust-{old_version}-*.patch'], - cwd=rust_path) + cwd=RUST_PATH) -def rename_ebuild(rust_path: str, old_version: RustVersion, - current_version: RustVersion, +def create_ebuild(template_version: RustVersion, new_version: RustVersion) -> str: shutil.copyfile( - os.path.join(rust_path, f'rust-{current_version}.ebuild'), - os.path.join(rust_path, f'rust-{new_version}.ebuild')) + os.path.join(RUST_PATH, f'rust-{template_version}.ebuild'), + os.path.join(RUST_PATH, f'rust-{new_version}.ebuild')) subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'], - cwd=rust_path) - subprocess.check_call(['git', 'rm', f'rust-{old_version}.ebuild'], - cwd=rust_path) - return os.path.join(rust_path, f'rust-{new_version}.ebuild') + cwd=RUST_PATH) + return os.path.join(RUST_PATH, f'rust-{new_version}.ebuild') def update_ebuild(ebuild_file: str, stage0_info: Tuple[str, str, str]) -> None: @@ -235,38 +300,39 @@ def update_manifest(ebuild_file: str) -> None: flip_mirror_in_ebuild(ebuild_file, add=False) -def upgrade_rust_packages(ebuild_file: str, old_version: RustVersion, - current_version: RustVersion, - new_version: RustVersion) -> None: +def update_rust_packages(rust_version: RustVersion, add: bool) -> None: package_file = os.path.join( - os.path.dirname(ebuild_file), - '../../profiles/targets/chromeos/package.provided') + RUST_PATH, '../../profiles/targets/chromeos/package.provided') with open(package_file, encoding='utf-8') as f: contents = f.read() - old_str = f'dev-lang/rust-{old_version}' - current_str = f'dev-lang/rust-{current_version}' - new_str = f'dev-lang/rust-{new_version}' - if old_str not in contents or current_str not in contents: - raise Exception(f'Expect {old_str} and {current_str} to be in ' - 'profiles/targets/chromeos/package.provided') - # Replace the two strings (old_str, current_str) with (current_str, new_str), - # so they are still ordered by rust versions - new_contents = contents.replace(current_str, - new_str).replace(old_str, current_str) + if add: + rust_packages_re = re.compile(r'dev-lang/rust-(\d+\.\d+\.\d+)') + rust_packages = rust_packages_re.findall(contents) + # Assume all the rust packages are in alphabetical order, so insert the new + # version to the place after the last rust_packages + new_str = f'dev-lang/rust-{rust_version}' + new_contents = contents.replace(rust_packages[-1], + f'{rust_packages[-1]}\n{new_str}') + logging.info('%s has been inserted into package.provided', new_str) + else: + old_str = f'dev-lang/rust-{rust_version}\n' + assert old_str in contents, f'{old_str!r} not found in package.provided' + new_contents = contents.replace(old_str, '') + logging.info('%s has been removed from package.provided', old_str) + with open(package_file, 'w', encoding='utf-8') as f: f.write(new_contents) - logging.info('package.provided has been updated from %s, %s to %s, %s', - old_str, current_str, current_str, new_str) -def update_virtual_rust(ebuild_file: str, old_version: RustVersion, +def update_virtual_rust(template_version: RustVersion, new_version: RustVersion) -> None: - virtual_rust_dir = os.path.join( - os.path.dirname(ebuild_file), '../../virtual/rust') + virtual_rust_dir = os.path.join(RUST_PATH, '../../virtual/rust') assert os.path.exists(virtual_rust_dir) - subprocess.check_call( - ['git', 'mv', f'rust-{old_version}.ebuild', f'rust-{new_version}.ebuild'], - cwd=virtual_rust_dir) + shutil.copyfile( + os.path.join(virtual_rust_dir, f'rust-{template_version}.ebuild'), + os.path.join(virtual_rust_dir, f'rust-{new_version}.ebuild')) + subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'], + cwd=virtual_rust_dir) def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: @@ -310,64 +376,72 @@ def perform_step(state_file: pathlib.Path, return val -def main(): - if not chroot.InChroot(): - raise RuntimeError('This script must be executed inside chroot') +def create_rust_uprev(rust_version: RustVersion, + template: Optional[RustVersion], skip_compile: bool, + run_step: Callable[[ + str, Callable[[], T], Optional[Callable[[Any], T]], + Optional[Callable[[T], Any]] + ], T]) -> None: + stage0_info = run_step( + 'parse stage0 file', lambda: parse_stage0_file(rust_version)) + template_version = run_step( + 'prepare uprev', + lambda: prepare_uprev(rust_version, template), + result_from_json=prepare_uprev_from_json, + ) + if template_version is None: + return - logging.basicConfig(level=logging.INFO) + run_step('copy patches', lambda: copy_patches(template_version, rust_version)) + ebuild_file = run_step( + 'create ebuild', lambda: create_ebuild(template_version, rust_version)) + run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) + with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: + run_step('upload_to_localmirror', lambda: upload_to_localmirror( + tempdir, rust_version)) + run_step('update manifest', lambda: update_manifest(ebuild_file)) + if not skip_compile: + run_step('compile rust', lambda: rust_ebuild_command('compile')) + run_step('merge rust', lambda: rust_ebuild_command('merge', sudo=True)) + run_step('insert version into rust packages', lambda: update_rust_packages( + rust_version, add=True)) + run_step('upgrade virtual/rust', lambda: update_virtual_rust( + template_version, rust_version)) - parser = argparse.ArgumentParser( - description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument( - '--rust_version', - type=RustVersion.parse, - required=True, - help='Rust version to upgrade to, in the form a.b.c', - ) - parser.add_argument( - '--state_file', - required=True, - help='A state file to hold previous completed steps. If the file ' - 'exists, it needs to be used together with --continue or --restart. ' - 'If not exist (do not use --continue in this case), we will create a ' - 'file for you.', - ) - parser.add_argument( - '--skip_compile', - action='store_true', - help='Skip compiling rust to test the tool. Only for testing', - ) - parser.add_argument( - '--restart', - action='store_true', - help='Restart from the first step. Ignore the completed steps in ' - 'the state file', - ) - parser.add_argument( - '--continue', - dest='cont', - action='store_true', - help='Continue the steps from the state file', - ) - args = parser.parse_args() +def remove_files(filename: str, path: str) -> None: + subprocess.check_call(['git', 'rm', filename], cwd=path) - rust_version = args.rust_version - state_file = pathlib.Path(args.state_file) - tmp_state_file = pathlib.Path(args.state_file + '.tmp') - if args.cont and args.restart: - parser.error('Please select either --continue or --restart') +def remove_rust_uprev(rust_version: RustVersion, run_step: Callable[[ + str, Callable[[], T], Optional[Callable[[Any], T]], Optional[ + Callable[[T], Any]] +], T]) -> None: + run_step( + 'remove patches', lambda: remove_files( + f'files/rust-{rust_version}-*.patch', RUST_PATH)) + run_step('remove ebuild', lambda: remove_files(f'rust-{rust_version}.ebuild', + RUST_PATH)) + ebuild_file = get_command_output(['equery', 'w', 'rust']) + run_step('update manifest', lambda: update_manifest(ebuild_file)) + run_step('remove version from rust packages', lambda: update_rust_packages( + rust_version, add=False)) + run_step( + 'remove virtual/rust', lambda: remove_files( + f'rust-{rust_version}.ebuild', + os.path.join(RUST_PATH, '../../virtual/rust'))) - if os.path.exists(state_file): - if not args.cont and not args.restart: - parser.error('State file exists, so you should either --continue ' - 'or --restart') - if args.cont and not os.path.exists(state_file): - parser.error('Indicate --continue but the state file does not exist') - if args.restart and os.path.exists(state_file): - os.remove(state_file) +def main() -> None: + if not chroot.InChroot(): + raise RuntimeError('This script must be executed inside chroot') + + logging.basicConfig(level=logging.INFO) + + args = parse_commandline_args() + + state_file = pathlib.Path(args.state_file) + tmp_state_file = state_file.with_suffix('.tmp') try: with state_file.open(encoding='utf-8') as f: @@ -384,38 +458,11 @@ def main(): return perform_step(state_file, tmp_state_file, completed_steps, step_name, step_fn, result_from_json, result_to_json) - stage0_info = run_step( - 'parse stage0 file', lambda: parse_stage0_file(rust_version)) - rust_path, current_version, old_version = run_step( - 'prepare uprev', - lambda: prepare_uprev(rust_version, args.restart), - result_from_json=prepare_uprev_from_json, - ) - if current_version is None: - return - - current_version = RustVersion(*current_version) - old_version = RustVersion(*old_version) - - run_step( - 'copy patches', lambda: copy_patches(rust_path, old_version, - current_version, rust_version)) - ebuild_file = run_step( - 'rename ebuild', lambda: rename_ebuild(rust_path, old_version, - current_version, rust_version)) - run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) - with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: - run_step('upload_to_localmirror', lambda: upload_to_localmirror( - tempdir, rust_version)) - run_step('update manifest', lambda: update_manifest(ebuild_file)) - if not args.skip_compile: - run_step('compile rust', lambda: rust_ebuild_command('compile')) - run_step('merge rust', lambda: rust_ebuild_command('merge', sudo=True)) - run_step( - 'upgrade rust packages', lambda: upgrade_rust_packages( - ebuild_file, old_version, current_version, rust_version)) - run_step('upgrade virtual/rust', lambda: update_virtual_rust( - ebuild_file, old_version, rust_version)) + if args.subparser_name == 'create': + create_rust_uprev(args.rust_version, args.template, args.skip_compile, + run_step) + else: + remove_rust_uprev(args.rust_version, run_step) if __name__ == '__main__': diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index 28b23bfa..e007b822 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -14,7 +14,6 @@ import unittest from unittest import mock import rust_uprev -from llvm_tools import git class RustVersionTest(unittest.TestCase): @@ -43,63 +42,65 @@ class RustVersionTest(unittest.TestCase): class PrepareUprevTest(unittest.TestCase): """Tests for prepare_uprev step in rust_uprev""" - mock_equery = '/path/to/rust/rust-1.2.3.ebuild' - mock_lsdir = ['rust-1.1.1.ebuild', 'rust-1.2.3.ebuild', 'an-unrelated-file'] - @mock.patch.object(subprocess, 'check_call') - @mock.patch.object(git, 'CreateBranch') + def setUp(self): + self.version_old = rust_uprev.RustVersion(1, 2, 3) + self.version_new = rust_uprev.RustVersion(1, 3, 5) + + @mock.patch.object(os.path, 'exists') @mock.patch.object(rust_uprev, 'get_command_output') - @mock.patch.object(os, 'listdir') - def test_success(self, mock_ls, mock_command, mock_git, mock_reset): - mock_ls.return_value = self.mock_lsdir - mock_command.return_value = self.mock_equery - input_version = rust_uprev.RustVersion(1, 3, 5) - expected = ('/path/to/rust', rust_uprev.RustVersion(1, 2, 3), - rust_uprev.RustVersion(1, 1, 1)) - actual = rust_uprev.prepare_uprev(input_version, True) + def test_success_with_template(self, mock_command, mock_exists): + mock_exists.return_value = True + expected = self.version_old + actual = rust_uprev.prepare_uprev( + rust_version=self.version_new, template=self.version_old) self.assertEqual(expected, actual) - mock_reset.assert_called_once_with(['git', 'reset', '--hard'], - cwd='/path/to/rust') - mock_git.assert_called_once_with('/path/to/rust', 'rust-to-1.3.5') - - @mock.patch.object(git, 'CreateBranch') - @mock.patch.object( - rust_uprev, - 'get_command_output', - return_value='/path/to/rust/rust-1.2.3.ebuild') - @mock.patch.object(os, 'listdir') - def test_current_version_larger_failure(self, mock_ls, mock_command, - mock_git): - mock_command.return_value = self.mock_equery - input_version = rust_uprev.RustVersion(1, 1, 1) - rust_path, current, old = rust_uprev.prepare_uprev(input_version, False) - self.assertEqual(rust_path, '') - self.assertIsNone(current) - self.assertIsNone(old) - mock_ls.assert_not_called() - mock_git.assert_not_called() - - @mock.patch.object(git, 'CreateBranch') + mock_command.assert_not_called() + + @mock.patch.object(os.path, 'exists') @mock.patch.object(rust_uprev, 'get_command_output') - @mock.patch.object(os, 'listdir') - def test_more_than_two_ebuilds_fail(self, mock_ls, mock_command, mock_git): - mock_command.return_value = self.mock_equery - mock_ls.return_value = self.mock_lsdir + ['rust-1.0.0.ebuild'] - input_version = rust_uprev.RustVersion(1, 3, 5) - with self.assertRaises(Exception) as context: - rust_uprev.prepare_uprev(input_version, False) - self.assertIn('Expect exactly 1 previous version ebuild', - str(context.exception)) - mock_git.assert_not_called() + def test_fail_with_template_not_exist(self, mock_command, mock_exists): + mock_exists.return_value = False + with self.assertRaises(ValueError) as context: + rust_uprev.prepare_uprev( + rust_version=self.version_new, template=self.version_old) + self.assertEqual(f'Template ebuild file {self.version_old} does not exist', + str(context.exception)) + mock_command.assert_not_called() + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(rust_uprev, 'get_command_output') + def test_return_none_with_template_larger_than_input(self, mock_command, + mock_exists): + mock_exists.return_value = True + ret = rust_uprev.prepare_uprev( + rust_version=self.version_old, template=self.version_new) + self.assertIsNone(ret) + mock_command.assert_not_called() + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(rust_uprev, 'get_command_output') + def test_success_without_template(self, mock_command, mock_exists): + mock_command.return_value = f'/path/to/rust/rust-{self.version_old}.ebuild' + expected = self.version_old + actual = rust_uprev.prepare_uprev( + rust_version=self.version_new, template=None) + self.assertEqual(expected, actual) + mock_command.assert_called_once_with(['equery', 'w', 'rust']) + mock_exists.assert_not_called() + + @mock.patch.object(os.path, 'exists') + @mock.patch.object(rust_uprev, 'get_command_output') + def test_return_none_with_ebuild_larger_than_input(self, mock_command, + mock_exists): + mock_command.return_value = f'/path/to/rust/rust-{self.version_new}.ebuild' + ret = rust_uprev.prepare_uprev(rust_version=self.version_old, template=None) + self.assertIsNone(ret) + mock_exists.assert_not_called() def test_prepare_uprev_from_json(self): - json_result = [ - '/path/to/rust', - [1, 44, 0], - [1, 43, 0], - ] - expected = ('/path/to/rust', rust_uprev.RustVersion(1, 44, 0), - rust_uprev.RustVersion(1, 43, 0)) + json_result = list(self.version_new) + expected = self.version_new actual = rust_uprev.prepare_uprev_from_json(json_result) self.assertEqual(expected, actual) @@ -187,15 +188,49 @@ class UpdateManifestTest(unittest.TestCase): mock.call(ebuild_file, add=False)]) -class RustUprevOtherTests(unittest.TestCase): +class UpdateRustPackagesTests(unittest.TestCase): + """Tests for update_rust_packages step.""" + + def setUp(self): + self.old_version = rust_uprev.RustVersion(1, 1, 0) + self.current_version = rust_uprev.RustVersion(1, 2, 3) + self.new_version = rust_uprev.RustVersion(1, 3, 5) + self.ebuild_file = os.path.join(rust_uprev.RUST_PATH, + 'rust-{self.new_version}.ebuild') + + def test_add_new_rust_packages(self): + package_before = (f'dev-lang/rust-{self.old_version}\n' + f'dev-lang/rust-{self.current_version}') + package_after = (f'dev-lang/rust-{self.old_version}\n' + f'dev-lang/rust-{self.current_version}\n' + f'dev-lang/rust-{self.new_version}') + mock_open = mock.mock_open(read_data=package_before) + with mock.patch('builtins.open', mock_open): + rust_uprev.update_rust_packages(self.new_version, add=True) + mock_open.return_value.__enter__().write.assert_called_once_with( + package_after) + + def test_remove_old_rust_packages(self): + package_before = (f'dev-lang/rust-{self.old_version}\n' + f'dev-lang/rust-{self.current_version}\n' + f'dev-lang/rust-{self.new_version}') + package_after = (f'dev-lang/rust-{self.current_version}\n' + f'dev-lang/rust-{self.new_version}') + mock_open = mock.mock_open(read_data=package_before) + with mock.patch('builtins.open', mock_open): + rust_uprev.update_rust_packages(self.old_version, add=False) + mock_open.return_value.__enter__().write.assert_called_once_with( + package_after) + + +class RustUprevOtherStagesTests(unittest.TestCase): """Tests for other steps in rust_uprev""" def setUp(self): - self.rust_path = '/path/to/rust' self.old_version = rust_uprev.RustVersion(1, 1, 0) self.current_version = rust_uprev.RustVersion(1, 2, 3) self.new_version = rust_uprev.RustVersion(1, 3, 5) - self.ebuild_file = os.path.join(self.rust_path, + self.ebuild_file = os.path.join(rust_uprev.RUST_PATH, 'rust-{self.new_version}.ebuild') @mock.patch.object(rust_uprev, 'get_command_output') @@ -227,66 +262,48 @@ class RustUprevOtherTests(unittest.TestCase): f'rust-{self.current_version}-patch-1.patch', f'rust-{self.current_version}-patch-2-new.patch' ] - rust_uprev.copy_patches(self.rust_path, self.old_version, - self.current_version, self.new_version) + rust_uprev.copy_patches(self.current_version, self.new_version) mock_copy.assert_has_calls([ mock.call( - os.path.join(self.rust_path, 'files', + os.path.join(rust_uprev.RUST_PATH, 'files', f'rust-{self.current_version}-patch-1.patch'), - os.path.join(self.rust_path, 'files', + os.path.join(rust_uprev.RUST_PATH, 'files', f'rust-{self.new_version}-patch-1.patch'), ), mock.call( - os.path.join(self.rust_path, 'files', + os.path.join(rust_uprev.RUST_PATH, 'files', f'rust-{self.current_version}-patch-2-new.patch'), - os.path.join(self.rust_path, 'files', + os.path.join(rust_uprev.RUST_PATH, 'files', f'rust-{self.new_version}-patch-2-new.patch')) ]) - mock_call.assert_has_calls([ - mock.call(['git', 'add', f'files/rust-{self.new_version}-*.patch'], - cwd=self.rust_path), - mock.call(['git', 'rm', f'files/rust-{self.old_version}-*.patch'], - cwd=self.rust_path) - ]) + mock_call.assert_called_once_with( + ['git', 'add', f'files/rust-{self.new_version}-*.patch'], + cwd=rust_uprev.RUST_PATH) @mock.patch.object(shutil, 'copyfile') @mock.patch.object(subprocess, 'check_call') - def test_rename_ebuild(self, mock_call, mock_copy): - rust_uprev.rename_ebuild(self.rust_path, self.old_version, - self.current_version, self.new_version) + def test_create_ebuild(self, mock_call, mock_copy): + rust_uprev.create_ebuild(self.current_version, self.new_version) mock_copy.assert_called_once_with( - os.path.join(self.rust_path, f'rust-{self.current_version}.ebuild'), - os.path.join(self.rust_path, f'rust-{self.new_version}.ebuild')) - mock_call.assert_has_calls([ - mock.call(['git', 'add', f'rust-{self.new_version}.ebuild'], - cwd=self.rust_path), - mock.call(['git', 'rm', f'rust-{self.old_version}.ebuild'], - cwd=self.rust_path) - ]) - - def test_upgrade_rust_packages(self): - package_before = (f'dev-lang/rust-{self.old_version}\n' - f'dev-lang/rust-{self.current_version}') - package_after = (f'dev-lang/rust-{self.current_version}\n' - f'dev-lang/rust-{self.new_version}') - mock_open = mock.mock_open(read_data=package_before) - with mock.patch('builtins.open', mock_open): - rust_uprev.upgrade_rust_packages(self.ebuild_file, self.old_version, - self.current_version, self.new_version) - mock_open.return_value.__enter__().write.assert_called_once_with( - package_after) + os.path.join(rust_uprev.RUST_PATH, + f'rust-{self.current_version}.ebuild'), + os.path.join(rust_uprev.RUST_PATH, f'rust-{self.new_version}.ebuild')) + mock_call.assert_called_once_with( + ['git', 'add', f'rust-{self.new_version}.ebuild'], + cwd=rust_uprev.RUST_PATH) @mock.patch.object(os.path, 'exists', return_value=True) + @mock.patch.object(shutil, 'copyfile') @mock.patch.object(subprocess, 'check_call') - def test_update_virtual_rust(self, mock_call, _): - rust_uprev.update_virtual_rust(self.ebuild_file, self.old_version, - self.new_version) - mock_call.assert_called_once_with([ - 'git', 'mv', f'rust-{self.old_version}.ebuild', - f'rust-{self.new_version}.ebuild' - ], - cwd=os.path.join(self.rust_path, - '../../virtual/rust')) + def test_update_virtual_rust(self, mock_call, mock_copy, mock_exists): + virtual_rust_dir = os.path.join(rust_uprev.RUST_PATH, '../../virtual/rust') + rust_uprev.update_virtual_rust(self.current_version, self.new_version) + mock_call.assert_called_once_with( + ['git', 'add', f'rust-{self.new_version}.ebuild'], cwd=virtual_rust_dir) + mock_copy.assert_called_once_with( + os.path.join(virtual_rust_dir, f'rust-{self.current_version}.ebuild'), + os.path.join(virtual_rust_dir, f'rust-{self.new_version}.ebuild')) + mock_exists.assert_called_once_with(virtual_rust_dir) @mock.patch.object(subprocess, 'check_call') def test_upload_to_localmirror(self, mock_call): -- cgit v1.2.3 From 20f7df65dbdd2be116da52f165dc575061d7bc4f Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Wed, 12 Aug 2020 16:24:54 -0700 Subject: crosperf: remove uses of numpy New in python3 (compared to python2) is a `statistics` module, which provides all of the functionality we wanted from numpy here. Use that instead. BUG=chromium:980719 TEST=Unittests Change-Id: I5eaa53744142c402d1e71d6b867e434940d41aec Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2353422 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- cros_utils/tabulator.py | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index b4092993..27b1c64d 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -67,10 +67,10 @@ from __future__ import print_function import collections import getpass import math +import statistics import sys -# TODO(zhizhouy): Drop numpy in the future +# TODO(crbug.com/980719): Drop scipy in the future. # pylint: disable=import-error -import numpy import scipy from cros_utils.email_sender import EmailSender @@ -556,7 +556,7 @@ class AmeanResult(StringMeanResult): def _ComputeFloat(self, cell, values, baseline_values): if self.ignore_min_max: values = _RemoveMinMax(cell, values) - cell.value = numpy.mean(values) + cell.value = statistics.mean(values) class RawResult(Result): @@ -610,7 +610,7 @@ class StdResult(NumericalResult): def _ComputeFloat(self, cell, values, baseline_values): if self.ignore_min_max: values = _RemoveMinMax(cell, values) - cell.value = numpy.std(values) + cell.value = statistics.stdev(values) class CoeffVarResult(NumericalResult): @@ -623,8 +623,8 @@ class CoeffVarResult(NumericalResult): def _ComputeFloat(self, cell, values, baseline_values): if self.ignore_min_max: values = _RemoveMinMax(cell, values) - if numpy.mean(values) != 0.0: - noise = numpy.abs(numpy.std(values) / numpy.mean(values)) + if statistics.mean(values) != 0.0: + noise = abs(statistics.stdev(values) / statistics.mean(values)) else: noise = 0.0 cell.value = noise @@ -731,9 +731,12 @@ class AmeanRatioResult(KeyAwareComparisonResult): if self.ignore_min_max: values = _RemoveMinMax(cell, values) baseline_values = _RemoveMinMax(cell, baseline_values) - if numpy.mean(baseline_values) != 0: - cell.value = numpy.mean(values) / numpy.mean(baseline_values) - elif numpy.mean(values) != 0: + + baseline_mean = statistics.mean(baseline_values) + values_mean = statistics.mean(values) + if baseline_mean != 0: + cell.value = values_mean / baseline_mean + elif values_mean != 0: cell.value = 0.00 # cell.value = 0 means the values and baseline_values have big difference else: @@ -1506,16 +1509,15 @@ if __name__ == '__main__': 'k8': 'PASS', 'k9': 'PASS', 'k10': '0' - }, - { - 'k1': '13', - 'k2': '14', - 'k3': '15', - 'ms_1': '10', - 'k8': 'PASS', - 'k9': 'FAIL', - 'k10': '0' - }], + }, { + 'k1': '13', + 'k2': '14', + 'k3': '15', + 'ms_1': '10', + 'k8': 'PASS', + 'k9': 'FAIL', + 'k10': '0' + }], [{ 'k1': '50', 'k2': '51', -- cgit v1.2.3 From 243ce37bf481923dafd7cb30c860aa65744914f1 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 10 Aug 2020 18:35:12 -0700 Subject: compiler_wrapper: remove some flags from unsupport clang flags LLVM implemented some flags that used to not be supported. Remove these flags from unsupported flags in the wrapper. BUG=chromium:1112929 TEST=tested locally. Change-Id: If91df0d35ac3db926067d3e0c5e213f6c5e3f390 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2346956 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/clang_flags.go | 10 +--------- compiler_wrapper/clang_flags_test.go | 8 -------- .../cros_clang_host_golden/clang_specific_args.json | 8 ++++++++ .../testdata/cros_hardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 3 +++ .../clang_maincc_target_specific.json | 3 +++ .../testdata/cros_hardened_golden/clang_path.json | 12 ++++++++++++ .../cros_hardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../cros_hardened_golden/clang_specific_args.json | 15 +++++++++++++++ .../clang_sysroot_wrapper_common.json | 5 +++++ .../testdata/cros_hardened_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_golden/force_disable_werror.json | 5 +++++ .../testdata/cros_hardened_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_hardened_noccache_golden/bisect.json | 3 +++ .../cros_hardened_noccache_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_noccache_golden/clangtidy.json | 8 ++++++++ .../force_disable_werror.json | 5 +++++ .../cros_hardened_noccache_golden/gcc_clang_syntax.json | 4 ++++ .../testdata/cros_nonhardened_golden/bisect.json | 3 +++ .../clang_ftrapv_maincc_target_specific.json | 3 +++ .../clang_maincc_target_specific.json | 3 +++ .../testdata/cros_nonhardened_golden/clang_path.json | 12 ++++++++++++ .../cros_nonhardened_golden/clang_sanitizer_args.json | 8 ++++++++ .../cros_nonhardened_golden/clang_specific_args.json | 15 +++++++++++++++ .../clang_sysroot_wrapper_common.json | 5 +++++ .../testdata/cros_nonhardened_golden/clangtidy.json | 8 ++++++++ .../cros_nonhardened_golden/force_disable_werror.json | 5 +++++ .../cros_nonhardened_golden/gcc_clang_syntax.json | 4 ++++ 33 files changed, 205 insertions(+), 17 deletions(-) diff --git a/compiler_wrapper/clang_flags.go b/compiler_wrapper/clang_flags.go index 1f0e2231..9eb951de 100644 --- a/compiler_wrapper/clang_flags.go +++ b/compiler_wrapper/clang_flags.go @@ -47,15 +47,7 @@ func processClangFlags(builder *commandBuilder) error { // Use of -Qunused-arguments allows this set to be small, just those // that clang still warns about. unsupported := map[string]bool{ - "-mno-movbe": true, - "-pass-exit-codes": true, - "-Wclobbered": true, - "-Wno-psabi": true, - "-Wlogical-op": true, - "-Wmissing-parameter-type": true, - "-Wold-style-declaration": true, - "-Woverride-init": true, - "-Wunsafe-loop-optimizations": true, + "-pass-exit-codes": true, } unsupportedPrefixes := []string{"-Wstrict-aliasing=", "-finline-limit="} diff --git a/compiler_wrapper/clang_flags_test.go b/compiler_wrapper/clang_flags_test.go index 2a7fbd15..a4145c22 100644 --- a/compiler_wrapper/clang_flags_test.go +++ b/compiler_wrapper/clang_flags_test.go @@ -212,14 +212,6 @@ func TestFilterUnsupportedClangFlags(t *testing.T) { expectedCount int }{ {clangX86_64, "-pass-exit-codes", 0}, - {clangX86_64, "-Wclobbered", 0}, - {clangX86_64, "-Wunsafe-loop-optimizations", 0}, - {clangX86_64, "-Wlogical-op", 0}, - {clangX86_64, "-Wmissing-parameter-type", 0}, - {clangX86_64, "-Woverride-init", 0}, - {clangX86_64, "-Wold-style-declaration", 0}, - {clangX86_64, "-Wno-psabi", 0}, - {clangX86_64, "-mno-movbe", 0}, {clangX86_64, "-Wstrict-aliasing=xyz", 0}, {clangX86_64, "-finline-limit=xyz", 0}, {"./armv7a-cros-linux-gnu-clang", "-ftrapv", 0}, diff --git a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json index 06030a09..41143bf0 100644 --- a/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_clang_host_golden/clang_specific_args.json @@ -38,6 +38,14 @@ "-Wno-unknown-warning-option", "-fexperimental-new-pass-manager", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", + "-mno-movbe", + "-Wclobbered", + "-Wno-psabi", + "-Wlogical-op", + "-Wmissing-parameter-type", + "-Wold-style-declaration", + "-Woverride-init", + "-Wunsafe-loop-optimizations", "main.cc", "-Wno-implicit-int-float-conversion" ] diff --git a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json index 97f5b1cf..97dec849 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/bisect.json @@ -46,6 +46,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -108,6 +109,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -173,6 +175,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json index 7d5a38cb..6223ed91 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_ftrapv_maincc_target_specific.json @@ -38,6 +38,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -90,6 +91,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-eabi" @@ -142,6 +144,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json index c7b278ae..717681c4 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_maincc_target_specific.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -86,6 +87,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-eabi" @@ -136,6 +138,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json index 1e0e5480..6940fcaf 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_path.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -89,6 +90,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -142,6 +144,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -195,6 +198,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -257,6 +261,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -322,6 +327,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -382,6 +388,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -435,6 +442,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -485,6 +493,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -535,6 +544,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -585,6 +595,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -638,6 +649,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json index c47b0bb8..acf6c24c 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sanitizer_args.json @@ -38,6 +38,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -90,6 +91,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -142,6 +144,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -194,6 +197,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -246,6 +250,7 @@ "-fsanitize=fuzzer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -300,6 +305,7 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -351,6 +357,7 @@ "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -403,6 +410,7 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json index 859597d7..26f5a665 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_specific_args.json @@ -45,8 +45,17 @@ "-pie", "-D_FORTIFY_SOURCE=2", "-fno-omit-frame-pointer", + "-mno-movbe", + "-Wclobbered", + "-Wno-psabi", + "-Wlogical-op", + "-Wmissing-parameter-type", + "-Wold-style-declaration", + "-Woverride-init", + "-Wunsafe-loop-optimizations", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -99,6 +108,7 @@ "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -151,6 +161,7 @@ "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -203,6 +214,7 @@ "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -255,6 +267,7 @@ "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -307,6 +320,7 @@ "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -359,6 +373,7 @@ "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json index 5f3e3a65..247f207c 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clang_sysroot_wrapper_common.json @@ -71,6 +71,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -124,6 +125,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -168,6 +170,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -218,6 +221,7 @@ "-D__KERNEL__", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -319,6 +323,7 @@ "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json index b526ec7c..219a8b2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/clangtidy.json @@ -51,6 +51,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -82,6 +83,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -143,6 +145,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -175,6 +178,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -238,6 +242,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -273,6 +278,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -337,6 +343,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -369,6 +376,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json index f4bbf664..10e485da 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/force_disable_werror.json @@ -39,6 +39,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -92,6 +93,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -131,6 +133,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -188,6 +191,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -227,6 +231,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json index 024ac23a..ea804d97 100644 --- a/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_golden/gcc_clang_syntax.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -110,6 +111,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -179,6 +181,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -232,6 +235,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 97f5b1cf..97dec849 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -46,6 +46,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -108,6 +109,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -173,6 +175,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 1e0e5480..6940fcaf 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -89,6 +90,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -142,6 +144,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -195,6 +198,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -257,6 +261,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -322,6 +327,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -382,6 +388,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -435,6 +442,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -485,6 +493,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -535,6 +544,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -585,6 +595,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -638,6 +649,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index b526ec7c..219a8b2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -51,6 +51,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -82,6 +83,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -143,6 +145,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -175,6 +178,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -238,6 +242,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -273,6 +278,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -337,6 +343,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -369,6 +376,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index f4bbf664..10e485da 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -39,6 +39,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -92,6 +93,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -131,6 +133,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -188,6 +191,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -227,6 +231,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 024ac23a..ea804d97 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -110,6 +111,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -179,6 +181,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -232,6 +235,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json index dfbbbfe2..af4e3ff5 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/bisect.json @@ -45,6 +45,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -103,6 +104,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -164,6 +166,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json index 8637b8ea..50423288 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clang_path.json @@ -35,6 +35,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -82,6 +83,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -129,6 +131,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -176,6 +179,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -232,6 +236,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -292,6 +297,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -351,6 +357,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -398,6 +405,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -442,6 +450,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -486,6 +495,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -530,6 +540,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -577,6 +588,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json index b526ec7c..219a8b2f 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/clangtidy.json @@ -51,6 +51,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -82,6 +83,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -143,6 +145,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -175,6 +178,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -238,6 +242,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -273,6 +278,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -337,6 +343,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -369,6 +376,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json index a84e7baf..a7fa8525 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/force_disable_werror.json @@ -38,6 +38,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -85,6 +86,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -118,6 +120,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -169,6 +172,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -202,6 +206,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json index b18c608e..bafca635 100644 --- a/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_noccache_golden/gcc_clang_syntax.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -105,6 +106,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -174,6 +176,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -227,6 +230,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json index bd3696c4..8b03c092 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/bisect.json @@ -38,6 +38,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -92,6 +93,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -149,6 +151,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json index c81f6332..5d72756d 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_ftrapv_maincc_target_specific.json @@ -30,6 +30,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -74,6 +75,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-eabi" @@ -118,6 +120,7 @@ "-ftrapv", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json index 6b7b80f2..382b7097 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_maincc_target_specific.json @@ -28,6 +28,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -70,6 +71,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-eabi" @@ -112,6 +114,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-win-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json index b237e784..cadfd1fe 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_path.json @@ -28,6 +28,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -73,6 +74,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -118,6 +120,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -163,6 +166,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -217,6 +221,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -274,6 +279,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -326,6 +332,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -371,6 +378,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -413,6 +421,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -455,6 +464,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-Ba/b/bin", "-target", "x86_64-cros-linux-gnu" @@ -497,6 +507,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -542,6 +553,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json index 7e2f61ee..8786db27 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sanitizer_args.json @@ -31,6 +31,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -76,6 +77,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -121,6 +123,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -166,6 +169,7 @@ "-fsanitize=kernel-address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -211,6 +215,7 @@ "-fsanitize=fuzzer", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -258,6 +263,7 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -302,6 +308,7 @@ "-fsanitize=address", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -346,6 +353,7 @@ "-fprofile-instr-generate", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json index b82782ea..98ca5a67 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_specific_args.json @@ -37,8 +37,17 @@ "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", + "-mno-movbe", + "-Wclobbered", + "-Wno-psabi", + "-Wlogical-op", + "-Wmissing-parameter-type", + "-Wold-style-declaration", + "-Woverride-init", + "-Wunsafe-loop-optimizations", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -83,6 +92,7 @@ "-Wno-#warnings", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -127,6 +137,7 @@ "-Wno-error=uninitialized", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -171,6 +182,7 @@ "-Wno-error=unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -215,6 +227,7 @@ "-Wno-unused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -259,6 +272,7 @@ "-Wunused-variable", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -303,6 +317,7 @@ "-someflag", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json index 82b0efd4..d39e2b0a 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clang_sysroot_wrapper_common.json @@ -59,6 +59,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -104,6 +105,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -142,6 +144,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -187,6 +190,7 @@ "-D__KERNEL__", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -276,6 +280,7 @@ "--sysroot=xyz", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json index 5ea4c766..ce9659a2 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/clangtidy.json @@ -43,6 +43,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -66,6 +67,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -119,6 +121,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -143,6 +146,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -198,6 +202,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -225,6 +230,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -281,6 +287,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -305,6 +312,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json index 9e979d63..61bff7d7 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -76,6 +77,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -107,6 +109,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -156,6 +159,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu" @@ -187,6 +191,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", diff --git a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json index ca16f412..244e8fad 100644 --- a/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_nonhardened_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -90,6 +91,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -147,6 +149,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", @@ -192,6 +195,7 @@ "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "main.cc", "-Wno-implicit-int-float-conversion", + "-mno-movbe", "-B../../bin", "-target", "x86_64-cros-linux-gnu", -- cgit v1.2.3 From 40733c3a8a604cf4e7c05b1b5e37ae1bebe0d05c Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Thu, 13 Aug 2020 13:52:23 -0700 Subject: rust_tools: Provide a big hammer to do everything to uprev Rust Create a new subcommand that can call both `create` and `remove`, as well as preparing the repo and uploading the CLs. Also update the steps to match the latest changes in UPGRADE.md. BUG=chromium:1112551 TEST=unittest; create an example CL Change-Id: I225d07d3e765daabd6ce8fc29309a5f11ef9cbae Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2355193 Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang Reviewed-by: George Burgess --- rust_tools/rust_uprev.py | 198 ++++++++++++++++++++++++++++++++++-------- rust_tools/rust_uprev_test.py | 121 +++++++++++++++++++++++--- 2 files changed, 271 insertions(+), 48 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index 50f85eb9..4ff92109 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -26,6 +26,10 @@ Replace `create --rust_version 1.45.0` with `remove --rust_version 1.43.0` if you want to remove all 1.43.0 related stuff in the same CL. Remember to use a different state file if you choose to run different subcommands. +If you want a hammer that can do everything for you, use the subcommand +`roll`. It can create a Rust uprev CL with `create` and `remove` and upload +the CL to chromium code review. + See `--help` for all available options. """ @@ -43,12 +47,13 @@ import sys import tempfile from typing import Any, Callable, Dict, List, NamedTuple, Optional, T, Tuple -from llvm_tools import chroot +from llvm_tools import chroot, git RUST_PATH = '/mnt/host/source/src/third_party/chromiumos-overlay/dev-lang/rust' -def get_command_output(command: List[str]) -> str: - return subprocess.check_output(command, encoding='utf-8').strip() +def get_command_output(command: List[str], *args, **kwargs) -> str: + return subprocess.check_output( + command, encoding='utf-8', *args, **kwargs).strip() class RustVersion(NamedTuple): @@ -109,18 +114,8 @@ def parse_commandline_args() -> argparse.Namespace: help='Continue the steps from the state file', ) - subparsers = parser.add_subparsers(dest='subparser_name') - subparser_names = [] - - create_parser = subparsers.add_parser('create') - subparser_names.append('create') - create_parser.add_argument( - '--rust_version', - type=RustVersion.parse, - required=True, - help='Rust version to upgrade to, in the form a.b.c', - ) - create_parser.add_argument( + create_parser_template = argparse.ArgumentParser(add_help=False) + create_parser_template.add_argument( '--template', type=RustVersion.parse, default=None, @@ -128,19 +123,70 @@ def parse_commandline_args() -> argparse.Namespace: 'a.b.c The ebuild has to exist in the chroot. If not specified, the ' 'tool will use the current Rust version in the chroot as template.', ) - create_parser.add_argument( + create_parser_template.add_argument( '--skip_compile', action='store_true', help='Skip compiling rust to test the tool. Only for testing', ) + subparsers = parser.add_subparsers(dest='subparser_name') + subparser_names = [] + subparser_names.append('create') + create_parser = subparsers.add_parser( + 'create', + parents=[create_parser_template], + help='Create changes uprevs Rust to a new version', + ) + create_parser.add_argument( + '--rust_version', + type=RustVersion.parse, + required=True, + help='Rust version to uprev to, in the form a.b.c', + ) + subparser_names.append('remove') - remove_parser = subparsers.add_parser('remove') + remove_parser = subparsers.add_parser( + 'remove', + help='Clean up old Rust version from chroot', + ) remove_parser.add_argument( '--rust_version', type=RustVersion.parse, + default=None, + help='Rust version to remove, in the form a.b.c If not ' + 'specified, the tool will remove the oldest version in the chroot', + ) + + subparser_names.append('roll') + roll_parser = subparsers.add_parser( + 'roll', + parents=[create_parser_template], + help='A command can create and upload a Rust uprev CL, including ' + 'preparing the repo, creating new Rust uprev, deleting old uprev, ' + 'and upload a CL to crrev.', + ) + roll_parser.add_argument( + '--uprev', + type=RustVersion.parse, required=True, - help='Rust version to upgrade to, in the form a.b.c', + help='Rust version to uprev to, in the form a.b.c', + ) + roll_parser.add_argument( + '--remove', + type=RustVersion.parse, + default=None, + help='Rust version to remove, in the form a.b.c If not ' + 'specified, the tool will remove the oldest version in the chroot', + ) + roll_parser.add_argument( + '--skip_cross_compiler', + action='store_true', + help='Skip updating cross-compiler in the chroot', + ) + roll_parser.add_argument( + '--no_upload', + action='store_true', + help='If specified, the tool will not upload the CL for review', ) args = parser.parse_args() @@ -341,12 +387,34 @@ def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: logging.info('Downloading Rust from %s', rust_src) gsutil_location = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' - local_file = os.path.join(tempdir, tarfile_name) - subprocess.check_call(['curl', '-f', '-o', local_file, rust_src]) + # Download Rust's source + rust_file = os.path.join(tempdir, tarfile_name) + subprocess.check_call(['curl', '-f', '-o', rust_file, rust_src]) + + # Verify the signature of the source + sig_file = os.path.join(tempdir, 'rustc_sig.asc') + subprocess.check_call(['curl', '-f', '-o', sig_file, f'{rust_src}.asc']) + try: + subprocess.check_output(['gpg', '--verify', sig_file, rust_file], + encoding='utf-8', + stderr=subprocess.STDOUT) + except subprocess.CalledProcessError as e: + if "gpg: Can't check signature" not in e.output: + raise RuntimeError(f'Failed to execute `gpg --verify`, {e.output}') + + # If it fails to verify the signature, try import rustc key, and retry. + keys = get_command_output( + ['curl', '-f', 'https://keybase.io/rust/pgp_keys.asc']) + subprocess.run(['gpg', '--import'], + input=keys, + encoding='utf-8', + check=True) + subprocess.check_call(['gpg', '--verify', sig_file, rust_file]) + # Since we are using `-n` to skip an item if it already exists, there's no # need to check if the file exists on GS bucket or not. subprocess.check_call( - ['gsutil', 'cp', '-n', '-a', 'public-read', local_file, gsutil_location]) + ['gsutil', 'cp', '-n', '-a', 'public-read', rust_file, gsutil_location]) def perform_step(state_file: pathlib.Path, @@ -378,10 +446,7 @@ def perform_step(state_file: pathlib.Path, def create_rust_uprev(rust_version: RustVersion, template: Optional[RustVersion], skip_compile: bool, - run_step: Callable[[ - str, Callable[[], T], Optional[Callable[[Any], T]], - Optional[Callable[[T], Any]] - ], T]) -> None: + run_step: Callable[[], T]) -> None: stage0_info = run_step( 'parse stage0 file', lambda: parse_stage0_file(rust_version)) template_version = run_step( @@ -409,29 +474,82 @@ def create_rust_uprev(rust_version: RustVersion, template_version, rust_version)) +def find_oldest_rust_version_inchroot() -> RustVersion: + rust_versions = [ + RustVersion.parse(x) for x in os.listdir(RUST_PATH) if '.ebuild' in x + ] + + if len(rust_versions) <= 1: + raise RuntimeError('Expect to find more than one Rust versions') + return min(rust_versions) + + def remove_files(filename: str, path: str) -> None: subprocess.check_call(['git', 'rm', filename], cwd=path) -def remove_rust_uprev(rust_version: RustVersion, run_step: Callable[[ - str, Callable[[], T], Optional[Callable[[Any], T]], Optional[ - Callable[[T], Any]] -], T]) -> None: +def remove_rust_uprev(rust_version: Optional[RustVersion], + run_step: Callable[[], T]) -> None: + delete_version = run_step( + 'find rust version to delete', + lambda: rust_version or find_oldest_rust_version_inchroot(), + result_from_json=prepare_uprev_from_json, + ) run_step( 'remove patches', lambda: remove_files( - f'files/rust-{rust_version}-*.patch', RUST_PATH)) - run_step('remove ebuild', lambda: remove_files(f'rust-{rust_version}.ebuild', - RUST_PATH)) + f'files/rust-{delete_version}-*.patch', RUST_PATH)) + run_step('remove ebuild', lambda: remove_files( + f'rust-{delete_version}.ebuild', RUST_PATH)) ebuild_file = get_command_output(['equery', 'w', 'rust']) run_step('update manifest', lambda: update_manifest(ebuild_file)) run_step('remove version from rust packages', lambda: update_rust_packages( - rust_version, add=False)) + delete_version, add=False)) run_step( 'remove virtual/rust', lambda: remove_files( - f'rust-{rust_version}.ebuild', + f'rust-{delete_version}.ebuild', os.path.join(RUST_PATH, '../../virtual/rust'))) +def create_new_repo(rust_version: RustVersion) -> None: + output = get_command_output(['git', 'status', '--porcelain'], cwd=RUST_PATH) + if output: + raise RuntimeError( + f'{RUST_PATH} has uncommitted changes, please either discard them ' + 'or commit them.') + git.CreateBranch(RUST_PATH, f'rust-to-{rust_version}') + + +def build_cross_compiler() -> None: + # Get target triples in ebuild + rust_ebuild = get_command_output(['equery', 'w', 'rust']) + with open(rust_ebuild, encoding='utf-8') as f: + contents = f.read() + + target_triples_re = re.compile(r'RUSTC_TARGET_TRIPLES=\(([^)]+)\)') + m = target_triples_re.search(contents) + assert m, 'RUST_TARGET_TRIPLES not found in rust ebuild' + target_triples = m.group(1).strip().split('\n') + for target in target_triples: + if 'cros-' not in target: + continue + target = target.strip() + logging.info('Emerging cross compiler %s', target) + subprocess.check_call(['sudo', 'emerge', '-G', f'cross-{target}/gcc']) + + +def create_new_commit(rust_version: RustVersion) -> None: + subprocess.check_call(['git', 'add', '-A'], cwd=RUST_PATH) + messages = [ + f'[DO NOT SUBMIT] dev-lang/rust: upgrade to Rust {rust_version}', + '', + 'This CL is created by rust_uprev tool automatically.' + '', + 'BUG=None', + 'TEST=Use CQ to test the new Rust version', + ] + git.UploadChanges(RUST_PATH, f'rust-to-{rust_version}', messages) + + def main() -> None: if not chroot.InChroot(): raise RuntimeError('This script must be executed inside chroot') @@ -461,8 +579,18 @@ def main() -> None: if args.subparser_name == 'create': create_rust_uprev(args.rust_version, args.template, args.skip_compile, run_step) - else: + elif args.subparser_name == 'remove': remove_rust_uprev(args.rust_version, run_step) + else: + # If you have added more subparser_name, please also add the handlers above + assert args.subparser_name == 'roll' + run_step('create new repo', lambda: create_new_repo(args.uprev)) + if not args.skip_cross_compiler: + run_step('build cross compiler', build_cross_compiler) + create_rust_uprev(args.uprev, args.template, args.skip_compile, run_step) + remove_rust_uprev(args.remove, run_step) + if not args.no_upload: + run_step('create rust uprev CL', lambda: create_new_commit(args.uprev)) if __name__ == '__main__': diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index e007b822..a28c551e 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -13,6 +13,8 @@ import subprocess import unittest from unittest import mock +from llvm_tools import git + import rust_uprev @@ -223,6 +225,67 @@ class UpdateRustPackagesTests(unittest.TestCase): package_after) +class UploadToLocalmirrorTests(unittest.TestCase): + """Tests for upload_to_localmirror""" + + def setUp(self): + self.tempdir = '/tmp/any/dir' + self.new_version = rust_uprev.RustVersion(1, 3, 5) + self.tarfile_name = f'rustc-{self.new_version}-src.tar.gz' + self.rust_src = f'https://static.rust-lang.org/dist/{self.tarfile_name}' + self.gsurl = f'gs://chromeos-localmirror/distfiles/{self.tarfile_name}' + self.rust_file = os.path.join(self.tempdir, self.tarfile_name) + self.sig_file = os.path.join(self.tempdir, 'rustc_sig.asc') + + @mock.patch.object(subprocess, 'check_call') + @mock.patch.object(subprocess, 'check_output') + @mock.patch.object(subprocess, 'run') + def test_pass_without_retry(self, mock_run, mock_output, mock_call): + rust_uprev.upload_to_localmirror(self.tempdir, self.new_version) + mock_output.assert_called_once_with( + ['gpg', '--verify', self.sig_file, self.rust_file], + encoding='utf-8', + stderr=subprocess.STDOUT) + mock_call.assert_has_calls([ + mock.call(['curl', '-f', '-o', self.rust_file, self.rust_src]), + mock.call(['curl', '-f', '-o', self.sig_file, f'{self.rust_src}.asc']), + mock.call([ + 'gsutil', 'cp', '-n', '-a', 'public-read', self.rust_file, + self.gsurl + ]) + ]) + mock_run.assert_not_called() + + @mock.patch.object(subprocess, 'check_call') + @mock.patch.object(subprocess, 'check_output') + @mock.patch.object(subprocess, 'run') + @mock.patch.object(rust_uprev, 'get_command_output') + def test_pass_with_retry(self, mock_output, mock_run, mock_check, mock_call): + mock_check.side_effect = subprocess.CalledProcessError( + returncode=2, cmd=None, output="gpg: Can't check signature") + mock_output.return_value = 'some_gpg_keys' + rust_uprev.upload_to_localmirror(self.tempdir, self.new_version) + mock_check.assert_called_once_with( + ['gpg', '--verify', self.sig_file, self.rust_file], + encoding='utf-8', + stderr=subprocess.STDOUT) + mock_output.assert_called_once_with( + ['curl', '-f', 'https://keybase.io/rust/pgp_keys.asc']) + mock_run.assert_called_once_with(['gpg', '--import'], + input='some_gpg_keys', + encoding='utf-8', + check=True) + mock_call.assert_has_calls([ + mock.call(['curl', '-f', '-o', self.rust_file, self.rust_src]), + mock.call(['curl', '-f', '-o', self.sig_file, f'{self.rust_src}.asc']), + mock.call(['gpg', '--verify', self.sig_file, self.rust_file]), + mock.call([ + 'gsutil', 'cp', '-n', '-a', 'public-read', self.rust_file, + self.gsurl + ]) + ]) + + class RustUprevOtherStagesTests(unittest.TestCase): """Tests for other steps in rust_uprev""" @@ -305,20 +368,52 @@ class RustUprevOtherStagesTests(unittest.TestCase): os.path.join(virtual_rust_dir, f'rust-{self.new_version}.ebuild')) mock_exists.assert_called_once_with(virtual_rust_dir) + @mock.patch.object(os, 'listdir') + def test_find_oldest_rust_version_inchroot_pass(self, mock_ls): + mock_ls.return_value = [ + f'rust-{self.old_version}.ebuild', + f'rust-{self.current_version}.ebuild', f'rust-{self.new_version}.ebuild' + ] + actual = rust_uprev.find_oldest_rust_version_inchroot() + expected = self.old_version + self.assertEqual(expected, actual) + + @mock.patch.object(os, 'listdir') + def test_find_oldest_rust_version_inchroot_fail_with_only_one_ebuild( + self, mock_ls): + mock_ls.return_value = [f'rust-{self.new_version}.ebuild'] + with self.assertRaises(RuntimeError) as context: + rust_uprev.find_oldest_rust_version_inchroot() + self.assertEqual('Expect to find more than one Rust versions', + str(context.exception)) + + @mock.patch.object(rust_uprev, 'get_command_output') + @mock.patch.object(git, 'CreateBranch') + def test_create_new_repo(self, mock_branch, mock_output): + mock_output.return_value = '' + rust_uprev.create_new_repo(self.new_version) + mock_branch.assert_called_once_with(rust_uprev.RUST_PATH, + f'rust-to-{self.new_version}') + + @mock.patch.object(rust_uprev, 'get_command_output') @mock.patch.object(subprocess, 'check_call') - def test_upload_to_localmirror(self, mock_call): - tempdir = '/tmp/any/dir' - rust_uprev.upload_to_localmirror(tempdir, self.new_version) - - tarfile_name = f'rustc-{self.new_version}-src.tar.gz' - rust_src = f'https://static.rust-lang.org/dist/{tarfile_name}' - gsurl = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' - local_file = os.path.join(tempdir, tarfile_name) - mock_call.assert_has_calls([ - mock.call(['curl', '-f', '-o', local_file, rust_src]), - mock.call( - ['gsutil', 'cp', '-n', '-a', 'public-read', local_file, gsurl]) - ]) + def test_build_cross_compiler(self, mock_call, mock_output): + mock_output.return_value = f'rust-{self.new_version}.ebuild' + cros_targets = [ + 'x86_64-cros-linux-gnu', 'armv7a-cros-linux-gnueabihf', + 'aarch64-cros-linux-gnu' + ] + all_triples = ['x86_64-pc-linux-gnu'] + cros_targets + rust_ebuild = 'RUSTC_TARGET_TRIPLES=(' + '\n\t'.join(all_triples) + ')' + mock_open = mock.mock_open(read_data=rust_ebuild) + with mock.patch('builtins.open', mock_open): + rust_uprev.build_cross_compiler() + + emerge_calls = [ + mock.call(['sudo', 'emerge', '-G', f'cross-{x}/gcc']) + for x in cros_targets + ] + mock_call.assert_has_calls(emerge_calls) if __name__ == '__main__': -- cgit v1.2.3 From 98de93b00a543825e7c90477eb0808e9fe9b4c55 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Tue, 18 Aug 2020 18:27:03 +0000 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R86-13371.0-1597657048 Update chromeos-kernel-4_4 to R86-13393.0-1597657015 Update chromeos-kernel-4_14 to R86-13380.0-1597656799 Update chromeos-kernel-4_19 to R86-13390.0-1597656794 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: Ia92102c4fc76c86d3e79984b578ac74ffbb623c3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2363391 Tested-by: Bob Haarman Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 66507a3b..29545800 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13371.0-1597051939" + "name": "R86-13371.0-1597657048" }, "chromeos-kernel-4_4": { - "name": "R86-13380.0-1597052123" + "name": "R86-13393.0-1597657015" }, "chromeos-kernel-4_14": { - "name": "R86-13380.0-1597052364" + "name": "R86-13380.0-1597656799" }, "chromeos-kernel-4_19": { - "name": "R86-13380.0-1597052000" + "name": "R86-13390.0-1597656794" } } -- cgit v1.2.3 From 4d7093dd6d1441fbc49e61e94d5912307f1436bb Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 19 Aug 2020 12:00:45 -0700 Subject: cros_utils: clean up naming Also fixed format to comply with yapf. BUG=chromium:1099035 TEST=None. Change-Id: I341ee97c2270f33548590daadb36050c2a6baaf6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2364722 Reviewed-by: Tiancong Wang Tested-by: Jian Cai --- cros_utils/buildbot_utils.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/cros_utils/buildbot_utils.py b/cros_utils/buildbot_utils.py index e0c54782..b600c6aa 100644 --- a/cros_utils/buildbot_utils.py +++ b/cros_utils/buildbot_utils.py @@ -50,8 +50,8 @@ def PeekTrybotImage(chromeos_root, buildbucket_id): and url looks like: gs://chromeos-image-archive/trybot-elm-release-tryjob/R67-10468.0.0-b20789 """ - command = ( - 'cros buildresult --report json --buildbucket-id %s' % buildbucket_id) + command = ('cros buildresult --report json --buildbucket-id %s' % + buildbucket_id) rc, out, _ = RunCommandInPath(chromeos_root, command) # Current implementation of cros buildresult returns fail when a job is still @@ -194,9 +194,9 @@ def GetTrybotImage(chromeos_root, image = '' if not image: - logger.GetLogger().LogError( - 'Trybot job (buildbucket id: %s) failed with' - 'status %s; no trybot image generated. ' % (buildbucket_id, status)) + logger.GetLogger().LogError('Trybot job (buildbucket id: %s) failed with' + 'status %s; no trybot image generated. ' % + (buildbucket_id, status)) else: # Convert full gs path to what crosperf expects. For example, convert # gs://chromeos-image-archive/trybot-elm-release-tryjob/R67-10468.0.0-b20789 @@ -226,13 +226,13 @@ def WaitForImage(chromeos_root, build): while elapsed_time < TIME_OUT: if DoesImageExist(chromeos_root, build): return - logger.GetLogger().LogOutput( - 'Image %s not ready, waiting for 10 minutes' % build) + logger.GetLogger().LogOutput('Image %s not ready, waiting for 10 minutes' % + build) time.sleep(SLEEP_TIME) elapsed_time += SLEEP_TIME - logger.GetLogger().LogOutput( - 'Image %s not found, waited for %d hours' % (build, (TIME_OUT / 3600))) + logger.GetLogger().LogOutput('Image %s not found, waited for %d hours' % + (build, (TIME_OUT / 3600))) raise BuildbotTimeout('Timeout while waiting for image %s' % build) @@ -253,7 +253,7 @@ def GetLatestImage(chromeos_root, path): candidates.sort(reverse=True) for c in candidates: build = '%s/R%d-%d.%d.%d' % (path, c[0], c[1], c[2], c[3]) - # Blacklist "R79-12384.0.0" image released by mistake. + # Denylist "R79-12384.0.0" image released by mistake. # TODO(crbug.com/992242): Remove the filter by 2019-09-05. if c == [79, 12384, 0, 0]: continue -- cgit v1.2.3 From eaed17704e9752dfd1f60f7f92a8f346ebdf1533 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Tue, 25 Aug 2020 13:48:30 -0700 Subject: afdo_tools: Update update_kernel_afdo to check previous branch When we just branch, and no profiles for the current canary branch can be found, we should check the profiles on previous branch. Also fix non-inclusive language in this patch. BUG=None TEST=kernel_afdo.json changes made locally Change-Id: I0de00274001ee7a120c40163ab93cb35e143acdf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2376170 Tested-by: Tiancong Wang Reviewed-by: Bob Haarman --- afdo_tools/update_kernel_afdo | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo index 64e5e477..8f100a12 100755 --- a/afdo_tools/update_kernel_afdo +++ b/afdo_tools/update_kernel_afdo @@ -1,4 +1,7 @@ #!/bin/bash +# Copyright 2020 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. # Due to crbug.com/1081332, we need to update AFDO metadata # manually. This script performs a few checks and generates a @@ -26,6 +29,7 @@ set -eu set -o pipefail +CROS_REPO=https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay GS_BASE=gs://chromeos-prebuilt/afdo-job/vetted/kernel KVERS="3.18 4.4 4.14 4.19" errs="" @@ -44,9 +48,11 @@ else expected_time=$(date +%s -d "last Monday") fi -# Get the current master branch number (using beta + 1) -beta=$(git ls-remote -h https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay | sed -n -e "s/^.*release-R\([0-9][0-9]*\).*$/\1/p" | sort -g | tail -1) -master="$(($beta + 1))" +# Get the current canary branch number (using beta + 1) +beta=$(git ls-remote -h $CROS_REPO | \ + sed -n -e "s/^.*release-R\([0-9][0-9]*\).*$/\1/p" | \ + sort -g | tail -1) +canary="$(($beta + 1))" json="{" sep="" @@ -54,7 +60,14 @@ for kver in $KVERS do # Sort the gs output by timestamp (default ordering is by name, so # R86-13310.3-1594633089.gcov.xz goes after R86-13310.18-1595237847.gcov.xz) - latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | grep "R${master}" | tail -1) + latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ + grep "R${canary}" | tail -1 || true) + if [ -z $latest ] + then + # if no profiles exist for R${canary}, try the previous branch + latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ + grep "R${beta}" | tail -1) + fi # Verify that the file has the expected date. file_time=$(echo "$latest" | awk '{print $2}') -- cgit v1.2.3 From 5d21b27e2ed16db964d947a0a09fa156522a632d Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 25 Aug 2020 12:36:45 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R86-13371.0-1598261536 Update chromeos-kernel-4_4 to R86-13380.0-1598262292 Update chromeos-kernel-4_14 to R86-13380.0-1598261903 Update chromeos-kernel-4_19 to R86-13390.0-1598262023 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I4dd792a83fea8e205d40cbc26b9f03d84b751ef3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2376168 Reviewed-by: Tiancong Wang Tested-by: Denis Nikitin --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 29545800..5958e5af 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13371.0-1597657048" + "name": "R86-13371.0-1598261536" }, "chromeos-kernel-4_4": { - "name": "R86-13393.0-1597657015" + "name": "R86-13380.0-1598262292" }, "chromeos-kernel-4_14": { - "name": "R86-13380.0-1597656799" + "name": "R86-13380.0-1598261903" }, "chromeos-kernel-4_19": { - "name": "R86-13390.0-1597656794" + "name": "R86-13390.0-1598262023" } } -- cgit v1.2.3 From 2e734a52b5556f47cfd8ee560763dbd351a08680 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Wed, 26 Aug 2020 11:00:10 -0700 Subject: crosperf: replace statistics stdev with pstdev Behavior and results of statistics.stdev(data) are slightly different from numpy.std(data) with default "ddof". The main difference is the divisor which is "N - 1" in stdev vs. "N" in numpy.std. As a consequence stdev fails with "N=1". The change replaces stdev with pstdev (population standard deviation) which is equivalent to numpy.std with default arguments that we were using. Added unittest with StdResult testing. BUG=None TEST=unittest and crosperf with one iteration passes. Change-Id: I70c7105e6cabc27437504de16ea27afdd719e552 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2376880 Reviewed-by: George Burgess Tested-by: Denis Nikitin Commit-Queue: Denis Nikitin --- cros_utils/tabulator.py | 72 ++++++++++++++++++++++---------------------- cros_utils/tabulator_test.py | 14 +++++++++ 2 files changed, 50 insertions(+), 36 deletions(-) diff --git a/cros_utils/tabulator.py b/cros_utils/tabulator.py index 27b1c64d..1a3fd4a7 100644 --- a/cros_utils/tabulator.py +++ b/cros_utils/tabulator.py @@ -610,7 +610,7 @@ class StdResult(NumericalResult): def _ComputeFloat(self, cell, values, baseline_values): if self.ignore_min_max: values = _RemoveMinMax(cell, values) - cell.value = statistics.stdev(values) + cell.value = statistics.pstdev(values) class CoeffVarResult(NumericalResult): @@ -624,7 +624,7 @@ class CoeffVarResult(NumericalResult): if self.ignore_min_max: values = _RemoveMinMax(cell, values) if statistics.mean(values) != 0.0: - noise = abs(statistics.stdev(values) / statistics.mean(values)) + noise = abs(statistics.pstdev(values) / statistics.mean(values)) else: noise = 0.0 cell.value = noise @@ -1498,40 +1498,40 @@ def GetComplexTable(runs, labels, out_to=TablePrinter.CONSOLE): if __name__ == '__main__': # Run a few small tests here. - runs = [ - [{ - 'k1': '10', - 'k2': '12', - 'k5': '40', - 'k6': '40', - 'ms_1': '20', - 'k7': 'FAIL', - 'k8': 'PASS', - 'k9': 'PASS', - 'k10': '0' - }, { - 'k1': '13', - 'k2': '14', - 'k3': '15', - 'ms_1': '10', - 'k8': 'PASS', - 'k9': 'FAIL', - 'k10': '0' - }], - [{ - 'k1': '50', - 'k2': '51', - 'k3': '52', - 'k4': '53', - 'k5': '35', - 'k6': '45', - 'ms_1': '200', - 'ms_2': '20', - 'k7': 'FAIL', - 'k8': 'PASS', - 'k9': 'PASS' - }], - ] + run1 = { + 'k1': '10', + 'k2': '12', + 'k5': '40', + 'k6': '40', + 'ms_1': '20', + 'k7': 'FAIL', + 'k8': 'PASS', + 'k9': 'PASS', + 'k10': '0' + } + run2 = { + 'k1': '13', + 'k2': '14', + 'k3': '15', + 'ms_1': '10', + 'k8': 'PASS', + 'k9': 'FAIL', + 'k10': '0' + } + run3 = { + 'k1': '50', + 'k2': '51', + 'k3': '52', + 'k4': '53', + 'k5': '35', + 'k6': '45', + 'ms_1': '200', + 'ms_2': '20', + 'k7': 'FAIL', + 'k8': 'PASS', + 'k9': 'PASS' + } + runs = [[run1, run2], [run3]] labels = ['vanilla', 'modified'] t = GetComplexTable(runs, labels, TablePrinter.CONSOLE) print(t) diff --git a/cros_utils/tabulator_test.py b/cros_utils/tabulator_test.py index 227e2d70..9dd4828e 100755 --- a/cros_utils/tabulator_test.py +++ b/cros_utils/tabulator_test.py @@ -33,6 +33,20 @@ class TabulatorTest(unittest.TestCase): result.Compute(cell, table[2], table[1]) self.assertTrue(cell.value == float(table[2][0])) + def testStdResult(self): + table = ['k1', [], ['1', '2']] + result = tabulator.StdResult() + cell = tabulator.Cell() + result.Compute(cell, table[2], table[1]) + self.assertTrue(cell.value == 0.5) + + def testStdResultOfSampleSize1(self): + table = ['k1', [], ['1']] + result = tabulator.StdResult() + cell = tabulator.Cell() + result.Compute(cell, table[2], table[1]) + self.assertTrue(cell.value == 0.0) + def testStringMean(self): smr = tabulator.StringMeanResult() cell = tabulator.Cell() -- cgit v1.2.3 From 29a3f18786590bfcfc98bf0640b02bb684d80ec3 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 7 Sep 2020 14:23:15 -0700 Subject: afdo_metadata: Publish the new kernel profiles. Update chromeos-kernel-3_18 to R87-13421.11-1599471395 Update chromeos-kernel-4_4 to R87-13421.11-1599472924 Update chromeos-kernel-4_14 to R87-13421.11-1599471640 Update chromeos-kernel-4_19 to R87-13421.11-1599472679 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator. Change-Id: Iccf498fa9b8dbd7192d3a7c04fdaec68921bfe7c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2396713 Reviewed-by: Tiancong Wang Tested-by: Caroline Tice --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 5958e5af..58779409 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R86-13371.0-1598261536" + "name": "R87-13421.11-1599471395" }, "chromeos-kernel-4_4": { - "name": "R86-13380.0-1598262292" + "name": "R87-13421.11-1599472924" }, "chromeos-kernel-4_14": { - "name": "R86-13380.0-1598261903" + "name": "R87-13421.11-1599471640" }, "chromeos-kernel-4_19": { - "name": "R86-13390.0-1598262023" + "name": "R87-13421.11-1599472679" } } -- cgit v1.2.3 From c1e7b46ea3d6616f3844c30e89f5014d0c3d6926 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 15 Sep 2020 11:44:49 -0700 Subject: llvm_tools: tweak script verbosity At the moment, this script is silent except for when gsutil sneakily prints file copying status to stdout/stderr. Since we're already configuring `logging` here, be a bit more descriptive about our current status. BUG=None TEST=Ran the script. Change-Id: Ibcdb0f6cd488e70b9f810a9ca615556a7d672948 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2412481 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/bisect_clang_crashes.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/llvm_tools/bisect_clang_crashes.py b/llvm_tools/bisect_clang_crashes.py index e7ce96e4..9ea10352 100755 --- a/llvm_tools/bisect_clang_crashes.py +++ b/llvm_tools/bisect_clang_crashes.py @@ -70,12 +70,17 @@ def main(argv): os.makedirs(temporary_directory, exist_ok=True) urls = get_artifacts('gs://chromeos-toolchain-artifacts/clang-crash-diagnoses' '/**/*clang_crash_diagnoses.tar.xz') + logging.info('%d crash URLs found', len(urls)) + visited = {} if os.path.exists(state_file): buildbucket_ids = {url.split('/')[-2] for url in urls} with open(state_file, encoding='utf-8') as f: data = json.load(f) visited = {k: v for k, v in data.items() if k in buildbucket_ids} + logging.info('Successfully loaded %d previously-submitted crashes', + len(visited)) + for url in urls: splits = url.split('/') buildbucket_id = splits[-2] @@ -85,7 +90,9 @@ def main(argv): visited[buildbucket_id] = '%s' % url dest_dir = os.path.join(temporary_directory, buildbucket_id) dest_file = os.path.join(dest_dir, splits[-1]) - subprocess.check_output(['gsutil', 'cp', url, dest_file]) + logging.info('Downloading and submitting %r...', url) + subprocess.check_output(['gsutil', 'cp', url, dest_file], + stderr=subprocess.STDOUT) subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) for src, script in get_crash_reproducers(dest_dir): -- cgit v1.2.3 From 563cdd918ee69f744934c3782a28d0da178ac5d1 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Tue, 15 Sep 2020 12:29:02 -0700 Subject: llvm_tools: save intermediate state even if a step fails When uploading multiple crashes, a network error may happen (or anything else, really). This isn't going to save us from SIGKILLs or power-offs (it's impossible to save us 100% from either of those, since there's always going to be a race between writing the JSON file and submitting the test-case), but it should keep us from submitting duplicate crash reports in most cases. This also has us sort results from `gsutil ls`, since that may not always print things in a deterministic order. BUG=None TEST=Ran the script; ^C'ed it in the middle. Change-Id: I9695d83db6fb8161dc6fce16b13980c8eacf219d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2412482 Reviewed-by: Jian Cai Tested-by: George Burgess --- llvm_tools/bisect_clang_crashes.py | 75 +++++++++++++++++++++++++------------- 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/llvm_tools/bisect_clang_crashes.py b/llvm_tools/bisect_clang_crashes.py index 9ea10352..4d47c4c3 100755 --- a/llvm_tools/bisect_clang_crashes.py +++ b/llvm_tools/bisect_clang_crashes.py @@ -26,7 +26,7 @@ def get_artifacts(pattern): results = subprocess.check_output(['gsutil', 'ls', pattern], stderr=subprocess.STDOUT, encoding='utf-8') - return [l.strip() for l in results.splitlines()] + return sorted(l.strip() for l in results.splitlines()) def get_crash_reproducers(working_dir): @@ -43,6 +43,21 @@ def get_crash_reproducers(working_dir): return results +def submit_crash_to_forcey(forcey: str, temporary_directory: str, + buildbucket_id: str, url: str) -> None: + dest_dir = os.path.join(temporary_directory, buildbucket_id) + dest_file = os.path.join(dest_dir, os.path.basename(url)) + logging.info('Downloading and submitting %r...', url) + subprocess.check_output(['gsutil', 'cp', url, dest_file], + stderr=subprocess.STDOUT) + subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) + for src, script in get_crash_reproducers(dest_dir): + subprocess.check_output([ + forcey, 'reduce', '-wait=false', '-note', + '%s:%s' % (url, src), '-sh_file', script, '-src_file', src + ]) + + def main(argv): chroot.VerifyOutsideChroot() logging.basicConfig( @@ -81,33 +96,41 @@ def main(argv): logging.info('Successfully loaded %d previously-submitted crashes', len(visited)) - for url in urls: - splits = url.split('/') - buildbucket_id = splits[-2] - # Skip the builds that has been processed - if buildbucket_id in visited: - continue - visited[buildbucket_id] = '%s' % url - dest_dir = os.path.join(temporary_directory, buildbucket_id) - dest_file = os.path.join(dest_dir, splits[-1]) - logging.info('Downloading and submitting %r...', url) - subprocess.check_output(['gsutil', 'cp', url, dest_file], - stderr=subprocess.STDOUT) - subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) - - for src, script in get_crash_reproducers(dest_dir): - subprocess.check_output( - [ - opts.forcey, 'reduce', '-wait=false', '-note', - '%s:%s' % (url, src), '-sh_file', script, '-src_file', src - ], - encoding='utf-8', + try: + for url in urls: + splits = url.split('/') + buildbucket_id = splits[-2] + # Skip the builds that has been processed + if buildbucket_id in visited: + continue + submit_crash_to_forcey( + forcey=opts.forcey, + temporary_directory=temporary_directory, + buildbucket_id=buildbucket_id, + url=url, ) + visited[buildbucket_id] = url + + exception_in_flight = False + except: + exception_in_flight = True + raise + finally: + if exception_in_flight: + # This is best-effort. If the machine powers off or similar, we'll just + # resubmit the same crashes, which is suboptimal, but otherwise + # acceptable. + logging.error('Something went wrong; attempting to save our work...') + else: + logging.info('Persisting state...') + + tmp_state_file = state_file + '.tmp' + with open(tmp_state_file, 'w', encoding='utf-8') as f: + json.dump(visited, f, indent=2) + os.rename(tmp_state_file, state_file) + + logging.info('State successfully persisted') - tmp_state_file = state_file + '.tmp' - with open(tmp_state_file, 'w', encoding='utf-8') as f: - json.dump(visited, f, indent=2) - os.rename(tmp_state_file, state_file) if opts.cleanup: shutil.rmtree(temporary_directory) -- cgit v1.2.3 From 38df970e32b35519245836c25c5a2e99ef6ec642 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Thu, 17 Sep 2020 08:14:15 -0700 Subject: toolchain-utils: Update README.md for llvm_tools. This corrects an error, a typo, and an omission I discovered in the README.md instructions. BUG=None TEST=None Change-Id: I19c46d87bf326c9ab320dc7bb23b4a8dae5573fe Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2416246 Auto-Submit: Caroline Tice Reviewed-by: Manoj Gupta Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- llvm_tools/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/llvm_tools/README.md b/llvm_tools/README.md index 9c4a9c08..d7c20164 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -278,6 +278,7 @@ $ ./auto_llvm_bisection.py --start_rev 369410 --end_rev 369420 \ --last_tested /abs/path/to/last_tested_file.json \ --extra_change_lists 513590 1394249 \ --options latest-toolchain nochromesdk \ + --chroot_path /path/to/chromeos/chroot \ --builder eve-release-tryjob ``` @@ -554,8 +555,8 @@ PYTHONPATH=../ ./nightly_revert_checker.py \ ### `bisect_clang_crashes.py` This script downloads clang crash diagnoses from -gs://chrome-toolchain-artifacts/clang-crash-diagnoses and send them to 4c for -bisectiton. +gs://chromeos-toolchain-artifacts/clang-crash-diagnoses and send them to 4c for +bisection. Usage example: -- cgit v1.2.3 From 4edc81e0b5fe33fb3c3f59e8188d16e3bd3aba54 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 20 Apr 2020 16:34:43 -0700 Subject: crosperf: Add support to run tests with ssh forwarding The change allows running crosperf with local DUT with port forwarding. Experiment file can define a local DUT with: remote: 127.0.0.1: BUG=chromium:1064988 TEST=Tested with crosperf on local and remote DUT. Change-Id: I62446821f83e8ae39d610ca9ed60c9b37af9852c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2158122 Reviewed-by: Denis Nikitin Reviewed-by: Tiancong Wang Tested-by: Denis Nikitin --- cros_utils/command_executer.py | 58 +++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 23 deletions(-) diff --git a/cros_utils/command_executer.py b/cros_utils/command_executer.py index b9acbe31..ee1df95c 100755 --- a/cros_utils/command_executer.py +++ b/cros_utils/command_executer.py @@ -229,9 +229,11 @@ class CommandExecuter(object): kwargs['return_output'] = True return self.RunCommandGeneric(*args, **kwargs) - def RemoteAccessInitCommand(self, chromeos_root, machine): + def RemoteAccessInitCommand(self, chromeos_root, machine, port=None): command = '' command += '\nset -- --remote=' + machine + if port: + command += ' --ssh_port=' + port command += '\n. ' + chromeos_root + '/src/scripts/common.sh' command += '\n. ' + chromeos_root + '/src/scripts/remote_access.sh' command += '\nTMP=$(mktemp -d)' @@ -285,12 +287,16 @@ class CommandExecuter(object): sys.exit(1) chromeos_root = os.path.expanduser(chromeos_root) + port = None + if ':' in machine: + machine, port = machine.split(':') # Write all commands to a file. command_file = self.WriteToTempShFile(cmd) retval = self.CopyFiles( command_file, command_file, dest_machine=machine, + dest_port=port, command_terminator=command_terminator, chromeos_root=chromeos_root, dest_cros=True, @@ -302,7 +308,7 @@ class CommandExecuter(object): ' Is the machine up?') return (retval, '', '') - command = self.RemoteAccessInitCommand(chromeos_root, machine) + command = self.RemoteAccessInitCommand(chromeos_root, machine, port) command += '\nremote_sh bash %s' % command_file command += '\nl_retval=$?; echo "$REMOTE_OUT"; exit $l_retval' retval = self.RunCommandGeneric( @@ -313,8 +319,8 @@ class CommandExecuter(object): terminated_timeout=terminated_timeout, print_to_console=print_to_console) if return_output: - connect_signature = ( - 'Initiating first contact with remote host\n' + 'Connection OK\n') + connect_signature = ('Initiating first contact with remote host\n' + + 'Connection OK\n') connect_signature_re = re.compile(connect_signature) modded_retval = list(retval) modded_retval[1] = connect_signature_re.sub('', retval[1]) @@ -449,7 +455,9 @@ class CommandExecuter(object): src, dest, src_machine=None, + src_port=None, dest_machine=None, + dest_port=None, src_user=None, dest_user=None, recursive=True, @@ -475,30 +483,34 @@ class CommandExecuter(object): sys.exit(1) if src_cros: cros_machine = src_machine + cros_port = src_port + host_machine = dest_machine + host_user = dest_user else: cros_machine = dest_machine - - command = self.RemoteAccessInitCommand(chromeos_root, cros_machine) - ssh_command = ( - 'ssh -o StrictHostKeyChecking=no' + ' -o UserKnownHostsFile=$(mktemp)' - + ' -i $TMP_PRIVATE_KEY') + cros_port = dest_port + host_machine = src_machine + host_user = src_user + + command = self.RemoteAccessInitCommand(chromeos_root, cros_machine, + cros_port) + ssh_command = ('ssh -o StrictHostKeyChecking=no' + + ' -o UserKnownHostsFile=$(mktemp)' + + ' -i $TMP_PRIVATE_KEY') + if cros_port: + ssh_command += ' -p %s' % cros_port rsync_prefix = '\nrsync -r -e "%s" ' % ssh_command if dest_cros: - command += rsync_prefix + '%s root@%s:%s' % (src, dest_machine, dest) - return self.RunCommand( - command, - machine=src_machine, - username=src_user, - command_terminator=command_terminator, - print_to_console=print_to_console) + command += rsync_prefix + '%s root@%s:%s' % (src, cros_machine, dest) else: - command += rsync_prefix + 'root@%s:%s %s' % (src_machine, src, dest) - return self.RunCommand( - command, - machine=dest_machine, - username=dest_user, - command_terminator=command_terminator, - print_to_console=print_to_console) + command += rsync_prefix + 'root@%s:%s %s' % (cros_machine, src, dest) + + return self.RunCommand( + command, + machine=host_machine, + username=host_user, + command_terminator=command_terminator, + print_to_console=print_to_console) if dest_machine == src_machine: command = 'rsync -a %s %s' % (src, dest) -- cgit v1.2.3 From 18422a411b81cebc930b7227dc49226bbd140e8d Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Wed, 12 Feb 2020 16:06:00 -0800 Subject: bisection: exit after updating kernel Exit after running update_kernel.sh as all the following code is irrelevant to kernels. BUG=chromium:1042452 TEST=verified locally. Change-Id: I9d6fc6f6c319c7a825585868978911806f07a629 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2053243 Reviewed-by: George Burgess Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- binary_search_tool/common/test_setup.sh | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/binary_search_tool/common/test_setup.sh b/binary_search_tool/common/test_setup.sh index 56b8944a..4fa1abe2 100755 --- a/binary_search_tool/common/test_setup.sh +++ b/binary_search_tool/common/test_setup.sh @@ -109,15 +109,17 @@ if [[ "${BISECT_MODE}" == "OBJECT_MODE" ]]; then echo echo "DEPLOYING" - if [[ ${PACKAGE} == sys-kernel/chromeos-kernel-* ]]; then - echo "/mnt/host/source/src/scripts/update_kernel.sh \ - --remote=${BISECT_REMOTE}" - /mnt/host/source/src/scripts/update_kernel.sh --remote=${BISECT_REMOTE} - else - echo "cros deploy ${BISECT_REMOTE} ${BISECT_PACKAGE}" - cros deploy ${BISECT_REMOTE} ${BISECT_PACKAGE} --log-level=info + + if [[ ${BISECT_PACKAGE} == sys-kernel/chromeos-kernel-* ]]; then + echo "/mnt/host/source/src/scripts/update_kernel.sh " \ + "--remote=${BISECT_REMOTE} --board=${BISECT_BOARD}" + # exec the command to make sure it always exit after + exec /mnt/host/source/src/scripts/update_kernel.sh --remote=${BISECT_REMOTE} --board=${BISECT_BOARD} fi + echo "cros deploy ${BISECT_REMOTE} ${BISECT_PACKAGE}" + cros deploy ${BISECT_REMOTE} ${BISECT_PACKAGE} --log-level=info + deploy_status=$? if [[ ${deploy_status} -eq 0 ]] ; then -- cgit v1.2.3 From 7b73dcd8392259b7c67316d09c7bb799429f9a69 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Sat, 12 Sep 2020 17:21:48 -0700 Subject: crosperf: Add verification of per-process profiles Verification is very helpful when we record per-process perf profile and collect top statistics. Using verification we can make sure that perf profiles are collected from the hottest functions in top statistics. BUG=chromium:1098098 TEST=unittests and crosperf with per-process profiling are passing. Change-Id: Ib79b070babcdea38932ba709ac3e14fa3311f842 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2407223 Reviewed-by: Tiancong Wang Reviewed-by: Caroline Tice Commit-Queue: Denis Nikitin Tested-by: Denis Nikitin --- crosperf/results_cache.py | 121 ++++++++++++++++++++++--- crosperf/results_cache_unittest.py | 177 ++++++++++++++++++++++++++++++++----- 2 files changed, 261 insertions(+), 37 deletions(-) diff --git a/crosperf/results_cache.py b/crosperf/results_cache.py index b435eee3..c5c85942 100644 --- a/crosperf/results_cache.py +++ b/crosperf/results_cache.py @@ -35,6 +35,14 @@ PERF_RESULTS_FILE = 'perf-results.txt' CACHE_KEYS_FILE = 'cache_keys.txt' +class PidVerificationError(Exception): + """Error of perf PID verification in per-process mode.""" + + +class PerfDataReadError(Exception): + """Error of reading a perf.data header.""" + + class Result(object): """Class for holding the results of a single test run. @@ -142,12 +150,12 @@ class Result(object): # while tast runs hold output under TEST_NAME/. # Both ensure to be unique. result_dir_name = self.test_name if self.suite == 'tast' else 'results' - results_dir = self.FindFilesInResultsDir( - '-name %s' % result_dir_name).split('\n')[0] + results_dir = self.FindFilesInResultsDir('-name %s' % + result_dir_name).split('\n')[0] if not results_dir: - self._logger.LogOutput( - 'WARNING: No results dir matching %r found' % result_dir_name) + self._logger.LogOutput('WARNING: No results dir matching %r found' % + result_dir_name) return self.CreateTarball(results_dir, tarball) @@ -239,8 +247,8 @@ class Result(object): command = 'cp -r {0}/* {1}'.format(self.results_dir, self.temp_dir) self.ce.RunCommand(command, print_to_console=False) - command = ('./generate_test_report --no-color --csv %s' % (os.path.join( - '/tmp', os.path.basename(self.temp_dir)))) + command = ('./generate_test_report --no-color --csv %s' % + (os.path.join('/tmp', os.path.basename(self.temp_dir)))) _, out, _ = self.ce.ChrootRunCommandWOutput( self.chromeos_root, command, print_to_console=False) keyvals_dict = {} @@ -390,8 +398,8 @@ class Result(object): perf_data_file) perf_report_file = '%s.report' % perf_data_file if os.path.exists(perf_report_file): - raise RuntimeError( - 'Perf report file already exists: %s' % perf_report_file) + raise RuntimeError('Perf report file already exists: %s' % + perf_report_file) chroot_perf_report_file = misc.GetInsideChrootPath( self.chromeos_root, perf_report_file) perf_path = os.path.join(self.chromeos_root, 'chroot', 'usr/bin/perf') @@ -429,8 +437,8 @@ class Result(object): if self.log_level != 'verbose': self._logger.LogOutput('Perf report generated successfully.') else: - raise RuntimeError( - 'Perf report not generated correctly. CMD: %s' % command) + raise RuntimeError('Perf report not generated correctly. CMD: %s' % + command) # Add a keyval to the dictionary for the events captured. perf_report_files.append( @@ -844,6 +852,88 @@ class Result(object): keyvals[key] = [result, unit] return keyvals + def ReadPidFromPerfData(self): + """Read PIDs from perf.data files. + + Extract PID from perf.data if "perf record" was running per process, + i.e. with "-p " and no "-a". + + Returns: + pids: list of PIDs. + + Raises: + PerfDataReadError when perf.data header reading fails. + """ + cmd = ['/usr/bin/perf', 'report', '--header-only', '-i'] + pids = [] + + for perf_data_path in self.perf_data_files: + perf_data_path_in_chroot = misc.GetInsideChrootPath( + self.chromeos_root, perf_data_path) + path_str = ' '.join(cmd + [perf_data_path_in_chroot]) + status, output, _ = self.ce.ChrootRunCommandWOutput( + self.chromeos_root, path_str) + if status: + # Error of reading a perf.data profile is fatal. + raise PerfDataReadError(f'Failed to read perf.data profile: {path_str}') + + # Pattern to search a line with "perf record" command line: + # # cmdline : /usr/bin/perf record -e instructions -p 123" + cmdline_regex = re.compile( + r'^\#\scmdline\s:\s+(?P.*perf\s+record\s+.*)$') + # Pattern to search PID in a command line. + pid_regex = re.compile(r'^.*\s-p\s(?P\d+)\s*.*$') + for line in output.splitlines(): + cmd_match = cmdline_regex.match(line) + if cmd_match: + # Found a perf command line. + cmdline = cmd_match.group('cmd') + # '-a' is a system-wide mode argument. + if '-a' not in cmdline.split(): + # It can be that perf was attached to PID and was still running in + # system-wide mode. + # We filter out this case here since it's not per-process. + pid_match = pid_regex.match(cmdline) + if pid_match: + pids.append(pid_match.group('pid')) + # Stop the search and move to the next perf.data file. + break + else: + # cmdline wasn't found in the header. It's a fatal error. + raise PerfDataReadError(f'Perf command line is not found in {path_str}') + return pids + + def VerifyPerfDataPID(self): + """Verify PIDs in per-process perf.data profiles. + + Check that at list one top process is profiled if perf was running in + per-process mode. + + Raises: + PidVerificationError if PID verification of per-process perf.data profiles + fail. + """ + perf_data_pids = self.ReadPidFromPerfData() + if not perf_data_pids: + # In system-wide mode there are no PIDs. + self._logger.LogOutput('System-wide perf mode. Skip verification.') + return + + # PIDs will be present only in per-process profiles. + # In this case we need to verify that profiles are collected on the + # hottest processes. + top_processes = [top_cmd['cmd'] for top_cmd in self.top_cmds] + # top_process structure: - + top_pids = [top_process.split('-')[-1] for top_process in top_processes] + for top_pid in top_pids: + if top_pid in perf_data_pids: + self._logger.LogOutput('PID verification passed! ' + f'Top process {top_pid} is profiled.') + return + raise PidVerificationError( + f'top processes {top_processes} are missing in perf.data traces with' + f' PID: {perf_data_pids}.') + def ProcessResults(self, use_cache=False): # Note that this function doesn't know anything about whether there is a # cache hit or miss. It should process results agnostic of the cache hit @@ -882,6 +972,9 @@ class Result(object): cpustats = self.ProcessCpustatsResults() if self.top_log_file: self.top_cmds = self.ProcessTopResults() + # Verify that PID in non system-wide perf.data and top_cmds are matching. + if self.perf_data_files and self.top_cmds: + self.VerifyPerfDataPID() if self.wait_time_log_file: with open(self.wait_time_log_file) as f: wait_time = f.readline().strip() @@ -962,8 +1055,8 @@ class Result(object): def CreateTarball(self, results_dir, tarball): if not results_dir.strip(): - raise ValueError( - 'Refusing to `tar` an empty results_dir: %r' % results_dir) + raise ValueError('Refusing to `tar` an empty results_dir: %r' % + results_dir) ret = self.ce.RunCommand('cd %s && ' 'tar ' @@ -1013,8 +1106,8 @@ class Result(object): if ret: command = 'rm -rf {0}'.format(temp_dir) self.ce.RunCommand(command) - raise RuntimeError( - 'Could not move dir %s to dir %s' % (temp_dir, cache_dir)) + raise RuntimeError('Could not move dir %s to dir %s' % + (temp_dir, cache_dir)) @classmethod def CreateFromRun(cls, diff --git a/crosperf/results_cache_unittest.py b/crosperf/results_cache_unittest.py index 812d5ab3..91ceed22 100755 --- a/crosperf/results_cache_unittest.py +++ b/crosperf/results_cache_unittest.py @@ -21,6 +21,8 @@ import test_flag from label import MockLabel from results_cache import CacheConditions +from results_cache import PerfDataReadError +from results_cache import PidVerificationError from results_cache import Result from results_cache import ResultsCache from results_cache import TelemetryResult @@ -158,6 +160,34 @@ keyvals = { 'b_string_strstr___abcdefghijklmnopqrstuvwxyz__': '0.0134553343333' } +PERF_DATA_HEADER = """ +# ======== +# captured on : Thu Jan 01 00:00:00 1980 +# header version : 1 +# data offset : 536 +# data size : 737678672 +# feat offset : 737679208 +# hostname : localhost +# os release : 5.4.61 +# perf version : +# arch : aarch64 +# nrcpus online : 8 +# nrcpus avail : 8 +# total memory : 5911496 kB +# cmdline : /usr/bin/perf record -e instructions -p {pid} +# event : name = instructions, , id = ( 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193 ), type = 8, size = 112 +# event : name = dummy:u, , id = ( 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204 ), type = 1, size = 112, config = 0x9 +# CPU_TOPOLOGY info available, use -I to display +# pmu mappings: software = 1, uprobe = 6, cs_etm = 8, breakpoint = 5, tracepoint = 2, armv8_pmuv3 = 7 +# contains AUX area data (e.g. instruction trace) +# time of first sample : 0.000000 +# time of last sample : 0.000000 +# sample duration : 0.000 ms +# missing features: TRACING_DATA CPUDESC CPUID NUMA_TOPOLOGY BRANCH_STACK GROUP_DESC STAT CACHE MEM_TOPOLOGY CLOCKID DIR_FORMAT +# ======== +# +""" + TURBOSTAT_LOG_OUTPUT = \ """CPU Avg_MHz Busy% Bzy_MHz TSC_MHz IRQ CoreTmp - 329 12.13 2723 2393 10975 77 @@ -470,6 +500,7 @@ class ResultTest(unittest.TestCase): def setUp(self): self.result = Result(self.mock_logger, self.mock_label, 'average', self.mock_cmd_exec) + self.result.chromeos_root = '/tmp/chromeos' @mock.patch.object(os.path, 'isdir') @mock.patch.object(command_executer.CommandExecuter, 'RunCommand') @@ -707,7 +738,8 @@ class ResultTest(unittest.TestCase): self.assertEqual(mock_chrootruncmd.call_count, 1) self.assertEqual( mock_chrootruncmd.call_args_list[0][0], - ('/tmp', ('./generate_test_report --no-color --csv %s') % TMP_DIR1)) + (self.result.chromeos_root, + ('./generate_test_report --no-color --csv %s') % TMP_DIR1)) self.assertEqual(mock_getpath.call_count, 1) self.assertEqual(mock_mkdtemp.call_count, 1) self.assertEqual(res, {'Total': [10, 'score'], 'first_time': [680, 'ms']}) @@ -916,6 +948,101 @@ class ResultTest(unittest.TestCase): found_no_logs = self.result.GetCpustatsFile() self.assertEqual(found_no_logs, '') + def test_verify_perf_data_pid_ok(self): + """Verify perf PID which is present in TOP_DATA.""" + self.result.top_cmds = TOP_DATA + # pid is present in TOP_DATA. + with mock.patch.object( + Result, 'ReadPidFromPerfData', return_value=['5713']): + self.result.VerifyPerfDataPID() + + def test_verify_perf_data_pid_fail(self): + """Test perf PID missing in top raises the error.""" + self.result.top_cmds = TOP_DATA + # pid is not in the list of top processes. + with mock.patch.object( + Result, 'ReadPidFromPerfData', return_value=['9999']): + with self.assertRaises(PidVerificationError): + self.result.VerifyPerfDataPID() + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_ok(self, mock_runcmd): + """Test perf header parser, normal flow.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + exp_pid = '12345' + mock_runcmd.return_value = (0, PERF_DATA_HEADER.format(pid=exp_pid), '') + pids = self.result.ReadPidFromPerfData() + self.assertEqual(pids, [exp_pid]) + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_mult_profiles(self, mock_runcmd): + """Test multiple perf.data files with PID.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + # self.result.chromeos_root = '/tmp/chromeos' + self.result.perf_data_files = [ + '/tmp/chromeos/chroot/tmp/results/perf.data.0', + '/tmp/chromeos/chroot/tmp/results/perf.data.1', + ] + # There is '-p ' in command line but it's still system-wide: '-a'. + cmd_line = '# cmdline : /usr/bin/perf record -e instructions -p {pid}' + exp_perf_pids = ['1111', '2222'] + mock_runcmd.side_effect = [ + (0, cmd_line.format(pid=exp_perf_pids[0]), ''), + (0, cmd_line.format(pid=exp_perf_pids[1]), ''), + ] + pids = self.result.ReadPidFromPerfData() + self.assertEqual(pids, exp_perf_pids) + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_no_pid(self, mock_runcmd): + """Test perf.data without PID.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + cmd_line = '# cmdline : /usr/bin/perf record -e instructions' + mock_runcmd.return_value = (0, cmd_line, '') + pids = self.result.ReadPidFromPerfData() + # pids is empty. + self.assertEqual(pids, []) + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_system_wide(self, mock_runcmd): + """Test reading from system-wide profile with PID.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + # There is '-p ' in command line but it's still system-wide: '-a'. + cmd_line = '# cmdline : /usr/bin/perf record -e instructions -a -p 1234' + mock_runcmd.return_value = (0, cmd_line, '') + pids = self.result.ReadPidFromPerfData() + # pids should be empty since it's not a per-process profiling. + self.assertEqual(pids, []) + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_read_fail(self, mock_runcmd): + """Failure to read perf.data raises the error.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + # Error status of the profile read. + mock_runcmd.return_value = (1, '', '') + with self.assertRaises(PerfDataReadError): + self.result.ReadPidFromPerfData() + + @mock.patch.object(command_executer.CommandExecuter, + 'ChrootRunCommandWOutput') + def test_read_pid_from_perf_data_fail(self, mock_runcmd): + """Failure to find cmdline in perf.data header raises the error.""" + self.result.ce.ChrootRunCommandWOutput = mock_runcmd + self.result.perf_data_files = ['/tmp/chromeos/chroot/tmp/results/perf.data'] + # Empty output. + mock_runcmd.return_value = (0, '', '') + with self.assertRaises(PerfDataReadError): + self.result.ReadPidFromPerfData() + def test_process_turbostat_results_with_valid_data(self): """Normal case when log exists and contains valid data.""" self.result.turbostat_log_file = '/tmp/somelogfile.log' @@ -1112,10 +1239,11 @@ class ResultTest(unittest.TestCase): # Debug path not found self.result.label.debug_path = '' tmp = self.result.GeneratePerfReportFiles() - self.assertEqual(tmp, ['/tmp/chroot%s' % fake_file]) + self.assertEqual(tmp, ['/tmp/chromeos/chroot%s' % fake_file]) self.assertEqual(mock_chrootruncmd.call_args_list[0][0], - ('/tmp', ('/usr/sbin/perf report -n ' - '-i %s --stdio > %s') % (fake_file, fake_file))) + (self.result.chromeos_root, + ('/usr/sbin/perf report -n ' + '-i %s --stdio > %s') % (fake_file, fake_file))) @mock.patch.object(misc, 'GetInsideChrootPath') @mock.patch.object(command_executer.CommandExecuter, 'ChrootRunCommand') @@ -1130,11 +1258,12 @@ class ResultTest(unittest.TestCase): # Debug path found self.result.label.debug_path = '/tmp/debug' tmp = self.result.GeneratePerfReportFiles() - self.assertEqual(tmp, ['/tmp/chroot%s' % fake_file]) + self.assertEqual(tmp, ['/tmp/chromeos/chroot%s' % fake_file]) self.assertEqual(mock_chrootruncmd.call_args_list[0][0], - ('/tmp', ('/usr/sbin/perf report -n --symfs /tmp/debug ' - '--vmlinux /tmp/debug/boot/vmlinux ' - '-i %s --stdio > %s') % (fake_file, fake_file))) + (self.result.chromeos_root, + ('/usr/sbin/perf report -n --symfs /tmp/debug ' + '--vmlinux /tmp/debug/boot/vmlinux ' + '-i %s --stdio > %s') % (fake_file, fake_file))) @mock.patch.object(misc, 'GetOutsideChrootPath') def test_populate_from_run(self, mock_getpath): @@ -1183,7 +1312,6 @@ class ResultTest(unittest.TestCase): if mock_getpath: pass mock.get_path = '/tmp/chromeos/tmp/results_dir' - self.result.chromeos_root = '/tmp/chromeos' self.callGetResultsDir = False self.callGetResultsFile = False @@ -1453,8 +1581,7 @@ class ResultTest(unittest.TestCase): u'crypto-md5__crypto-md5': [10.5, u'ms'], u'string-tagcloud__string-tagcloud': [52.8, u'ms'], u'access-nbody__access-nbody': [8.5, u'ms'], - 'retval': - 0, + 'retval': 0, u'math-spectral-norm__math-spectral-norm': [6.6, u'ms'], u'math-cordic__math-cordic': [8.7, u'ms'], u'access-binary-trees__access-binary-trees': [4.5, u'ms'], @@ -1492,8 +1619,7 @@ class ResultTest(unittest.TestCase): u'crypto-md5__crypto-md5': [10.5, u'ms'], u'string-tagcloud__string-tagcloud': [52.8, u'ms'], u'access-nbody__access-nbody': [8.5, u'ms'], - 'retval': - 0, + 'retval': 0, u'math-spectral-norm__math-spectral-norm': [6.6, u'ms'], u'math-cordic__math-cordic': [8.7, u'ms'], u'access-binary-trees__access-binary-trees': [4.5, u'ms'], @@ -1722,8 +1848,9 @@ class TelemetryResultTest(unittest.TestCase): 'autotest_dir', 'debug_dir', '/tmp', 'lumpy', 'remote', 'image_args', 'cache_dir', 'average', 'gcc', False, None) - self.mock_machine = machine_manager.MockCrosMachine( - 'falco.cros', '/tmp/chromeos', 'average') + self.mock_machine = machine_manager.MockCrosMachine('falco.cros', + '/tmp/chromeos', + 'average') def test_populate_from_run(self): @@ -1803,10 +1930,12 @@ class ResultsCacheTest(unittest.TestCase): def FakeGetMachines(label): if label: pass - m1 = machine_manager.MockCrosMachine( - 'lumpy1.cros', self.results_cache.chromeos_root, 'average') - m2 = machine_manager.MockCrosMachine( - 'lumpy2.cros', self.results_cache.chromeos_root, 'average') + m1 = machine_manager.MockCrosMachine('lumpy1.cros', + self.results_cache.chromeos_root, + 'average') + m2 = machine_manager.MockCrosMachine('lumpy2.cros', + self.results_cache.chromeos_root, + 'average') return [m1, m2] mock_checksum.return_value = 'FakeImageChecksumabc123' @@ -1848,10 +1977,12 @@ class ResultsCacheTest(unittest.TestCase): def FakeGetMachines(label): if label: pass - m1 = machine_manager.MockCrosMachine( - 'lumpy1.cros', self.results_cache.chromeos_root, 'average') - m2 = machine_manager.MockCrosMachine( - 'lumpy2.cros', self.results_cache.chromeos_root, 'average') + m1 = machine_manager.MockCrosMachine('lumpy1.cros', + self.results_cache.chromeos_root, + 'average') + m2 = machine_manager.MockCrosMachine('lumpy2.cros', + self.results_cache.chromeos_root, + 'average') return [m1, m2] mock_checksum.return_value = 'FakeImageChecksumabc123' -- cgit v1.2.3 From 9ba2a4f453e3a5b5d35006e6bf72bc94b02fd5b0 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Fri, 18 Sep 2020 14:20:02 -0700 Subject: compiler_wrapper: search compiler executable in $PATH Search the compiler executable in the directories named by PATH environment variable and add its parent directory as PYTHONPATH to locate bisect_driver.py BUG=chromium:1121018 TEST=verified locally Change-Id: If1c397bedfc03b929d73ae490c1bb8f11b4edea5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2415130 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/bisect_flag.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler_wrapper/bisect_flag.go b/compiler_wrapper/bisect_flag.go index f07d9a63..adfa8b03 100644 --- a/compiler_wrapper/bisect_flag.go +++ b/compiler_wrapper/bisect_flag.go @@ -7,6 +7,7 @@ package main import ( "errors" "os" + "os/exec" "path/filepath" ) @@ -52,7 +53,7 @@ func calcBisectCommand(env env, cfg *config, bisectStage string, compilerCmd *co } } absCompilerPath := getAbsCmdPath(env, compilerCmd) - pythonPath, err := filepath.Abs(os.Args[0]) + pythonPath, err := exec.LookPath(os.Args[0]) if err != nil { return nil, err } -- cgit v1.2.3 From 780b6e4f9246515652336e9dd6b377b48152a463 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 21 Sep 2020 12:56:44 -0700 Subject: llvm_tools: add a script to fetch uploaded versions of LLVM Along with sdk tarballs, the SDK builder publishes manifest files containing the versions of packages contained by a particular tarball. This script is intended to extract these versions, so we can more confidently answer the question "when did this LLVM change _actually_ take effect?" Example usage: ``` [ub] /m/s/g/c/s/t/t/llvm_tools [ 10ms ] ~> ./fetch_cros_sdk_rolls.py cros-sdk-2020.08.28.002952.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.01.145913.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.02.121932.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.03.075651.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.04.035039.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.05.000203.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.05.193017.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.06.145537.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.07.100426.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.08.234732.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.09.204657.tar.xz.Manifest: 11.0_pre394483_p20200618-r11 cros-sdk-2020.09.11.112254.tar.xz.Manifest: 11.0_pre399094_p20200824-r1 cros-sdk-2020.09.14.044644.tar.xz.Manifest: 11.0_pre399094_p20200824-r2 cros-sdk-2020.09.15.034200.tar.xz.Manifest: 11.0_pre399094_p20200824-r2 cros-sdk-2020.09.15.235650.tar.xz.Manifest: 11.0_pre399094_p20200824-r2 cros-sdk-2020.09.16.195018.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 cros-sdk-2020.09.17.182131.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 cros-sdk-2020.09.18.133717.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 cros-sdk-2020.09.19.085133.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 cros-sdk-2020.09.20.033151.tar.xz.Manifest: 11.0_pre399094_p20200824-r3 ``` This is literally a trivial wrapper around 2 gsutil commands and very lite JSON wrangling, so I didn't include a test. Happy to add one if people feel strongly that it's necessary. BUG=None TEST=Ran the script Change-Id: If22a5faf89e601709a3304473bab2dba71ccd64c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2422663 Tested-by: George Burgess Reviewed-by: Tiancong Wang --- llvm_tools/fetch_cros_sdk_rolls.py | 112 +++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100755 llvm_tools/fetch_cros_sdk_rolls.py diff --git a/llvm_tools/fetch_cros_sdk_rolls.py b/llvm_tools/fetch_cros_sdk_rolls.py new file mode 100755 index 00000000..42af678a --- /dev/null +++ b/llvm_tools/fetch_cros_sdk_rolls.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python3 +# Copyright 2020 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. + +"""Gets info about completed chromiumos-sdk runs. + +Moreover, this script exists to get versions of published sdk tarballs in +gs://chromiumos-sdk/. The hope is that it'll help answer the question "when did +the toolchain ebuild ${x} go live?" +""" + +# pylint: disable=cros-logging-import + +import argparse +import json +import logging +import os +import shutil +import subprocess +import sys +import tempfile +from typing import Dict, List +from pathlib import Path + + +def fetch_all_sdk_manifest_paths() -> List[str]: + """Fetches all paths of SDK manifests; newer = later in the return value.""" + results = subprocess.run( + ['gsutil', 'ls', 'gs://chromiumos-sdk/cros-sdk-20??.*.Manifest'], + check=True, + stdout=subprocess.PIPE, + encoding='utf-8', + ).stdout + # These are named so that sorted order == newest last. + return sorted(x.strip() for x in results.splitlines()) + + +def fetch_manifests_into(into_dir: Path, manifests: List[str]): + # Wrap this in a `try` block because gsutil likes to print to stdout *and* + # stderr even on success, so we silence them & only print on failure. + try: + subprocess.run( + [ + 'gsutil', + '-m', + 'cp', + '-I', + str(into_dir), + ], + check=True, + input='\n'.join(manifests), + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + encoding='utf-8', + ) + except subprocess.CalledProcessError as e: + logging.exception('gsutil failed; output:\n%s', e.stdout) + + +def load_manifest_versions(manifest: Path) -> Dict[str, str]: + with manifest.open(encoding='utf-8') as f: + raw_versions = json.load(f) + + # We get a dict of list of lists of versions and some other metadata, e.g. + # {"foo/bar": [["1.2.3", {}]]} + # Trim out the metadata. + return {k: v[0][0] for k, v in raw_versions['packages'].items()} + + +def main(): + parser = argparse.ArgumentParser( + description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument( + '-d', '--debug', action='store_true', help='Emit debugging output') + parser.add_argument( + '-n', + '--number', + type=int, + default=20, + help='Number of recent manifests to fetch info about. 0 means unlimited.') + args = parser.parse_args() + + is_debug = args.debug + logging.basicConfig(level=logging.DEBUG if is_debug else logging.INFO) + + logging.debug('Fetching SDK manifests') + manifest_paths = fetch_all_sdk_manifest_paths() + logging.debug('%d SDK manifests fetched', len(manifest_paths)) + + number = args.number + if number: + manifest_paths = manifest_paths[-number:] + + tempdir = Path(tempfile.mkdtemp(prefix='cros-sdk-rolls')) + try: + logging.debug('Working in tempdir %r', tempdir) + fetch_manifests_into(tempdir, manifest_paths) + + for path in manifest_paths: + basename = os.path.basename(path) + versions = load_manifest_versions(tempdir.joinpath(basename)) + print(f'{basename}: {versions["sys-devel/llvm"]}') + finally: + if is_debug: + logging.debug('Keeping around tempdir %r to aid debugging', tempdir) + else: + shutil.rmtree(tempdir) + + +if __name__ == '__main__': + sys.exit(main()) -- cgit v1.2.3 From e2cbc18b468a984c1818c812574020761da22db0 Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Fri, 18 Sep 2020 21:15:20 +0000 Subject: add unblocked_terms.txt to automatically check language unblocked_terms.txt contains regular expressions to match terms we normally want to avoid using, but which are used for various reasons in this project. As we reword, we can remove such terms from the list, after which repo hooks will prevent us from accidentally adding new uses. BUG=chromium:1099035 TEST=~/trunk/src/platform/dev/contrib/search_blocked_words.sh Change-Id: Idf44431411e2197655eef270e4daf1600b49706c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2419040 Tested-by: Bob Haarman Reviewed-by: Manoj Gupta (OoO) Reviewed-by: George Burgess Commit-Queue: Bob Haarman --- unblocked_terms.txt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 unblocked_terms.txt diff --git a/unblocked_terms.txt b/unblocked_terms.txt new file mode 100644 index 00000000..5c51e40c --- /dev/null +++ b/unblocked_terms.txt @@ -0,0 +1,6 @@ +dummy +insane +master +native +sane +sanity -- cgit v1.2.3 From 8a9125c6e22cd83cbccc41434780e953890adeb1 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Tue, 22 Sep 2020 08:34:51 -0700 Subject: toolchain-utils: Update compiler wrapper to disable warning. This CL updates toolchain-utils to match recent compiler wrapper changes in sys-devel/llvm/files. It's purpose is to disable the new warning -Wcompound-token-split-by-space. Also update golden tests appropriately. BUG=chromium:1130080 TEST=Previous CL already tessted/committed. Change-Id: I261250dc7ed6f1be7c3aa4652d793c924e1dc18d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2423619 Commit-Queue: Caroline Tice Commit-Queue: George Burgess Tested-by: Caroline Tice Auto-Submit: Caroline Tice Reviewed-by: George Burgess --- compiler_wrapper/config.go | 5 +++-- compiler_wrapper/cros_llvm_next_flags.go | 4 +++- .../testdata/cros_hardened_llvmnext_golden/bisect.json | 3 +++ .../testdata/cros_hardened_llvmnext_golden/clang_path.json | 12 ++++++++++++ .../testdata/cros_hardened_llvmnext_golden/clangtidy.json | 8 ++++++++ .../cros_hardened_llvmnext_golden/force_disable_werror.json | 5 +++++ .../cros_hardened_llvmnext_golden/gcc_clang_syntax.json | 4 ++++ 7 files changed, 38 insertions(+), 3 deletions(-) diff --git a/compiler_wrapper/config.go b/compiler_wrapper/config.go index 10a69679..194ab579 100644 --- a/compiler_wrapper/config.go +++ b/compiler_wrapper/config.go @@ -96,6 +96,7 @@ func getConfig(configName string, useCCache bool, useLlvmNext bool, version stri cfg.useLlvmNext = useLlvmNext if useLlvmNext { cfg.clangFlags = append(cfg.clangFlags, llvmNextFlags...) + cfg.clangPostFlags = append(cfg.clangPostFlags, llvmNextPostFlags...) } cfg.version = version return &cfg, nil @@ -142,8 +143,8 @@ var crosHardenedConfig = &config{ clangPostFlags: []string{ "-Wno-implicit-int-float-conversion", }, - newWarningsDir: "/tmp/fatal_clang_warnings", - triciumNitsDir: "/tmp/linting_output/clang-tidy", + newWarningsDir: "/tmp/fatal_clang_warnings", + triciumNitsDir: "/tmp/linting_output/clang-tidy", crashArtifactsDir: "/tmp/clang_crash_diagnostics", } diff --git a/compiler_wrapper/cros_llvm_next_flags.go b/compiler_wrapper/cros_llvm_next_flags.go index 6cd7cd2a..ef4b828d 100644 --- a/compiler_wrapper/cros_llvm_next_flags.go +++ b/compiler_wrapper/cros_llvm_next_flags.go @@ -15,4 +15,6 @@ package main // TODO: Enable test in config_test.go, once we have new llvm-next flags. var llvmNextFlags = []string{} -var llvmNextPostFlags = []string{} +var llvmNextPostFlags = []string{ + "-Wno-compound-token-split-by-space", +} diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 97dec849..2648ce08 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -46,6 +46,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -109,6 +110,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -175,6 +177,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index 6940fcaf..d7d500c1 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -90,6 +91,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -144,6 +146,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -198,6 +201,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -261,6 +265,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -327,6 +332,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -388,6 +394,7 @@ "--gcc-toolchain=/usr", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -442,6 +449,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -493,6 +501,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-Ba/b/bin", "-target", @@ -544,6 +553,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-Ba/b/bin", "-target", @@ -595,6 +605,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -649,6 +660,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index 219a8b2f..b0526836 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -51,6 +51,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -83,6 +84,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -145,6 +147,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -178,6 +181,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -242,6 +246,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -278,6 +283,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -343,6 +349,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -376,6 +383,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 10e485da..670a361a 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -39,6 +39,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -93,6 +94,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -133,6 +135,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -191,6 +194,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -231,6 +235,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index ea804d97..20e9746f 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -36,6 +36,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -111,6 +112,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -181,6 +183,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", @@ -235,6 +238,7 @@ "-fno-omit-frame-pointer", "main.cc", "-Wno-implicit-int-float-conversion", + "-Wno-compound-token-split-by-space", "-mno-movbe", "-B../../bin", "-target", -- cgit v1.2.3 From 4f7eb71f9fa78f8710e1deb57d441f51fa74af3b Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Fri, 18 Sep 2020 22:10:25 +0000 Subject: rephrase some language in code and comments This rephrases some code and comments to avoid unclear and non-inclusive wording. For the remaining terms in unblocked_terms.txt, comments are added to explain why these terms are present in the code. BUG=chromium:1099035 TEST=repo hooks Change-Id: I985613d811836b6fb6351eadcf3e08a3290db97f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2419656 Tested-by: Bob Haarman Reviewed-by: Manoj Gupta (OoO) Reviewed-by: George Burgess --- android_bench_suite/fix_skia_results.py | 3 ++- auto_delete_nightly_test_data.py | 4 ++-- cros_utils/command_executer.py | 2 +- crosperf/experiment_runner.py | 2 +- crosperf/generate_report_unittest.py | 6 +++--- crosperf/results_report.py | 2 +- crosperf/results_report_unittest.py | 3 ++- unblocked_terms.txt | 7 +++---- 8 files changed, 15 insertions(+), 14 deletions(-) diff --git a/android_bench_suite/fix_skia_results.py b/android_bench_suite/fix_skia_results.py index 8c919d35..bdab80a9 100755 --- a/android_bench_suite/fix_skia_results.py +++ b/android_bench_suite/fix_skia_results.py @@ -57,7 +57,8 @@ def _GetTimeMultiplier(label_name): def _GetTimeDenom(ms): - """Given a list of times (in milliseconds), find a sane time unit for them. + """Given a list of times (in milliseconds), find a time unit in which + they can all be expressed. Returns the unit name, and `ms` normalized to that time unit. diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 03d59b28..884afce2 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -50,8 +50,8 @@ def CleanNumberedDir(s, dry_run=False): return False ## Now delete the numbered dir Before forcibly removing the directory, just - ## check 's' to make sure it is sane. A valid dir to be removed must be - ## '/usr/local/google/crostc/(SUN|MON|TUE...|SAT)'. + ## check 's' to make sure it matches the expected pattern. A valid dir to be + ## removed must be '/usr/local/google/crostc/(SUN|MON|TUE...|SAT)'. valid_dir_pattern = ( '^' + NIGHTLY_TESTS_WORKSPACE + '/(' + '|'.join(DIR_BY_WEEKDAY) + ')') if not re.search(valid_dir_pattern, s): diff --git a/cros_utils/command_executer.py b/cros_utils/command_executer.py index ee1df95c..aeedf3ea 100755 --- a/cros_utils/command_executer.py +++ b/cros_utils/command_executer.py @@ -387,7 +387,7 @@ class CommandExecuter(object): command_file = f.name os.chmod(command_file, 0o777) - # if return_output is set, run a dummy command first to make sure that + # if return_output is set, run a test command first to make sure that # the chroot already exists. We want the final returned output to skip # the output from chroot creation steps. if return_output: diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index 21fa3ea0..6a46adfc 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -173,7 +173,7 @@ class ExperimentRunner(object): try: # We should not lease machines if tests are launched via `skylab # create-test`. This is because leasing DUT in skylab will create a - # dummy task on the DUT and new test created will be hanging there. + # no-op task on the DUT and new test created will be hanging there. # TODO(zhizhouy): Need to check whether machine is ready or not before # assigning a test to it. if not experiment.skylab: diff --git a/crosperf/generate_report_unittest.py b/crosperf/generate_report_unittest.py index e19d4695..8c3510a9 100755 --- a/crosperf/generate_report_unittest.py +++ b/crosperf/generate_report_unittest.py @@ -109,9 +109,9 @@ class GenerateReportTests(unittest.TestCase): } results = generate_report.CutResultsInPlace( bench_data, max_keys=0, complain_on_update=False) - # Just reach into results assuming we know it otherwise outputs things - # sanely. If it doesn't, testCutResultsInPlace should give an indication as - # to what, exactly, is broken. + # Just reach into results assuming we know it otherwise outputs things in + # the expected way. If it doesn't, testCutResultsInPlace should give an + # indication as to what, exactly, is broken. self.assertEqual(list(results['foo'][0][0].items()), [('retval', 0)]) self.assertEqual(list(results['bar'][0][0].items()), [('retval', 1)]) self.assertEqual(list(results['baz'][0][0].items()), []) diff --git a/crosperf/results_report.py b/crosperf/results_report.py index ff6c4f96..ff8c119d 100644 --- a/crosperf/results_report.py +++ b/crosperf/results_report.py @@ -505,7 +505,7 @@ class HTMLResultsReport(ResultsReport): experiment_file = '' if self.experiment is not None: experiment_file = self.experiment.experiment_file - # Use kwargs for sanity, and so that testing is a bit easier. + # Use kwargs for code readability, and so that testing is a bit easier. return templates.GenerateHTMLPage( perf_table=perf_table, chart_js=chart_javascript, diff --git a/crosperf/results_report_unittest.py b/crosperf/results_report_unittest.py index e03ea431..1e96ef97 100755 --- a/crosperf/results_report_unittest.py +++ b/crosperf/results_report_unittest.py @@ -57,7 +57,8 @@ class FreeFunctionsTest(unittest.TestCase): ParseChromeosImage(os.path.dirname(buildbot_case)), ('', os.path.dirname(buildbot_img))) - # Ensure we don't act completely insanely given a few mildly insane paths. + # Ensure we do something reasonable when giving paths that don't quite + # match the expected pattern. fun_case = '/chromiumos_test_image.bin' self.assertEqual(ParseChromeosImage(fun_case), ('', fun_case)) diff --git a/unblocked_terms.txt b/unblocked_terms.txt index 5c51e40c..c961e667 100644 --- a/unblocked_terms.txt +++ b/unblocked_terms.txt @@ -1,6 +1,5 @@ -dummy -insane +# Code uses this in many cases to refer to git branches. master + +# A few paths in AOSP contain this term. native -sane -sanity -- cgit v1.2.3 From 8223d16e040748ad6a91a87f3ce1cfc13db37f4b Mon Sep 17 00:00:00 2001 From: Bob Haarman Date: Sat, 19 Sep 2020 00:00:06 +0000 Subject: fix formatting/lint issues pointed out by repohooks Previous changes resulted in some complaints about formatting and Python 3 compatibility from the repo hooks. This change fixes those. BUG=None TEST=repo upload --cbr . # check that it no longer complains Change-Id: I99cc51dcb8d499d59b7b47817f4cef8fa6ba5059 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2419831 Tested-by: Bob Haarman Reviewed-by: Manoj Gupta (OoO) --- android_bench_suite/fix_skia_results.py | 20 ++++++++++--------- auto_delete_nightly_test_data.py | 14 +++++++------- crosperf/experiment_runner.py | 34 ++++++++++++++++----------------- crosperf/results_report.py | 9 +++++---- 4 files changed, 40 insertions(+), 37 deletions(-) diff --git a/android_bench_suite/fix_skia_results.py b/android_bench_suite/fix_skia_results.py index bdab80a9..84dee5a5 100755 --- a/android_bench_suite/fix_skia_results.py +++ b/android_bench_suite/fix_skia_results.py @@ -5,6 +5,7 @@ # found in the LICENSE file. # # pylint: disable=cros-logging-import + """Transforms skia benchmark results to ones that crosperf can understand.""" from __future__ import print_function @@ -57,7 +58,9 @@ def _GetTimeMultiplier(label_name): def _GetTimeDenom(ms): - """Given a list of times (in milliseconds), find a time unit in which + """Express times in a common time unit. + + Given a list of times (in milliseconds), find a time unit in which they can all be expressed. Returns the unit name, and `ms` normalized to that time unit. @@ -95,9 +98,9 @@ def _TransformBenchmarks(raw_benchmarks): # statistic... benchmarks = raw_benchmarks['results'] results = [] - for bench_name, bench_result in benchmarks.iteritems(): + for bench_name, bench_result in benchmarks.items(): try: - for cfg_name, keyvals in bench_result.iteritems(): + for cfg_name, keyvals in bench_result.items(): # Some benchmarks won't have timing data (either it won't exist at all, # or it'll be empty); skip them. samples = keyvals.get('samples') @@ -110,17 +113,16 @@ def _TransformBenchmarks(raw_benchmarks): friendly_name = _GetFamiliarName(bench_name) if len(results) < len(samples): - results.extend({ - 'retval': 0 - } for _ in range(len(samples) - len(results))) + results.extend( + {'retval': 0} for _ in range(len(samples) - len(results))) time_mul = _GetTimeMultiplier(friendly_name) - for sample, app in itertools.izip(samples, results): + for sample, app in itertools.zip(samples, results): assert friendly_name not in app app[friendly_name] = sample * time_mul except (KeyError, ValueError) as e: - logging.error('While converting "%s" (key: %s): %s', - bench_result, bench_name, e.message) + logging.error('While converting "%s" (key: %s): %s', bench_result, + bench_name, e) raise # Realistically, [results] should be multiple results, where each entry in the diff --git a/auto_delete_nightly_test_data.py b/auto_delete_nightly_test_data.py index 884afce2..c3c2e24c 100755 --- a/auto_delete_nightly_test_data.py +++ b/auto_delete_nightly_test_data.py @@ -52,8 +52,8 @@ def CleanNumberedDir(s, dry_run=False): ## Now delete the numbered dir Before forcibly removing the directory, just ## check 's' to make sure it matches the expected pattern. A valid dir to be ## removed must be '/usr/local/google/crostc/(SUN|MON|TUE...|SAT)'. - valid_dir_pattern = ( - '^' + NIGHTLY_TESTS_WORKSPACE + '/(' + '|'.join(DIR_BY_WEEKDAY) + ')') + valid_dir_pattern = ('^' + NIGHTLY_TESTS_WORKSPACE + '/(' + + '|'.join(DIR_BY_WEEKDAY) + ')') if not re.search(valid_dir_pattern, s): print('Trying to delete an invalid dir "{0}" (must match "{1}"), ' 'please check.'.format(s, valid_dir_pattern)) @@ -193,8 +193,8 @@ def CleanOldCLs(days_to_preserve='1', dry_run=False): ce = command_executer.GetCommandExecuter() chromeos_root = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos') # Find Old CLs. - old_cls_cmd = ( - 'gerrit --raw search "owner:me status:open age:%sd"' % days_to_preserve) + old_cls_cmd = ('gerrit --raw search "owner:me status:open age:%sd"' % + days_to_preserve) _, cls, _ = ce.ChrootRunCommandWOutput( chromeos_root, old_cls_cmd, print_to_console=False) # Convert any whitespaces to spaces. @@ -210,20 +210,20 @@ def CleanOldCLs(days_to_preserve='1', dry_run=False): return ce.ChrootRunCommand( chromeos_root, abandon_cls_cmd, print_to_console=False) + def CleanChromeTelemetryTmpFiles(dry_run): rv = 0 ce = command_executer.GetCommandExecuter() tmp_dir = os.path.join(constants.CROSTC_WORKSPACE, 'chromeos', '.cache', 'distfiles', 'target', 'chrome-src-internal', 'src', - 'tmp'); + 'tmp') cmd = f'rm -fr {shlex.quote(tmp_dir)}/tmp*telemetry_Crosperf' if dry_run: print(f'Going to execute:\n{cmd}') else: rv = ce.RunCommand(cmd, print_to_console=False) if rv == 0: - print(f'Successfully cleaned chrome tree tmp directory ' - f'{tmp_dir!r} .') + print(f'Successfully cleaned chrome tree tmp directory ' f'{tmp_dir!r} .') else: print(f'Some directories were not removed under chrome tree ' f'tmp directory {tmp_dir!r}.') diff --git a/crosperf/experiment_runner.py b/crosperf/experiment_runner.py index 6a46adfc..8ba85a4c 100644 --- a/crosperf/experiment_runner.py +++ b/crosperf/experiment_runner.py @@ -35,8 +35,8 @@ def _WriteJSONReportToFile(experiment, results_dir, json_report): compiler_string = 'llvm' if has_llvm else 'gcc' board = experiment.labels[0].board filename = 'report_%s_%s_%s.%s.json' % (board, json_report.date, - json_report.time.replace(':', '.'), - compiler_string) + json_report.time.replace( + ':', '.'), compiler_string) fullname = os.path.join(results_dir, filename) report_text = json_report.GetReport() with open(fullname, 'w') as out_file: @@ -157,13 +157,13 @@ class ExperimentRunner(object): def _ClearCacheEntries(self, experiment): for br in experiment.benchmark_runs: cache = ResultsCache() - cache.Init( - br.label.chromeos_image, br.label.chromeos_root, - br.benchmark.test_name, br.iteration, br.test_args, br.profiler_args, - br.machine_manager, br.machine, br.label.board, br.cache_conditions, - br.logger(), br.log_level, br.label, br.share_cache, - br.benchmark.suite, br.benchmark.show_all_results, - br.benchmark.run_local, br.benchmark.cwp_dso) + cache.Init(br.label.chromeos_image, br.label.chromeos_root, + br.benchmark.test_name, br.iteration, br.test_args, + br.profiler_args, br.machine_manager, br.machine, + br.label.board, br.cache_conditions, br.logger(), br.log_level, + br.label, br.share_cache, br.benchmark.suite, + br.benchmark.show_all_results, br.benchmark.run_local, + br.benchmark.cwp_dso) cache_dir = cache.GetCacheDirForWrite() if os.path.exists(cache_dir): self.l.LogOutput('Removing cache dir: %s' % cache_dir) @@ -246,8 +246,8 @@ class ExperimentRunner(object): subject = '%s: %s' % (experiment.name, ' vs. '.join(label_names)) text_report = TextResultsReport.FromExperiment(experiment, True).GetReport() - text_report += ( - '\nResults are stored in %s.\n' % experiment.results_directory) + text_report += ('\nResults are stored in %s.\n' % + experiment.results_directory) text_report = "
%s
" % text_report html_report = HTMLResultsReport.FromExperiment(experiment).GetReport() attachment = EmailSender.Attachment('report.html', html_report) @@ -275,8 +275,8 @@ class ExperimentRunner(object): all_failed = True topstats_file = os.path.join(results_directory, 'topstats.log') - self.l.LogOutput( - 'Storing top statistics of each benchmark run into %s.' % topstats_file) + self.l.LogOutput('Storing top statistics of each benchmark run into %s.' % + topstats_file) with open(topstats_file, 'w') as top_fd: for benchmark_run in experiment.benchmark_runs: if benchmark_run.result: @@ -322,8 +322,8 @@ class ExperimentRunner(object): self.l.LogOutput('Storing email message body in %s.' % results_directory) msg_file_path = os.path.join(results_directory, 'msg_body.html') text_report = TextResultsReport.FromExperiment(experiment, True).GetReport() - text_report += ( - '\nResults are stored in %s.\n' % experiment.results_directory) + text_report += ('\nResults are stored in %s.\n' % + experiment.results_directory) msg_body = "
%s
" % text_report FileUtils().WriteFile(msg_file_path, msg_body) @@ -348,8 +348,8 @@ class MockExperimentRunner(ExperimentRunner): super(MockExperimentRunner, self).__init__(experiment, json_report) def _Run(self, experiment): - self.l.LogOutput( - "Would run the following experiment: '%s'." % experiment.name) + self.l.LogOutput("Would run the following experiment: '%s'." % + experiment.name) def _PrintTable(self, experiment): self.l.LogOutput('Would print the experiment table.') diff --git a/crosperf/results_report.py b/crosperf/results_report.py index ff8c119d..dc80b53b 100644 --- a/crosperf/results_report.py +++ b/crosperf/results_report.py @@ -418,8 +418,8 @@ class TextResultsReport(ResultsReport): cpu_info = experiment.machine_manager.GetAllCPUInfo(experiment.labels) sections.append(self._MakeSection('CPUInfo', cpu_info)) - totaltime = ( - time.time() - experiment.start_time) if experiment.start_time else 0 + totaltime = (time.time() - + experiment.start_time) if experiment.start_time else 0 totaltime_str = 'Total experiment time:\n%d min' % (totaltime // 60) cooldown_waittime_list = ['Cooldown wait time:'] # When running experiment on multiple DUTs cooldown wait time may vary @@ -430,8 +430,9 @@ class TextResultsReport(ResultsReport): cooldown_waittime_list.append('DUT %s: %d min' % (dut, waittime // 60)) cooldown_waittime_str = '\n'.join(cooldown_waittime_list) sections.append( - self._MakeSection('Duration', '\n\n'.join( - [totaltime_str, cooldown_waittime_str]))) + self._MakeSection('Duration', + '\n\n'.join([totaltime_str, + cooldown_waittime_str]))) return '\n'.join(sections) -- cgit v1.2.3 From ab646e13303ebe9518e816f85c1e4a56db88ae13 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Mon, 28 Sep 2020 11:00:44 -0700 Subject: afdo_metadata: Update kernel AFDO profiles Update chromeos-kernel-3_18 to R87-13482.0-1601286522 Update chromeos-kernel-4_4 to R87-13482.0-1601285703 Update chromeos-kernel-4_14 to R87-13482.0-1601285982 Update chromeos-kernel-4_19 to R87-13482.0-1601286143 Also fixed the script a little bit to supress a warning. BUG=None TEST=None Change-Id: I50be925fd9f598fb834a5b3153f86f29679844c7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2436058 Reviewed-by: Manoj Gupta Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- afdo_tools/update_kernel_afdo | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index 58779409..ea0237d4 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R87-13421.11-1599471395" + "name": "R87-13482.0-1601286522" }, "chromeos-kernel-4_4": { - "name": "R87-13421.11-1599472924" + "name": "R87-13482.0-1601285703" }, "chromeos-kernel-4_14": { - "name": "R87-13421.11-1599471640" + "name": "R87-13482.0-1601285982" }, "chromeos-kernel-4_19": { - "name": "R87-13421.11-1599472679" + "name": "R87-13482.0-1601286143" } } diff --git a/afdo_tools/update_kernel_afdo b/afdo_tools/update_kernel_afdo index 8f100a12..8eb1306c 100755 --- a/afdo_tools/update_kernel_afdo +++ b/afdo_tools/update_kernel_afdo @@ -62,7 +62,7 @@ do # R86-13310.3-1594633089.gcov.xz goes after R86-13310.18-1595237847.gcov.xz) latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ grep "R${canary}" | tail -1 || true) - if [ -z $latest ] + if [ -z "$latest" ] then # if no profiles exist for R${canary}, try the previous branch latest=$(gsutil ls -l "$GS_BASE/$kver/" | sort -k2 | \ -- cgit v1.2.3 From 089db6731d948eeff42acf2cd1037ae0253dc65c Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Sun, 23 Aug 2020 20:09:02 -0700 Subject: llvm_tools: refactor LLVM bisection tool BUG=chromium:1081457 TEST=Verified locally. Change-Id: Ic662a7bb697efb920a83255d3da87a0031e694ed Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2371502 Tested-by: Jian Cai Reviewed-by: George Burgess --- llvm_tools/llvm_bisection.py | 257 +++++----------- llvm_tools/llvm_bisection_unittest.py | 552 ++++++++++++---------------------- 2 files changed, 274 insertions(+), 535 deletions(-) diff --git a/llvm_tools/llvm_bisection.py b/llvm_tools/llvm_bisection.py index 2772ca48..37320baf 100755 --- a/llvm_tools/llvm_bisection.py +++ b/llvm_tools/llvm_bisection.py @@ -17,6 +17,7 @@ import sys import chroot import get_llvm_hash +import git_llvm_rev import modify_a_tryjob import update_tryjob_status @@ -28,11 +29,6 @@ class BisectionExitStatus(enum.Enum): BISECTION_COMPLETE = 126 -def is_file_and_json(json_file): - """Validates that the file exists and is a JSON file.""" - return os.path.isfile(json_file) and json_file.endswith('.json') - - def GetCommandLineArgs(): """Parses the command line for the command line arguments.""" @@ -124,27 +120,17 @@ def GetCommandLineArgs(): args_output = parser.parse_args() assert args_output.start_rev < args_output.end_rev, ( - 'Start revision %d is >= end revision %d' % (args_output.start_rev, - args_output.end_rev)) + 'Start revision %d is >= end revision %d' % + (args_output.start_rev, args_output.end_rev)) if args_output.last_tested and not args_output.last_tested.endswith('.json'): - raise ValueError( - 'Filed provided %s does not end in ".json"' % args_output.last_tested) + raise ValueError('Filed provided %s does not end in ".json"' % + args_output.last_tested) return args_output -def _ValidateStartAndEndAgainstJSONStartAndEnd(start, end, json_start, - json_end): - """Valides that the command line arguments are the same as the JSON.""" - - if start != json_start or end != json_end: - raise ValueError('The start %d or the end %d version provided is ' - 'different than "start" %d or "end" %d in the .JSON ' - 'file' % (start, end, json_start, json_end)) - - -def GetStartAndEndRevision(start, end, tryjobs): +def GetRemainingRange(start, end, tryjobs): """Gets the start and end intervals in 'json_file'. Args: @@ -230,145 +216,56 @@ def GetStartAndEndRevision(start, end, tryjobs): return good_rev, bad_rev, pending_revisions, skip_revisions -def GetRevisionsBetweenBisection(start, end, parallel, src_path, - pending_revisions, skip_revisions): - """Gets the revisions between 'start' and 'end'. - - Sometimes, the LLVM source tree's revisions do not increment by 1 (there is - a jump), so need to construct a list of all revisions that are NOT missing - between 'start' and 'end'. Then, the step amount (i.e. length of the list - divided by ('parallel' + 1)) will be used for indexing into the list. - - Args: - start: The start revision. - end: The end revision. - parallel: The number of tryjobs to create between 'start' and 'end'. - src_path: The absolute path to the LLVM source tree to use. - pending_revisions: A set containing 'pending' revisions that are between - 'start' and 'end'. - skip_revisions: A set containing revisions between 'start' and 'end' that - are to be skipped. - - Returns: - A list of revisions between 'start' and 'end'. - """ - - valid_revisions = [] - - # Start at ('start' + 1) because 'start' is the good revision. - # - # FIXME: Searching for each revision from ('start' + 1) up to 'end' in the - # LLVM source tree is a quadratic algorithm. It's a good idea to optimize - # this. - for cur_revision in range(start + 1, end): - try: - if cur_revision not in pending_revisions and \ - cur_revision not in skip_revisions: - # Verify that the current revision exists by finding its corresponding - # git hash in the LLVM source tree. - get_llvm_hash.GetGitHashFrom(src_path, cur_revision) - valid_revisions.append(cur_revision) - except ValueError: - # Could not find the git hash for the current revision. - continue - - # ('parallel' + 1) so that the last revision in the list is not close to - # 'end' (have a bit more coverage). - index_step = len(valid_revisions) // (parallel + 1) - - if not index_step: - index_step = 1 - - result = [valid_revisions[index] \ - for index in range(0, len(valid_revisions), index_step)] - - return result - - -def GetRevisionsListAndHashList(start, end, parallel, src_path, - pending_revisions, skip_revisions): +def GetCommitsBetween(start, end, parallel, src_path, pending_revisions, + skip_revisions): """Determines the revisions between start and end.""" - new_llvm = get_llvm_hash.LLVMHash() + with get_llvm_hash.LLVMHash().CreateTempDirectory() as temp_dir: + # We have guaranteed contiguous revision numbers after this, + # and that guarnatee simplifies things considerably, so we don't + # support anything before it. + assert start >= git_llvm_rev.base_llvm_revision, f'{start} was too long ago' - with new_llvm.CreateTempDirectory() as temp_dir: with get_llvm_hash.CreateTempLLVMRepo(temp_dir) as new_repo: if not src_path: src_path = new_repo - - # Get a list of revisions between start and end. - revisions = GetRevisionsBetweenBisection( - start, end, parallel, src_path, pending_revisions, skip_revisions) - + index_step = (end - (start + 1)) // (parallel + 1) + if not index_step: + index_step = 1 + revisions = [ + rev for rev in range(start + 1, end, index_step) + if rev not in pending_revisions and rev not in skip_revisions + ] git_hashes = [ get_llvm_hash.GetGitHashFrom(src_path, rev) for rev in revisions ] + return revisions, git_hashes - return revisions, git_hashes - - -def DieWithNoRevisionsError(start, end, skip_revisions, pending_revisions): - """Raises a ValueError exception with useful information.""" - - no_revisions_message = ('No revisions between start %d and end ' - '%d to create tryjobs' % (start, end)) - - if pending_revisions: - no_revisions_message += '\nThe following tryjobs are pending:\n' \ - + '\n'.join(str(rev) for rev in pending_revisions) - - if skip_revisions: - no_revisions_message += '\nThe following tryjobs were skipped:\n' \ - + '\n'.join(str(rev) for rev in skip_revisions) - raise ValueError(no_revisions_message) - - -def CheckForExistingTryjobsInRevisionsToLaunch(revisions, jobs): - """Checks if a revision in 'revisions' exists in 'jobs' list.""" - - for rev in revisions: - if update_tryjob_status.FindTryjobIndex(rev, jobs) is not None: - raise ValueError('Revision %d exists already in "jobs"' % rev) - - -def UpdateBisection(revisions, git_hashes, bisect_contents, last_tested, - update_packages, chroot_path, patch_metadata_file, - extra_change_lists, options, builder, verbose): +def Bisect(revisions, git_hashes, bisect_state, last_tested, update_packages, + chroot_path, patch_metadata_file, extra_change_lists, options, + builder, verbose): """Adds tryjobs and updates the status file with the new tryjobs.""" try: for svn_revision, git_hash in zip(revisions, git_hashes): - tryjob_dict = modify_a_tryjob.AddTryjob( - update_packages, git_hash, svn_revision, chroot_path, - patch_metadata_file, extra_change_lists, options, builder, verbose, - svn_revision) + tryjob_dict = modify_a_tryjob.AddTryjob(update_packages, git_hash, + svn_revision, chroot_path, + patch_metadata_file, + extra_change_lists, options, + builder, verbose, svn_revision) - bisect_contents['jobs'].append(tryjob_dict) + bisect_state['jobs'].append(tryjob_dict) finally: # Do not want to lose progress if there is an exception. if last_tested: new_file = '%s.new' % last_tested with open(new_file, 'w') as json_file: - json.dump(bisect_contents, json_file, indent=4, separators=(',', ': ')) + json.dump(bisect_state, json_file, indent=4, separators=(',', ': ')) os.rename(new_file, last_tested) -def _NoteCompletedBisection(last_tested, src_path, end): - """Prints that bisection is complete.""" - - print('Finished bisecting for %s' % last_tested) - - if src_path: - bad_llvm_hash = get_llvm_hash.GetGitHashFrom(src_path, end) - else: - bad_llvm_hash = get_llvm_hash.LLVMHash().GetLLVMHash(end) - - print( - 'The bad revision is %d and its commit hash is %s' % (end, bad_llvm_hash)) - - def LoadStatusFile(last_tested, start, end): """Loads the status file for bisection.""" @@ -383,37 +280,36 @@ def LoadStatusFile(last_tested, start, end): def main(args_output): - """Bisects LLVM based off of a .JSON file. + """Bisects LLVM commits. Raises: AssertionError: The script was run inside the chroot. """ chroot.VerifyOutsideChroot() - update_packages = [ 'sys-devel/llvm', 'sys-libs/compiler-rt', 'sys-libs/libcxx', 'sys-libs/libcxxabi', 'sys-libs/llvm-libunwind' ] - patch_metadata_file = 'PATCHES.json' - start = args_output.start_rev end = args_output.end_rev - bisect_contents = LoadStatusFile(args_output.last_tested, start, end) - - _ValidateStartAndEndAgainstJSONStartAndEnd( - start, end, bisect_contents['start'], bisect_contents['end']) + bisect_state = LoadStatusFile(args_output.last_tested, start, end) + if start != bisect_state['start'] or end != bisect_state['end']: + raise ValueError(f'The start {start} or the end {end} version provided is ' + f'different than "start" {bisect_state["start"]} or "end" ' + f'{bisect_state["end"]} in the .JSON file') # Pending and skipped revisions are between 'start_revision' and # 'end_revision'. start_revision, end_revision, pending_revisions, skip_revisions = \ - GetStartAndEndRevision(start, end, bisect_contents['jobs']) + GetRemainingRange(start, end, bisect_state['jobs']) - revisions, git_hashes = GetRevisionsListAndHashList( - start_revision, end_revision, args_output.parallel, args_output.src_path, - pending_revisions, skip_revisions) + revisions, git_hashes = GetCommitsBetween(start_revision, end_revision, + args_output.parallel, + args_output.src_path, + pending_revisions, skip_revisions) # No more revisions between 'start_revision' and 'end_revision', so # bisection is complete. @@ -421,39 +317,48 @@ def main(args_output): # This is determined by finding all valid revisions between 'start_revision' # and 'end_revision' and that are NOT in the 'pending' and 'skipped' set. if not revisions: - # Successfully completed bisection where there are 2 cases: - # 1) 'start_revision' and 'end_revision' are back-to-back (example: - # 'start_revision' is 369410 and 'end_revision' is 369411). - # - # 2) 'start_revision' and 'end_revision' are NOT back-to-back, so there must - # be tryjobs in between which are labeled as 'skip' for their 'status' - # value. - # - # In either case, there are no 'pending' jobs. - if not pending_revisions: - _NoteCompletedBisection(args_output.last_tested, args_output.src_path, - end_revision) - - if skip_revisions: - skip_revisions_message = ('\nThe following revisions were skipped:\n' + - '\n'.join(str(rev) for rev in skip_revisions)) - - print(skip_revisions_message) - - return BisectionExitStatus.BISECTION_COMPLETE.value + if pending_revisions: + # Some tryjobs are not finished which may change the actual bad + # commit/revision when those tryjobs are finished. + no_revisions_message = (f'No revisions between start {start_revision} ' + f'and end {end_revision} to create tryjobs\n') - # Some tryjobs are not finished which may change the actual bad - # commit/revision when those tryjobs are finished. - DieWithNoRevisionsError(start_revision, end_revision, skip_revisions, - pending_revisions) + if pending_revisions: + no_revisions_message += ( + 'The following tryjobs are pending:\n' + + '\n'.join(str(rev) for rev in pending_revisions) + '\n') - CheckForExistingTryjobsInRevisionsToLaunch(revisions, bisect_contents['jobs']) + if skip_revisions: + no_revisions_message += ('The following tryjobs were skipped:\n' + + '\n'.join(str(rev) for rev in skip_revisions) + + '\n') + + raise ValueError(no_revisions_message) + + print(f'Finished bisecting for {args_output.last_tested}') + if args_output.src_path: + bad_llvm_hash = get_llvm_hash.GetGitHashFrom(args_output.src_path, + end_revision) + else: + bad_llvm_hash = get_llvm_hash.LLVMHash().GetLLVMHash(end_revision) + print(f'The bad revision is {end_revision} and its commit hash is ' + f'{bad_llvm_hash}') + if skip_revisions: + skip_revisions_message = ('\nThe following revisions were skipped:\n' + + '\n'.join(str(rev) for rev in skip_revisions)) + print(skip_revisions_message) + + return BisectionExitStatus.BISECTION_COMPLETE.value - UpdateBisection(revisions, git_hashes, bisect_contents, - args_output.last_tested, update_packages, - args_output.chroot_path, patch_metadata_file, - args_output.extra_change_lists, args_output.options, - args_output.builder, args_output.verbose) + for rev in revisions: + if update_tryjob_status.FindTryjobIndex(rev, + bisect_state['jobs']) is not None: + raise ValueError(f'Revision {rev} exists already in "jobs"') + + Bisect(revisions, git_hashes, bisect_state, args_output.last_tested, + update_packages, args_output.chroot_path, patch_metadata_file, + args_output.extra_change_lists, args_output.options, + args_output.builder, args_output.verbose) if __name__ == '__main__': diff --git a/llvm_tools/llvm_bisection_unittest.py b/llvm_tools/llvm_bisection_unittest.py index e730293b..8478f82e 100755 --- a/llvm_tools/llvm_bisection_unittest.py +++ b/llvm_tools/llvm_bisection_unittest.py @@ -16,45 +16,50 @@ import unittest.mock as mock import chroot import get_llvm_hash +import git_llvm_rev import llvm_bisection import modify_a_tryjob import test_helpers -import update_tryjob_status class LLVMBisectionTest(unittest.TestCase): """Unittests for LLVM bisection.""" - def testStartAndEndDoNotMatchJsonStartAndEnd(self): + def testGetRemainingRangePassed(self): start = 100 end = 150 - json_start = 110 - json_end = 150 - - # Verify the exception is raised when the start and end revision for LLVM - # bisection do not match the .JSON's 'start' and 'end' values. - with self.assertRaises(ValueError) as err: - llvm_bisection._ValidateStartAndEndAgainstJSONStartAndEnd( - start, end, json_start, json_end) - - expected_error_message = ('The start %d or the end %d version provided is ' - 'different than "start" %d or "end" %d in the ' - '.JSON file' % (start, end, json_start, json_end)) - - self.assertEqual(str(err.exception), expected_error_message) - - def testStartAndEndMatchJsonStartAndEnd(self): - start = 100 - end = 150 + test_tryjobs = [{ + 'rev': 110, + 'status': 'good', + 'link': 'https://some_tryjob_1_url.com' + }, { + 'rev': 120, + 'status': 'good', + 'link': 'https://some_tryjob_2_url.com' + }, { + 'rev': 130, + 'status': 'pending', + 'link': 'https://some_tryjob_3_url.com' + }, { + 'rev': 135, + 'status': 'skip', + 'link': 'https://some_tryjob_4_url.com' + }, { + 'rev': 140, + 'status': 'bad', + 'link': 'https://some_tryjob_5_url.com' + }] - json_start = 100 - json_end = 150 + # Tuple consists of the new good revision, the new bad revision, a set of + # 'pending' revisions, and a set of 'skip' revisions. + expected_revisions_tuple = 120, 140, {130}, {135} - llvm_bisection._ValidateStartAndEndAgainstJSONStartAndEnd( - start, end, json_start, json_end) + self.assertEqual( + llvm_bisection.GetRemainingRange(start, end, test_tryjobs), + expected_revisions_tuple) - def testTryjobStatusIsMissing(self): + def testGetRemainingRangeFailedWithMissingStatus(self): start = 100 end = 150 @@ -72,18 +77,14 @@ class LLVMBisectionTest(unittest.TestCase): 'link': 'https://some_tryjob_3_url.com' }] - # Verify the exception is raised when a tryjob does not have a value for - # the 'status' key or the 'status' key is missing. with self.assertRaises(ValueError) as err: - llvm_bisection.GetStartAndEndRevision(start, end, test_tryjobs) - - expected_error_message = ( - '"status" is missing or has no value, please ' - 'go to %s and update it' % test_tryjobs[1]['link']) + llvm_bisection.GetRemainingRange(start, end, test_tryjobs) - self.assertEqual(str(err.exception), expected_error_message) + error_message = ('"status" is missing or has no value, please ' + 'go to %s and update it' % test_tryjobs[1]['link']) + self.assertEqual(str(err.exception), error_message) - def testGoodRevisionGreaterThanBadRevision(self): + def testGetRemainingRangeFailedWithInvalidRange(self): start = 100 end = 150 @@ -101,206 +102,68 @@ class LLVMBisectionTest(unittest.TestCase): 'link': 'https://some_tryjob_3_url.com' }] - # Verify the exception is raised when the new 'start' revision is greater - # than the new 'bad' revision for bisection (i.e. bisection is broken). with self.assertRaises(AssertionError) as err: - llvm_bisection.GetStartAndEndRevision(start, end, test_tryjobs) + llvm_bisection.GetRemainingRange(start, end, test_tryjobs) - expected_error_message = ( - 'Bisection is broken because %d (good) is >= ' - '%d (bad)' % (test_tryjobs[2]['rev'], test_tryjobs[0]['rev'])) + expected_error_message = ('Bisection is broken because %d (good) is >= ' + '%d (bad)' % + (test_tryjobs[2]['rev'], test_tryjobs[0]['rev'])) self.assertEqual(str(err.exception), expected_error_message) - def testSuccessfullyGetNewStartAndNewEndRevision(self): - start = 100 - end = 150 - - test_tryjobs = [{ - 'rev': 110, - 'status': 'good', - 'link': 'https://some_tryjob_1_url.com' - }, { - 'rev': 120, - 'status': 'good', - 'link': 'https://some_tryjob_2_url.com' - }, { - 'rev': 130, - 'status': 'pending', - 'link': 'https://some_tryjob_3_url.com' - }, { - 'rev': 135, - 'status': 'skip', - 'link': 'https://some_tryjob_4_url.com' - }, { - 'rev': 140, - 'status': 'bad', - 'link': 'https://some_tryjob_5_url.com' - }] - - # Tuple consists of the new good revision, the new bad revision, a set of - # 'pending' revisions, and a set of 'skip' revisions. - expected_revisions_tuple = 120, 140, {130}, {135} - - self.assertTupleEqual( - llvm_bisection.GetStartAndEndRevision(start, end, test_tryjobs), - expected_revisions_tuple) - - @mock.patch.object(get_llvm_hash, 'GetGitHashFrom') - def testNoRevisionsBetweenStartAndEnd(self, mock_get_git_hash): - start = 100 - end = 110 - - test_pending_revisions = {107} - test_skip_revisions = {101, 102, 103, 104, 108, 109} - - # Simulate behavior of `GetGitHashFrom()` when the revision does not - # exist in the LLVM source tree. - def MockGetGitHashForRevisionRaiseException(_src_path, _revision): - raise ValueError('Revision does not exist') - - mock_get_git_hash.side_effect = MockGetGitHashForRevisionRaiseException - - parallel = 3 - - abs_path_to_src = '/abs/path/to/src' - - self.assertListEqual( - llvm_bisection.GetRevisionsBetweenBisection( - start, end, parallel, abs_path_to_src, test_pending_revisions, - test_skip_revisions), []) - - # Assume llvm_bisection module has imported GetGitHashFrom @mock.patch.object(get_llvm_hash, 'GetGitHashFrom') - def testSuccessfullyRetrievedRevisionsBetweenStartAndEnd( - self, mock_get_git_hash): - - start = 100 - end = 110 - - test_pending_revisions = set() - test_skip_revisions = {101, 102, 103, 104, 106, 108, 109} - + def testGetCommitsBetweenPassed(self, mock_get_git_hash): + start = git_llvm_rev.base_llvm_revision + end = start + 10 + test_pending_revisions = {start + 7} + test_skip_revisions = { + start + 1, start + 2, start + 4, start + 8, start + 9 + } parallel = 3 - abs_path_to_src = '/abs/path/to/src' - # Valid revision that exist in the LLVM source tree between 'start' and - # 'end' and were not in the 'pending' set or 'skip' set. - expected_revisions_between_start_and_end = [105, 107] - - self.assertListEqual( - llvm_bisection.GetRevisionsBetweenBisection( - start, end, parallel, abs_path_to_src, test_pending_revisions, - test_skip_revisions), expected_revisions_between_start_and_end) - - self.assertEqual(mock_get_git_hash.call_count, 2) + revs = ['a123testhash3', 'a123testhash5'] + mock_get_git_hash.side_effect = revs - # Simulate behavior of `GetGitHashFrom()` when successfully retrieved - # a list git hashes for each revision in the revisions list. - # Assume llvm_bisection module has imported GetGitHashFrom - @mock.patch.object(get_llvm_hash, 'GetGitHashFrom') - # Simulate behavior of `GetRevisionsBetweenBisection()` when successfully - # retrieved a list of valid revisions between 'start' and 'end'. - @mock.patch.object(llvm_bisection, 'GetRevisionsBetweenBisection') - # Simulate behavior of `CreatTempLLVMRepo()` when successfully created a - # worktree when a source path was not provided. - @mock.patch.object(get_llvm_hash, 'CreateTempLLVMRepo') - def testSuccessfullyGetRevisionsListAndHashList( - self, mock_create_temp_llvm_repo, mock_get_revisions_between_bisection, - mock_get_git_hash): - - expected_revisions_and_hash_tuple = ([102, 105, 108], [ - 'a123testhash1', 'a123testhash2', 'a123testhash3' - ]) - - @test_helpers.CallCountsToMockFunctions - def MockGetGitHashForRevision(call_count, _src_path, _rev): - # Simulate retrieving the git hash for the revision. - if call_count < 3: - return expected_revisions_and_hash_tuple[1][call_count] - - assert False, 'Called `GetGitHashFrom()` more than expected.' - - temp_worktree = '/abs/path/to/tmpDir' - - mock_create_temp_llvm_repo.return_value.__enter__.return_value.name = \ - temp_worktree - - # Simulate the valid revisions list. - mock_get_revisions_between_bisection.return_value = \ - expected_revisions_and_hash_tuple[0] - - # Simulate behavior of `GetGitHashFrom()` by using the testing - # function. - mock_get_git_hash.side_effect = MockGetGitHashForRevision - - start = 100 - end = 110 - parallel = 3 - src_path = None - pending_revisions = {103, 104} - skip_revisions = {101, 106, 107, 109} + git_hashes = [ + git_llvm_rev.base_llvm_revision + 3, git_llvm_rev.base_llvm_revision + 5 + ] - self.assertTupleEqual( - llvm_bisection.GetRevisionsListAndHashList( - start, end, parallel, src_path, pending_revisions, skip_revisions), - expected_revisions_and_hash_tuple) - - mock_get_revisions_between_bisection.assert_called_once() - - self.assertEqual(mock_get_git_hash.call_count, 3) + self.assertEqual( + llvm_bisection.GetCommitsBetween(start, end, parallel, abs_path_to_src, + test_pending_revisions, + test_skip_revisions), + (git_hashes, revs)) - def testSuccessfullyDieWithNoRevisionsError(self): + def testLoadStatusFilePassedWithExistingFile(self): start = 100 - end = 110 - - pending_revisions = {105, 108} - skip_revisions = {101, 102, 103, 104, 106, 107, 109} - - expected_no_revisions_message = ('No revisions between start %d and end ' - '%d to create tryjobs' % (start, end)) - - expected_no_revisions_message += '\nThe following tryjobs are pending:\n' \ - + '\n'.join(str(rev) for rev in pending_revisions) - - expected_no_revisions_message += '\nThe following tryjobs were skipped:\n' \ - + '\n'.join(str(rev) for rev in skip_revisions) - - # Verify that an exception is raised when there are no revisions to launch - # tryjobs for between 'start' and 'end' and some tryjobs are 'pending'. - with self.assertRaises(ValueError) as err: - llvm_bisection.DieWithNoRevisionsError(start, end, skip_revisions, - pending_revisions) + end = 150 - self.assertEqual(str(err.exception), expected_no_revisions_message) + test_bisect_state = {'start': start, 'end': end, 'jobs': []} - # Simulate behavior of `FindTryjobIndex()` when the index of the tryjob was - # found. - @mock.patch.object(update_tryjob_status, 'FindTryjobIndex', return_value=0) - def testTryjobExistsInRevisionsToLaunch(self, mock_find_tryjob_index): - test_existing_jobs = [{'rev': 102, 'status': 'good'}] + # Simulate that the status file exists. + with test_helpers.CreateTemporaryJsonFile() as temp_json_file: + with open(temp_json_file, 'w') as f: + test_helpers.WritePrettyJsonFile(test_bisect_state, f) - revision_to_launch = [102] + self.assertEqual( + llvm_bisection.LoadStatusFile(temp_json_file, start, end), + test_bisect_state) - expected_revision_that_exists = 102 + def testLoadStatusFilePassedWithoutExistingFile(self): + start = 200 + end = 250 - with self.assertRaises(ValueError) as err: - llvm_bisection.CheckForExistingTryjobsInRevisionsToLaunch( - revision_to_launch, test_existing_jobs) + expected_bisect_state = {'start': start, 'end': end, 'jobs': []} - expected_found_tryjob_index_error_message = ( - 'Revision %d exists already ' - 'in "jobs"' % expected_revision_that_exists) + last_tested = '/abs/path/to/file_that_does_not_exist.json' self.assertEqual( - str(err.exception), expected_found_tryjob_index_error_message) - - mock_find_tryjob_index.assert_called_once() + llvm_bisection.LoadStatusFile(last_tested, start, end), + expected_bisect_state) @mock.patch.object(modify_a_tryjob, 'AddTryjob') - def testSuccessfullyUpdatedStatusFileWhenExceptionIsRaised( - self, mock_add_tryjob): + def testBisectPassed(self, mock_add_tryjob): git_hash_list = ['a123testhash1', 'a123testhash2', 'a123testhash3'] revisions_list = [102, 104, 106] @@ -343,11 +206,11 @@ class LLVMBisectionTest(unittest.TestCase): # Verify that the status file is updated when an exception happened when # attempting to launch a revision (i.e. progress is not lost). with self.assertRaises(ValueError) as err: - llvm_bisection.UpdateBisection( - revisions_list, git_hash_list, bisection_contents, temp_json_file, - packages, args_output.chroot_path, patch_file, - args_output.extra_change_lists, args_output.options, - args_output.builders, args_output.verbose) + llvm_bisection.Bisect(revisions_list, git_hash_list, bisection_contents, + temp_json_file, packages, args_output.chroot_path, + patch_file, args_output.extra_change_lists, + args_output.options, args_output.builders, + args_output.verbose) expected_bisection_contents = { 'start': @@ -368,121 +231,128 @@ class LLVMBisectionTest(unittest.TestCase): with open(temp_json_file) as f: json_contents = json.load(f) - self.assertDictEqual(json_contents, expected_bisection_contents) + self.assertEqual(json_contents, expected_bisection_contents) self.assertEqual(str(err.exception), 'Unable to launch tryjob') self.assertEqual(mock_add_tryjob.call_count, 3) - # Simulate behavior of `GetGitHashFrom()` when successfully retrieved - # the git hash of the bad revision. Assume llvm_bisection has imported - # GetGitHashFrom @mock.patch.object( - get_llvm_hash, 'GetGitHashFrom', return_value='a123testhash4') - def testCompletedBisectionWhenProvidedSrcPath(self, mock_get_git_hash): - last_tested = '/some/last/tested_file.json' + get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash4') + @mock.patch.object(llvm_bisection, 'GetCommitsBetween') + @mock.patch.object(llvm_bisection, 'GetRemainingRange') + @mock.patch.object(llvm_bisection, 'LoadStatusFile') + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) + def testMainPassed(self, mock_outside_chroot, mock_load_status_file, + mock_get_range, mock_get_revision_and_hash_list, + _mock_get_bad_llvm_hash): - src_path = '/abs/path/to/src/path' + start = 500 + end = 502 + cl = 1 - # The bad revision. - end = 150 + bisect_state = { + 'start': start, + 'end': end, + 'jobs': [{ + 'rev': 501, + 'status': 'bad', + 'cl': cl + }] + } - llvm_bisection._NoteCompletedBisection(last_tested, src_path, end) + skip_revisions = {501} + pending_revisions = {} - mock_get_git_hash.assert_called_once() + mock_load_status_file.return_value = bisect_state - # Simulate behavior of `GetLLVMHash()` when successfully retrieved - # the git hash of the bad revision. - @mock.patch.object( - get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash5') - def testCompletedBisectionWhenNotProvidedSrcPath(self, mock_get_git_hash): - last_tested = '/some/last/tested_file.json' + mock_get_range.return_value = (start, end, pending_revisions, + skip_revisions) - src_path = None + mock_get_revision_and_hash_list.return_value = [], [] - # The bad revision. - end = 200 + args_output = test_helpers.ArgsOutputTest() + args_output.start_rev = start + args_output.end_rev = end + args_output.parallel = 3 + args_output.src_path = None + args_output.chroot_path = 'somepath' - llvm_bisection._NoteCompletedBisection(last_tested, src_path, end) + self.assertEqual( + llvm_bisection.main(args_output), + llvm_bisection.BisectionExitStatus.BISECTION_COMPLETE.value) - mock_get_git_hash.assert_called_once() + mock_outside_chroot.assert_called_once() - def testSuccessfullyLoadedStatusFile(self): - start = 100 - end = 150 + mock_load_status_file.assert_called_once() - test_bisect_contents = {'start': start, 'end': end, 'jobs': []} + mock_get_range.assert_called_once() - # Simulate that the status file exists. - with test_helpers.CreateTemporaryJsonFile() as temp_json_file: - with open(temp_json_file, 'w') as f: - test_helpers.WritePrettyJsonFile(test_bisect_contents, f) + mock_get_revision_and_hash_list.assert_called_once() - self.assertDictEqual( - llvm_bisection.LoadStatusFile(temp_json_file, start, end), - test_bisect_contents) + @mock.patch.object(llvm_bisection, 'LoadStatusFile') + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) + def testMainFailedWithInvalidRange(self, mock_outside_chroot, + mock_load_status_file): - def testLoadedStatusFileThatDoesNotExist(self): - start = 200 - end = 250 + start = 500 + end = 502 - expected_bisect_contents = {'start': start, 'end': end, 'jobs': []} + bisect_state = { + 'start': start - 1, + 'end': end, + } - last_tested = '/abs/path/to/file_that_does_not_exist.json' + mock_load_status_file.return_value = bisect_state - self.assertDictEqual( - llvm_bisection.LoadStatusFile(last_tested, start, end), - expected_bisect_contents) - - # Simulate behavior of `_NoteCompletedBisection()` when there are no more - # tryjobs to launch between start and end, so bisection is complete. - @mock.patch.object(llvm_bisection, '_NoteCompletedBisection') - @mock.patch.object(llvm_bisection, 'GetRevisionsListAndHashList') - @mock.patch.object(llvm_bisection, 'GetStartAndEndRevision') - # Simulate behavior of `_ValidateStartAndEndAgainstJSONStartAndEnd()` when - # both start and end revisions match. - @mock.patch.object(llvm_bisection, - '_ValidateStartAndEndAgainstJSONStartAndEnd') + args_output = test_helpers.ArgsOutputTest() + args_output.start_rev = start + args_output.end_rev = end + args_output.parallel = 3 + args_output.src_path = None + + with self.assertRaises(ValueError) as err: + llvm_bisection.main(args_output) + + error_message = (f'The start {start} or the end {end} version provided is ' + f'different than "start" {bisect_state["start"]} or "end" ' + f'{bisect_state["end"]} in the .JSON file') + + self.assertEqual(str(err.exception), error_message) + + mock_outside_chroot.assert_called_once() + + mock_load_status_file.assert_called_once() + + @mock.patch.object(llvm_bisection, 'GetCommitsBetween') + @mock.patch.object(llvm_bisection, 'GetRemainingRange') @mock.patch.object(llvm_bisection, 'LoadStatusFile') - # Simulate behavior of `VerifyOutsideChroot()` when successfully invoked the - # script outside of the chroot. @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) - def testSuccessfullyBisectedLLVM( - self, mock_outside_chroot, mock_load_status_file, - mock_validate_start_and_end, mock_get_start_and_end_revision, - mock_get_revision_and_hash_list, mock_note_completed_bisection): + def testMainFailedWithPendingBuilds(self, mock_outside_chroot, + mock_load_status_file, mock_get_range, + mock_get_revision_and_hash_list): start = 500 end = 502 + rev = 501 - bisect_contents = { + bisect_state = { 'start': start, 'end': end, 'jobs': [{ - 'rev': 501, - 'status': 'skip' + 'rev': rev, + 'status': 'pending' }] } - skip_revisions = {501} - pending_revisions = {} + skip_revisions = {} + pending_revisions = {rev} + + mock_load_status_file.return_value = bisect_state + + mock_get_range.return_value = (start, end, pending_revisions, + skip_revisions) - # Simulate behavior of `LoadStatusFile()` when successfully loaded the - # status file. - mock_load_status_file.return_value = bisect_contents - - # Simulate behavior of `GetStartAndEndRevision()` when successfully found - # the new start and end revision of the bisection. - # - # Returns new start revision, new end revision, a set of pending revisions, - # and a set of skip revisions. - mock_get_start_and_end_revision.return_value = (start, end, - pending_revisions, - skip_revisions) - - # Simulate behavior of `GetRevisionsListAndHashList()` when successfully - # retrieved valid revisions (along with their git hashes) between start and - # end (in this case, none). mock_get_revision_and_hash_list.return_value = [], [] args_output = test_helpers.ArgsOutputTest() @@ -491,111 +361,75 @@ class LLVMBisectionTest(unittest.TestCase): args_output.parallel = 3 args_output.src_path = None - self.assertEqual( - llvm_bisection.main(args_output), - llvm_bisection.BisectionExitStatus.BISECTION_COMPLETE.value) + with self.assertRaises(ValueError) as err: + llvm_bisection.main(args_output) + + error_message = (f'No revisions between start {start} and end {end} to ' + 'create tryjobs\nThe following tryjobs are pending:\n' + f'{rev}\n') + + self.assertEqual(str(err.exception), error_message) mock_outside_chroot.assert_called_once() mock_load_status_file.assert_called_once() - mock_validate_start_and_end.assert_called_once() - - mock_get_start_and_end_revision.assert_called_once() + mock_get_range.assert_called_once() mock_get_revision_and_hash_list.assert_called_once() - mock_note_completed_bisection.assert_called_once() - - @mock.patch.object(llvm_bisection, 'DieWithNoRevisionsError') - # Simulate behavior of `_NoteCompletedBisection()` when there are no more - # tryjobs to launch between start and end, so bisection is complete. - @mock.patch.object(llvm_bisection, 'GetRevisionsListAndHashList') - @mock.patch.object(llvm_bisection, 'GetStartAndEndRevision') - # Simulate behavior of `_ValidateStartAndEndAgainstJSONStartAndEnd()` when - # both start and end revisions match. - @mock.patch.object(llvm_bisection, - '_ValidateStartAndEndAgainstJSONStartAndEnd') + @mock.patch.object(llvm_bisection, 'GetCommitsBetween') + @mock.patch.object(llvm_bisection, 'GetRemainingRange') @mock.patch.object(llvm_bisection, 'LoadStatusFile') - # Simulate behavior of `VerifyOutsideChroot()` when successfully invoked the - # script outside of the chroot. @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) - def testNoMoreTryjobsToLaunch( - self, mock_outside_chroot, mock_load_status_file, - mock_validate_start_and_end, mock_get_start_and_end_revision, - mock_get_revision_and_hash_list, mock_die_with_no_revisions_error): + def testMainFailedWithDuplicateBuilds(self, mock_outside_chroot, + mock_load_status_file, mock_get_range, + mock_get_revision_and_hash_list): start = 500 end = 502 + rev = 501 + git_hash = 'a123testhash1' - bisect_contents = { + bisect_state = { 'start': start, 'end': end, 'jobs': [{ - 'rev': 501, + 'rev': rev, 'status': 'pending' }] } skip_revisions = {} - pending_revisions = {501} - - no_revisions_error_message = ('No more tryjobs to launch between %d and ' - '%d' % (start, end)) - - def MockNoRevisionsErrorException(_start, _end, _skip, _pending): - raise ValueError(no_revisions_error_message) - - # Simulate behavior of `LoadStatusFile()` when successfully loaded the - # status file. - mock_load_status_file.return_value = bisect_contents - - # Simulate behavior of `GetStartAndEndRevision()` when successfully found - # the new start and end revision of the bisection. - # - # Returns new start revision, new end revision, a set of pending revisions, - # and a set of skip revisions. - mock_get_start_and_end_revision.return_value = (start, end, - pending_revisions, - skip_revisions) - - # Simulate behavior of `GetRevisionsListAndHashList()` when successfully - # retrieved valid revisions (along with their git hashes) between start and - # end (in this case, none). - mock_get_revision_and_hash_list.return_value = [], [] + pending_revisions = {rev} + + mock_load_status_file.return_value = bisect_state - # Use the test function to simulate `DieWithNoRevisionsWithError()` - # behavior. - mock_die_with_no_revisions_error.side_effect = MockNoRevisionsErrorException + mock_get_range.return_value = (start, end, pending_revisions, + skip_revisions) + + mock_get_revision_and_hash_list.return_value = [rev], [git_hash] - # Simulate behavior of arguments passed into the command line. args_output = test_helpers.ArgsOutputTest() args_output.start_rev = start args_output.end_rev = end args_output.parallel = 3 args_output.src_path = None - # Verify the exception is raised when there are no more tryjobs to launch - # between start and end when there are tryjobs that are 'pending', so - # the actual bad revision can change when those tryjobs's 'status' are - # updated. with self.assertRaises(ValueError) as err: llvm_bisection.main(args_output) - self.assertEqual(str(err.exception), no_revisions_error_message) + error_message = ('Revision %d exists already in "jobs"' % rev) + self.assertEqual(str(err.exception), error_message) mock_outside_chroot.assert_called_once() mock_load_status_file.assert_called_once() - mock_validate_start_and_end.assert_called_once() - - mock_get_start_and_end_revision.assert_called_once() + mock_get_range.assert_called_once() mock_get_revision_and_hash_list.assert_called_once() - mock_die_with_no_revisions_error.assert_called_once() - if __name__ == '__main__': unittest.main() -- cgit v1.2.3 From fb8fd5be362ec7a52dc3be33859d31b0553c1038 Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Mon, 28 Sep 2020 15:30:23 -0700 Subject: compiler_wrapper: enable -mharden-sls=all on aarch64 Migrate straight-line speculation vulnerability. Link: http://lists.llvm.org/pipermail/llvm-dev/2020-June/142109.html BUG=chromium:1096302 TEST=https://docs.google.com/spreadsheets/d/1EZbTYUdq2Y6Jpgy5PrCACB3GrInFy0ahI40IPexBZDM/edit#gid=336625829 Change-Id: I35e8f3cce53b86159f1705429774ceb803264f7d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2436936 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/aarch64_flags.go | 11 +++++++++++ compiler_wrapper/aarch64_flags_test.go | 19 +++++++++++++++++++ compiler_wrapper/compiler_wrapper.go | 1 + compiler_wrapper/testutil_test.go | 1 + 4 files changed, 32 insertions(+) create mode 100644 compiler_wrapper/aarch64_flags.go create mode 100644 compiler_wrapper/aarch64_flags_test.go diff --git a/compiler_wrapper/aarch64_flags.go b/compiler_wrapper/aarch64_flags.go new file mode 100644 index 00000000..a0d05523 --- /dev/null +++ b/compiler_wrapper/aarch64_flags.go @@ -0,0 +1,11 @@ +// Copyright 2020 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 + +func processAarch64Flags(builder *commandBuilder) { + if builder.target.arch == "aarch64" { + builder.addPreUserArgs("-mharden-sls=all") + } +} diff --git a/compiler_wrapper/aarch64_flags_test.go b/compiler_wrapper/aarch64_flags_test.go new file mode 100644 index 00000000..0cb692e2 --- /dev/null +++ b/compiler_wrapper/aarch64_flags_test.go @@ -0,0 +1,19 @@ +// Copyright 2020 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 ( + "testing" +) + +func TestAddSlsFlagOnAarch64(t *testing.T) { + withTestContext(t, func(ctx *testContext) { + cmd := ctx.must(callCompiler(ctx, ctx.cfg, + ctx.newCommand(clangAarch64, mainCc))) + if err := verifyArgOrder(cmd, "-mharden-sls=all", mainCc); err != nil { + t.Error(err) + } + }) +} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index aa52dfdc..49ee0eb0 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -187,6 +187,7 @@ func prepareClangCommand(builder *commandBuilder) (err error) { } builder.addPostUserArgs(builder.cfg.clangPostFlags...) calcCommonPreUserArgs(builder) + processAarch64Flags(builder) return processClangFlags(builder) } diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index 21b7169d..8e2377e7 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -22,6 +22,7 @@ const ( clangAndroid = "./clang" clangTidyAndroid = "./clang-tidy" clangX86_64 = "./x86_64-cros-linux-gnu-clang" + clangAarch64 = "./aarch64-cros-linux-gnu-clang" gccX86_64 = "./x86_64-cros-linux-gnu-gcc" gccX86_64Eabi = "./x86_64-cros-eabi-gcc" gccArmV7 = "./armv7m-cros-linux-gnu-gcc" -- cgit v1.2.3 From b9a429906b7815cd9aeca6674f26e6e2e3ba56dd Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Sun, 23 Aug 2020 20:09:02 -0700 Subject: llvm_tools: abandon CLs after completing LLVM bisection. Abandon CLs created for bisection if LLVM bisection successfully found the root cause. BUG=chromium:1081457 TEST=Verified locally. Change-Id: I3702c38432fbaf87f7df62418c0b29cbe4ca722a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2382420 Reviewed-by: Manoj Gupta Reviewed-by: George Burgess Tested-by: Jian Cai --- llvm_tools/llvm_bisection.py | 21 ++++++++++ llvm_tools/llvm_bisection_unittest.py | 76 ++++++++++++++++++++++++++++++++++- 2 files changed, 96 insertions(+), 1 deletion(-) diff --git a/llvm_tools/llvm_bisection.py b/llvm_tools/llvm_bisection.py index 37320baf..c8d694cd 100755 --- a/llvm_tools/llvm_bisection.py +++ b/llvm_tools/llvm_bisection.py @@ -13,6 +13,7 @@ import enum import errno import json import os +import subprocess import sys import chroot @@ -117,6 +118,13 @@ def GetCommandLineArgs(): help='display contents of a command to the terminal ' '(default: %(default)s)') + # Add argument for whether to display command contents to `stdout`. + parser.add_argument( + '--nocleanup', + action='store_false', + dest='cleanup', + help='Abandon CLs created for bisectoin') + args_output = parser.parse_args() assert args_output.start_rev < args_output.end_rev, ( @@ -348,6 +356,19 @@ def main(args_output): '\n'.join(str(rev) for rev in skip_revisions)) print(skip_revisions_message) + if args_output.cleanup: + # Abondon all the CLs created for bisection + gerrit = os.path.join(args_output.chroot_path, 'chromite/bin/gerrit') + for build in bisect_state['jobs']: + try: + subprocess.check_output([gerrit, 'abandon', build['cl']], + stderr=subprocess.STDOUT, + encoding='utf-8') + except subprocess.CalledProcessError as err: + # the CL may have been abandoned + if 'chromite.lib.gob_util.GOBError' not in err.output: + raise + return BisectionExitStatus.BISECTION_COMPLETE.value for rev in revisions: diff --git a/llvm_tools/llvm_bisection_unittest.py b/llvm_tools/llvm_bisection_unittest.py index 8478f82e..a40770a5 100755 --- a/llvm_tools/llvm_bisection_unittest.py +++ b/llvm_tools/llvm_bisection_unittest.py @@ -11,6 +11,8 @@ from __future__ import print_function import json +import os +import subprocess import unittest import unittest.mock as mock @@ -237,6 +239,7 @@ class LLVMBisectionTest(unittest.TestCase): self.assertEqual(mock_add_tryjob.call_count, 3) + @mock.patch.object(subprocess, 'check_output', return_value=None) @mock.patch.object( get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash4') @mock.patch.object(llvm_bisection, 'GetCommitsBetween') @@ -245,7 +248,7 @@ class LLVMBisectionTest(unittest.TestCase): @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) def testMainPassed(self, mock_outside_chroot, mock_load_status_file, mock_get_range, mock_get_revision_and_hash_list, - _mock_get_bad_llvm_hash): + _mock_get_bad_llvm_hash, mock_abandon_cl): start = 500 end = 502 @@ -277,6 +280,7 @@ class LLVMBisectionTest(unittest.TestCase): args_output.parallel = 3 args_output.src_path = None args_output.chroot_path = 'somepath' + args_output.cleanup = True self.assertEqual( llvm_bisection.main(args_output), @@ -290,6 +294,19 @@ class LLVMBisectionTest(unittest.TestCase): mock_get_revision_and_hash_list.assert_called_once() + mock_abandon_cl.assert_called_once() + self.assertEqual( + mock_abandon_cl.call_args, + mock.call( + [ + os.path.join(args_output.chroot_path, 'chromite/bin/gerrit'), + 'abandon', + cl, + ], + stderr=subprocess.STDOUT, + encoding='utf-8', + )) + @mock.patch.object(llvm_bisection, 'LoadStatusFile') @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) def testMainFailedWithInvalidRange(self, mock_outside_chroot, @@ -430,6 +447,63 @@ class LLVMBisectionTest(unittest.TestCase): mock_get_revision_and_hash_list.assert_called_once() + @mock.patch.object(subprocess, 'check_output', return_value=None) + @mock.patch.object( + get_llvm_hash.LLVMHash, 'GetLLVMHash', return_value='a123testhash4') + @mock.patch.object(llvm_bisection, 'GetCommitsBetween') + @mock.patch.object(llvm_bisection, 'GetRemainingRange') + @mock.patch.object(llvm_bisection, 'LoadStatusFile') + @mock.patch.object(chroot, 'VerifyOutsideChroot', return_value=True) + def testMainFailedToAbandonCL(self, mock_outside_chroot, + mock_load_status_file, mock_get_range, + mock_get_revision_and_hash_list, + _mock_get_bad_llvm_hash, mock_abandon_cl): + + start = 500 + end = 502 + + bisect_state = { + 'start': start, + 'end': end, + 'jobs': [{ + 'rev': 501, + 'status': 'bad', + 'cl': 0 + }] + } + + skip_revisions = {501} + pending_revisions = {} + + mock_load_status_file.return_value = bisect_state + + mock_get_range.return_value = (start, end, pending_revisions, + skip_revisions) + + mock_get_revision_and_hash_list.return_value = ([], []) + + error_message = 'Error message.' + mock_abandon_cl.side_effect = subprocess.CalledProcessError( + returncode=1, cmd=[], output=error_message) + + args_output = test_helpers.ArgsOutputTest() + args_output.start_rev = start + args_output.end_rev = end + args_output.parallel = 3 + args_output.src_path = None + args_output.cleanup = True + + with self.assertRaises(subprocess.CalledProcessError) as err: + llvm_bisection.main(args_output) + + self.assertEqual(err.exception.output, error_message) + + mock_outside_chroot.assert_called_once() + + mock_load_status_file.assert_called_once() + + mock_get_range.assert_called_once() + if __name__ == '__main__': unittest.main() -- cgit v1.2.3 From d184b9af4fb0559b1e98a935c85a1b42a2af37bd Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Sat, 3 Oct 2020 11:45:28 -0700 Subject: crosperf: Update path search for chrome sources Chrome source location has recently changed and path search in crosperf is updated accordingly. BUG=None TEST=run crosperf after repo sync and ebuild prepare of chrome. Change-Id: I715b3a9bf4892a993181b0be5864de94f651afe2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2446895 Commit-Queue: Denis Nikitin Commit-Queue: Manoj Gupta Tested-by: Denis Nikitin Auto-Submit: Denis Nikitin Reviewed-by: Manoj Gupta --- crosperf/label.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/crosperf/label.py b/crosperf/label.py index b8122613..b14c4a73 100644 --- a/crosperf/label.py +++ b/crosperf/label.py @@ -61,9 +61,9 @@ class Label(object): if self.image_type == 'local': chromeos_root = FileUtils().ChromeOSRootFromImage(chromeos_image) if not chromeos_root: - raise RuntimeError( - "No ChromeOS root given for label '%s' and could " - "not determine one from image path: '%s'." % (name, chromeos_image)) + raise RuntimeError("No ChromeOS root given for label '%s' and could " + "not determine one from image path: '%s'." % + (name, chromeos_image)) else: chromeos_root = FileUtils().CanonicalizeChromeOSRoot(chromeos_root) if not chromeos_root: @@ -77,6 +77,11 @@ class Label(object): if not os.path.exists(self.chrome_src): self.chrome_src = os.path.join(self.chromeos_root, '.cache/distfiles/target/chrome-src') + # Chrome source location has changed and we have to support + # old and new path. + if not os.path.exists(self.chrome_src): + self.chrome_src = os.path.join(self.chromeos_root, + '.cache/distfiles/chrome-src-internal') else: chromeos_src = misc.CanonicalizePath(chrome_src) if not chromeos_src: -- cgit v1.2.3 From d8187c7c4ba1296034498fc657aef0e032e2a96f Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Mon, 5 Oct 2020 08:41:41 -0700 Subject: toolchain-utils: Sync compiler wrapper changes with llvm changes. This updates the compiler wrapper flags to match recent updates to compiler wrapper in sys-devel/llvm (for llvm-next). BUG=chromium:1133468 TEST=None Change-Id: Ibab9f0e1d0e35db3ba838e70a812efe2d5137a0a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2448871 Reviewed-by: Manoj Gupta Commit-Queue: Caroline Tice Tested-by: Caroline Tice --- compiler_wrapper/cros_llvm_next_flags.go | 5 ++++- .../cros_hardened_llvmnext_golden/bisect.json | 6 ++++++ .../cros_hardened_llvmnext_golden/clang_path.json | 24 ++++++++++++++++++++++ .../cros_hardened_llvmnext_golden/clangtidy.json | 16 +++++++++++++++ .../force_disable_werror.json | 10 +++++++++ .../gcc_clang_syntax.json | 8 ++++++++ 6 files changed, 68 insertions(+), 1 deletion(-) diff --git a/compiler_wrapper/cros_llvm_next_flags.go b/compiler_wrapper/cros_llvm_next_flags.go index ef4b828d..f5823fbf 100644 --- a/compiler_wrapper/cros_llvm_next_flags.go +++ b/compiler_wrapper/cros_llvm_next_flags.go @@ -13,8 +13,11 @@ package main // tag is set. // TODO: Enable test in config_test.go, once we have new llvm-next flags. -var llvmNextFlags = []string{} +var llvmNextFlags = []string{ + "-Wno-compound-token-split-by-macro", +} var llvmNextPostFlags = []string{ "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", } diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json index 2648ce08..b8e0e462 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/bisect.json @@ -38,6 +38,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -47,6 +48,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -102,6 +104,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -111,6 +114,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -169,6 +173,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -178,6 +183,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json index d7d500c1..9780356e 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clang_path.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -37,6 +38,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -83,6 +85,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -92,6 +95,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -138,6 +142,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -147,6 +152,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -193,6 +199,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -202,6 +209,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -255,6 +263,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -266,6 +275,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -322,6 +332,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -333,6 +344,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -384,6 +396,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -395,6 +408,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -441,6 +455,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -450,6 +465,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -493,6 +509,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -502,6 +519,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -545,6 +563,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -554,6 +573,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-Ba/b/bin", "-target", @@ -597,6 +617,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -606,6 +627,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -652,6 +674,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -661,6 +684,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json index b0526836..06e114cb 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/clangtidy.json @@ -43,6 +43,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -52,6 +53,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -76,6 +78,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -85,6 +88,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -139,6 +143,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -148,6 +153,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -173,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -182,6 +189,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -238,6 +246,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -247,6 +256,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -275,6 +285,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -284,6 +295,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -341,6 +353,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -350,6 +363,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -375,6 +389,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -384,6 +399,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json index 670a361a..cd460a79 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/force_disable_werror.json @@ -31,6 +31,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -40,6 +41,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -86,6 +88,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -95,6 +98,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -127,6 +131,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -136,6 +141,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -186,6 +192,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -195,6 +202,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -227,6 +235,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -236,6 +245,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", diff --git a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json index 20e9746f..c7f619d9 100644 --- a/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json +++ b/compiler_wrapper/testdata/cros_hardened_llvmnext_golden/gcc_clang_syntax.json @@ -28,6 +28,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -37,6 +38,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -104,6 +106,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -113,6 +116,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -175,6 +179,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -184,6 +189,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", @@ -230,6 +236,7 @@ "-Wno-final-dtor-non-final-class", "-Werror=poison-system-directories", "-fexperimental-new-pass-manager", + "-Wno-compound-token-split-by-macro", "-fcrash-diagnostics-dir=/tmp/stable/clang_crash_diagnostics", "-fstack-protector-strong", "-fPIE", @@ -239,6 +246,7 @@ "main.cc", "-Wno-implicit-int-float-conversion", "-Wno-compound-token-split-by-space", + "-Wno-string-concatenation", "-mno-movbe", "-B../../bin", "-target", -- cgit v1.2.3 From 92d7005475c73345f1367892d4e28c618137ffc5 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 6 Oct 2020 11:31:25 -0700 Subject: toolchain-utils: create pending_archives if needed The change fixes the following error happening after migration to a new chrotomation: cp: cannot create regular file '/usr/local/google/crostc/pending_archives/.': No such file or directory Traceback (most recent call last): ... File "./buildbot_test_toolchains.py", line 259, in _CopyJson raise RuntimeError( RuntimeError: Crosperf failed to run tests, cannot copy json report! BUG=None TEST=To be tested on chrotomation.mtv. Change-Id: I4de2bb1ec816fa6d9e98993d6da1b6bded34b1f5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2453594 Commit-Queue: Denis Nikitin Tested-by: Denis Nikitin Reviewed-by: George Burgess --- buildbot_test_toolchains.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buildbot_test_toolchains.py b/buildbot_test_toolchains.py index e4784a62..48987966 100755 --- a/buildbot_test_toolchains.py +++ b/buildbot_test_toolchains.py @@ -250,6 +250,8 @@ class ToolchainComparator(object): self._ce.RunCommand(command) def _CopyJson(self): + # Make sure a destination directory exists. + os.makedirs(PENDING_ARCHIVES_DIR, exist_ok=True) # Copy json report to pending archives directory. command = 'cp %s/*.json %s/.' % (self._reports_dir, PENDING_ARCHIVES_DIR) ret = self._ce.RunCommand(command) -- cgit v1.2.3 From 6d9e457d1841b6086c51719ee43a56f2ee550c7c Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Mon, 5 Oct 2020 16:32:36 -0700 Subject: llvm_tools: add a lexan crash autouploader This CL adds an autouploader for crashes that land in Lexan's bucket. This autouploader uploads them to 4c, much like how `bisect_clang_crashes.py` does. The intent is to run this regularly on chrotomation. BUG=None TEST=Ran it Change-Id: I7cfbe463d89994f6ed3f750c9e8277e1fad0738e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2451306 Reviewed-by: Jian Cai Tested-by: George Burgess --- llvm_tools/README.md | 25 ++- llvm_tools/upload_lexan_crashes_to_forcey.py | 258 ++++++++++++++++++++++ llvm_tools/upload_lexan_crashes_to_forcey_test.py | 122 ++++++++++ 3 files changed, 404 insertions(+), 1 deletion(-) create mode 100755 llvm_tools/upload_lexan_crashes_to_forcey.py create mode 100755 llvm_tools/upload_lexan_crashes_to_forcey_test.py diff --git a/llvm_tools/README.md b/llvm_tools/README.md index d7c20164..783ec22d 100644 --- a/llvm_tools/README.md +++ b/llvm_tools/README.md @@ -555,7 +555,7 @@ PYTHONPATH=../ ./nightly_revert_checker.py \ ### `bisect_clang_crashes.py` This script downloads clang crash diagnoses from -gs://chromeos-toolchain-artifacts/clang-crash-diagnoses and send them to 4c for +gs://chromeos-toolchain-artifacts/clang-crash-diagnoses and sends them to 4c for bisection. Usage example: @@ -569,3 +569,26 @@ to 4c server for bisection. The summary of submitted jobs will be saved in output/state.json under the current path. The output directory will be created automatically if it does not exist yet. To get more information of the submitted jobs, please refer to go/4c-cli. + +### `upload_lexan_crashes_to_forcey.py` + +This script downloads clang crash diagnoses from Lexan's bucket and sends them +to 4c for bisection. + +Usage example: + +``` +$ ./upload_lexan_crashes_to_forcey.py --4c 4c-cli \ + --state_file ./output/state.json +``` + +The above command downloads the artifacts of clang crash diagnoses and send them +to 4c server for bisection. The summary of submitted jobs will be saved in +output/state.json under the current path. The output directory will be created +automatically if it does not exist yet. To get more information of the submitted +jobs, please refer to go/4c-cli. + +Note that it's recommended to 'seed' the state file with a most recent upload +date. This can be done by running this tool *once* with a `--last_date` flag. +This flag has the script override whatever's in the state file (if anything) and +start submitting all crashes uploaded starting at the given day. diff --git a/llvm_tools/upload_lexan_crashes_to_forcey.py b/llvm_tools/upload_lexan_crashes_to_forcey.py new file mode 100755 index 00000000..9cf0c086 --- /dev/null +++ b/llvm_tools/upload_lexan_crashes_to_forcey.py @@ -0,0 +1,258 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Fetches and submits the latest test-cases from Lexan's crash bucket.""" + +# pylint: disable=cros-logging-import + +import argparse +import contextlib +import datetime +import json +import logging +import os +import shutil +import subprocess +import sys +import tempfile +from typing import Generator, List, Iterable + +gsurl_base = 'gs://chrome-clang-crash-reports/v1' + + +def gsutil_ls(loc: str) -> List[str]: + results = subprocess.run(['gsutil', 'ls', loc], + stdout=subprocess.PIPE, + check=True, + encoding='utf-8') + return [l.strip() for l in results.stdout.splitlines()] + + +def gsurl_ls_last_numbers(url: str) -> List[int]: + return sorted(int(x.rstrip('/').split('/')[-1]) for x in gsutil_ls(url)) + + +def get_available_year_numbers() -> List[int]: + return gsurl_ls_last_numbers(gsurl_base) + + +def get_available_month_numbers(year: int) -> List[int]: + return gsurl_ls_last_numbers(f'{gsurl_base}/{year}') + + +def get_available_day_numbers(year: int, month: int) -> List[int]: + return gsurl_ls_last_numbers(f'{gsurl_base}/{year}/{month:02d}') + + +def get_available_test_case_urls(year: int, month: int, day: int) -> List[str]: + return gsutil_ls(f'{gsurl_base}/{year}/{month:02d}/{day:02d}') + + +def test_cases_on_or_after(date: datetime.datetime + ) -> Generator[str, None, None]: + """Yields all test-cases submitted on or after the given date.""" + for year in get_available_year_numbers(): + if year < date.year: + continue + + for month in get_available_month_numbers(year): + if year == date.year and month < date.month: + continue + + for day in get_available_day_numbers(year, month): + when = datetime.date(year, month, day) + if when < date: + continue + + yield when, get_available_test_case_urls(year, month, day) + + +def to_ymd(date: datetime.date) -> str: + return date.strftime('%Y-%m-%d') + + +def from_ymd(date_str: str) -> datetime.date: + return datetime.datetime.strptime(date_str, '%Y-%m-%d').date() + + +def persist_state(seen_urls: Iterable[str], state_file: str, + current_date: datetime.date): + tmp_state_file = state_file + '.tmp' + with open(tmp_state_file, 'w', encoding='utf-8') as f: + json.dump( + { + 'already_seen': sorted(seen_urls), + 'most_recent_date': to_ymd(current_date), + }, + f, + ) + os.rename(tmp_state_file, state_file) + + +@contextlib.contextmanager +def temp_dir() -> Generator[str, None, None]: + loc = tempfile.mkdtemp('lexan-autosubmit') + try: + yield loc + finally: + shutil.rmtree(loc) + + +def submit_test_case(gs_url: str, cr_tool: str) -> None: + logging.info('Submitting %s', gs_url) + suffix = os.path.splitext(gs_url)[1] + with temp_dir() as tempdir: + target_name = 'test_case' + suffix + target = os.path.join(tempdir, target_name) + subprocess.run(['gsutil', 'cp', gs_url, target], check=True) + subprocess.run(['tar', 'xaf', target_name], check=True, cwd=tempdir) + os.unlink(target) + + # Sometimes (e.g., in + # gs://chrome-clang-crash-reports/v1/2020/03/27/ + # chromium.clang-ToTiOS-12754-GTXToolKit-2bfcde.tgz) + # we'll get `.crash` files. Unclear why, but let's filter them out anyway. + repro_files = [x for x in os.listdir(tempdir) if not x.endswith('.crash')] + assert len(repro_files) == 2, repro_files + if repro_files[0].endswith('.sh'): + sh_file, src_file = repro_files + assert not src_file.endswith('.sh'), repro_files + else: + src_file, sh_file = repro_files + assert sh_file.endswith('.sh'), repro_files + + subprocess.run( + [ + cr_tool, + 'reduce', + '-stream=false', + '-wait=false', + '-note', + gs_url, + '-sh_file', + os.path.join(tempdir, sh_file), + '-src_file', + os.path.join(tempdir, src_file), + ], + check=True, + ) + + +def submit_new_test_cases( + last_seen_test_cases: Iterable[str], + earliest_date_to_check: datetime.date, + forcey: str, + state_file_path: str, +) -> None: + """Submits new test-cases to forcey. + + This will persist state after each test-case is submitted. + + Args: + last_seen_test_cases: test-cases which have been submitted already, and + should be skipped if seen again. + earliest_date_to_check: the earliest date we should consider test-cases + from. + forcey: path to the forcey binary. + state_file_path: path to our state file. + """ + # `all_test_cases_seen` is the union of all test-cases seen on this and prior + # invocations. It guarantees, in all cases we care about, that we won't + # submit the same test-case twice. `test_cases_seen_this_invocation` is + # persisted as "all of the test-cases we've seen on this and prior + # invocations" if we successfully submit _all_ test-cases. + # + # Since you can visualize the test-cases this script considers as a sliding + # window that only moves forward, if we saw a test-case on a prior iteration + # but no longer see it, we'll never see it again (since it fell out of our + # sliding window by being too old). Hence, keeping it around is + # pointless. + # + # We only persist this minimized set of test-cases if _everything_ succeeds, + # since if something fails below, there's a chance that we haven't revisited + # test-cases that we've already seen. + all_test_cases_seen = set(last_seen_test_cases) + test_cases_seen_this_invocation = [] + most_recent_date = earliest_date_to_check + for date, candidates in test_cases_on_or_after(earliest_date_to_check): + most_recent_date = max(most_recent_date, date) + + for url in candidates: + test_cases_seen_this_invocation.append(url) + if url in all_test_cases_seen: + continue + + all_test_cases_seen.add(url) + submit_test_case(url, forcey) + + # Persisting on each iteration of this loop isn't free, but it's the + # easiest way to not resubmit test-cases, and it's good to keep in mind + # that: + # - the state file will be small (<12KB, since it only keeps a few days + # worth of test-cases after the first run) + # - in addition to this, we're downloading+unzipping+reuploading multiple + # MB of test-case bytes. + # + # So comparatively, the overhead here probably isn't an issue. + persist_state(all_test_cases_seen, state_file_path, most_recent_date) + + persist_state(test_cases_seen_this_invocation, state_file_path, + most_recent_date) + + +def main(argv: List[str]): + logging.basicConfig( + format='>> %(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: ' + '%(message)s', + level=logging.INFO, + ) + + my_dir = os.path.dirname(os.path.abspath(__file__)) + + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument( + '--state_file', default=os.path.join(my_dir, 'lexan-state.json')) + parser.add_argument( + '--last_date', + help='The earliest date that we care about. All test cases from here ' + 'on will be picked up. Format is YYYY-MM-DD.') + parser.add_argument( + '--4c', dest='forcey', required=True, help='Path to a 4c client binary') + opts = parser.parse_args(argv) + + forcey = opts.forcey + state_file = opts.state_file + last_date_str = opts.last_date + + os.makedirs(os.path.dirname(state_file), 0o755) + + if last_date_str is None: + with open(state_file, encoding='utf-8') as f: + data = json.load(f) + most_recent_date = from_ymd(data['most_recent_date']) + submit_new_test_cases( + last_seen_test_cases=data['already_seen'], + # Note that we always subtract one day from this to avoid a race: + # uploads may appear slightly out-of-order (or builders may lag, or + # ...), so the last test-case uploaded for 2020/01/01 might appear + # _after_ the first test-case for 2020/01/02. Assuming that builders + # won't lag behind for over a day, the easiest way to handle this is to + # always check the previous and current days. + earliest_date_to_check=most_recent_date - datetime.timedelta(days=1), + forcey=forcey, + state_file_path=state_file, + ) + else: + submit_new_test_cases( + last_seen_test_cases=(), + earliest_date_to_check=from_ymd(last_date_str), + forcey=forcey, + state_file_path=state_file, + ) + + +if __name__ == '__main__': + sys.exit(main(sys.argv[1:])) diff --git a/llvm_tools/upload_lexan_crashes_to_forcey_test.py b/llvm_tools/upload_lexan_crashes_to_forcey_test.py new file mode 100755 index 00000000..3c9c0d4b --- /dev/null +++ b/llvm_tools/upload_lexan_crashes_to_forcey_test.py @@ -0,0 +1,122 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# Copyright 2020 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. + +"""Tests for upload_lexan_crashes_to_forcey.""" + +import datetime +import unittest +import unittest.mock + +import upload_lexan_crashes_to_forcey + + +class Test(unittest.TestCase): + """Tests for upload_lexan_crashes_to_forcey.""" + + def test_date_parsing_functions(self): + self.assertEqual( + datetime.date(2020, 2, 1), + upload_lexan_crashes_to_forcey.from_ymd('2020-02-01')) + + @unittest.mock.patch( + 'upload_lexan_crashes_to_forcey.test_cases_on_or_after', + return_value=( + ( + datetime.date(2020, 1, 1), + ('gs://test-case-1', 'gs://test-case-1.1'), + ), + (datetime.date(2020, 1, 2), ('gs://test-case-2',)), + (datetime.date(2020, 1, 1), ('gs://test-case-3',)), + (datetime.date(2020, 1, 4), ('gs://test-case-4',)), + )) + @unittest.mock.patch('upload_lexan_crashes_to_forcey.submit_test_case') + @unittest.mock.patch('upload_lexan_crashes_to_forcey.persist_state') + def test_new_test_case_submission_functions(self, persist_state_mock, + submit_test_case_mock, + test_cases_on_or_after_mock): + forcey_path = '/path/to/4c' + real_state_file_path = '/path/to/state/file' + earliest_date = datetime.date(2020, 1, 1) + + persist_state_calls = [] + + # Since the set this gets is mutated, we need to copy it somehow. + def persist_state_side_effect(test_cases_to_persist, state_file_path, + most_recent_date): + self.assertEqual(state_file_path, real_state_file_path) + persist_state_calls.append( + (sorted(test_cases_to_persist), most_recent_date)) + + persist_state_mock.side_effect = persist_state_side_effect + + upload_lexan_crashes_to_forcey.submit_new_test_cases( + last_seen_test_cases=( + 'gs://test-case-0', + 'gs://test-case-1', + ), + earliest_date_to_check=earliest_date, + forcey=forcey_path, + state_file_path=real_state_file_path, + ) + + test_cases_on_or_after_mock.assert_called_once_with(earliest_date) + self.assertEqual(submit_test_case_mock.call_args_list, [ + unittest.mock.call('gs://test-case-1.1', forcey_path), + unittest.mock.call('gs://test-case-2', forcey_path), + unittest.mock.call('gs://test-case-3', forcey_path), + unittest.mock.call('gs://test-case-4', forcey_path), + ]) + + self.assertEqual(persist_state_calls, [ + ( + ['gs://test-case-0', 'gs://test-case-1', 'gs://test-case-1.1'], + datetime.date(2020, 1, 1), + ), + ( + [ + 'gs://test-case-0', + 'gs://test-case-1', + 'gs://test-case-1.1', + 'gs://test-case-2', + ], + datetime.date(2020, 1, 2), + ), + ( + [ + 'gs://test-case-0', + 'gs://test-case-1', + 'gs://test-case-1.1', + 'gs://test-case-2', + 'gs://test-case-3', + ], + datetime.date(2020, 1, 2), + ), + ( + [ + 'gs://test-case-0', + 'gs://test-case-1', + 'gs://test-case-1.1', + 'gs://test-case-2', + 'gs://test-case-3', + 'gs://test-case-4', + ], + datetime.date(2020, 1, 4), + ), + ( + [ + 'gs://test-case-1', + 'gs://test-case-1.1', + 'gs://test-case-2', + 'gs://test-case-3', + 'gs://test-case-4', + ], + datetime.date(2020, 1, 4), + ), + ]) + + +if __name__ == '__main__': + unittest.main() -- cgit v1.2.3 From fff1c261e1246a7c8b84cca740339c02336a930c Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Wed, 7 Oct 2020 09:59:40 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R87-13502.0-1601891298 Update chromeos-kernel-4_4 to R87-13502.0-1601890528 Update chromeos-kernel-4_14 to R87-13502.0-1601890521 Update chromeos-kernel-4_19 to R87-13502.0-1601890982 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I7a451319f85a7d9f0d4dc7635be5e6b63f4f4ba1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2457366 Tested-by: Denis Nikitin Reviewed-by: Tiancong Wang --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index ea0237d4..e6db7d82 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R87-13482.0-1601286522" + "name": "R87-13502.0-1601891298" }, "chromeos-kernel-4_4": { - "name": "R87-13482.0-1601285703" + "name": "R87-13502.0-1601890528" }, "chromeos-kernel-4_14": { - "name": "R87-13482.0-1601285982" + "name": "R87-13502.0-1601890521" }, "chromeos-kernel-4_19": { - "name": "R87-13482.0-1601286143" + "name": "R87-13502.0-1601890982" } } -- cgit v1.2.3 From 44e5787e5c98615899e512462491089e5c4dfb00 Mon Sep 17 00:00:00 2001 From: Tiancong Wang Date: Thu, 8 Oct 2020 10:17:13 -0700 Subject: rust_tools: Fix the tool using real Rust uprev experiences. Changes include bugs fixes, support running clean before compile with ebuild command, and upload all tarballs (not just rustc). BUG=chromium:1112551 TEST=unittest Change-Id: I83a6845ba01590ea1319c90ebb427fb48c3da773 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462042 Reviewed-by: Bob Haarman Reviewed-by: George Burgess Commit-Queue: Tiancong Wang Tested-by: Tiancong Wang --- rust_tools/rust_uprev.py | 59 +++++++++++++++++++++++++++++++++---------- rust_tools/rust_uprev_test.py | 30 +++++++++++++++++++--- 2 files changed, 71 insertions(+), 18 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index 4ff92109..db907149 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -306,7 +306,6 @@ def update_ebuild(ebuild_file: str, stage0_info: Tuple[str, str, str]) -> None: 'Rust ebuild file has STAGE0_DATE, STAGE0_VERSION, STAGE0_VERSION_CARGO ' 'updated to %s, %s, %s respectively', stage0_date, stage0_rustc, stage0_cargo) - return ebuild_file def flip_mirror_in_ebuild(ebuild_file: str, add: bool) -> None: @@ -330,18 +329,18 @@ def flip_mirror_in_ebuild(ebuild_file: str, add: bool) -> None: f.write(new_contents) -def rust_ebuild_command(command: str, sudo: bool = False) -> None: +def rust_ebuild_actions(actions: List[str], sudo: bool = False) -> None: ebuild_path_inchroot = get_command_output(['equery', 'w', 'rust']) - cmd = ['ebuild', ebuild_path_inchroot, command] + cmd = ['ebuild', ebuild_path_inchroot] + actions if sudo: cmd = ['sudo'] + cmd - subprocess.check_call(cmd, stderr=subprocess.STDOUT) + subprocess.check_call(cmd) def update_manifest(ebuild_file: str) -> None: logging.info('Added "mirror" to RESTRICT to Rust ebuild') flip_mirror_in_ebuild(ebuild_file, add=True) - rust_ebuild_command('manifest') + rust_ebuild_actions(['manifest']) logging.info('Removed "mirror" to RESTRICT from Rust ebuild') flip_mirror_in_ebuild(ebuild_file, add=False) @@ -381,10 +380,10 @@ def update_virtual_rust(template_version: RustVersion, cwd=virtual_rust_dir) -def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: - tarfile_name = f'rustc-{rust_version}-src.tar.gz' - rust_src = f'https://static.rust-lang.org/dist/{tarfile_name}' - logging.info('Downloading Rust from %s', rust_src) +def upload_single_tarball(rust_url: str, tarfile_name: str, + tempdir: str) -> None: + rust_src = f'{rust_url}/{tarfile_name}' + logging.info('Downloading Rust artifact from %s', rust_src) gsutil_location = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' # Download Rust's source @@ -417,6 +416,36 @@ def upload_to_localmirror(tempdir: str, rust_version: RustVersion) -> None: ['gsutil', 'cp', '-n', '-a', 'public-read', rust_file, gsutil_location]) +def upload_to_localmirror(tempdir: str, rust_version: RustVersion, + stage0_info: Tuple[str, str, str]) -> None: + stage0_date, stage0_rustc, stage0_cargo = stage0_info + rust_url = 'https://static.rust-lang.org/dist' + # Upload rustc source + upload_single_tarball( + rust_url, + f'rustc-{rust_version}-src.tar.gz', + tempdir, + ) + # Upload stage0 toolchain + upload_single_tarball( + f'{rust_url}/{stage0_date}', + f'rust-std-{stage0_rustc}-x86_64-unknown-linux-gnu.tar.gz', + tempdir, + ) + # Upload stage0 source + upload_single_tarball( + rust_url, + f'rustc-{stage0_rustc}-x86_64-unknown-linux-gnu.tar.gz', + tempdir, + ) + # Upload stage0 cargo + upload_single_tarball( + rust_url, + f'cargo-{stage0_cargo}-x86_64-unknown-linux-gnu.tar.gz', + tempdir, + ) + + def perform_step(state_file: pathlib.Path, tmp_state_file: pathlib.Path, completed_steps: Dict[str, Any], @@ -463,11 +492,12 @@ def create_rust_uprev(rust_version: RustVersion, run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: run_step('upload_to_localmirror', lambda: upload_to_localmirror( - tempdir, rust_version)) - run_step('update manifest', lambda: update_manifest(ebuild_file)) + tempdir, rust_version, stage0_info)) + run_step('update manifest to add new version', lambda: update_manifest( + ebuild_file)) if not skip_compile: - run_step('compile rust', lambda: rust_ebuild_command('compile')) - run_step('merge rust', lambda: rust_ebuild_command('merge', sudo=True)) + run_step('compile rust', lambda: rust_ebuild_actions(['clean', 'compile'])) + run_step('merge rust', lambda: rust_ebuild_actions(['merge'], sudo=True)) run_step('insert version into rust packages', lambda: update_rust_packages( rust_version, add=True)) run_step('upgrade virtual/rust', lambda: update_virtual_rust( @@ -501,7 +531,8 @@ def remove_rust_uprev(rust_version: Optional[RustVersion], run_step('remove ebuild', lambda: remove_files( f'rust-{delete_version}.ebuild', RUST_PATH)) ebuild_file = get_command_output(['equery', 'w', 'rust']) - run_step('update manifest', lambda: update_manifest(ebuild_file)) + run_step('update manifest to delete old version', lambda: update_manifest( + ebuild_file)) run_step('remove version from rust packages', lambda: update_rust_packages( delete_version, add=False)) run_step( diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index a28c551e..c2f071f2 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -180,11 +180,11 @@ class UpdateManifestTest(unittest.TestCase): expect_write=False) @mock.patch.object(rust_uprev, 'flip_mirror_in_ebuild') - @mock.patch.object(rust_uprev, 'rust_ebuild_command') + @mock.patch.object(rust_uprev, 'rust_ebuild_actions') def test_update_manifest(self, mock_run, mock_flip): ebuild_file = '/path/to/rust/rust-1.1.1.ebuild' rust_uprev.update_manifest(ebuild_file) - mock_run.assert_called_once_with('manifest') + mock_run.assert_called_once_with(['manifest']) mock_flip.assert_has_calls( [mock.call(ebuild_file, add=True), mock.call(ebuild_file, add=False)]) @@ -231,6 +231,7 @@ class UploadToLocalmirrorTests(unittest.TestCase): def setUp(self): self.tempdir = '/tmp/any/dir' self.new_version = rust_uprev.RustVersion(1, 3, 5) + self.rust_url = 'https://static.rust-lang.org/dist' self.tarfile_name = f'rustc-{self.new_version}-src.tar.gz' self.rust_src = f'https://static.rust-lang.org/dist/{self.tarfile_name}' self.gsurl = f'gs://chromeos-localmirror/distfiles/{self.tarfile_name}' @@ -241,7 +242,8 @@ class UploadToLocalmirrorTests(unittest.TestCase): @mock.patch.object(subprocess, 'check_output') @mock.patch.object(subprocess, 'run') def test_pass_without_retry(self, mock_run, mock_output, mock_call): - rust_uprev.upload_to_localmirror(self.tempdir, self.new_version) + rust_uprev.upload_single_tarball(self.rust_url, self.tarfile_name, + self.tempdir) mock_output.assert_called_once_with( ['gpg', '--verify', self.sig_file, self.rust_file], encoding='utf-8', @@ -264,7 +266,8 @@ class UploadToLocalmirrorTests(unittest.TestCase): mock_check.side_effect = subprocess.CalledProcessError( returncode=2, cmd=None, output="gpg: Can't check signature") mock_output.return_value = 'some_gpg_keys' - rust_uprev.upload_to_localmirror(self.tempdir, self.new_version) + rust_uprev.upload_single_tarball(self.rust_url, self.tarfile_name, + self.tempdir) mock_check.assert_called_once_with( ['gpg', '--verify', self.sig_file, self.rust_file], encoding='utf-8', @@ -285,6 +288,25 @@ class UploadToLocalmirrorTests(unittest.TestCase): ]) ]) + @mock.patch.object(rust_uprev, 'upload_single_tarball') + def test_upload_to_mirror(self, mock_upload): + stage0_info = '2020-01-01', '1.1.1', '0.1.0' + rust_uprev.upload_to_localmirror(self.tempdir, self.new_version, + stage0_info) + mock_upload.assert_has_calls([ + mock.call(self.rust_url, f'rustc-{self.new_version}-src.tar.gz', + self.tempdir), + mock.call(f'{self.rust_url}/{stage0_info[0]}', + f'rust-std-{stage0_info[1]}-x86_64-unknown-linux-gnu.tar.gz', + self.tempdir), + mock.call(self.rust_url, + f'rustc-{stage0_info[1]}-x86_64-unknown-linux-gnu.tar.gz', + self.tempdir), + mock.call(self.rust_url, + f'cargo-{stage0_info[2]}-x86_64-unknown-linux-gnu.tar.gz', + self.tempdir), + ]) + class RustUprevOtherStagesTests(unittest.TestCase): """Tests for other steps in rust_uprev""" -- cgit v1.2.3 From 7624e2dace1eddb857ba092d4db07ade86891165 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 11:18:36 -0700 Subject: llvm_tools: use gsutil.py instead of gsutil chrotomation.mtv has gsutil.py from depot_tools, and no pre-installed gsutil. seems easiest to just add another dependency on gsutil.py. BUG=None TEST=Ran on chrotomation Change-Id: I9833c0fb1e11d31b3a4c17375e0f296ff5a83a8e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462043 Reviewed-by: Manoj Gupta Tested-by: George Burgess --- llvm_tools/bisect_clang_crashes.py | 4 ++-- llvm_tools/bisect_clang_crashes_unittest.py | 2 +- llvm_tools/upload_lexan_crashes_to_forcey.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/llvm_tools/bisect_clang_crashes.py b/llvm_tools/bisect_clang_crashes.py index 4d47c4c3..e8ee2ab6 100755 --- a/llvm_tools/bisect_clang_crashes.py +++ b/llvm_tools/bisect_clang_crashes.py @@ -23,7 +23,7 @@ import chroot def get_artifacts(pattern): - results = subprocess.check_output(['gsutil', 'ls', pattern], + results = subprocess.check_output(['gsutil.py', 'ls', pattern], stderr=subprocess.STDOUT, encoding='utf-8') return sorted(l.strip() for l in results.splitlines()) @@ -48,7 +48,7 @@ def submit_crash_to_forcey(forcey: str, temporary_directory: str, dest_dir = os.path.join(temporary_directory, buildbucket_id) dest_file = os.path.join(dest_dir, os.path.basename(url)) logging.info('Downloading and submitting %r...', url) - subprocess.check_output(['gsutil', 'cp', url, dest_file], + subprocess.check_output(['gsutil.py', 'cp', url, dest_file], stderr=subprocess.STDOUT) subprocess.check_output(['tar', '-xJf', dest_file], cwd=dest_dir) for src, script in get_crash_reproducers(dest_dir): diff --git a/llvm_tools/bisect_clang_crashes_unittest.py b/llvm_tools/bisect_clang_crashes_unittest.py index 66923ffc..c9143450 100755 --- a/llvm_tools/bisect_clang_crashes_unittest.py +++ b/llvm_tools/bisect_clang_crashes_unittest.py @@ -40,7 +40,7 @@ class Test(unittest.TestCase): mock_gsutil_ls.return_value = 'artifact1\nartifact2\nartifact3' results = bisect_clang_crashes.get_artifacts(pattern) self.assertEqual(results, ['artifact1', 'artifact2', 'artifact3']) - mock_gsutil_ls.assert_called_once_with(['gsutil', 'ls', pattern], + mock_gsutil_ls.assert_called_once_with(['gsutil.py', 'ls', pattern], stderr=subprocess.STDOUT, encoding='utf-8') diff --git a/llvm_tools/upload_lexan_crashes_to_forcey.py b/llvm_tools/upload_lexan_crashes_to_forcey.py index 9cf0c086..216511fc 100755 --- a/llvm_tools/upload_lexan_crashes_to_forcey.py +++ b/llvm_tools/upload_lexan_crashes_to_forcey.py @@ -24,7 +24,7 @@ gsurl_base = 'gs://chrome-clang-crash-reports/v1' def gsutil_ls(loc: str) -> List[str]: - results = subprocess.run(['gsutil', 'ls', loc], + results = subprocess.run(['gsutil.py', 'ls', loc], stdout=subprocess.PIPE, check=True, encoding='utf-8') @@ -107,7 +107,7 @@ def submit_test_case(gs_url: str, cr_tool: str) -> None: with temp_dir() as tempdir: target_name = 'test_case' + suffix target = os.path.join(tempdir, target_name) - subprocess.run(['gsutil', 'cp', gs_url, target], check=True) + subprocess.run(['gsutil.py', 'cp', gs_url, target], check=True) subprocess.run(['tar', 'xaf', target_name], check=True, cwd=tempdir) os.unlink(target) -- cgit v1.2.3 From a874714a7352b770993f451b2ecb4e5d0ab58ac8 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 12:34:34 -0700 Subject: rust_uprev: support -rN ebuilds rust_uprev currently doesn't fully support ebuilds with -r123 after Rust's version number. This CL aims to help us support those better. BUG=chromium:1136579, chromium:1112551 TEST=Ran the script Change-Id: I22a09ec3f5d074be547783e4cb9b702d4aad0bd2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462925 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_uprev.py | 83 +++++++++++++++++++++++++++---------------- rust_tools/rust_uprev_test.py | 64 ++++++++++++++++----------------- 2 files changed, 85 insertions(+), 62 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index db907149..b4fcaf18 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -71,6 +71,7 @@ class RustVersion(NamedTuple): r'(?P\d+)\.' r'(?P\d+)\.' r'(?P\d+)' + r'(:?-r\d+)?' r'\.ebuild$') m = input_re.match(ebuild_name) assert m, f'failed to parse {ebuild_name!r}' @@ -226,28 +227,25 @@ def parse_stage0_file(new_version: RustVersion) -> Tuple[str, str, str]: return stage0_date, stage0_rustc, stage0_cargo -def prepare_uprev_from_json(json_input: Any) -> RustVersion: - return RustVersion(*json_input) - - -def prepare_uprev(rust_version: RustVersion, - template: Optional[RustVersion]) -> RustVersion: +def prepare_uprev(rust_version: RustVersion, template: Optional[RustVersion] + ) -> Optional[Tuple[RustVersion, str]]: if template is None: ebuild_path = get_command_output(['equery', 'w', 'rust']) ebuild_name = os.path.basename(ebuild_path) - template_version = RustVersion.parse(ebuild_name) + template_version = RustVersion.parse_from_ebuild(ebuild_name) else: - if not os.path.exists(os.path.join(RUST_PATH, f'rust-{template}.ebuild')): - raise ValueError(f'Template ebuild file {template} does not exist') + ebuild_path = find_ebuild_for_rust_version(template) template_version = template + if rust_version <= template_version: logging.info( 'Requested version %s is not newer than the template version %s.', rust_version, template_version) return None - logging.info('Template Rust version is %s', template_version) - return template_version + logging.info('Template Rust version is %s (ebuild: %r)', template_version, + ebuild_path) + return template_version, ebuild_path def copy_patches(template_version: RustVersion, @@ -267,11 +265,9 @@ def copy_patches(template_version: RustVersion, cwd=RUST_PATH) -def create_ebuild(template_version: RustVersion, - new_version: RustVersion) -> str: - shutil.copyfile( - os.path.join(RUST_PATH, f'rust-{template_version}.ebuild'), - os.path.join(RUST_PATH, f'rust-{new_version}.ebuild')) +def create_ebuild(template_ebuild: str, new_version: RustVersion) -> str: + shutil.copyfile(template_ebuild, + os.path.join(RUST_PATH, f'rust-{new_version}.ebuild')) subprocess.check_call(['git', 'add', f'rust-{new_version}.ebuild'], cwd=RUST_PATH) return os.path.join(RUST_PATH, f'rust-{new_version}.ebuild') @@ -473,22 +469,29 @@ def perform_step(state_file: pathlib.Path, return val +def prepare_uprev_from_json(obj: Any) -> Optional[Tuple[RustVersion, str]]: + if not obj: + return None + version, ebuild_path = obj + return RustVersion(*version), ebuild_path + + def create_rust_uprev(rust_version: RustVersion, - template: Optional[RustVersion], skip_compile: bool, - run_step: Callable[[], T]) -> None: + maybe_template_version: Optional[RustVersion], + skip_compile: bool, run_step: Callable[[], T]) -> None: stage0_info = run_step( 'parse stage0 file', lambda: parse_stage0_file(rust_version)) - template_version = run_step( + template_version, template_ebuild = run_step( 'prepare uprev', - lambda: prepare_uprev(rust_version, template), + lambda: prepare_uprev(rust_version, maybe_template_version), result_from_json=prepare_uprev_from_json, ) - if template_version is None: + if template_ebuild is None: return run_step('copy patches', lambda: copy_patches(template_version, rust_version)) ebuild_file = run_step( - 'create ebuild', lambda: create_ebuild(template_version, rust_version)) + 'create ebuild', lambda: create_ebuild(template_ebuild, rust_version)) run_step('update ebuild', lambda: update_ebuild(ebuild_file, stage0_info)) with tempfile.TemporaryDirectory(dir='/tmp') as tempdir: run_step('upload_to_localmirror', lambda: upload_to_localmirror( @@ -504,32 +507,52 @@ def create_rust_uprev(rust_version: RustVersion, template_version, rust_version)) -def find_oldest_rust_version_inchroot() -> RustVersion: - rust_versions = [ - RustVersion.parse(x) for x in os.listdir(RUST_PATH) if '.ebuild' in x - ] +def find_rust_versions_in_chroot() -> List[Tuple[RustVersion, str]]: + return [(RustVersion.parse_from_ebuild(x), os.path.join(RUST_PATH, x)) + for x in os.listdir(RUST_PATH) + if x.endswith('.ebuild')] + +def find_oldest_rust_version_in_chroot() -> Tuple[RustVersion, str]: + rust_versions = find_rust_versions_in_chroot() if len(rust_versions) <= 1: raise RuntimeError('Expect to find more than one Rust versions') return min(rust_versions) +def find_ebuild_for_rust_version(version: RustVersion) -> str: + rust_ebuilds = [ + ebuild for x, ebuild in find_rust_versions_in_chroot() if x == version + ] + if not rust_ebuilds: + raise ValueError(f'No Rust ebuilds found matching {version}') + if len(rust_ebuilds) > 1: + raise ValueError(f'Multiple Rust ebuilds found matching {version}: ' + f'{rust_ebuilds}') + return rust_ebuilds[0] + + def remove_files(filename: str, path: str) -> None: subprocess.check_call(['git', 'rm', filename], cwd=path) def remove_rust_uprev(rust_version: Optional[RustVersion], run_step: Callable[[], T]) -> None: - delete_version = run_step( + + def find_desired_rust_version(): + if rust_version: + return rust_version, find_ebuild_for_rust_version(rust_version) + return find_oldest_rust_version_in_chroot() + + delete_version, delete_ebuild = run_step( 'find rust version to delete', - lambda: rust_version or find_oldest_rust_version_inchroot(), + find_desired_rust_version, result_from_json=prepare_uprev_from_json, ) run_step( 'remove patches', lambda: remove_files( f'files/rust-{delete_version}-*.patch', RUST_PATH)) - run_step('remove ebuild', lambda: remove_files( - f'rust-{delete_version}.ebuild', RUST_PATH)) + run_step('remove ebuild', lambda: remove_files(delete_ebuild, RUST_PATH)) ebuild_file = get_command_output(['equery', 'w', 'rust']) run_step('update manifest to delete old version', lambda: update_manifest( ebuild_file)) diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index c2f071f2..d7efdce2 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -35,6 +35,9 @@ class RustVersionTest(unittest.TestCase): actual = rust_uprev.RustVersion.parse_from_ebuild('rust-1.2.3.ebuild') self.assertEqual(expected, actual) + actual = rust_uprev.RustVersion.parse_from_ebuild('rust-1.2.3-r1.ebuild') + self.assertEqual(expected, actual) + def test_parse_fail(self): with self.assertRaises(AssertionError) as context: rust_uprev.RustVersion.parse('invalid-rust-1.2.3') @@ -49,32 +52,25 @@ class PrepareUprevTest(unittest.TestCase): self.version_old = rust_uprev.RustVersion(1, 2, 3) self.version_new = rust_uprev.RustVersion(1, 3, 5) - @mock.patch.object(os.path, 'exists') + @mock.patch.object( + rust_uprev, + 'find_ebuild_for_rust_version', + return_value='/path/to/ebuild') @mock.patch.object(rust_uprev, 'get_command_output') - def test_success_with_template(self, mock_command, mock_exists): - mock_exists.return_value = True - expected = self.version_old + def test_success_with_template(self, mock_command, mock_find_ebuild): + expected = (self.version_old, '/path/to/ebuild') actual = rust_uprev.prepare_uprev( rust_version=self.version_new, template=self.version_old) self.assertEqual(expected, actual) mock_command.assert_not_called() - @mock.patch.object(os.path, 'exists') - @mock.patch.object(rust_uprev, 'get_command_output') - def test_fail_with_template_not_exist(self, mock_command, mock_exists): - mock_exists.return_value = False - with self.assertRaises(ValueError) as context: - rust_uprev.prepare_uprev( - rust_version=self.version_new, template=self.version_old) - self.assertEqual(f'Template ebuild file {self.version_old} does not exist', - str(context.exception)) - mock_command.assert_not_called() - - @mock.patch.object(os.path, 'exists') + @mock.patch.object( + rust_uprev, + 'find_ebuild_for_rust_version', + return_value='/path/to/ebuild') @mock.patch.object(rust_uprev, 'get_command_output') def test_return_none_with_template_larger_than_input(self, mock_command, - mock_exists): - mock_exists.return_value = True + _mock_find_ebuild): ret = rust_uprev.prepare_uprev( rust_version=self.version_old, template=self.version_new) self.assertIsNone(ret) @@ -83,8 +79,9 @@ class PrepareUprevTest(unittest.TestCase): @mock.patch.object(os.path, 'exists') @mock.patch.object(rust_uprev, 'get_command_output') def test_success_without_template(self, mock_command, mock_exists): - mock_command.return_value = f'/path/to/rust/rust-{self.version_old}.ebuild' - expected = self.version_old + rust_ebuild_path = f'/path/to/rust/rust-{self.version_old}-r3.ebuild' + mock_command.return_value = rust_ebuild_path + expected = (self.version_old, rust_ebuild_path) actual = rust_uprev.prepare_uprev( rust_version=self.version_new, template=None) self.assertEqual(expected, actual) @@ -101,8 +98,9 @@ class PrepareUprevTest(unittest.TestCase): mock_exists.assert_not_called() def test_prepare_uprev_from_json(self): - json_result = list(self.version_new) - expected = self.version_new + ebuild_path = '/path/to/the/ebuild' + json_result = (list(self.version_new), ebuild_path) + expected = (self.version_new, ebuild_path) actual = rust_uprev.prepare_uprev_from_json(json_result) self.assertEqual(expected, actual) @@ -368,10 +366,10 @@ class RustUprevOtherStagesTests(unittest.TestCase): @mock.patch.object(shutil, 'copyfile') @mock.patch.object(subprocess, 'check_call') def test_create_ebuild(self, mock_call, mock_copy): - rust_uprev.create_ebuild(self.current_version, self.new_version) + template_ebuild = f'/path/to/rust-{self.current_version}-r2.ebuild' + rust_uprev.create_ebuild(template_ebuild, self.new_version) mock_copy.assert_called_once_with( - os.path.join(rust_uprev.RUST_PATH, - f'rust-{self.current_version}.ebuild'), + template_ebuild, os.path.join(rust_uprev.RUST_PATH, f'rust-{self.new_version}.ebuild')) mock_call.assert_called_once_with( ['git', 'add', f'rust-{self.new_version}.ebuild'], @@ -391,21 +389,23 @@ class RustUprevOtherStagesTests(unittest.TestCase): mock_exists.assert_called_once_with(virtual_rust_dir) @mock.patch.object(os, 'listdir') - def test_find_oldest_rust_version_inchroot_pass(self, mock_ls): + def test_find_oldest_rust_version_in_chroot_pass(self, mock_ls): + oldest_version_name = f'rust-{self.old_version}.ebuild' mock_ls.return_value = [ - f'rust-{self.old_version}.ebuild', - f'rust-{self.current_version}.ebuild', f'rust-{self.new_version}.ebuild' + oldest_version_name, f'rust-{self.current_version}.ebuild', + f'rust-{self.new_version}.ebuild' ] - actual = rust_uprev.find_oldest_rust_version_inchroot() - expected = self.old_version + actual = rust_uprev.find_oldest_rust_version_in_chroot() + expected = (self.old_version, + os.path.join(rust_uprev.RUST_PATH, oldest_version_name)) self.assertEqual(expected, actual) @mock.patch.object(os, 'listdir') - def test_find_oldest_rust_version_inchroot_fail_with_only_one_ebuild( + def test_find_oldest_rust_version_in_chroot_fail_with_only_one_ebuild( self, mock_ls): mock_ls.return_value = [f'rust-{self.new_version}.ebuild'] with self.assertRaises(RuntimeError) as context: - rust_uprev.find_oldest_rust_version_inchroot() + rust_uprev.find_oldest_rust_version_in_chroot() self.assertEqual('Expect to find more than one Rust versions', str(context.exception)) -- cgit v1.2.3 From 6868239551ebbefe0a87f0ff8565917c4f2859f5 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 12:44:45 -0700 Subject: rust_uprev: check for files in gs:// before downloading them I had to `--reset` a few times; downloading these files just to not upload them took a bit, and wasn't useful. This CL adds a check so we don't do that in the future. BUG=chromium:1136579, chromium:1112551 TEST=Ran the script Change-Id: I03f9f21cc07a7b16b540a5be5b4b08e105fc81a5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462926 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_uprev.py | 13 ++++++++++++- rust_tools/rust_uprev_test.py | 18 ++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index b4fcaf18..1d29556d 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -379,9 +379,20 @@ def update_virtual_rust(template_version: RustVersion, def upload_single_tarball(rust_url: str, tarfile_name: str, tempdir: str) -> None: rust_src = f'{rust_url}/{tarfile_name}' - logging.info('Downloading Rust artifact from %s', rust_src) gsutil_location = f'gs://chromeos-localmirror/distfiles/{tarfile_name}' + missing_file = subprocess.call( + ['gsutil', 'ls', gsutil_location], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + ) + if not missing_file: + logging.info('Rust artifact at %s already exists; skipping download', + gsutil_location) + return + + logging.info('Downloading Rust artifact from %s', rust_src) + # Download Rust's source rust_file = os.path.join(tempdir, tarfile_name) subprocess.check_call(['curl', '-f', '-o', rust_file, rust_src]) diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index d7efdce2..d13ce912 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -236,16 +236,23 @@ class UploadToLocalmirrorTests(unittest.TestCase): self.rust_file = os.path.join(self.tempdir, self.tarfile_name) self.sig_file = os.path.join(self.tempdir, 'rustc_sig.asc') + @mock.patch.object(subprocess, 'call', return_value=1) @mock.patch.object(subprocess, 'check_call') @mock.patch.object(subprocess, 'check_output') @mock.patch.object(subprocess, 'run') - def test_pass_without_retry(self, mock_run, mock_output, mock_call): + def test_pass_without_retry(self, mock_run, mock_output, mock_call, + mock_raw_call): rust_uprev.upload_single_tarball(self.rust_url, self.tarfile_name, self.tempdir) mock_output.assert_called_once_with( ['gpg', '--verify', self.sig_file, self.rust_file], encoding='utf-8', stderr=subprocess.STDOUT) + mock_raw_call.assert_has_calls([ + mock.call(['gsutil', 'ls', self.gsurl], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL) + ]) mock_call.assert_has_calls([ mock.call(['curl', '-f', '-o', self.rust_file, self.rust_src]), mock.call(['curl', '-f', '-o', self.sig_file, f'{self.rust_src}.asc']), @@ -256,11 +263,13 @@ class UploadToLocalmirrorTests(unittest.TestCase): ]) mock_run.assert_not_called() + @mock.patch.object(subprocess, 'call') @mock.patch.object(subprocess, 'check_call') @mock.patch.object(subprocess, 'check_output') @mock.patch.object(subprocess, 'run') @mock.patch.object(rust_uprev, 'get_command_output') - def test_pass_with_retry(self, mock_output, mock_run, mock_check, mock_call): + def test_pass_with_retry(self, mock_output, mock_run, mock_check, mock_call, + mock_raw_call): mock_check.side_effect = subprocess.CalledProcessError( returncode=2, cmd=None, output="gpg: Can't check signature") mock_output.return_value = 'some_gpg_keys' @@ -276,6 +285,11 @@ class UploadToLocalmirrorTests(unittest.TestCase): input='some_gpg_keys', encoding='utf-8', check=True) + mock_raw_call.assert_has_calls([ + mock.call(['gsutil', 'ls', self.gsurl], + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL) + ]) mock_call.assert_has_calls([ mock.call(['curl', '-f', '-o', self.rust_file, self.rust_src]), mock.call(['curl', '-f', '-o', self.sig_file, f'{self.rust_src}.asc']), -- cgit v1.2.3 From 8ecb53f8c692c56f1f824c377fe51a5789616713 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 12:50:27 -0700 Subject: rust_uprev: emerge arm-none-eabi-gcc & do it in parallel arm-none-eabi-gcc isn't mentioned in the list of RUSTC_TARGET_TRIPLES, though it's necessary (we check for it in the ebuild) While I'm in the area, if we're unconditionally emerge'ing all of these anyway, do it in parallel. Doing so makes installation take 1/4 as long. BUG=chromium:1136579, chromium:1112551 TEST=Ran the script Change-Id: I49063487b2e2b2c83e2ef30dd8f8904b13c59f38 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462927 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_uprev.py | 15 +++++++++++++-- rust_tools/rust_uprev_test.py | 13 ++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index 1d29556d..4fdae60f 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -594,12 +594,23 @@ def build_cross_compiler() -> None: m = target_triples_re.search(contents) assert m, 'RUST_TARGET_TRIPLES not found in rust ebuild' target_triples = m.group(1).strip().split('\n') + + compiler_targets_to_install = [ + target.strip() for target in target_triples if 'cros-' in target + ] for target in target_triples: if 'cros-' not in target: continue target = target.strip() - logging.info('Emerging cross compiler %s', target) - subprocess.check_call(['sudo', 'emerge', '-G', f'cross-{target}/gcc']) + + # We also always need arm-none-eabi, though it's not mentioned in + # RUSTC_TARGET_TRIPLES. + compiler_targets_to_install.append('arm-none-eabi') + + logging.info('Emerging cross compilers %s', compiler_targets_to_install) + subprocess.check_call( + ['sudo', 'emerge', '-j', '-G'] + + [f'cross-{target}/gcc' for target in compiler_targets_to_install]) def create_new_commit(rust_version: RustVersion) -> None: diff --git a/rust_tools/rust_uprev_test.py b/rust_tools/rust_uprev_test.py index d13ce912..fc506004 100755 --- a/rust_tools/rust_uprev_test.py +++ b/rust_tools/rust_uprev_test.py @@ -436,8 +436,9 @@ class RustUprevOtherStagesTests(unittest.TestCase): def test_build_cross_compiler(self, mock_call, mock_output): mock_output.return_value = f'rust-{self.new_version}.ebuild' cros_targets = [ - 'x86_64-cros-linux-gnu', 'armv7a-cros-linux-gnueabihf', - 'aarch64-cros-linux-gnu' + 'x86_64-cros-linux-gnu', + 'armv7a-cros-linux-gnueabihf', + 'aarch64-cros-linux-gnu', ] all_triples = ['x86_64-pc-linux-gnu'] + cros_targets rust_ebuild = 'RUSTC_TARGET_TRIPLES=(' + '\n\t'.join(all_triples) + ')' @@ -445,11 +446,9 @@ class RustUprevOtherStagesTests(unittest.TestCase): with mock.patch('builtins.open', mock_open): rust_uprev.build_cross_compiler() - emerge_calls = [ - mock.call(['sudo', 'emerge', '-G', f'cross-{x}/gcc']) - for x in cros_targets - ] - mock_call.assert_has_calls(emerge_calls) + mock_call.assert_called_once_with( + ['sudo', 'emerge', '-j', '-G'] + + [f'cross-{x}/gcc' for x in cros_targets + ['arm-none-eabi']]) if __name__ == '__main__': -- cgit v1.2.3 From fd598ff8539e2d99755c52d15159864686092976 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Thu, 8 Oct 2020 19:23:15 -0700 Subject: rust_uprev: emerge rust instead of ebuilding it if `ebuild merge` fails, the build directory might not be in a great state where we can skip recompilation when we try again. emerge'ing is probably what we actually want to do here, since that's representative of what builders and users are going to do when they get the new rust uprev. BUG=chromium:1136579, chromium:1112551 TEST=Ran the script Change-Id: I84f12769e32fada3f858a2889f0ead7555b58256 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2462928 Reviewed-by: Tiancong Wang Tested-by: George Burgess --- rust_tools/rust_uprev.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust_tools/rust_uprev.py b/rust_tools/rust_uprev.py index 4fdae60f..3c0ad012 100755 --- a/rust_tools/rust_uprev.py +++ b/rust_tools/rust_uprev.py @@ -510,8 +510,8 @@ def create_rust_uprev(rust_version: RustVersion, run_step('update manifest to add new version', lambda: update_manifest( ebuild_file)) if not skip_compile: - run_step('compile rust', lambda: rust_ebuild_actions(['clean', 'compile'])) - run_step('merge rust', lambda: rust_ebuild_actions(['merge'], sudo=True)) + run_step('emerge rust', lambda: subprocess.check_call( + ['sudo', 'emerge', 'dev-lang/rust'])) run_step('insert version into rust packages', lambda: update_rust_packages( rust_version, add=True)) run_step('upgrade virtual/rust', lambda: update_virtual_rust( -- cgit v1.2.3 From 2159420ccfca45fe94e5a87483d2889fe323029d Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Fri, 9 Oct 2020 12:32:18 -0700 Subject: llvm_tools: add exist_ok=True to state dir creation we just want to make sure that the state file directory exists here. BUG=None TEST=Ran Change-Id: I563821a357e2863c0a71570cfcb7319401a03778 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2460837 Tested-by: George Burgess Reviewed-by: Manoj Gupta --- llvm_tools/upload_lexan_crashes_to_forcey.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm_tools/upload_lexan_crashes_to_forcey.py b/llvm_tools/upload_lexan_crashes_to_forcey.py index 216511fc..b93f51a7 100755 --- a/llvm_tools/upload_lexan_crashes_to_forcey.py +++ b/llvm_tools/upload_lexan_crashes_to_forcey.py @@ -227,7 +227,7 @@ def main(argv: List[str]): state_file = opts.state_file last_date_str = opts.last_date - os.makedirs(os.path.dirname(state_file), 0o755) + os.makedirs(os.path.dirname(state_file), 0o755, exist_ok=True) if last_date_str is None: with open(state_file, encoding='utf-8') as f: -- cgit v1.2.3 From aac9c23c9414831617739e1271aa9491b04b7e4f Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Fri, 9 Oct 2020 12:02:09 -0700 Subject: toolchain_utils: replace gsutil with gsutil.py Remove dependency on pre-installed gLinux software. gsutil.py comes from depot_tools which is part of chrotomation setup. BUG=None TEST=tested locally on chrotomation.mtv Change-Id: I8fcef35a3c229ec06639a56b02c5751b4cedfc95 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2460835 Reviewed-by: George Burgess Reviewed-by: Manoj Gupta Tested-by: George Burgess --- pgo_tools/monitor_pgo_profiles.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pgo_tools/monitor_pgo_profiles.py b/pgo_tools/monitor_pgo_profiles.py index 86701675..cb41eb88 100755 --- a/pgo_tools/monitor_pgo_profiles.py +++ b/pgo_tools/monitor_pgo_profiles.py @@ -37,7 +37,7 @@ def parse_date(date: str) -> datetime.datetime: def fetch_most_recent_profdata(arch: str) -> ProfdataInfo: result = subprocess.run( [ - 'gsutil', + 'gsutil.py', 'ls', '-l', f'gs://chromeos-toolchain-artifacts/llvm-pgo/{arch}/' -- cgit v1.2.3 From 5672f28e2acdf00721356e67a4de7d03f4d18960 Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Tue, 6 Oct 2020 12:07:42 -0700 Subject: crosperf: refactor chrome src search Replace multiple levels of if/else of the chrome src search with a loop. Add a missing search path .cache/distfiles/chrome-src. Add checks for the Chrome source location and raise RuntimeError if it does not exist. BUG=None TEST=Tested with crosperf and distfiles/target/chrome-src-internal. Change-Id: I66dd7c802a4e80238e4d625586198bdf573621dc Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2453595 Reviewed-by: Manoj Gupta Reviewed-by: Caroline Tice Tested-by: Denis Nikitin Commit-Queue: George Burgess --- crosperf/label.py | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/crosperf/label.py b/crosperf/label.py index b14c4a73..a55d663c 100644 --- a/crosperf/label.py +++ b/crosperf/label.py @@ -72,22 +72,31 @@ class Label(object): self.chromeos_root = chromeos_root if not chrome_src: - self.chrome_src = os.path.join( - self.chromeos_root, '.cache/distfiles/target/chrome-src-internal') - if not os.path.exists(self.chrome_src): - self.chrome_src = os.path.join(self.chromeos_root, - '.cache/distfiles/target/chrome-src') - # Chrome source location has changed and we have to support - # old and new path. - if not os.path.exists(self.chrome_src): - self.chrome_src = os.path.join(self.chromeos_root, - '.cache/distfiles/chrome-src-internal') + # Old and new chroots may have different chrome src locations. + # The path also depends on the chrome build flags. + # Give priority to chrome-src-internal. + chrome_src_rel_paths = [ + '.cache/distfiles/target/chrome-src-internal', + '.cache/distfiles/chrome-src-internal', + '.cache/distfiles/target/chrome-src', + '.cache/distfiles/chrome-src', + ] + for chrome_src_rel_path in chrome_src_rel_paths: + chrome_src_abs_path = os.path.join(self.chromeos_root, + chrome_src_rel_path) + if os.path.exists(chrome_src_abs_path): + chrome_src = chrome_src_abs_path + break + if not chrome_src: + raise RuntimeError('Can not find location of Chrome sources.\n' + f'Checked paths: {chrome_src_rel_paths}') else: - chromeos_src = misc.CanonicalizePath(chrome_src) - if not chromeos_src: + chrome_src = misc.CanonicalizePath(chrome_src) + # Make sure the path exists. + if not os.path.exists(chrome_src): raise RuntimeError("Invalid Chrome src given for label '%s': '%s'." % (name, chrome_src)) - self.chrome_src = chromeos_src + self.chrome_src = chrome_src self._SetupChecksum() -- cgit v1.2.3 From 8373fd4139494c6df36f77bc1547c0eeb805b9cd Mon Sep 17 00:00:00 2001 From: Jian Cai Date: Tue, 13 Oct 2020 15:34:15 -0700 Subject: Revert "compiler_wrapper: enable -mharden-sls=all on aarch64" This reverts commit fb8fd5be362ec7a52dc3be33859d31b0553c1038. Enabling the option caused 4.4 based arm64 devices failed to boot. Disable this option until the issue is fixed. BUG=chromium:1096302 TEST=Verified locally. Change-Id: I02d5a72423f3cf0097edff7ace85b23caf3ff554 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2469305 Reviewed-by: Manoj Gupta Tested-by: Jian Cai --- compiler_wrapper/aarch64_flags.go | 11 ----------- compiler_wrapper/aarch64_flags_test.go | 19 ------------------- compiler_wrapper/compiler_wrapper.go | 1 - compiler_wrapper/testutil_test.go | 1 - 4 files changed, 32 deletions(-) delete mode 100644 compiler_wrapper/aarch64_flags.go delete mode 100644 compiler_wrapper/aarch64_flags_test.go diff --git a/compiler_wrapper/aarch64_flags.go b/compiler_wrapper/aarch64_flags.go deleted file mode 100644 index a0d05523..00000000 --- a/compiler_wrapper/aarch64_flags.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright 2020 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 - -func processAarch64Flags(builder *commandBuilder) { - if builder.target.arch == "aarch64" { - builder.addPreUserArgs("-mharden-sls=all") - } -} diff --git a/compiler_wrapper/aarch64_flags_test.go b/compiler_wrapper/aarch64_flags_test.go deleted file mode 100644 index 0cb692e2..00000000 --- a/compiler_wrapper/aarch64_flags_test.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2020 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 ( - "testing" -) - -func TestAddSlsFlagOnAarch64(t *testing.T) { - withTestContext(t, func(ctx *testContext) { - cmd := ctx.must(callCompiler(ctx, ctx.cfg, - ctx.newCommand(clangAarch64, mainCc))) - if err := verifyArgOrder(cmd, "-mharden-sls=all", mainCc); err != nil { - t.Error(err) - } - }) -} diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index 49ee0eb0..aa52dfdc 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -187,7 +187,6 @@ func prepareClangCommand(builder *commandBuilder) (err error) { } builder.addPostUserArgs(builder.cfg.clangPostFlags...) calcCommonPreUserArgs(builder) - processAarch64Flags(builder) return processClangFlags(builder) } diff --git a/compiler_wrapper/testutil_test.go b/compiler_wrapper/testutil_test.go index 8e2377e7..21b7169d 100644 --- a/compiler_wrapper/testutil_test.go +++ b/compiler_wrapper/testutil_test.go @@ -22,7 +22,6 @@ const ( clangAndroid = "./clang" clangTidyAndroid = "./clang-tidy" clangX86_64 = "./x86_64-cros-linux-gnu-clang" - clangAarch64 = "./aarch64-cros-linux-gnu-clang" gccX86_64 = "./x86_64-cros-linux-gnu-gcc" gccX86_64Eabi = "./x86_64-cros-eabi-gcc" gccArmV7 = "./armv7m-cros-linux-gnu-gcc" -- cgit v1.2.3 From 356e7cf8f3d2c61a630a97e335efa3d892a7c89c Mon Sep 17 00:00:00 2001 From: Denis Nikitin Date: Thu, 15 Oct 2020 11:14:37 -0700 Subject: afdo_metadata: Publish the new kernel profiles Update chromeos-kernel-3_18 to R88-13502.0-1602497202 Update chromeos-kernel-4_4 to R88-13505.4-1602496005 Update chromeos-kernel-4_14 to R88-13505.4-1602496823 Update chromeos-kernel-4_19 to R88-13502.0-1602496205 BUG=None TEST=Verified in kernel-release-afdo-verify-orchestrator Change-Id: I7f27f99e846e97e4ce04578a3ab15563ab6ebe7f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2476656 Reviewed-by: Tiancong Wang Tested-by: Denis Nikitin --- afdo_metadata/kernel_afdo.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/afdo_metadata/kernel_afdo.json b/afdo_metadata/kernel_afdo.json index e6db7d82..2f4ead4a 100644 --- a/afdo_metadata/kernel_afdo.json +++ b/afdo_metadata/kernel_afdo.json @@ -1,14 +1,14 @@ { "chromeos-kernel-3_18": { - "name": "R87-13502.0-1601891298" + "name": "R88-13502.0-1602497202" }, "chromeos-kernel-4_4": { - "name": "R87-13502.0-1601890528" + "name": "R88-13505.4-1602496005" }, "chromeos-kernel-4_14": { - "name": "R87-13502.0-1601890521" + "name": "R88-13505.4-1602496823" }, "chromeos-kernel-4_19": { - "name": "R87-13502.0-1601890982" + "name": "R88-13502.0-1602496205" } } -- cgit v1.2.3 From efb75cffd4a6bf629a4a374f2c1039dc37750dca Mon Sep 17 00:00:00 2001 From: Pirama Arumuga Nainar Date: Wed, 21 Oct 2020 13:57:01 -0700 Subject: Handle clangPostFlags for Android BUG=None TEST=None Change-Id: I55bf76106eb1635c0bb4b936eaf3b96eef1dbb44 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2490653 Reviewed-by: George Burgess Tested-by: George Burgess --- compiler_wrapper/compiler_wrapper.go | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go index aa52dfdc..2b9459e4 100644 --- a/compiler_wrapper/compiler_wrapper.go +++ b/compiler_wrapper/compiler_wrapper.go @@ -80,6 +80,7 @@ func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int case clangType: mainBuilder.addPreUserArgs(mainBuilder.cfg.clangFlags...) mainBuilder.addPreUserArgs(mainBuilder.cfg.commonFlags...) + mainBuilder.addPostUserArgs(mainBuilder.cfg.clangPostFlags...) if _, err := processGomaCccFlags(mainBuilder); err != nil { return 0, err } -- cgit v1.2.3