| // 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) |
| } |