Commit f8560085 authored by Ian Lance Taylor's avatar Ian Lance Taylor

cmd/ld: really import runtime/cgo for external link

Fixes #8032.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/95580043
parent 80f0a7df
// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Test that -static works when not using cgo. This test is in
// misc/cgo to take advantage of the testing framework support for
// when -static is expected to work.
package nocgo
func NoCgo() int {
c := make(chan int)
// The test is run with external linking, which means that
// goroutines will be created via the runtime/cgo package.
// Make sure that works.
go func() {
c <- 42
}()
return <-c
}
// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package nocgo
import "testing"
func TestNop(t *testing.T) {
i := NoCgo()
if i != 42 {
t.Errorf("got %d, want %d", i, 42)
}
}
...@@ -205,6 +205,8 @@ loadlib(void) ...@@ -205,6 +205,8 @@ loadlib(void)
// whether to initialize the TLS. So give it one. This could // whether to initialize the TLS. So give it one. This could
// be handled differently but it's an unusual case. // be handled differently but it's an unusual case.
loadinternal("runtime/cgo"); loadinternal("runtime/cgo");
if(i < ctxt->libraryp)
objfile(ctxt->library[i].file, ctxt->library[i].pkg);
// Pretend that we really imported the package. // Pretend that we really imported the package.
s = linklookup(ctxt, "go.importpath.runtime/cgo.", 0); s = linklookup(ctxt, "go.importpath.runtime/cgo.", 0);
......
...@@ -145,6 +145,9 @@ dragonfly-386 | dragonfly-amd64 | freebsd-386 | freebsd-amd64 | freebsd-arm | li ...@@ -145,6 +145,9 @@ dragonfly-386 | dragonfly-amd64 | freebsd-386 | freebsd-amd64 | freebsd-arm | li
echo "No support for static linking found (lacks libc.a?), skip cgo static linking test." echo "No support for static linking found (lacks libc.a?), skip cgo static linking test."
else else
go test -ldflags '-linkmode=external -extldflags "-static -pthread"' ../testtls || exit 1 go test -ldflags '-linkmode=external -extldflags "-static -pthread"' ../testtls || exit 1
go test ../nocgo || exit 1
go test -ldflags '-linkmode=external' ../nocgo || exit 1
go test -ldflags '-linkmode=external -extldflags "-static -pthread"' ../nocgo || exit 1
fi fi
;; ;;
esac esac
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment