"cmd/link/internal/dwtest"
)
+func mustHaveDWARF(t testing.TB) {
+ if !platform.ExecutableHasDWARF(runtime.GOOS, runtime.GOARCH) {
+ t.Helper()
+ t.Skipf("skipping on %s/%s: no DWARF symbol table in executables", runtime.GOOS, runtime.GOARCH)
+ }
+}
+
const (
DefaultOpt = "-gcflags="
NoOpt = "-gcflags=-l -N"
t.Parallel()
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
dir := t.TempDir()
t.Parallel()
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
const prog = `
package main
}
func TestSizes(t *testing.T) {
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
// External linking may bring in C symbols with unknown size. Skip.
testenv.MustInternalLink(t, false)
}
func TestFieldOverlap(t *testing.T) {
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
// This test grew out of issue 21094, where specific sudog<T> DWARF types
testenv.MustHaveGoBuild(t)
t.Parallel()
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
const prog = `package main
%s
testenv.MustHaveGoBuild(t)
t.Parallel()
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
const prog = `package main
%s
func TestInlinedRoutineCallFileLine(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
func TestInlinedRoutineArgsVars(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
t.Skip("skipping test in short mode.")
}
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
if wd, err := os.Getwd(); err == nil {
gopathdir := filepath.Join(wd, "testdata", "httptest")
func TestAbstractOriginSanityIssue25459(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
if runtime.GOARCH != "amd64" && runtime.GOARCH != "386" {
t.Skip("skipping on not-amd64 not-386; location lists not supported")
}
func TestAbstractOriginSanityIssue26237(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
if wd, err := os.Getwd(); err == nil {
gopathdir := filepath.Join(wd, "testdata", "issue26237")
abstractOriginSanity(t, gopathdir, DefaultOpt)
testenv.MustHaveGoBuild(t)
testenv.MustInternalLink(t, false)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
testRuntimeTypeAttr(t, "-ldflags=-linkmode=internal")
}
testenv.MustHaveGoBuild(t)
testenv.MustHaveCGO(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
// Explicitly test external linking, for dsymutil compatibility on Darwin.
if runtime.GOARCH == "ppc64" {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
func TestIssue38192(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
func TestIssue39757(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
testenv.MustHaveGoBuild(t)
testenv.MustInternalLink(t, false) // Avoid spurious failures from external linkers.
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
func TestOutputParamAbbrevAndAttr(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
// This test verifies that the compiler is selecting the correct
// have DIEs.
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
const prog = `
func TestOptimizedOutParamHandling(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
// This test is intended to verify that the compiler emits DWARF
// emitted in the final binary
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
func TestZeroSizedVariable(t *testing.T) {
testenv.MustHaveGoBuild(t)
- if runtime.GOOS == "plan9" {
- t.Skip("skipping on plan9; no DWARF symbol table in executables")
- }
+ mustHaveDWARF(t)
t.Parallel()
// This test verifies that the compiler emits DIEs for zero sized variables