mirror of
https://github.com/golang/go
synced 2024-10-02 22:25:08 +00:00
cmd/go: put user ldflags at the end of the linker invocation
If the user provided a key but no value via -ldflag -X, another linker flag was used as the value. Placing the user's flags at the end avoids this problem. It also provides the user the opportunity to override existing linker flags. Fixes #8810. Change-Id: I96f4190713dc9a9c29142e56658446fba7fb6bc8 Reviewed-on: https://go-review.googlesource.com/2242 Reviewed-by: Minux Ma <minux@golang.org>
This commit is contained in:
parent
79c4fad8c2
commit
8bbd80063b
|
@ -1776,9 +1776,7 @@ func (gcToolchain) ld(b *builder, p *Package, out string, allactions []*action,
|
|||
cxx = true
|
||||
}
|
||||
}
|
||||
ldflags := buildLdflags
|
||||
// Limit slice capacity so that concurrent appends do not race on the shared array.
|
||||
ldflags = ldflags[:len(ldflags):len(ldflags)]
|
||||
var ldflags []string
|
||||
if buildContext.InstallSuffix != "" {
|
||||
ldflags = append(ldflags, "-installsuffix", buildContext.InstallSuffix)
|
||||
}
|
||||
|
@ -1824,6 +1822,7 @@ func (gcToolchain) ld(b *builder, p *Package, out string, allactions []*action,
|
|||
}
|
||||
}
|
||||
}
|
||||
ldflags = append(ldflags, buildLdflags...)
|
||||
return b.run(".", p.ImportPath, nil, tool(archChar+"l"), "-o", out, importArgs, ldflags, mainpkg)
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ import (
|
|||
)
|
||||
|
||||
func main() {
|
||||
// Successful run
|
||||
cmd := exec.Command("go", "run", "-ldflags=-X main.tbd hello -X main.overwrite trumped -X main.nosuchsymbol neverseen", "linkx.go")
|
||||
out, err := cmd.CombinedOutput()
|
||||
if err != nil {
|
||||
|
@ -30,4 +31,12 @@ func main() {
|
|||
fmt.Printf("got %q want %q\n", got, want)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Issue 8810
|
||||
cmd = exec.Command("go", "run", "-ldflags=-X main.tbd", "linkx.go")
|
||||
_, err = cmd.CombinedOutput()
|
||||
if err == nil {
|
||||
fmt.Println("-X linker flag should not accept keys without values")
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue