]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: have go run, go list respect -buildmode/-linkshared
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Wed, 1 Apr 2015 02:53:52 +0000 (15:53 +1300)
committerIan Lance Taylor <iant@golang.org>
Thu, 16 Apr 2015 19:25:32 +0000 (19:25 +0000)
Change-Id: I749fd91cd3c7581cdcc97a15e8eeee0c20f0b259
Reviewed-on: https://go-review.googlesource.com/8805
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>

src/cmd/go/build.go
src/cmd/go/list.go
src/cmd/go/run.go

index a9ba7f3a714102e1fab746e438bf65626ee10fcf..05c68fc4ec12e92ad12980514b6b9224705b8199 100644 (file)
@@ -159,6 +159,7 @@ var buildLinkshared bool     // -linkshared flag
 
 var buildContext = build.Default
 var buildToolchain toolchain = noToolchain{}
+var ldBuildmode string
 
 // buildCompiler implements flag.Var.
 // It implements Set by updating both
@@ -307,7 +308,7 @@ func pkgsNotMain(pkgs []*Package) (res []*Package) {
 var pkgsFilter = func(pkgs []*Package) []*Package { return pkgs }
 
 func buildModeInit() {
-       var codegenArg, ldBuildmode string
+       var codegenArg string
        platform := goos + "/" + goarch
        switch buildBuildmode {
        case "archive":
@@ -362,9 +363,6 @@ func buildModeInit() {
                // TODO(mwhudson): remove -w when that gets fixed in linker.
                buildLdflags = append(buildLdflags, "-linkshared", "-w")
        }
-       if ldBuildmode != "" {
-               buildLdflags = append(buildLdflags, "-buildmode="+ldBuildmode)
-       }
        if codegenArg != "" {
                buildAsmflags = append(buildAsmflags, codegenArg)
                buildGcflags = append(buildGcflags, codegenArg)
@@ -1286,6 +1284,7 @@ func (b *builder) linkShared(a *action) (err error) {
        importArgs := b.includeArgs("-L", allactions[:len(allactions)-1])
        // TODO(mwhudson): this does not check for cxx-ness, extldflags etc
        ldflags := []string{"-installsuffix", buildContext.InstallSuffix}
+       ldflags = append(ldflags, "-buildmode="+ldBuildmode)
        ldflags = append(ldflags, buildLdflags...)
        for _, d := range a.deps {
                if d.target != "" { // omit unsafe etc
@@ -2082,6 +2081,7 @@ func (gcToolchain) ld(b *builder, p *Package, out string, allactions []*action,
                        }
                }
        }
+       ldflags = append(ldflags, "-buildmode="+ldBuildmode)
        ldflags = append(ldflags, buildLdflags...)
        return b.run(".", p.ImportPath, nil, buildToolExec, tool(archChar()+"l"), "-o", out, importArgs, ldflags, mainpkg)
 }
index fbf96167febd47f0c9b226010efe444189429921..6015220068e2c3c518575fa72a5700b6b8045666 100644 (file)
@@ -126,6 +126,7 @@ var listJson = cmdList.Flag.Bool("json", false, "")
 var nl = []byte{'\n'}
 
 func runList(cmd *Command, args []string) {
+       buildModeInit()
        out := newTrackingWriter(os.Stdout)
        defer out.w.Flush()
 
index ef8aa95a351aa3c938bc258dc78d2140a97d6f94..f815cb982b2c993ab7030515cc97824e489f9dbd 100644 (file)
@@ -64,6 +64,7 @@ func printStderr(args ...interface{}) (int, error) {
 
 func runRun(cmd *Command, args []string) {
        raceInit()
+       buildModeInit()
        var b builder
        b.init()
        b.print = printStderr