mirror of
https://github.com/golang/go
synced 2024-11-23 05:30:07 -07:00
cmd/go: don't collect package CGOLDFLAGS when using gccgo
They are already collected via cmd/cgo. The gccgo_link_c test is tweaked to do real linking as with this change the cgo ldflags are not fully reflected in go build -n output, since they now only come from the built archive. Fixes #60287 Change-Id: Id433435fe8aeb9571327bf936e52a37f400cef4c Reviewed-on: https://go-review.googlesource.com/c/go/+/497117 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Ian Lance Taylor <iant@golang.org> Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Andrey Bokhanko <andreybokhanko@gmail.com>
This commit is contained in:
parent
80a7315c34
commit
d3e3e11298
@ -386,16 +386,9 @@ func (tools gccgoToolchain) link(b *Builder, root *Action, out, importcfg string
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, a := range allactions {
|
for _, a := range allactions {
|
||||||
// Gather CgoLDFLAGS, but not from standard packages.
|
|
||||||
// The go tool can dig up runtime/cgo from GOROOT and
|
|
||||||
// think that it should use its CgoLDFLAGS, but gccgo
|
|
||||||
// doesn't use runtime/cgo.
|
|
||||||
if a.Package == nil {
|
if a.Package == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if !a.Package.Standard {
|
|
||||||
cgoldflags = append(cgoldflags, a.Package.CgoLDFLAGS...)
|
|
||||||
}
|
|
||||||
if len(a.Package.CgoFiles) > 0 {
|
if len(a.Package.CgoFiles) > 0 {
|
||||||
usesCgo = true
|
usesCgo = true
|
||||||
}
|
}
|
||||||
@ -425,9 +418,6 @@ func (tools gccgoToolchain) link(b *Builder, root *Action, out, importcfg string
|
|||||||
|
|
||||||
ldflags = append(ldflags, cgoldflags...)
|
ldflags = append(ldflags, cgoldflags...)
|
||||||
ldflags = append(ldflags, envList("CGO_LDFLAGS", "")...)
|
ldflags = append(ldflags, envList("CGO_LDFLAGS", "")...)
|
||||||
if root.Package != nil {
|
|
||||||
ldflags = append(ldflags, root.Package.CgoLDFLAGS...)
|
|
||||||
}
|
|
||||||
if cfg.Goos != "aix" {
|
if cfg.Goos != "aix" {
|
||||||
ldflags = str.StringList("-Wl,-(", ldflags, "-Wl,-)")
|
ldflags = str.StringList("-Wl,-(", ldflags, "-Wl,-)")
|
||||||
}
|
}
|
||||||
|
3
src/cmd/go/testdata/script/gccgo_link_c.txt
vendored
3
src/cmd/go/testdata/script/gccgo_link_c.txt
vendored
@ -4,8 +4,9 @@
|
|||||||
[!cgo] skip
|
[!cgo] skip
|
||||||
[!exec:gccgo] skip
|
[!exec:gccgo] skip
|
||||||
|
|
||||||
go build -n -compiler gccgo
|
! go build -x -compiler gccgo
|
||||||
stderr 'gccgo.*\-L [^ ]*alibpath \-lalib' # make sure that Go-inline "#cgo LDFLAGS:" ("-L alibpath -lalib") passed to gccgo linking stage
|
stderr 'gccgo.*\-L [^ ]*alibpath \-lalib' # make sure that Go-inline "#cgo LDFLAGS:" ("-L alibpath -lalib") passed to gccgo linking stage
|
||||||
|
! stderr 'gccgo.*-lalib.*-lalib' # make sure -lalib is only passed once
|
||||||
|
|
||||||
-- go.mod --
|
-- go.mod --
|
||||||
module m
|
module m
|
||||||
|
Loading…
Reference in New Issue
Block a user