blob: 3030ee924ffabe04bd9261294c31397b3f0a3573 [file] [log] [blame]
# Test that we can use the external linker with a host syso file that is
# embedded in a package, that is referenced by a Go assembly function.
# See issue 33139.
[!gc] skip
[!exec:cc] skip
# External linking is not supported on linux/ppc64.
# See: https://github.com/golang/go/issues/8912
[linux] [ppc64] skip
# External linking is not supported on linux/riscv, linux/riscv64.
# See: https://github.com/golang/go/issues/36739
[linux] [riscv] skip
[linux] [riscv64] skip
cc -c -o syso/objTestImpl.syso syso/src/objTestImpl.c
go build -ldflags='-linkmode=external' ./cmd/main.go
-- syso/objTest.s --
#include "textflag.h"
TEXT ·ObjTest(SB), NOSPLIT, $0
// We do not actually execute this function in the test above, thus
// there is no stack frame setup here.
// We only care about Go build and/or link errors when referencing
// the objTestImpl symbol in the syso file.
JMP objTestImpl(SB)
-- syso/pkg.go --
package syso
func ObjTest()
-- syso/src/objTestImpl.c --
void objTestImpl() { /* Empty */ }
-- cmd/main.go --
package main
import "syso"
func main() {
syso.ObjTest()
}