// 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", "riscv64": 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) }