go: cmd/link: does not support multiple TOCs in internal linking mode
Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version
)?
master
root@localhost:~/go# git rev-parse HEAD
eca45997dfd6cd14a59fbdea2385f6648a0dc786
root@localhost:~/go#
Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env
)?
ppc64le
What did you do?
export PATH=/usr/local/go/bin/:$PATH
export GOROOT_BOOTSTRAP=go env GOROOT
root@localhost:~/go/bin# go version go version go1.8.3 linux/ppc64le
cloned the latest code here:
root@localhost:~/go/src# pwd /root/go/src
run make.bash root@localhost:~/go/src# ./make.bash
Use the build go binary:
root@localhost:~/go/bin# pwd
/root/go/bin
root@localhost:~/go/bin# ./go version
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0xc88320 pc=0x112c8]
runtime stack:
invalid spdelta runtime/cgo(.text).sigfillset 0x112c0 0x112c8 0x0 -1
runtime.throw(0x44825a, 0x2a)
/root/go/src/runtime/panic.go:606 +0x68
runtime.sigpanic()
/root/go/src/runtime/signal_unix.go:360 +0x264
invalid spdelta runtime/cgo(.text).sigfillset 0x112c0 0x112c8 0x0 -1
goroutine 1 [running]:
runtime.systemstack_switch()
/root/go/src/runtime/asm_ppc64x.s:209 +0x10 fp=0xc420036758 sp=0xc420036738 pc=0x64e40
runtime.main()
/root/go/src/runtime/proc.go:128 +0x60 fp=0xc4200367c0 sp=0xc420036758 pc=0x3cf80
runtime.goexit()
/root/go/src/runtime/asm_ppc64x.s:1353 +0x4 fp=0xc4200367c0 sp=0xc4200367c0 pc=0x67464
root@localhost:~/go/bin#
If possible, provide a recipe for reproducing the error. A complete runnable program is good. A link on play.golang.org is best.
What did you expect to see?
Instead, I should see a golang version
What did you see instead?
I see a SIGSEGV
About this issue
- Original URL
- State: closed
- Created 7 years ago
- Comments: 31 (22 by maintainers)
Commits related to this issue
- cmd/link: don't use internal linking mode for cgo on PPC64 The internal linker doesn't know how to handle multiple TOC sections in internal linking mode. This used to work because before CL 64793 we ... — committed to golang/go by ianlancetaylor 7 years ago
- cmd/link: update plt size appropriately on ppc64 When attempting to enable internal linking with cgo on ppc64 it was discovered that the plt size was not being updated after adding entries to it, whi... — committed to golang/go by laboger 4 years ago
- cmd/link: rework .TOC. handling for ppc64le Setup .TOC. to point to the same place for all objects. Today, the linker assumes all call relocations can use the local function entry point of imported o... — committed to golang/go by pmur 3 years ago
I’m not familiar with the ABI to tell. I would guess as long as we actually understand the ABI, it won’t take much work. Maybe keep track the multiple TOCs, and group them together (?) according to the ABI?