]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: accept more spaces in -gcflags arguments
authorRuss Cox <rsc@golang.org>
Fri, 1 Dec 2017 16:47:06 +0000 (11:47 -0500)
committerRuss Cox <rsc@golang.org>
Fri, 1 Dec 2017 21:05:46 +0000 (21:05 +0000)
Earlier versions of Go were not very picky about leading spaces
in the -gcflags values. Make the new pattern-enhanced parser
equally lax.

Fixes #22943.

Change-Id: I5cf4d3e81412e895a4b52af325853ed48d0b73f4
Reviewed-on: https://go-review.googlesource.com/81498
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/go/go_test.go
src/cmd/go/internal/load/flag.go

index abff432ffb5cdec2c73a8719b1c7db2e94643d34..e37352bba971bbb5f81c90ef9f5fb95fe669b940 100644 (file)
@@ -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")
index d2db3ee4a053c3e302645d6d3cf0061b790a0392..7ad4208ccc0bc61c2e4d639e014d3b04677ab5da 100644 (file)
@@ -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 <pattern> in <pattern>=<value>")
                }
-               pattern := v[:i]
+               pattern := strings.TrimSpace(v[:i])
                match = MatchPackage(pattern, cwd)
                v = v[i+1:]
        }