"cmd/internal/objfile"
"debug/dwarf"
"internal/testenv"
- "io/ioutil"
"os"
"os/exec"
"path"
t.Run(prog, func(t *testing.T) {
t.Parallel()
- tmpDir, err := ioutil.TempDir("", "go-link-TestDWARF")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpDir)
+ tmpDir := t.TempDir()
exe := filepath.Join(tmpDir, prog+".exe")
dir := "../../runtime/testdata/" + prog
t.Skipf("can't find objcopy: %v", err)
}
- dir, err := ioutil.TempDir("", "go-link-TestSectionsWithSameName")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
gopath := filepath.Join(dir, "GOPATH")
env := append(os.Environ(), "GOPATH="+gopath)
testenv.MustHaveCGO(t)
t.Parallel()
- dir, err := ioutil.TempDir("", "go-link-TestMinusRSymsWithSameName")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
gopath := filepath.Join(dir, "GOPATH")
env := append(os.Environ(), "GOPATH="+gopath)
t.Run(name, func(t *testing.T) {
t.Parallel()
- dir, err := ioutil.TempDir("", "go-link-"+name)
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
writeGo(t, dir)
import (
"bytes"
"internal/testenv"
- "io/ioutil"
- "os"
"os/exec"
"path/filepath"
"testing"
testenv.MustHaveGoBuild(t)
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestDeadcode")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
tests := []struct {
src string
t.Skip("skipping on plan9; no DWARF symbol table in executables")
}
- dir, err := ioutil.TempDir("", "TestRuntimeTypesPresent")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
f := gobuild(t, dir, `package main; func main() { }`, NoOpt)
defer f.Close()
"main.Baz": {"Foo": true, "name": false},
}
- dir, err := ioutil.TempDir("", "TestEmbeddedStructMarker")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
f := gobuild(t, dir, prog, NoOpt)
y[0] = nil
}
`
- dir, err := ioutil.TempDir("", "TestSizes")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
+
f := gobuild(t, dir, prog, NoOpt)
defer f.Close()
d, err := f.DWARF()
c <- "foo"
}
`
- dir, err := ioutil.TempDir("", "TestFieldOverlap")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
f := gobuild(t, dir, prog, NoOpt)
defer f.Close()
prog := fmt.Sprintf("package main\n%s\nfunc main() {\n\nvar i int\ni = i\n}\n", directive)
- dir, err := ioutil.TempDir("", testpoint)
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
f := gobuild(t, dir, prog, NoOpt)
+ defer f.Close()
d, err := f.DWARF()
if err != nil {
G = x
}
`
- dir, err := ioutil.TempDir("", "TestInlinedRoutineRecords")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
// Note: this is a build with "-l=4", as opposed to "-l -N". The
// test is intended to verify DWARF that is only generated when
// main.main, however, hence we build with "-gcflags=-l=4" as opposed
// to "-gcflags=all=-l=4".
f := gobuild(t, dir, prog, OptInl4)
+ defer f.Close()
d, err := f.DWARF()
if err != nil {
func abstractOriginSanity(t *testing.T, pkgDir string, flags string) {
t.Parallel()
- dir, err := ioutil.TempDir("", "TestAbstractOriginSanity")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
// Build with inlining, to exercise DWARF inlining support.
f := gobuildTestdata(t, dir, filepath.Join(pkgDir, "main"), flags)
+ defer f.Close()
d, err := f.DWARF()
if err != nil {
print(p)
}
`
- dir, err := ioutil.TempDir("", "TestRuntimeType")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
f := gobuild(t, dir, prog, flags)
+ defer f.Close()
+
out, err := exec.Command(f.path).CombinedOutput()
if err != nil {
t.Fatalf("could not run test program: %v", err)
t.Parallel()
- dir, err := ioutil.TempDir("", "go-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
const prog = `package main
t.Parallel()
- dir, err := ioutil.TempDir("", "go-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
const prog = `package main
t.Parallel()
- dir, err := ioutil.TempDir("", "go-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
const prog = "package main\nfunc main() {\nprintln(\"hello world\")\n}\n"
t.Skip("skipping; test only interesting on darwin")
}
- tmpdir, err := ioutil.TempDir("", "TestMachoIssue32233")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
- wd, err2 := os.Getwd()
- if err2 != nil {
+ wd, err := os.Getwd()
+ if err != nil {
t.Fatalf("where am I? %v", err)
}
pdir := filepath.Join(wd, "testdata", "issue32233", "main")
t.Skip("skipping: test only on windows")
}
- dir, err := ioutil.TempDir("", "TestEmbeddedStructMarker")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
prog := `
package main
if err != nil {
t.Fatalf("error opening pe file: %v", err)
}
+ defer exe.Close()
dw, err := exe.DWARF()
if err != nil {
t.Fatalf("error parsing DWARF: %v", err)
// Build a test program that contains a translation unit whose
// text (from am assembly source) contains only a single instruction.
- tmpdir, err := ioutil.TempDir("", "TestIssue38192")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
wd, err := os.Getwd()
if err != nil {
t.Fatalf("where am I? %v", err)
}
pdir := filepath.Join(wd, "testdata", "issue38192")
f := gobuildTestdata(t, tmpdir, pdir, DefaultOpt)
+ defer f.Close()
// Open the resulting binary and examine the DWARF it contains.
// Look for the function of interest ("main.singleInstruction")
// compiler/runtime in ways that aren't happening now, so this
// might be something to check for if it does start failing.
- tmpdir, err := ioutil.TempDir("", "TestIssue38192")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
+
wd, err := os.Getwd()
if err != nil {
t.Fatalf("where am I? %v", err)
}
pdir := filepath.Join(wd, "testdata", "issue39757")
f := gobuildTestdata(t, tmpdir, pdir, DefaultOpt)
+ defer f.Close()
syms, err := f.Symbols()
if err != nil {
func TestDynSymShInfo(t *testing.T) {
t.Parallel()
testenv.MustHaveGoBuild(t)
- dir, err := ioutil.TempDir("", "go-build-issue33358")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
const prog = `
package main
if err != nil {
t.Fatalf("failed to open built file: %v", err)
}
+ defer fi.Close()
elfFile, err := elf.NewFile(fi)
if err != nil {
t.Parallel()
- dir, err := ioutil.TempDir("", "no-dup-needed")
- if err != nil {
- t.Fatalf("Failed to create temp dir: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
wd, err := os.Getwd()
if err != nil {
package ld
import (
- "io/ioutil"
"os"
"path/filepath"
"syscall"
)
func TestFallocate(t *testing.T) {
- dir, err := ioutil.TempDir("", "TestFallocate")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
filename := filepath.Join(dir, "a.out")
out := NewOutBuf(nil)
- err = out.Open(filename)
+ err := out.Open(filename)
if err != nil {
t.Fatalf("Open file failed: %v", err)
}
"cmd/internal/objabi"
"internal/testenv"
"io/ioutil"
- "os"
"os/exec"
"path/filepath"
"reflect"
testenv.MustHaveCGO(t)
t.Parallel()
- dir, err := ioutil.TempDir("", "dedup-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
// cgo_import_dynamic both the unversioned libraries and pull in the
// net package to get a cgo package with a versioned library.
import (
"internal/testenv"
- "io/ioutil"
- "os"
"runtime"
"strings"
"testing"
testenv.MustHaveCGO(t)
t.Parallel()
- dir, err := ioutil.TempDir("", "TestIssue33808")
- if err != nil {
- t.Fatalf("could not create directory: %v", err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
f := gobuild(t, dir, prog, "-ldflags=-linkmode=external")
f.Close()
"fmt"
"internal/testenv"
"io/ioutil"
- "os"
"os/exec"
"path/filepath"
"runtime"
testenv.MustInternalLink(t)
t.Parallel()
- dir, err := ioutil.TempDir("", "go-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
out, err := exec.Command(testenv.GoToolPath(t), "build", "./testdata/issue10978").CombinedOutput()
if err == nil {
case "openbsd", "windows":
t.Skip("c-archive unsupported")
}
- dir, err := ioutil.TempDir("", "go-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
srcfile := filepath.Join(dir, "test.go")
arfile := filepath.Join(dir, "test.a")
testenv.MustHaveGoBuild(t)
testenv.MustHaveCGO(t)
t.Parallel()
- dir, err := ioutil.TempDir("", "go-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
// NB: the use of -ldflags=-debugppc64textsize=1048576 tells the linker to
// split text sections at a size threshold of 1M instead of the
}
// Result should be runnable.
- _, err = exec.Command(exe, "version").CombinedOutput()
+ _, err := exec.Command(exe, "version").CombinedOutput()
if err != nil {
t.Fatal(err)
}
t.Parallel()
testenv.MustHaveGoBuild(t)
- dir, err := ioutil.TempDir("", "go-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
srcfile := filepath.Join(dir, "test.go")
objfile := filepath.Join(dir, "test.dll")
import (
"internal/testenv"
- "io/ioutil"
- "os"
"os/exec"
"path/filepath"
"runtime"
testenv.MustHaveGoBuild(t)
testenv.MustHaveCGO(t)
- dir, err := ioutil.TempDir("", "go-build")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
cmd := exec.Command(testenv.GoToolPath(t), "build", "-gcflags=-N -l", "-o", filepath.Join(dir, "a.out"))
cmd.Dir = filepath.Join(runtime.GOROOT(), "src", "runtime", "testdata", "testprogcgo")
out, err := cmd.CombinedOutput()
package ld
import (
- "io/ioutil"
- "os"
"path/filepath"
"runtime"
"testing"
t.Skip("unsupported OS")
case "aix", "darwin", "ios", "dragonfly", "freebsd", "linux", "netbsd", "openbsd", "windows":
}
- dir, err := ioutil.TempDir("", "TestMMap")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(dir)
+ dir := t.TempDir()
filename := filepath.Join(dir, "foo.out")
ob := NewOutBuf(nil)
if err := ob.Open(filename); err != nil {
func main() {}
`
- tmpdir, err := ioutil.TempDir("", "issue21703")
- if err != nil {
- t.Fatalf("failed to create temp dir: %v\n", err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
- err = ioutil.WriteFile(filepath.Join(tmpdir, "main.go"), []byte(source), 0666)
+ err := ioutil.WriteFile(filepath.Join(tmpdir, "main.go"), []byte(source), 0666)
if err != nil {
t.Fatalf("failed to write main.go: %v\n", err)
}
testenv.MustHaveGoBuild(t)
- tmpdir, err := ioutil.TempDir("", "issue28429-")
- if err != nil {
- t.Fatalf("failed to create temp dir: %v", err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
write := func(name, content string) {
err := ioutil.WriteFile(filepath.Join(tmpdir, name), []byte(content), 0666)
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "unresolved-")
- if err != nil {
- t.Fatalf("failed to create temp dir: %v", err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
write := func(name, content string) {
err := ioutil.WriteFile(filepath.Join(tmpdir, name), []byte(content), 0666)
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "unresolved-")
- if err != nil {
- t.Fatalf("failed to create temp dir: %v", err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
write := func(name, content string) {
err := ioutil.WriteFile(filepath.Join(tmpdir, name), []byte(content), 0666)
"-framework", "CoreFoundation",
}
lib := filepath.Join("testdata", "testBuildFortvOS", "lib.go")
- tmpDir, err := ioutil.TempDir("", "go-link-TestBuildFortvOS")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpDir)
+ tmpDir := t.TempDir()
ar := filepath.Join(tmpDir, "lib.a")
cmd := exec.Command(testenv.GoToolPath(t), "build", "-buildmode=c-archive", "-o", ar, lib)
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestXFlag")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "main.go")
- err = ioutil.WriteFile(src, []byte(testXFlagSrc), 0666)
+ err := ioutil.WriteFile(src, []byte(testXFlagSrc), 0666)
if err != nil {
t.Fatal(err)
}
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestMacOSVersion")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "main.go")
- err = ioutil.WriteFile(src, []byte(testMacOSVersionSrc), 0666)
+ err := ioutil.WriteFile(src, []byte(testMacOSVersionSrc), 0666)
if err != nil {
t.Fatal(err)
}
if err != nil {
t.Fatal(err)
}
+ defer exef.Close()
exem, err := macho.NewFile(exef)
if err != nil {
t.Fatal(err)
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestIssue34788Android386TLSSequence")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "blah.go")
- err = ioutil.WriteFile(src, []byte(Issue34788src), 0666)
+ err := ioutil.WriteFile(src, []byte(Issue34788src), 0666)
if err != nil {
t.Fatal(err)
}
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestStrictDup")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "x.go")
- err = ioutil.WriteFile(src, []byte(testStrictDupGoSrc), 0666)
+ err := ioutil.WriteFile(src, []byte(testStrictDupGoSrc), 0666)
if err != nil {
t.Fatal(err)
}
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestFuncAlign")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "go.mod")
- err = ioutil.WriteFile(src, []byte("module cmd/link/TestFuncAlign/falign"), 0666)
+ err := ioutil.WriteFile(src, []byte("module cmd/link/TestFuncAlign/falign"), 0666)
if err != nil {
t.Fatal(err)
}
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestTrampoline")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "hello.go")
- err = ioutil.WriteFile(src, []byte(testTrampSrc), 0666)
+ err := ioutil.WriteFile(src, []byte(testTrampSrc), 0666)
if err != nil {
t.Fatal(err)
}
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestIndexMismatch")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
aSrc := filepath.Join("testdata", "testIndexMismatch", "a.go")
bSrc := filepath.Join("testdata", "testIndexMismatch", "b.go")
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestPErsrcBinutils")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
pkgdir := filepath.Join("testdata", "pe-binutils")
exe := filepath.Join(tmpdir, "a.exe")
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestPErsrcLLVM")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
pkgdir := filepath.Join("testdata", "pe-llvm")
exe := filepath.Join(tmpdir, "a.exe")
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestContentAddressableSymbols")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
-
src := filepath.Join("testdata", "testHashedSyms", "p.go")
cmd := exec.Command(testenv.GoToolPath(t), "run", src)
out, err := cmd.CombinedOutput()
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestIssue38554")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "x.go")
- err = ioutil.WriteFile(src, []byte(testIssue38554Src), 0666)
+ err := ioutil.WriteFile(src, []byte(testIssue38554Src), 0666)
if err != nil {
t.Fatalf("failed to write source file: %v", err)
}
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestIssue42396")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "main.go")
- err = ioutil.WriteFile(src, []byte(testIssue42396src), 0666)
+ err := ioutil.WriteFile(src, []byte(testIssue42396src), 0666)
if err != nil {
t.Fatalf("failed to write source file: %v", err)
}
testenv.MustHaveGoBuild(t)
t.Parallel()
- tmpdir, err := ioutil.TempDir("", "TestIssue42396")
- if err != nil {
- t.Fatal(err)
- }
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
src := filepath.Join(tmpdir, "x.go")
- err = ioutil.WriteFile(src, []byte(testLargeRelocSrc), 0666)
+ err := ioutil.WriteFile(src, []byte(testLargeRelocSrc), 0666)
if err != nil {
t.Fatalf("failed to write source file: %v", err)
}
var w bytes.Buffer
const FN = 4
- tmpdir, err := ioutil.TempDir("", "bigtext")
- if err != nil {
- t.Fatalf("can't create temp directory: %v\n", err)
- }
-
- defer os.RemoveAll(tmpdir)
+ tmpdir := t.TempDir()
// Generate the scenario where the total amount of text exceeds the
// limit for the jmp/call instruction, on RISC architectures like ppc64le,
fmt.Fprintf(&w, "\t}\n")
fmt.Fprintf(&w, "\tfmt.Printf(\"PASS\\n\")\n")
fmt.Fprintf(&w, "}")
- err = ioutil.WriteFile(tmpdir+"/bigfn.go", w.Bytes(), 0666)
+ err := ioutil.WriteFile(tmpdir+"/bigfn.go", w.Bytes(), 0666)
if err != nil {
t.Fatalf("can't write output: %v\n", err)
}