aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2015-11-10 20:31:11 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2015-11-10 20:31:11 +0000
commitea5c200338a8f53b7b6068859ba5f5da84582c98 (patch)
tree702cc02dccad395c560d2e5bcd6975a8b6be0711
parentc5a237e923d40c592d47828bcd20df6cc123dcb2 (diff)
downloadgcc-ea5c200338a8f53b7b6068859ba5f5da84582c98.zip
gcc-ea5c200338a8f53b7b6068859ba5f5da84582c98.tar.gz
gcc-ea5c200338a8f53b7b6068859ba5f5da84582c98.tar.bz2
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
-rw-r--r--gcc/go/gofrontend/MERGE2
-rw-r--r--libgo/go/cmd/go/build.go12
2 files changed, 3 insertions, 11 deletions
diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index f325bb3..dd23a8f 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -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.
diff --git a/libgo/go/cmd/go/build.go b/libgo/go/cmd/go/build.go
index 3afac2e..865871c 100644
--- a/libgo/go/cmd/go/build.go
+++ b/libgo/go/cmd/go/build.go
@@ -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", "")...)