]> Cypherpunks repositories - gostls13.git/commitdiff
debug/gosym: Remove Makefile, rewrite test using go tool.
authorDavid Symonds <dsymonds@golang.org>
Thu, 16 Feb 2012 03:47:14 +0000 (14:47 +1100)
committerDavid Symonds <dsymonds@golang.org>
Thu, 16 Feb 2012 03:47:14 +0000 (14:47 +1100)
Update #2573.

R=r
CC=golang-dev
https://golang.org/cl/5656071

src/pkg/debug/gosym/Makefile [deleted file]
src/pkg/debug/gosym/pclinetest.asm [moved from src/pkg/debug/gosym/pclinetest.s with 99% similarity]
src/pkg/debug/gosym/pclntab_test.go

diff --git a/src/pkg/debug/gosym/Makefile b/src/pkg/debug/gosym/Makefile
deleted file mode 100644 (file)
index 4f420e7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2009 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.
-
-include ../../../Make.inc
-
-TARG=debug/gosym
-GOFILES=\
-       pclntab.go\
-       symtab.go\
-
-include ../../../Make.pkg
-
-test: make-pclinetest
-
-testshort: make-pclinetest
-
-make-pclinetest:
-       @if [ "`uname`-`uname -m`" = Linux-x86_64 -a $(GOARCH) = amd64 ]; then mkdir -p _test && $(AS) pclinetest.s && $(LD) -E main -o _test/pclinetest pclinetest.$O; fi
similarity index 99%
rename from src/pkg/debug/gosym/pclinetest.s
rename to src/pkg/debug/gosym/pclinetest.asm
index c1d4818d402494d55b18d786ab6db8061d128091..6305435b09e1308b6a77c3682fca7e6f2469a9d1 100644 (file)
@@ -1,5 +1,3 @@
-// +build ignore
-
 TEXT linefrompc(SB),7,$0       // Each byte stores its line delta
 BYTE $2;
 BYTE $1;
index b90181bdc64103ba86d4c1961a6acc412067fbb8..2c477757a833c592cfea1f2f28e44383dd55a9ff 100644 (file)
@@ -7,14 +7,31 @@ package gosym
 import (
        "debug/elf"
        "os"
+       "os/exec"
        "runtime"
+       "strings"
        "testing"
 )
 
+var pclinetestBinary string
+
 func dotest() bool {
        // For now, only works on ELF platforms.
-       // TODO: convert to work with new go tool
-       return false && runtime.GOOS == "linux" && runtime.GOARCH == "amd64"
+       if runtime.GOOS != "linux" || runtime.GOARCH != "amd64" {
+               return false
+       }
+       if pclinetestBinary != "" {
+               return true
+       }
+       // 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"
+       cmd := exec.Command("sh", "-c", "go tool 6a pclinetest.asm && go tool 6l -E main -o "+pclinetestBinary+" pclinetest.6")
+       if err := cmd.Run(); err != nil {
+               panic(err)
+       }
+       return true
 }
 
 func getTable(t *testing.T) *Table {
@@ -149,7 +166,7 @@ func TestPCLine(t *testing.T) {
                return
        }
 
-       f, tab := crack("_test/pclinetest", t)
+       f, tab := crack(pclinetestBinary, t)
        text := f.Section(".text")
        textdat, err := text.Data()
        if err != nil {
@@ -163,10 +180,13 @@ func TestPCLine(t *testing.T) {
                file, line, fn := tab.PCToLine(pc)
                off := pc - text.Addr // TODO(rsc): should not need off; bug in 8g
                wantLine += int(textdat[off])
+               t.Logf("off is %d", off)
                if fn == nil {
                        t.Errorf("failed to get line of PC %#x", pc)
-               } else if len(file) < 12 || file[len(file)-12:] != "pclinetest.s" || line != wantLine || fn != sym {
-                       t.Errorf("expected %s:%d (%s) at PC %#x, got %s:%d (%s)", "pclinetest.s", wantLine, sym.Name, pc, file, line, fn.Name)
+               } else if !strings.HasSuffix(file, "pclinetest.s") {
+                       t.Errorf("expected %s (%s) at PC %#x, got %s (%s)", "pclinetest.s", sym.Name, pc, file, fn.Name)
+               } else if line != wantLine || fn != sym {
+                       t.Errorf("expected :%d (%s) at PC %#x, got :%d (%s)", wantLine, sym.Name, pc, line, fn.Name)
                }
        }