mirror of
https://github.com/golang/go
synced 2024-11-22 19:44:57 -07:00
cmd/ld: really import runtime/cgo for external link
Fixes #8032. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/95580043
This commit is contained in:
parent
80f0a7df26
commit
f85600859d
22
misc/cgo/nocgo/nocgo.go
Normal file
22
misc/cgo/nocgo/nocgo.go
Normal file
@ -0,0 +1,22 @@
|
||||
// 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
|
||||
}
|
14
misc/cgo/nocgo/nocgo_test.go
Normal file
14
misc/cgo/nocgo/nocgo_test.go
Normal file
@ -0,0 +1,14 @@
|
||||
// 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)
|
||||
// whether to initialize the TLS. So give it one. This could
|
||||
// be handled differently but it's an unusual case.
|
||||
loadinternal("runtime/cgo");
|
||||
if(i < ctxt->libraryp)
|
||||
objfile(ctxt->library[i].file, ctxt->library[i].pkg);
|
||||
|
||||
// Pretend that we really imported the package.
|
||||
s = linklookup(ctxt, "go.importpath.runtime/cgo.", 0);
|
||||
|
@ -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."
|
||||
else
|
||||
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
|
||||
;;
|
||||
esac
|
||||
|
Loading…
Reference in New Issue
Block a user