# 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.