From: Ian Lance Taylor Date: Fri, 20 Oct 2017 16:51:45 +0000 (-0700) Subject: cmd/go: look for "unknown" when checking supported compiler flags X-Git-Tag: go1.10beta1~651 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a607b3b437291db4699c48f5b86ac04b38ff5e8a;p=gostls13.git cmd/go: look for "unknown" when checking supported compiler flags Where GCC says "unrecognized command line option", clang says "unknown argument". This distinction usually doesn't matter because the compiler will also exit with a non-zero status, but clang 3.4 reportedly exits with a zero status after reporting an unknown argument. Change-Id: Ieb69ea352a8de0cd4171a1c26708dfe523421cfa Reviewed-on: https://go-review.googlesource.com/72151 Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot Reviewed-by: Damien Neil --- diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go index 11e4632815..c7127f6ec8 100644 --- a/src/cmd/go/internal/work/build.go +++ b/src/cmd/go/internal/work/build.go @@ -3581,7 +3581,9 @@ func (b *Builder) gccSupportsFlag(compiler []string, flag string) bool { cmd.Dir = b.WorkDir cmd.Env = base.MergeEnvLists([]string{"LC_ALL=C"}, base.EnvForDir(cmd.Dir, os.Environ())) out, err := cmd.CombinedOutput() - supported := err == nil && !bytes.Contains(out, []byte("unrecognized")) + // GCC says "unrecognized command line option". + // clang says "unknown argument". + supported := err == nil && !bytes.Contains(out, []byte("unrecognized")) && !bytes.Contains(out, []byte("unknown")) b.flagCache[key] = supported return supported }