re PR go/68255 (cgo-generated constructor not being called)
PR go/68255 cmd/go: always use --whole-archive for gccgo packages This is a backport of https://golang.org/cl/16775. This is, in effect, what the gc toolchain does. It fixes cases where Go code refers to a C global variable; without this, if the global variable was the only thing visible in the C code, the generated cgo file might not get pulled in from the archive, leaving the Go variable uninitialized. This was reported against gccgo as https://gcc.gnu.org/PR68255 . Reviewed-on: https://go-review.googlesource.com/16778 From-SVN: r230120
This commit is contained in:
parent
c5a237e923
commit
ea5c200338
2 changed files with 3 additions and 11 deletions
|
@ -1,4 +1,4 @@
|
|||
012ab5cb2ef1c26e8023ce90d3a2bba174da7b30
|
||||
0c07751d139ef90a43ef7f299f925622a8792a9f
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -2555,17 +2555,9 @@ func (tools gccgoToolchain) ld(b *builder, root *action, out string, allactions
|
|||
}
|
||||
}
|
||||
|
||||
switch ldBuildmode {
|
||||
case "c-archive", "c-shared":
|
||||
ldflags = append(ldflags, "-Wl,--whole-archive")
|
||||
}
|
||||
|
||||
ldflags = append(ldflags, "-Wl,--whole-archive")
|
||||
ldflags = append(ldflags, afiles...)
|
||||
|
||||
switch ldBuildmode {
|
||||
case "c-archive", "c-shared":
|
||||
ldflags = append(ldflags, "-Wl,--no-whole-archive")
|
||||
}
|
||||
ldflags = append(ldflags, "-Wl,--no-whole-archive")
|
||||
|
||||
ldflags = append(ldflags, cgoldflags...)
|
||||
ldflags = append(ldflags, envList("CGO_LDFLAGS", "")...)
|
||||
|
|
Loading…
Add table
Reference in a new issue