aboutsummaryrefslogtreecommitdiff
path: root/compiler_wrapper/disable_werror_flag.go
diff options
context:
space:
mode:
authorPirama Arumuga Nainar <pirama@google.com>2020-02-26 17:59:58 -0800
committerGeorge Burgess <gbiv@chromium.org>2020-02-28 17:33:01 +0000
commitc3bb0cbac10890324c5004fd6d7819102a2e6995 (patch)
treefde36cf96f66ded8d3cacc10de9f97bceeb323d8 /compiler_wrapper/disable_werror_flag.go
parentee7e22c6435048f1b37db4d944e3b6f4c65a77e5 (diff)
downloadtoolchain-utils-c3bb0cbac10890324c5004fd6d7819102a2e6995.tar.gz
When double-build-with-Wno-error, add -Wno-error=foo for -Werror=foo
This will gracefully handle cases where a warning enforced with -Werror got stricter in upstream. This change also needs updates to golden testdata. No additional tests added since this is covered by existing tests. Originally reviewed in https://android-review.googlesource.com/c/1244796. BUG=b:149836702 TEST=go test Change-Id: I94624deb258b15e131387377b99bfb1747dca1a1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2079548 Tested-by: Pirama Arumuga Nainar <pirama@google.com> Reviewed-by: George Burgess <gbiv@chromium.org>
Diffstat (limited to 'compiler_wrapper/disable_werror_flag.go')
-rw-r--r--compiler_wrapper/disable_werror_flag.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/compiler_wrapper/disable_werror_flag.go b/compiler_wrapper/disable_werror_flag.go
index 406fdef9..0d68d560 100644
--- a/compiler_wrapper/disable_werror_flag.go
+++ b/compiler_wrapper/disable_werror_flag.go
@@ -31,6 +31,16 @@ func getNewWarningsDir(env env, cfg *config) (dirName string, ok bool) {
return "", false
}
+func disableWerrorFlags(originalArgs []string) []string {
+ noErrors := []string{"-Wno-error"}
+ for _, flag := range originalArgs {
+ if strings.HasPrefix(flag, "-Werror=") {
+ noErrors = append(noErrors, strings.Replace(flag, "-Werror", "-Wno-error", 1))
+ }
+ }
+ return noErrors
+}
+
func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, originalCmd *command) (exitCode int, err error) {
originalStdoutBuffer := &bytes.Buffer{}
originalStderrBuffer := &bytes.Buffer{}
@@ -57,7 +67,7 @@ func doubleBuildWithWNoError(env env, cfg *config, newWarningsDir string, origin
retryStderrBuffer := &bytes.Buffer{}
retryCommand := &command{
Path: originalCmd.Path,
- Args: append(originalCmd.Args, "-Wno-error"),
+ Args: append(originalCmd.Args, disableWerrorFlags(originalCmd.Args)...),
EnvUpdates: originalCmd.EnvUpdates,
}
retryExitCode, err := wrapSubprocessErrorWithSourceLoc(retryCommand,