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. This is a backport of https://go.dev/cl/497117 from the main repo. For golang/go#60287 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/511675
This commit is contained in:
parent
b50a851eef
commit
4e9ed68ee7
3 changed files with 3 additions and 12 deletions
|
@ -1,4 +1,4 @@
|
|||
92152c88ea8e2dd9e8c67e91bf4ae5e3edf1b506
|
||||
d04b024021bb7dbaa434a6d902bd12beb08e315f
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -413,16 +413,9 @@ func (tools gccgoToolchain) link(b *Builder, root *Action, out, importcfg string
|
|||
}
|
||||
|
||||
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 {
|
||||
continue
|
||||
}
|
||||
if !a.Package.Standard {
|
||||
cgoldflags = append(cgoldflags, a.Package.CgoLDFLAGS...)
|
||||
}
|
||||
if len(a.Package.CgoFiles) > 0 {
|
||||
usesCgo = true
|
||||
}
|
||||
|
@ -452,9 +445,6 @@ func (tools gccgoToolchain) link(b *Builder, root *Action, out, importcfg string
|
|||
|
||||
ldflags = append(ldflags, cgoldflags...)
|
||||
ldflags = append(ldflags, envList("CGO_LDFLAGS", "")...)
|
||||
if root.Package != nil {
|
||||
ldflags = append(ldflags, root.Package.CgoLDFLAGS...)
|
||||
}
|
||||
if cfg.Goos != "aix" {
|
||||
ldflags = str.StringList("-Wl,-(", ldflags, "-Wl,-)")
|
||||
}
|
||||
|
|
|
@ -4,8 +4,9 @@
|
|||
[!cgo] skip
|
||||
[!exec:gccgo] skip
|
||||
|
||||
go build -n -compiler gccgo cgoref
|
||||
! go build -x -compiler gccgo cgoref
|
||||
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
|
||||
|
||||
-- cgoref/cgoref.go --
|
||||
package main
|
||||
|
|
Loading…
Add table
Reference in a new issue