]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: apply same per-package flags to compile and link of test
authorRuss Cox <rsc@golang.org>
Thu, 14 Dec 2017 00:47:32 +0000 (19:47 -0500)
committerRuss Cox <rsc@golang.org>
Thu, 14 Dec 2017 02:25:34 +0000 (02:25 +0000)
If package strings has a particular set of gcflags, then the strings_test
pseudo-package built as part of the test binary started inheriting the
same flags in CL 81496, to fix #22831.

Now the package main and final test binary link built as part of the
strings test binary also inherit the same flags, to fix #22994.

I am slightly uneasy about reusing package strings's flags for
package main, but the alternative would be to introduce some
kind of special case, which I'd be even more uneasy about.

This interpretation preserves the Go 1.9 behavior of existing
commands like:

go test -c -ldflags=-X=mypkg.debugString=foo mypkg

Fixes #22994.

Change-Id: I9ab83bf1a9a6adae530a7715b907e709fd6c1b5d
Reviewed-on: https://go-review.googlesource.com/83879
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
src/cmd/go/go_test.go
src/cmd/go/internal/test/test.go

index 76e3e8423213aa5bf5f2f24c34503c3665096cf7..11bd04454568fab18bf867b0affd7880f6c80e06 100644 (file)
@@ -5343,11 +5343,13 @@ func TestGcflagsPatterns(t *testing.T) {
        tg.grepStderr("compile.* -N .*-p reflect", "did not build reflect with -N flag")
        tg.grepStderrNot("compile.* -N .*-p fmt", "incorrectly built fmt with -N flag")
 
-       tg.run("test", "-c", "-n", "-gcflags=-N", "strings")
-       tg.grepStderr("compile.* -N .*compare_test.go", "did not build strings_test package with -N flag")
+       tg.run("test", "-c", "-n", "-gcflags=-N", "-ldflags=-X=x.y=z", "strings")
+       tg.grepStderr("compile.* -N .*compare_test.go", "did not compile strings_test package with -N flag")
+       tg.grepStderr("link.* -X=x.y=z", "did not link strings.test binary with -X flag")
 
-       tg.run("test", "-c", "-n", "-gcflags=strings=-N", "strings")
-       tg.grepStderr("compile.* -N .*compare_test.go", "did not build strings_test package with -N flag")
+       tg.run("test", "-c", "-n", "-gcflags=strings=-N", "-ldflags=strings=-X=x.y=z", "strings")
+       tg.grepStderr("compile.* -N .*compare_test.go", "did not compile strings_test package with -N flag")
+       tg.grepStderr("link.* -X=x.y=z", "did not link strings.test binary with -X flag")
 }
 
 func TestGoTestMinusN(t *testing.T) {
index 1cf1ba735193ee8cae4e409aec91d562560b01a5..5b4408ccd1d8fcf810ca05742791c63bc6186a29 100644 (file)
@@ -929,6 +929,11 @@ func builderTest(b *work.Builder, p *load.Package) (buildAction, runAction, prin
                Internal: load.PackageInternal{
                        Build:     &build.Package{Name: "main"},
                        OmitDebug: !testC && !testNeedBinary,
+
+                       Asmflags:   p.Internal.Asmflags,
+                       Gcflags:    p.Internal.Gcflags,
+                       Ldflags:    p.Internal.Ldflags,
+                       Gccgoflags: p.Internal.Gccgoflags,
                },
        }