mirror of
https://github.com/golang/go
synced 2024-09-29 18:34:33 -06:00
cmd/link: enable internal linker in more cases for ppc64le
The internal linker is capable of linking the ppc64le linux race detector and approved cgo packages. Likewise, ppc64/linux and ppc64/aix do not support the race detector. Thus, extra code to enforce external linking when using the race detector on ppc64/ppc64le can be removed entirely. Fixes #21961 Change-Id: I10db14f65ee616ee3291e17409e8333e3af7d4df Reviewed-on: https://go-review.googlesource.com/c/go/+/304459 Run-TryBot: Paul Murphy <murp@ibm.com> TryBot-Result: Go Bot <gobot@golang.org> Trust: Lynn Boger <laboger@linux.vnet.ibm.com> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
fb84e99eb7
commit
2c4f389c02
5
src/cmd/dist/test.go
vendored
5
src/cmd/dist/test.go
vendored
@ -984,11 +984,6 @@ func (t *tester) internalLink() bool {
|
||||
// linkmode=internal fails on dragonfly since errno is a TLS relocation.
|
||||
return false
|
||||
}
|
||||
if gohostarch == "ppc64le" {
|
||||
// linkmode=internal fails on ppc64le because cmd/link doesn't
|
||||
// handle the TOC correctly (issue 15409).
|
||||
return false
|
||||
}
|
||||
if goos == "android" {
|
||||
return false
|
||||
}
|
||||
|
@ -195,8 +195,7 @@ func mustLinkExternal(ctxt *Link) (res bool, reason string) {
|
||||
|
||||
// Internally linking cgo is incomplete on some architectures.
|
||||
// https://golang.org/issue/14449
|
||||
// https://golang.org/issue/21961
|
||||
if iscgo && ctxt.Arch.InFamily(sys.MIPS64, sys.MIPS, sys.PPC64, sys.RISCV64) {
|
||||
if iscgo && ctxt.Arch.InFamily(sys.MIPS64, sys.MIPS, sys.RISCV64) {
|
||||
return true, buildcfg.GOARCH + " does not support internal cgo"
|
||||
}
|
||||
if iscgo && (buildcfg.GOOS == "android" || buildcfg.GOOS == "dragonfly") {
|
||||
@ -209,12 +208,9 @@ func mustLinkExternal(ctxt *Link) (res bool, reason string) {
|
||||
// windows/arm64 internal linking is not implemented.
|
||||
return true, buildcfg.GOOS + "/" + buildcfg.GOARCH + " does not support internal cgo"
|
||||
}
|
||||
|
||||
// When the race flag is set, the LLVM tsan relocatable file is linked
|
||||
// into the final binary, which means external linking is required because
|
||||
// internal linking does not support it.
|
||||
if *flagRace && ctxt.Arch.InFamily(sys.PPC64) {
|
||||
return true, "race on " + buildcfg.GOARCH
|
||||
if iscgo && ctxt.Arch == sys.ArchPPC64 {
|
||||
// Big Endian PPC64 cgo internal linking is not implemented for aix or linux.
|
||||
return true, buildcfg.GOOS + " does not support internal cgo"
|
||||
}
|
||||
|
||||
// Some build modes require work the internal linker cannot do (yet).
|
||||
|
Loading…
Reference in New Issue
Block a user