aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2023-08-30 14:06:45 -0700
committerGopher Robot <gobot@golang.org>2023-08-30 22:53:52 +0000
commitbdccd923e914ab61d77a8f23a3329cf1d5aaa7c1 (patch)
tree4ea9bea9bf8c8d9a7bf78488744d84a77d4d5ec8 /src
parent51ed3cb702baedf400957fc2126e141fad46d4a5 (diff)
downloadgo-bdccd923e914ab61d77a8f23a3329cf1d5aaa7c1.tar.xz
cmd/cgo: only write _cgo_flags for gccgo
We only use it for gccgo. Also only write out LDFLAGS, as that is all that cmd/go uses. Fixes #60642 Change-Id: I6ccc419a17a433583d9868dd63aa7ec41c2b22c4 Reviewed-on: https://go-review.googlesource.com/c/go/+/524556 Auto-Submit: Ian Lance Taylor <iant@google.com> Commit-Queue: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Bryan Mills <bcmills@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/cgo/doc.go2
-rw-r--r--src/cmd/cgo/gcc.go7
-rw-r--r--src/cmd/cgo/main.go3
-rw-r--r--src/cmd/cgo/out.go17
4 files changed, 14 insertions, 15 deletions
diff --git a/src/cmd/cgo/doc.go b/src/cmd/cgo/doc.go
index 894df2d836..1f635d7c09 100644
--- a/src/cmd/cgo/doc.go
+++ b/src/cmd/cgo/doc.go
@@ -710,7 +710,7 @@ files:
_cgo_export.c # for gcc
_cgo_export.h # for gcc
_cgo_main.c # for gcc
- _cgo_flags # for alternative build tools
+ _cgo_flags # for build tool (if -gccgo)
The file x.cgo1.go is a copy of x.go with the import "C" removed and
references to C.xxx replaced with names like _Cfunc_xxx or _Ctype_xxx.
diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go
index 28dc2a9bf8..d30056ec84 100644
--- a/src/cmd/cgo/gcc.go
+++ b/src/cmd/cgo/gcc.go
@@ -104,10 +104,8 @@ func (f *File) ProcessCgoDirectives() {
f.Preamble = strings.Join(linesOut, "\n")
}
-// addToFlag appends args to flag. All flags are later written out onto the
-// _cgo_flags file for the build system to use.
+// addToFlag appends args to flag.
func (p *Package) addToFlag(flag string, args []string) {
- p.CgoFlags[flag] = append(p.CgoFlags[flag], args...)
if flag == "CFLAGS" {
// We'll also need these when preprocessing for dwarf information.
// However, discard any -g options: we need to be able
@@ -118,6 +116,9 @@ func (p *Package) addToFlag(flag string, args []string) {
}
}
}
+ if flag == "LDFLAGS" {
+ p.LdFlags = append(p.LdFlags, args...)
+ }
}
// splitQuoted splits the string s around each instance of one or more consecutive
diff --git a/src/cmd/cgo/main.go b/src/cmd/cgo/main.go
index 55f9cdc318..fce2671c2c 100644
--- a/src/cmd/cgo/main.go
+++ b/src/cmd/cgo/main.go
@@ -38,7 +38,7 @@ type Package struct {
IntSize int64
GccOptions []string
GccIsClang bool
- CgoFlags map[string][]string // #cgo flags (CFLAGS, LDFLAGS)
+ LdFlags []string // #cgo LDFLAGS
Written map[string]bool
Name map[string]*Name // accumulated Name from Files
ExpFunc []*ExpFunc // accumulated ExpFunc from Files
@@ -475,7 +475,6 @@ func newPackage(args []string) *Package {
p := &Package{
PtrSize: ptrSize,
IntSize: intSize,
- CgoFlags: make(map[string][]string),
Written: make(map[string]bool),
noCallbacks: make(map[string]bool),
noEscapes: make(map[string]bool),
diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go
index 947c61b5c5..8e1b5d62fd 100644
--- a/src/cmd/cgo/out.go
+++ b/src/cmd/cgo/out.go
@@ -45,18 +45,17 @@ func (p *Package) writeDefs() {
var gccgoInit strings.Builder
- fflg := creat(*objDir + "_cgo_flags")
- for k, v := range p.CgoFlags {
- for _, arg := range v {
- fmt.Fprintf(fflg, "_CGO_%s=%s\n", k, arg)
+ if !*gccgo {
+ for _, arg := range p.LdFlags {
+ fmt.Fprintf(fgo2, "//go:cgo_ldflag %q\n", arg)
}
- if k == "LDFLAGS" && !*gccgo {
- for _, arg := range v {
- fmt.Fprintf(fgo2, "//go:cgo_ldflag %q\n", arg)
- }
+ } else {
+ fflg := creat(*objDir + "_cgo_flags")
+ for _, arg := range p.LdFlags {
+ fmt.Fprintf(fflg, "_CGO_LDFLAGS=%s\n", arg)
}
+ fflg.Close()
}
- fflg.Close()
// Write C main file for using gcc to resolve imports.
fmt.Fprintf(fm, "#include <stddef.h>\n") // For size_t below.