]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: don't collect package CGOLDFLAGS when using gccgo
authorIan Lance Taylor <iant@golang.org>
Tue, 23 May 2023 00:55:43 +0000 (17:55 -0700)
committerGopher Robot <gobot@golang.org>
Thu, 20 Jul 2023 18:11:05 +0000 (18:11 +0000)
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>
src/cmd/go/internal/work/gccgo.go
src/cmd/go/testdata/script/gccgo_link_c.txt

index a048b7f4eecef13cd9342b7145f5d96af81a1a86..69fc04a1abd0d1de1cee04b5d7cfc56ef9c42769 100644 (file)
@@ -386,16 +386,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
                }
@@ -425,9 +418,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,-)")
        }
index b9a4c70b7eecfc6d51d8f0a2f6cfd188b5ed5346..f6c702a1670ef1df8943441d8d8e6181b90713ea 100644 (file)
@@ -4,8 +4,9 @@
 [!cgo] 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.*-lalib.*-lalib' # make sure -lalib is only passed once
 
 -- go.mod --
 module m