blob: 23caa74a132871ce6c9cd77cdedf2834cef1853e [file] [log] [blame]
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build cgo
package main
import (
"runtime"
"testing"
)
func canInternalLink() bool {
switch runtime.GOOS {
case "aix":
return false
case "dragonfly":
return false
case "freebsd":
switch runtime.GOARCH {
case "arm64":
return false
}
case "linux":
switch runtime.GOARCH {
case "arm64", "loong64", "mips64", "mips64le", "mips", "mipsle", "ppc64", "ppc64le", "riscv64":
return false
}
case "openbsd":
switch runtime.GOARCH {
case "arm64", "mips64":
return false
}
case "windows":
switch runtime.GOARCH {
case "arm64":
return false
}
}
return true
}
func TestInternalLinkerCgoExec(t *testing.T) {
if !canInternalLink() {
t.Skip("skipping; internal linking is not supported")
}
testGoExec(t, true, false)
}
func TestExternalLinkerCgoExec(t *testing.T) {
testGoExec(t, true, true)
}
func TestCgoLib(t *testing.T) {
testGoLib(t, true)
}