diff --git a/src/debug/gosym/pclntab_test.go b/src/debug/gosym/pclntab_test.go index 7e7cee67934..d21f0e24a83 100644 --- a/src/debug/gosym/pclntab_test.go +++ b/src/debug/gosym/pclntab_test.go @@ -5,7 +5,6 @@ package gosym import ( - "bytes" "debug/elf" "internal/testenv" "io/ioutil" @@ -33,33 +32,10 @@ func dotest(t *testing.T) { if err != nil { t.Fatal(err) } - // 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 = filepath.Join(pclineTempDir, "pclinetest") - cmd := exec.Command(testenv.GoToolPath(t), "tool", "asm", "-o", pclinetestBinary+".o", "pclinetest.asm") - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - t.Fatal(err) - } - - // stamp .o file as being 'package main' so that go tool link will accept it - data, err := ioutil.ReadFile(pclinetestBinary + ".o") - if err != nil { - t.Fatal(err) - } - i := bytes.IndexByte(data, '\n') - if i < 0 { - t.Fatal("bad binary") - } - data = append(append(data[:i:i], "\nmain"...), data[i:]...) - if err := ioutil.WriteFile(pclinetestBinary+".o", data, 0666); err != nil { - t.Fatal(err) - } - - cmd = exec.Command(testenv.GoToolPath(t), "tool", "link", "-H", "linux", - "-o", pclinetestBinary, pclinetestBinary+".o") + cmd := exec.Command(testenv.GoToolPath(t), "build", "-o", pclinetestBinary) + cmd.Dir = "testdata" + cmd.Env = append(os.Environ(), "GOOS=linux") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err != nil { @@ -232,7 +208,7 @@ func TestPCLine(t *testing.T) { } // Test PCToLine - sym := tab.LookupFunc("linefrompc") + sym := tab.LookupFunc("main.linefrompc") wantLine := 0 for pc := sym.Entry; pc < sym.End; pc++ { off := pc - text.Addr // TODO(rsc): should not need off; bug in 8g @@ -244,13 +220,13 @@ func TestPCLine(t *testing.T) { file, line, fn := tab.PCToLine(pc) if fn == nil { t.Errorf("failed to get line of PC %#x", pc) - } else if !strings.HasSuffix(file, "pclinetest.asm") || line != wantLine || fn != sym { - t.Errorf("PCToLine(%#x) = %s:%d (%s), want %s:%d (%s)", pc, file, line, fn.Name, "pclinetest.asm", wantLine, sym.Name) + } else if !strings.HasSuffix(file, "pclinetest.s") || line != wantLine || fn != sym { + t.Errorf("PCToLine(%#x) = %s:%d (%s), want %s:%d (%s)", pc, file, line, fn.Name, "pclinetest.s", wantLine, sym.Name) } } // Test LineToPC - sym = tab.LookupFunc("pcfromline") + sym = tab.LookupFunc("main.pcfromline") lookupline := -1 wantLine = 0 off := uint64(0) // TODO(rsc): should not need off; bug in 8g diff --git a/src/debug/gosym/testdata/main.go b/src/debug/gosym/testdata/main.go new file mode 100644 index 00000000000..b7702184cde --- /dev/null +++ b/src/debug/gosym/testdata/main.go @@ -0,0 +1,10 @@ +package main + +func linefrompc() +func pcfromline() + +func main() { + // Prevent GC of our test symbols + linefrompc() + pcfromline() +} diff --git a/src/debug/gosym/pclinetest.h b/src/debug/gosym/testdata/pclinetest.h similarity index 100% rename from src/debug/gosym/pclinetest.h rename to src/debug/gosym/testdata/pclinetest.h diff --git a/src/debug/gosym/pclinetest.asm b/src/debug/gosym/testdata/pclinetest.s similarity index 96% rename from src/debug/gosym/pclinetest.asm rename to src/debug/gosym/testdata/pclinetest.s index b9ee9c0a504..53461cdfc1a 100644 --- a/src/debug/gosym/pclinetest.asm +++ b/src/debug/gosym/testdata/pclinetest.s @@ -1,4 +1,4 @@ -TEXT linefrompc(SB),4,$0 // Each byte stores its line delta +TEXT ·linefrompc(SB),4,$0 // Each byte stores its line delta BYTE $2; BYTE $1; BYTE $1; BYTE $0; @@ -28,7 +28,7 @@ BYTE $2; BYTE $2; BYTE $255; -TEXT pcfromline(SB),4,$0 // Each record stores its line delta, then n, then n more bytes +TEXT ·pcfromline(SB),4,$0 // Each record stores its line delta, then n, then n more bytes BYTE $32; BYTE $0; BYTE $1; BYTE $1; BYTE $0; BYTE $1; BYTE $0; @@ -46,13 +46,3 @@ BYTE $3; BYTE $3; BYTE $0; BYTE $0; BYTE $0; BYTE $4; BYTE $3; BYTE $0; BYTE $0; BYTE $0; BYTE $255; - -// Keep the linker happy -TEXT main·main(SB),4,$0 - RET - -TEXT main·init(SB),4,$0 - // Prevent GC of our test symbols - CALL linefrompc(SB) - CALL pcfromline(SB) - RET