diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index abff432ffb..e37352bba9 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -5177,7 +5177,7 @@ func TestGcflagsPatterns(t *testing.T) { tg.setenv("GOPATH", "") tg.setenv("GOCACHE", "off") - tg.run("build", "-v", "-gcflags=-e", "fmt") + tg.run("build", "-v", "-gcflags= \t\r\n -e", "fmt") tg.grepStderr("fmt", "did not rebuild fmt") tg.grepStderrNot("reflect", "incorrectly rebuilt reflect") @@ -5186,7 +5186,7 @@ func TestGcflagsPatterns(t *testing.T) { tg.grepStderr("reflect", "did not rebuild reflect") tg.grepStderrNot("runtime", "incorrectly rebuilt runtime") - tg.run("build", "-x", "-v", "-gcflags=reflect=-N", "fmt") + tg.run("build", "-x", "-v", "-gcflags= \t\r\n reflect \t\r\n = \t\r\n -N", "fmt") tg.grepStderr("fmt", "did not rebuild fmt") tg.grepStderr("reflect", "did not rebuild reflect") tg.grepStderr("compile.* -N .*-p reflect", "did not build reflect with -N flag") diff --git a/src/cmd/go/internal/load/flag.go b/src/cmd/go/internal/load/flag.go index d2db3ee4a0..7ad4208ccc 100644 --- a/src/cmd/go/internal/load/flag.go +++ b/src/cmd/go/internal/load/flag.go @@ -41,6 +41,8 @@ func (f *PerPackageFlag) Set(v string) error { func (f *PerPackageFlag) set(v, cwd string) error { f.present = true match := func(p *Package) bool { return p.Internal.CmdlinePkg || p.Internal.CmdlineFiles } // default predicate with no pattern + // For backwards compatibility with earlier flag splitting, ignore spaces around flags. + v = strings.TrimSpace(v) if v == "" { // Special case: -gcflags="" means no flags for command-line arguments // (overrides previous -gcflags="-whatever"). @@ -55,7 +57,7 @@ func (f *PerPackageFlag) set(v, cwd string) error { if i == 0 { return fmt.Errorf("missing in =") } - pattern := v[:i] + pattern := strings.TrimSpace(v[:i]) match = MatchPackage(pattern, cwd) v = v[i+1:] }