aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/debug/gosym/pclntab_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/debug/gosym/pclntab_test.go')
-rw-r--r--libgo/go/debug/gosym/pclntab_test.go18
1 files changed, 16 insertions, 2 deletions
diff --git a/libgo/go/debug/gosym/pclntab_test.go b/libgo/go/debug/gosym/pclntab_test.go
index b2400bb..ade7043 100644
--- a/libgo/go/debug/gosym/pclntab_test.go
+++ b/libgo/go/debug/gosym/pclntab_test.go
@@ -7,14 +7,19 @@ package gosym
import (
"debug/elf"
"fmt"
+ "io/ioutil"
"os"
"os/exec"
+ "path/filepath"
"runtime"
"strings"
"testing"
)
-var pclinetestBinary string
+var (
+ pclineTempDir string
+ pclinetestBinary string
+)
func dotest() bool {
// For now, only works on ELF platforms.
@@ -24,10 +29,18 @@ func dotest() bool {
if pclinetestBinary != "" {
return true
}
+ var err error
+ pclineTempDir, err = ioutil.TempDir("", "pclinetest")
+ if err != nil {
+ panic(err)
+ }
+ if strings.Contains(pclineTempDir, " ") {
+ panic("unexpected space in tempdir")
+ }
// This command builds pclinetest from pclinetest.asm;
// the resulting binary looks like it was built from pclinetest.s,
// but we have renamed it to keep it away from the go tool.
- pclinetestBinary = os.TempDir() + "/pclinetest"
+ pclinetestBinary = filepath.Join(pclineTempDir, "pclinetest")
command := fmt.Sprintf("go tool 6a -o %s.6 pclinetest.asm && go tool 6l -E main -o %s %s.6",
pclinetestBinary, pclinetestBinary, pclinetestBinary)
cmd := exec.Command("sh", "-c", command)
@@ -170,6 +183,7 @@ func TestPCLine(t *testing.T) {
if !dotest() {
return
}
+ defer os.RemoveAll(pclineTempDir)
f, tab := crack(pclinetestBinary, t)
text := f.Section(".text")