mirror of
https://github.com/golang/go
synced 2024-11-18 15:44:41 -07:00
cmd/dist: unify internal linking checks
I missed one in CL 29360. Change-Id: I29fc6dcd920829a918c70734d646119133a0a9df Reviewed-on: https://go-review.googlesource.com/29361 Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
parent
f4748f1e21
commit
192548a547
41
src/cmd/dist/test.go
vendored
41
src/cmd/dist/test.go
vendored
@ -409,9 +409,7 @@ func (t *tester) registerTests() {
|
|||||||
// release on a system that does not have a C compiler
|
// release on a system that does not have a C compiler
|
||||||
// installed and still build Go programs (that don't use cgo).
|
// installed and still build Go programs (that don't use cgo).
|
||||||
for _, pkg := range cgoPackages {
|
for _, pkg := range cgoPackages {
|
||||||
|
if !t.internalLink() {
|
||||||
// Internal linking is not currently supported on Dragonfly.
|
|
||||||
if t.goos == "dragonfly" {
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -420,13 +418,6 @@ func (t *tester) registerTests() {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
// Internally linking cgo is incomplete on some architectures.
|
|
||||||
// https://golang.org/issue/10373
|
|
||||||
// https://golang.org/issue/14449
|
|
||||||
if t.goarch == "arm64" || t.goarch == "mips64" {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
pkg := pkg
|
pkg := pkg
|
||||||
var run string
|
var run string
|
||||||
if pkg == "net" {
|
if pkg == "net" {
|
||||||
@ -702,6 +693,31 @@ func (t *tester) extLink() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *tester) internalLink() bool {
|
||||||
|
if t.gohostos == "dragonfly" {
|
||||||
|
// linkmode=internal fails on dragonfly since errno is a TLS relocation.
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if t.gohostarch == "ppc64le" {
|
||||||
|
// linkmode=internal fails on ppc64le because cmd/link doesn't
|
||||||
|
// handle the TOC correctly (issue 15409).
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if t.goos == "android" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if t.goos == "darwin" && (t.goarch == "arm" || t.goarch == "arm64") {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// Internally linking cgo is incomplete on some architectures.
|
||||||
|
// https://golang.org/issue/10373
|
||||||
|
// https://golang.org/issue/14449
|
||||||
|
if t.goarch == "arm64" || t.goarch == "mips64" {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
func (t *tester) supportedBuildmode(mode string) bool {
|
func (t *tester) supportedBuildmode(mode string) bool {
|
||||||
pair := t.goos + "-" + t.goarch
|
pair := t.goos + "-" + t.goarch
|
||||||
switch mode {
|
switch mode {
|
||||||
@ -769,10 +785,7 @@ func (t *tester) cgoTest(dt *distTest) error {
|
|||||||
cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", t.tags(), "-ldflags", "-linkmode=auto", t.runFlag(""))
|
cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", t.tags(), "-ldflags", "-linkmode=auto", t.runFlag(""))
|
||||||
cmd.Env = env
|
cmd.Env = env
|
||||||
|
|
||||||
if t.gohostos != "dragonfly" && t.gohostarch != "ppc64le" && t.goos != "android" && (t.goos != "darwin" || t.goarch != "arm") {
|
if t.internalLink() {
|
||||||
// linkmode=internal fails on dragonfly since errno is a TLS relocation.
|
|
||||||
// linkmode=internal fails on ppc64le because cmd/link doesn't
|
|
||||||
// handle the TOC correctly (issue 15409).
|
|
||||||
cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=internal", t.runFlag(""))
|
cmd := t.addCmd(dt, "misc/cgo/test", "go", "test", "-ldflags", "-linkmode=internal", t.runFlag(""))
|
||||||
cmd.Env = env
|
cmd.Env = env
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user