diff options
author | Ian Lance Taylor <iant@golang.org> | 2023-07-20 11:21:13 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2023-07-20 12:29:11 -0700 |
commit | 4e9ed68ee7ef2c80dcfd038c54e937646cc0ece2 (patch) | |
tree | 13f70efcee22822bd2e62e4594f088a833421917 /libgo | |
parent | b50a851eef4b70aabf28fa875d9b2a302d17b66a (diff) | |
download | gcc-4e9ed68ee7ef2c80dcfd038c54e937646cc0ece2.zip gcc-4e9ed68ee7ef2c80dcfd038c54e937646cc0ece2.tar.gz gcc-4e9ed68ee7ef2c80dcfd038c54e937646cc0ece2.tar.bz2 |
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
Diffstat (limited to 'libgo')
-rw-r--r-- | libgo/go/cmd/go/internal/work/gccgo.go | 10 | ||||
-rw-r--r-- | libgo/go/cmd/go/testdata/script/gccgo_link_c.txt | 3 |
2 files changed, 2 insertions, 11 deletions
diff --git a/libgo/go/cmd/go/internal/work/gccgo.go b/libgo/go/cmd/go/internal/work/gccgo.go index 1e82500..c1026c7 100644 --- a/libgo/go/cmd/go/internal/work/gccgo.go +++ b/libgo/go/cmd/go/internal/work/gccgo.go @@ -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,-)") } diff --git a/libgo/go/cmd/go/testdata/script/gccgo_link_c.txt b/libgo/go/cmd/go/testdata/script/gccgo_link_c.txt index db2a291..8d67ae2 100644 --- a/libgo/go/cmd/go/testdata/script/gccgo_link_c.txt +++ b/libgo/go/cmd/go/testdata/script/gccgo_link_c.txt @@ -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 |