| |
| # Test case for issue 47993, in which the linker crashes |
| # on a bad input instead of issuing an error and exiting. |
| |
| # This test requires external linking, so use cgo as a proxy |
| [!cgo] skip |
| |
| ! go build -ldflags='-linkmode=external' . |
| ! stderr 'panic' |
| stderr '^.*undefined symbol in relocation.*' |
| |
| -- go.mod -- |
| |
| module issue47993 |
| |
| go 1.16 |
| |
| -- main.go -- |
| |
| package main |
| |
| type M struct { |
| b bool |
| } |
| |
| // Note the body-less func def here. This is what causes the problems. |
| func (m *M) run(fp func()) |
| |
| func doit(m *M) { |
| InAsm() |
| m.run(func() { |
| }) |
| } |
| |
| func main() { |
| m := &M{true} |
| doit(m) |
| } |
| |
| func InAsm() |
| |
| -- main.s -- |
| |
| // Add an assembly function so as to leave open the possibility |
| // that body-less functions in Go might be defined in assembly. |
| |
| // Currently we just need an empty file here. |
| |